]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
Merge remote-tracking branch 'stevee/systemd-215'
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 28 Jan 2015 22:02:20 +0000 (23:02 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 28 Jan 2015 22:02:20 +0000 (23:02 +0100)
Conflicts:
kmod/kmod.nm

284 files changed:
bash/bash.nm
bash/patches/bash-2.02-security.patch [new file with mode: 0644]
bash/patches/bash-2.03-paths.patch [new file with mode: 0644]
bash/patches/bash-2.03-profile.patch [moved from bash/patches/bash-4.0-profile-1.patch with 100% similarity]
bash/patches/bash-2.05a-interpreter.patch [new file with mode: 0644]
bash/patches/bash-2.05b-debuginfo.patch [new file with mode: 0644]
bash/patches/bash-2.05b-manso.patch [new file with mode: 0644]
bash/patches/bash-2.05b-pgrp_sync.patch [new file with mode: 0644]
bash/patches/bash-2.05b-readline-oom.patch [new file with mode: 0644]
bash/patches/bash-2.05b-xcc.patch [new file with mode: 0644]
bash/patches/bash-3.2-audit.patch [new file with mode: 0644]
bash/patches/bash-3.2-ssh_source_bash.patch [new file with mode: 0644]
bash/patches/bash-4.0-nobits.patch [new file with mode: 0644]
bash/patches/bash-4.0-paths-1.patch [deleted file]
bash/patches/bash-4.1-broken_pipe.patch [new file with mode: 0644]
bash/patches/bash-4.1-defer-sigchld-trap.patch [new file with mode: 0644]
bash/patches/bash-4.1-examples.patch [new file with mode: 0644]
bash/patches/bash-4.2-coverity.patch [new file with mode: 0644]
bash/patches/bash-4.2-manpage_trap.patch [new file with mode: 0644]
bash/patches/bash-4.2-rc2-logout.patch [new file with mode: 0644]
bash/patches/bash-4.2-size_type.patch [new file with mode: 0644]
bash/patches/bash-4.3-here-doc-ps2-comsub.patch0 [new file with mode: 0644]
bash/patches/bash-4.3-lastpipe-nested-pipe-segfault.patch0 [new file with mode: 0644]
bash/patches/bash-4.3-man-ulimit.patch [new file with mode: 0644]
bash/patches/bash-4.3-noecho.patch [new file with mode: 0644]
bash/patches/bash-4.3-parse-time-keyword.patch0 [new file with mode: 0644]
bash/patches/bash-4.3-pathexp-globignore-delim.patch0 [new file with mode: 0644]
bash/patches/bash-4.3-readline-revert-lines.patch0 [new file with mode: 0644]
bash/patches/bash-bashbug.patch [new file with mode: 0644]
bash/patches/bash-infotags.patch [new file with mode: 0644]
bash/patches/bash-requires.patch
bash/patches/bash-setlocale.patch [new file with mode: 0644]
bash/patches/bash-tty-tests.patch [new file with mode: 0644]
bash/patches/bash43-001 [new file with mode: 0644]
bash/patches/bash43-002 [new file with mode: 0644]
bash/patches/bash43-003 [new file with mode: 0644]
bash/patches/bash43-004 [new file with mode: 0644]
bash/patches/bash43-005 [new file with mode: 0644]
bash/patches/bash43-006 [new file with mode: 0644]
bash/patches/bash43-007 [new file with mode: 0644]
bash/patches/bash43-008 [new file with mode: 0644]
bash/patches/bash43-009 [new file with mode: 0644]
bash/patches/bash43-010 [new file with mode: 0644]
bash/patches/bash43-011 [new file with mode: 0644]
bash/patches/bash43-012 [new file with mode: 0644]
bash/patches/bash43-013 [new file with mode: 0644]
bash/patches/bash43-014 [new file with mode: 0644]
bash/patches/bash43-015 [new file with mode: 0644]
bash/patches/bash43-016 [new file with mode: 0644]
bash/patches/bash43-017 [new file with mode: 0644]
bash/patches/bash43-018 [new file with mode: 0644]
bash/patches/bash43-019 [new file with mode: 0644]
bash/patches/bash43-020 [new file with mode: 0644]
bash/patches/bash43-021 [new file with mode: 0644]
bash/patches/bash43-022 [new file with mode: 0644]
bash/patches/bash43-023 [new file with mode: 0644]
bash/patches/bash43-024 [new file with mode: 0644]
bash/patches/bash43-025 [new file with mode: 0644]
bash/patches/bash43-026 [new file with mode: 0644]
bind/bind.nm
bind/named.logrotate [deleted file]
bind/patches/bind-9.3.2-redhat_doc.patch [deleted file]
bind/patches/bind-9.5-dlz-64bit.patch [deleted file]
bind/patches/bind-9.5-libidn.patch [deleted file]
bind/patches/bind-9.5-libidn2.patch [deleted file]
bind/patches/bind-9.5-libidn3.patch [deleted file]
bind/patches/bind-9.5-overflow.patch [deleted file]
bind/patches/bind-9.7-exportlib.patch [moved from bind/patches/bind97-exportlib.patch with 68% similarity]
bind/patches/bind-9.9-libidn.patch [new file with mode: 0644]
bind/patches/bind-95-rh452060.patch [deleted file]
bind/patches/bind-96-dyndb.patch [deleted file]
bind/patches/bind-96-libtool2.patch [deleted file]
bind/patches/bind-nonexec.patch [deleted file]
bind/patches/bind93-rh490837.patch0 [deleted file]
bind/patches/bind95-rh461409.patch [deleted file]
bind/patches/bind97-dist-pkcs11.patch [deleted file]
bind/patches/bind97-rh478718.patch [deleted file]
bind/patches/bind97-rh570851.patch [deleted file]
bind/patches/bind97-rh645544.patch [deleted file]
bind/patches/bind97-rh693982.patch [deleted file]
bind/patches/bind97-rh699951.patch [deleted file]
bind/patches/bind97-rh700097.patch [deleted file]
bind/patches/bind97-rh714049.patch [deleted file]
bind/patches/bind98-dlz_buildfix.patch [deleted file]
bind/patches/bind98-rh725741.patch [deleted file]
bind/patches/bind98-rh735103.patch [deleted file]
binutils/binutils.nm
binutils/patches/binutils-2.22.52.0.1-relro-on-by-default.patch [deleted file]
binutils/patches/binutils-2.23.2-aarch64-em.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.23.2-kernel-ld-r.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.23.52.0.1-addr2line-dynsymtab.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.23.52.0.1-as-doc-texinfo-fixes.patch0 [deleted file]
binutils/patches/binutils-2.24-DW_FORM_ref_addr.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.24-aarch64-fix-final_link_relocate.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-aarch64-fix-gotplt-offset-ifunc.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-aarch64-fix-ie-relax.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-aarch64-fix-static-ifunc.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-aarch64-ld-shared-non-PIC-xfail.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-arm-static-tls.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-elfnn-aarch64.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.24-fake-zlib-sections.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.24-fat-lto-objects.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-indirect-chain.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.24-ldforcele.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.24-pt-pax-flags-20131231.patch [moved from binutils/patches/binutils-2.23.52.0.1-pt-pax-flags-20130326.patch with 81% similarity]
binutils/patches/binutils-2.24-set-section-macros.patch0 [new file with mode: 0644]
binutils/patches/binutils-2.24-symbol-warning.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-use-relro.patch [new file with mode: 0644]
binutils/patches/binutils-2.24-weak-sym-merge.patch0 [new file with mode: 0644]
binutils/patches/binutils-HEAD-change-ld-notice-interface.patch [new file with mode: 0644]
ccache/ccache.nm
ccache/patches/ccache-3.1.9-gcc48-tests.patch [deleted file]
cloog/cloog.nm [new file with mode: 0644]
cmake/cmake.macro
cmake/cmake.nm
cmake/patches/cmake-strict_aliasing.patch [new file with mode: 0644]
compat-cloog-ppl/compat-cloog-ppl.nm [moved from cloog-ppl/cloog-ppl.nm with 60% similarity]
compat-cloog-ppl/patches/cloog-ppl-0.15.11-ppl-verfix.patch [moved from cloog-ppl/patches/cloog-ppl-0.15.11-ppl-verfix.patch with 100% similarity]
coreutils/coreutils.nm
coreutils/patches/coreutils-i18n.patch
coreutils/patches/coreutils-ipfire-disabled-tests.patch
coreutils/patches/coreutils-selinux.patch [deleted file]
coreutils/patches/coreutils-selinuxmanpages.patch [deleted file]
ddns/ddns.nm [new file with mode: 0644]
dracut/dracut.nm
ez-ipupdate/patches/ez-ipupdate-3.0.11b8-10.patch [deleted file]
ez-ipupdate/patches/ez-ipupdate-3.0.11b8-pidfile.patch [deleted file]
fastd/fastd.nm [new file with mode: 0644]
gcc/gcc.nm
gcc/patches/01_all_gcc49_configure.patch [new file with mode: 0644]
gcc/patches/02_all_gcc48_config.in.patch0 [new file with mode: 0644]
gcc/patches/03_all_gcc49_Makefile.in.patch [new file with mode: 0644]
gcc/patches/04_all_gcc49_default_ssp.patch [new file with mode: 0644]
gcc/patches/05_all_gcc48_gcc.c.patch0 [new file with mode: 0644]
gcc/patches/10_all_gcc49_default-fortify-source.patch [new file with mode: 0644]
gcc/patches/11_all_gcc49_default-warn-format-security.patch [new file with mode: 0644]
gcc/patches/12_all_gcc49_default-warn-trampolines.patch [new file with mode: 0644]
gcc/patches/16_all_gcc47_nopie_option.patch [new file with mode: 0644]
gcc/patches/20_all_gcc49_config_crtbeginp.patch0 [new file with mode: 0644]
gcc/patches/24_all_gcc49_invoke.texi.patch0 [new file with mode: 0644]
gcc/patches/34_all_gcc48_config_i386.patch [new file with mode: 0644]
gcc/patches/35_all_gcc48_config_arm.patch [new file with mode: 0644]
gcc/patches/40_all_gcc49_config_esp.patch0 [new file with mode: 0644]
gcc/patches/53_all_libitm-no-fortify-source.patch [new file with mode: 0644]
gcc/patches/gcc-4.8.1-piepatch-20130628.patch [deleted file]
gcc/patches/gcc49-aarch64-async-unw-tables.patch0 [new file with mode: 0644]
gcc/patches/gcc49-aarch64-unwind-opt.patch0 [new file with mode: 0644]
gcc/patches/gcc49-cloog-dl.patch0 [new file with mode: 0644]
gcc/patches/gcc49-cloog-dl2.patch0 [new file with mode: 0644]
gcc/patches/gcc49-color-auto.patch0 [new file with mode: 0644]
gcc/patches/gcc49-i386-libgomp.patch0 [moved from gcc/patches/gcc48-i386-libgomp.patch0 with 100% similarity]
gcc/patches/gcc49-libstdc++-docs.patch0 [moved from gcc/patches/gcc48-libstdc++-docs.patch0 with 96% similarity]
gcc/patches/gcc49-libtool-no-rpath.patch0 [moved from gcc/patches/gcc48-libtool-no-rpath.patch0 with 100% similarity]
gcc/patches/gcc49-no-add-needed.patch0 [moved from gcc/patches/gcc48-no-add-needed.patch0 with 100% similarity]
gcc/patches/gcc49-pr38757.patch0 [new file with mode: 0644]
gcc/patches/gcc49-pr56493.patch0 [new file with mode: 0644]
gettext/gettext.nm
glibc/glibc.nm
glibc/patches/glibc-2.10.1-asprintf_reset2null-1.patch [deleted file]
glibc/patches/glibc-2.11.1-mktemp_urandom.patch [deleted file]
glibc/patches/glibc-fedora-nptl-linklibc.patch
glibc/patches/glibc-fedora-ppc-unwind.patch
glibc/patches/glibc-fedora-streams-rh436349.patch
glibc/patches/glibc-fedora-uname-getrlimit.patch
glibc/patches/glibc-ports-2.15-add-arm-dependency-of-libmemusage.so.patch [deleted file]
glibc/patches/glibc-rh1009145.patch [new file with mode: 0644]
glibc/patches/glibc-rh1013801.patch [new file with mode: 0644]
glibc/patches/glibc-rh1070416.patch [new file with mode: 0644]
glibc/patches/glibc-rh1124987.patch [new file with mode: 0644]
glibc/patches/glibc-rh697421.patch [new file with mode: 0644]
glibc/patches/glibc-rh741105.patch [new file with mode: 0644]
glibc/patches/glibc-rh757881.patch [new file with mode: 0644]
glibc/patches/glibc-rh819430.patch [new file with mode: 0644]
glibc/patches/glibc-rh825061.patch [new file with mode: 0644]
glibc/patches/glibc-rh827510.patch [new file with mode: 0644]
glibc/patches/glibc-rh841318.patch [new file with mode: 0644]
glibc/patches/glibc-rh841787.patch [new file with mode: 0644]
glibc/patches/glibc-rh952799.patch [new file with mode: 0644]
gnutls/gnutls.nm
grep/grep.nm
groff/groff.nm
groff/patches/0002-load-site-font-and-site-tmac-from-etc-groff.patch [new file with mode: 0644]
groff/patches/groff-1.18.1.4-debian_fixes-1.patch [deleted file]
grub/grub.nm
help2man/help2man.nm
ibod/ibod.nm [deleted file]
ibod/patches/ibod-1.4-config.patch [deleted file]
ibod/patches/ibod-1.4-configuration-cli.patch [deleted file]
ibod/patches/ibod-1.4-license.patch [deleted file]
ibod/systemd/ibod@.service [deleted file]
isdn4k-utils/capi20.conf [deleted file]
isdn4k-utils/isdn4k-utils.nm [deleted file]
isdn4k-utils/patches/001-isdn4k-utils-0202131200-true.patch [deleted file]
isdn4k-utils/patches/002-isdn4k-utils-CVS-2004-11-18-autoconf25x.patch [deleted file]
isdn4k-utils/patches/003-isdn4k-utils-CVS-2006-07-20-capi.patch [deleted file]
isdn4k-utils/patches/004-isdn4k-utils-CVS-2009-10-20-ipfire.patch [deleted file]
isdn4k-utils/patches/005-isdn4k-utils-CVS-2010-05-01-capi.patch [deleted file]
isdn4k-utils/patches/006-isdn4k-utils-CVS-2010-05-01-capi-soname.patch [deleted file]
isdn4k-utils/patches/007-isdn4k-utils-autoconf-2.6.4-quoting.patch [deleted file]
isdn4k-utils/patches/008-isdn4k-utils-capiinit.patch [deleted file]
isdn4k-utils/patches/009-isdn4k-utils-man.patch [deleted file]
isdn4k-utils/patches/010-isdn4k-utils-misc-overflow-in-capi-subsystem.patch [deleted file]
isdn4k-utils/patches/011-isdn4k-utils-pppcapiplugin-libdir.patch [deleted file]
isdn4k-utils/patches/012-isdn4k-utils-sh-linux.patch [deleted file]
isdn4k-utils/patches/013-isdn4k-utils-statfs.patch [deleted file]
isdn4k-utils/patches/014-ppp-userpass.patch [deleted file]
isdn4k-utils/patches/015-isdn4k-utils-fix-ipppd.patch [deleted file]
isdn4k-utils/systemd/capi.service [deleted file]
isdn4k-utils/systemd/isdn.service [deleted file]
isl/isl.nm [new file with mode: 0644]
iw/iw.nm
json-c/json-c.nm [new file with mode: 0644]
kernel/config-arm-generic
kernel/config-armv5tel-default
kernel/config-armv7hl-default
kernel/config-armv7hl-lpae
kernel/config-generic
kernel/config-i686-default
kernel/config-i686-legacy
kernel/config-x86-generic
kernel/config-x86_64-default
kernel/kernel.nm
kernel/patches/grsecurity-3.0-3.18.2-201501120821.patch [moved from kernel/patches/grsecurity-3.0-3.15.6-201407232200.patch with 88% similarity]
kernel/patches/grsecurity-3.15.4-arm-kvm_arch_init.patch [deleted file]
kernel/patches/linux-3.14.25-rt5592_no_special_txop_init.patch [new file with mode: 0644]
kmod/kmod.nm
libnftnl/libnftnl.nm
libpipeline/libpipeline.nm
libsodium/libsodium.nm [new file with mode: 0644]
libtool/libtool.nm
libuecc/libuecc.nm [moved from ez-ipupdate/ez-ipupdate.nm with 51% similarity]
libusb/libusb.nm
man-db/man-db.cron [deleted file]
man-db/man-db.nm
man-db/patches/1151558-switch-man-and-root-in-init-systemd-man-db.conf.patch [new file with mode: 0644]
man-db/systemd/man-db.service [new file with mode: 0644]
man-db/systemd/man-db.timer [new file with mode: 0644]
miredo/client-hook [deleted file]
miredo/miredo.nm [deleted file]
miredo/patches/miredo-1.2.5-libteredo-header.patch [deleted file]
miredo/patches/miredo-config-not-exec.patch [deleted file]
miredo/patches/reread-resolv-before-resolv-ipv4.patch [deleted file]
miredo/systemd/miredo-client@.service [deleted file]
miredo/systemd/miredo-server.service [deleted file]
network/network.nm
nftables/nftables.nm
nftables/patches/nftables-20140118-db2x_docbook2man.patch [deleted file]
noip/noip.nm [deleted file]
ntp/ntp.nm
ntp/patches/ntp-4.2.4p7-getprecision.patch [deleted file]
ntp/patches/ntp-4.2.6p1-cmsgalign.patch [deleted file]
ntp/patches/ntp-4.2.6p1-linkfastmath.patch [deleted file]
ntp/patches/ntp-4.2.6p1-logdefault.patch [deleted file]
ntp/patches/ntp-4.2.6p1-retcode.patch [deleted file]
ntp/patches/ntp-4.2.6p1-sleep.patch [deleted file]
ntp/patches/ntp-4.2.6p2-multiopts.patch [deleted file]
ntp/patches/ntp-4.2.6p3-bcast.patch [deleted file]
ntp/patches/ntp-4.2.6p3-broadcastdelay.patch [deleted file]
ntp/patches/ntp-4.2.6p4-droproot.patch [deleted file]
ntp/patches/ntp-4.2.6p4-htmldoc.patch [deleted file]
ntp/patches/ntp-4.2.6p4-mlock.patch [deleted file]
ntp/patches/ntp-4.2.6p4-rtnetlink.patch [deleted file]
ntp/patches/ntp-4.2.6p5-delaycalib.patch [deleted file]
ntp/patches/ntp-4.2.6p5-fipsmd5.patch [deleted file]
openssl/openssl.nm
openvswitch/openvswitch.logrotate [deleted file]
openvswitch/openvswitch.nm [deleted file]
openvswitch/systemd/openvswitch.service [deleted file]
pakfire/pakfire.nm
pakfire/patches/0001-CFLAGS-Enable-more-hardening.patch [new file with mode: 0644]
perl-File-HomeDir/perl-File-HomeDir.nm [new file with mode: 0644]
plymouth/patches/plymouth-0.9.0-everything-is-better-in-red.patch [moved from plymouth/patches/plymouth-0.8.0-everything-is-better-in-red.patch with 52% similarity]
plymouth/plymouth-update-initrd [deleted file]
plymouth/plymouth.nm
polarssl/polarssl.nm
powertop/powertop.nm
ppp/patches/ppp-2.4.2-ifname.patch [new file with mode: 0644]
ppp/ppp.nm
tzdata/tzdata.nm
util-linux/pam.d/runuser [new file with mode: 0644]
util-linux/pam.d/runuser-l [new file with mode: 0644]
util-linux/util-linux.nm
wget/wget.nm
xz/xz.nm

index 83435ded304acf2d7e572f8847c7fe0b748c81bd..9894794822d623a91f27cc9097c4fa92a439b579 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = bash
-version    = 4.2
+version    = 4.3
 release    = 11
 
 groups     = System/Tools
@@ -28,7 +28,6 @@ build
                bison
                filesystem >= 002
                ncurses-devel
-               readline-devel
                texinfo
        end
 
@@ -43,13 +42,18 @@ build
        end
 
        configure_options += \
-               --without-bash-malloc \
-               --with-installed-readline
+               --with-afs \
+               --with-bash-malloc=no
+
+       # Recycles pids is neccessary. When bash's last fork's pid was X
+       # and new fork's pid is also X, bash has to wait for this same pid.
+       # Without Recycles pids bash will not wait.
+       make_build_targets += "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS -DDEFAULT_PATH_VALUE='\"/usr/local/bin:/usr/bin\"' $(getconf LFS_CFLAGS)"
 
        # Test hangs forever
-       #def test
-       #       make tests
-       #end
+       test
+               make tests
+       end
 
        install_cmds
                mkdir -pv %{BUILDROOT}%{sysconfdir}/{profile.d,skel}
@@ -68,6 +72,16 @@ build
                cp -vf %{DIR_SOURCE}/profile.d/* %{BUILDROOT}/etc/profile.d
 
                ln -svf bash %{BUILDROOT}%{bindir}/sh
+
+               # https://bugzilla.redhat.com/show_bug.cgi?id=820192
+               # bug #820192, need to add execable alternatives for regular built-ins
+               for f in alias bg cd command fc fg getopts jobs read umask unalias wait; do
+                       (
+                               echo "#!/bin/sh"
+                               echo "builtin \"${f}\" \"\$@\""
+                       ) > "%{BUILDROOT}/%{bindir}/${f}"
+                       chmod +x "%{BUILDROOT}%{bindir}/${f}"
+               done
        end
 end
 
diff --git a/bash/patches/bash-2.02-security.patch b/bash/patches/bash-2.02-security.patch
new file mode 100644 (file)
index 0000000..f8a913b
--- /dev/null
@@ -0,0 +1,11 @@
+--- bash-2.02-orig/parse.y     Wed Mar 25 18:16:23 1998
++++ bash-2.02/parse.y  Sun Apr 19 16:46:34 1998
+@@ -923,7 +923,7 @@
+ #if defined (READLINE)
+ char *current_readline_prompt = (char *)NULL;
+-char *current_readline_line = (char *)NULL;
++unsigned char *current_readline_line = (unsigned char *)NULL;
+ int current_readline_line_index = 0;
+ static int
diff --git a/bash/patches/bash-2.03-paths.patch b/bash/patches/bash-2.03-paths.patch
new file mode 100644 (file)
index 0000000..24ec5cc
--- /dev/null
@@ -0,0 +1,11 @@
+--- bash-3.0/config-top.h.paths        2003-08-05 15:36:12.000000000 +0100
++++ bash-3.0/config-top.h      2004-07-28 09:36:27.117205637 +0100
+@@ -66,7 +66,7 @@
+    the Posix.2 confstr () function, or CS_PATH define are not present. */
+ #ifndef STANDARD_UTILS_PATH
+ #define STANDARD_UTILS_PATH \
+-  "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
++  "/bin:/usr/bin:/usr/sbin:/sbin"
+ #endif
+ /* Default primary and secondary prompt strings. */
diff --git a/bash/patches/bash-2.05a-interpreter.patch b/bash/patches/bash-2.05a-interpreter.patch
new file mode 100644 (file)
index 0000000..b9f0da2
--- /dev/null
@@ -0,0 +1,219 @@
+diff -up bash-4.2-rc2/config.h.in.interpreter bash-4.2-rc2/config.h.in
+--- bash-4.2-rc2/config.h.in.interpreter       2011-02-09 07:59:21.000000000 +0100
++++ bash-4.2-rc2/config.h.in   2011-02-09 07:59:21.000000000 +0100
+@@ -706,6 +706,9 @@
+ /* Define if you have the pathconf function. */
+ #undef HAVE_PATHCONF
++/* Define if you have the pread function. */
++#undef HAVE_PREAD
++
+ /* Define if you have the putenv function.  */
+ #undef HAVE_PUTENV
+@@ -898,6 +901,9 @@
+ /* Define if you have the <dlfcn.h> header file.  */
+ #undef HAVE_DLFCN_H
++/* Define if you have the <elf.h> header file.  */
++#undef HAVE_ELF_H
++
+ /* Define if you have the <grp.h> header file.  */
+ #undef HAVE_GRP_H
+diff -up bash-4.2-rc2/configure.in.interpreter bash-4.2-rc2/configure.in
+--- bash-4.2-rc2/configure.in.interpreter      2011-01-16 21:31:12.000000000 +0100
++++ bash-4.2-rc2/configure.ac  2011-02-09 08:02:27.000000000 +0100
+@@ -659,7 +659,7 @@ BASH_HEADER_INTTYPES
+ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
+                memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
+                stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
+-               regex.h syslog.h ulimit.h)
++               regex.h syslog.h ulimit.h elf.h)
+ AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
+                sys/resource.h sys/param.h sys/socket.h sys/stat.h \
+                sys/time.h sys/times.h sys/types.h sys/wait.h)
+@@ -723,7 +723,7 @@ dnl checks for system calls
+ AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
+               getpagesize getpeername getrlimit getrusage gettimeofday \
+               kill killpg lstat readlink sbrk select setdtablesize \
+-              setitimer tcgetpgrp uname ulimit waitpid)
++              setitimer tcgetpgrp uname ulimit waitpid pread)
+ AC_REPLACE_FUNCS(rename)
+ dnl checks for c library functions
+diff -up bash-4.2-rc2/execute_cmd.c.interpreter bash-4.2-rc2/execute_cmd.c
+--- bash-4.2-rc2/execute_cmd.c.interpreter     2011-01-20 04:24:47.000000000 +0100
++++ bash-4.2-rc2/execute_cmd.c 2011-02-09 07:59:21.000000000 +0100
+@@ -41,6 +41,10 @@
+ #  include <unistd.h>
+ #endif
++#ifdef HAVE_ELF_H
++# include <elf.h>
++#endif
++
+ #include "posixtime.h"
+ #if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE)
+@@ -4975,14 +4979,22 @@ shell_execve (command, args, env)
+       {
+         /* The file has the execute bits set, but the kernel refuses to
+            run it for some reason.  See why. */
++#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
++      int fd = open (command, O_RDONLY);
++
++      if (fd >= 0)
++              sample_len = read (fd, sample, sizeof (sample));
++      else
++              sample_len = -1;
++#endif
+ #if defined (HAVE_HASH_BANG_EXEC)
+-        READ_SAMPLE_BUF (command, sample, sample_len);
+         sample[sample_len - 1] = '\0';
+         if (sample_len > 2 && sample[0] == '#' && sample[1] == '!')
+           {
+             char *interp;
+             int ilen;
++            close (fd);
+             interp = getinterp (sample, sample_len, (int *)NULL);
+             ilen = strlen (interp);
+             errno = i;
+@@ -4997,6 +5009,136 @@ shell_execve (command, args, env)
+             return (EX_NOEXEC);
+           }
+ #endif
++#if defined (HAVE_ELF_H)
++        if (i == ENOENT
++            && sample_len > EI_NIDENT
++            && memcmp (sample, ELFMAG, SELFMAG) == 0)
++          {
++            off_t offset = -1;
++
++            /* It is an ELF file.  Now determine whether it is dynamically
++               linked and if yes, get the offset of the interpreter
++               string.  */
++            if (sample[EI_CLASS] == ELFCLASS32
++                && sample_len > sizeof (Elf32_Ehdr))
++              {
++                Elf32_Ehdr ehdr;
++                Elf32_Phdr *phdr;
++                int nphdr;
++
++                /* We have to copy the data since the sample buffer
++                   might not be aligned correctly to be accessed as
++                   an Elf32_Ehdr struct.  */
++                memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
++
++                nphdr = ehdr.e_phnum;
++                phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
++                if (phdr != NULL)
++                  {
++#ifdef HAVE_PREAD
++                    sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
++                                        ehdr.e_phoff);
++#else
++                    if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
++                      sample_len = read (fd, phdr,
++                                         nphdr * ehdr.e_phentsize);
++                    else
++                      sample_len = -1;
++#endif
++                    if (sample_len == nphdr * ehdr.e_phentsize)
++                      while (nphdr-- > 0)
++                        if (phdr[nphdr].p_type == PT_INTERP)
++                          {
++                            offset = phdr[nphdr].p_offset;
++                            break;
++                          }
++                    free (phdr);
++                  }
++              }
++            else if (sample[EI_CLASS] == ELFCLASS64
++                     && sample_len > sizeof (Elf64_Ehdr))
++              {
++                Elf64_Ehdr ehdr;
++                Elf64_Phdr *phdr;
++                int nphdr;
++
++                /* We have to copy the data since the sample buffer
++                   might not be aligned correctly to be accessed as
++                   an Elf64_Ehdr struct.  */
++                memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
++
++                nphdr = ehdr.e_phnum;
++                phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
++                if (phdr != NULL)
++                  {
++#ifdef HAVE_PREAD
++                    sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
++                                        ehdr.e_phoff);
++#else
++                    if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
++                      sample_len = read (fd, phdr,
++                                         nphdr * ehdr.e_phentsize);
++                    else
++                      sample_len = -1;
++#endif
++                    if (sample_len == nphdr * ehdr.e_phentsize)
++                      while (nphdr-- > 0)
++                        if (phdr[nphdr].p_type == PT_INTERP)
++                          {
++                            offset = phdr[nphdr].p_offset;
++                            break;
++                          }
++                    free (phdr);
++                  }
++              }
++
++            if (offset != -1)
++              {
++                size_t maxlen = 0;
++                size_t actlen = 0;
++                char *interp = NULL;
++
++                do
++                  {
++                    if (actlen == maxlen)
++                      {
++                        char *newinterp = realloc (interp, maxlen += 200);
++                        if (newinterp == NULL)
++                          {
++                            actlen = 0;
++                            break;
++                          }
++                        interp = newinterp;
++
++#ifdef HAVE_PREAD
++                        actlen = pread (fd, interp, maxlen, offset);
++#else
++                        if (lseek (fd, offset, SEEK_SET) != -1)
++                          actlen = read (fd, interp, maxlen);
++                        else
++                          actlen = -1;
++#endif
++                      }
++                  }
++                while (actlen > 0 && memchr (interp, '\0', actlen) == NULL);
++
++                if (actlen > 0)
++                  {
++                    close (fd);
++                    errno = i;
++                    sys_error ("%s: %s: bad ELF interpreter", command,
++                               interp);
++                    free (interp);
++                    return (EX_NOEXEC);
++                  }
++
++                free (interp);
++              }
++          }
++#endif
++#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
++        close (fd);
++#endif
+         errno = i;
+         file_error (command);
+       }
diff --git a/bash/patches/bash-2.05b-debuginfo.patch b/bash/patches/bash-2.05b-debuginfo.patch
new file mode 100644 (file)
index 0000000..3278cab
--- /dev/null
@@ -0,0 +1,10 @@
+--- bash-2.05b/builtins/Makefile.in.debuginfo  2003-03-25 17:25:21.000000000 +0000
++++ bash-2.05b/builtins/Makefile.in    2003-03-25 17:25:49.000000000 +0000
+@@ -93,7 +93,6 @@
+       $(RM) $@
+       ./$(MKBUILTINS) $(DIRECTDEFINE) $<
+       $(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 )
+-      $(RM) $*.c
+ # How to make a .c file from a .def file.
+ .def.c:
diff --git a/bash/patches/bash-2.05b-manso.patch b/bash/patches/bash-2.05b-manso.patch
new file mode 100644 (file)
index 0000000..39ebf74
--- /dev/null
@@ -0,0 +1,10 @@
+--- bash-2.05b/doc/builtins.1.manso    2003-02-10 18:58:21.000000000 +0000
++++ bash-2.05b/doc/builtins.1  2003-02-10 18:58:28.000000000 +0000
+@@ -10,6 +10,6 @@
+ ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1)
+ .SH BASH BUILTIN COMMANDS
+ .nr zZ 1
+-.so bash.1
++.so man1/bash.1
+ .SH SEE ALSO
+ bash(1), sh(1)
diff --git a/bash/patches/bash-2.05b-pgrp_sync.patch b/bash/patches/bash-2.05b-pgrp_sync.patch
new file mode 100644 (file)
index 0000000..bd7ded6
--- /dev/null
@@ -0,0 +1,11 @@
+--- bash-2.05b/aclocal.m4.pgrp_sync    2002-06-25 14:45:43.000000000 +0100
++++ bash-2.05b/aclocal.m4      2003-01-15 18:17:35.000000000 +0000
+@@ -1255,7 +1255,7 @@
+       wait(&status);
+       exit(ok ? 0 : 5);
+ }
+-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
++], bash_cv_pgrp_pipe=yes,bash_cv_pgrp_pipe=yes,
+    [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
+     bash_cv_pgrp_pipe=no])
+ ])
diff --git a/bash/patches/bash-2.05b-readline-oom.patch b/bash/patches/bash-2.05b-readline-oom.patch
new file mode 100644 (file)
index 0000000..f25d780
--- /dev/null
@@ -0,0 +1,11 @@
+--- bash-2.05b/lib/readline/readline.c.oom     2002-03-13 23:10:46.000000000 +0100
++++ bash-2.05b/lib/readline/readline.c 2002-08-07 12:02:04.000000000 +0200
+@@ -817,7 +817,7 @@
+         /* Special case rl_do_lowercase_version (). */
+         if (func == rl_do_lowercase_version)
+           /* Should we do anything special if key == ANYOTHERKEY? */
+-          return (_rl_dispatch (_rl_to_lower (key), map));
++          return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
+         rl_executing_keymap = map;
+         rl_executing_key = key;
diff --git a/bash/patches/bash-2.05b-xcc.patch b/bash/patches/bash-2.05b-xcc.patch
new file mode 100644 (file)
index 0000000..ad42832
--- /dev/null
@@ -0,0 +1,19 @@
+--- bash-3.1/Makefile.in.xcc   2005-10-25 19:37:52.000000000 +0100
++++ bash-3.1/Makefile.in       2005-12-23 16:11:09.000000000 +0000
+@@ -68,6 +68,7 @@
+ ARFLAGS = @ARFLAGS@
+ RANLIB = @RANLIB@
+ SIZE = @SIZE@
++STRIP = strip
+ INSTALL = @INSTALL@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+@@ -535,7 +536,7 @@
+       @chmod a+rx bashbug
+ strip:        $(Program) .made
+-      strip $(Program)
++      $(STRIP) $(Program)
+       ls -l $(Program)
+       -$(SIZE) $(Program)
diff --git a/bash/patches/bash-3.2-audit.patch b/bash/patches/bash-3.2-audit.patch
new file mode 100644 (file)
index 0000000..48a1751
--- /dev/null
@@ -0,0 +1,96 @@
+diff -up bash-4.2/config.h.in.audit bash-4.2/config.h.in
+--- bash-4.2/config.h.in.audit 2013-01-31 16:26:16.857698992 +0100
++++ bash-4.2/config.h.in       2013-01-31 16:26:16.876699255 +0100
+@@ -1131,6 +1131,14 @@
+ /* End additions for lib/intl */
++
++/* Additions for lib/readline */
++
++/* Define if you have <linux/audit.h> and it defines AUDIT_USER_TTY */
++#undef HAVE_DECL_AUDIT_USER_TTY
++
++/* End additions for lib/readline */
++
+ #include "config-bot.h"
+ #endif /* _CONFIG_H_ */
+diff -up bash-4.2/configure.in.audit bash-4.2/configure.in
+--- bash-4.2/configure.in.audit        2013-01-31 16:26:16.858699005 +0100
++++ bash-4.2/configure.ac      2013-01-31 16:26:16.877699269 +0100
+@@ -888,6 +888,8 @@ BASH_FUNC_DUP2_CLOEXEC_CHECK
+ BASH_SYS_PGRP_SYNC
+ BASH_SYS_SIGNAL_VINTAGE
++AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]])
++
+ dnl checking for the presence of certain library symbols
+ BASH_SYS_ERRLIST
+ BASH_SYS_SIGLIST
+diff -up bash-4.2/lib/readline/readline.c.audit bash-4.2/lib/readline/readline.c
+--- bash-4.2/lib/readline/readline.c.audit     2013-01-31 16:26:16.871699185 +0100
++++ bash-4.2/lib/readline/readline.c   2013-01-31 17:24:23.902744860 +0100
+@@ -55,6 +55,12 @@
+ extern int errno;
+ #endif /* !errno */
++#if defined (HAVE_DECL_AUDIT_USER_TTY)
++#  include <sys/socket.h>
++#  include <linux/audit.h>
++#  include <linux/netlink.h>
++#endif
++
+ /* System-specific feature definitions and include files. */
+ #include "rldefs.h"
+ #include "rlmbutil.h"
+@@ -301,7 +307,48 @@ rl_set_prompt (prompt)
+   rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
+   return 0;
+ }
+-  
++
++#if defined (HAVE_DECL_AUDIT_USER_TTY)
++/* Report STRING to the audit system. */
++static void
++audit_tty (char *string)
++{
++  struct sockaddr_nl addr;
++  struct msghdr msg;
++  struct nlmsghdr nlm;
++  struct iovec iov[2];
++  size_t size;
++  int fd;
++
++  size = strlen (string) + 1;
++  fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT);
++  if (fd < 0)
++    return;
++  nlm.nlmsg_len = NLMSG_LENGTH (size);
++  nlm.nlmsg_type = AUDIT_USER_TTY;
++  nlm.nlmsg_flags = NLM_F_REQUEST;
++  nlm.nlmsg_seq = 0;
++  nlm.nlmsg_pid = 0;
++  iov[0].iov_base = &nlm;
++  iov[0].iov_len = sizeof (nlm);
++  iov[1].iov_base = string;
++  iov[1].iov_len = size;
++  addr.nl_family = AF_NETLINK;
++  addr.nl_pad = 0;
++  addr.nl_pid = 0;
++  addr.nl_groups = 0;
++  msg.msg_name = &addr;
++  msg.msg_namelen = sizeof (addr);
++  msg.msg_iov = iov;
++  msg.msg_iovlen = 2;
++  msg.msg_control = NULL;
++  msg.msg_controllen = 0;
++  msg.msg_flags = 0;
++  (void)sendmsg (fd, &msg, 0);
++  close (fd);
++}
++#endif
++
+ /* Read a line of input.  Prompt with PROMPT.  An empty PROMPT means
+    none.  A return value of NULL means that EOF was encountered. */
+ char *
diff --git a/bash/patches/bash-3.2-ssh_source_bash.patch b/bash/patches/bash-3.2-ssh_source_bash.patch
new file mode 100644 (file)
index 0000000..5bd19ce
--- /dev/null
@@ -0,0 +1,12 @@
+diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h
+--- bash-4.0/config-top.h.ssh_source_bash      2009-01-21 15:20:06.000000000 +0100
++++ bash-4.0/config-top.h      2009-01-21 15:25:46.000000000 +0100
+@@ -90,7 +90,7 @@
+    sshd and source the .bashrc if so (like the rshd behavior).  This checks
+    for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment,
+    which can be fooled under certain not-uncommon circumstances. */
+-/* #define SSH_SOURCE_BASHRC */
++#define SSH_SOURCE_BASHRC
+ /* Define if you want the case-capitalizing operators (~[~]) and the
+    `capcase' variable attribute (declare -c). */
diff --git a/bash/patches/bash-4.0-nobits.patch b/bash/patches/bash-4.0-nobits.patch
new file mode 100644 (file)
index 0000000..0e77fda
--- /dev/null
@@ -0,0 +1,154 @@
+diff -up bash-4.0/execute_cmd.c.nobits bash-4.0/execute_cmd.c
+--- bash-4.0/execute_cmd.c.nobits      2009-08-11 11:53:38.000000000 +0200
++++ bash-4.0/execute_cmd.c     2009-08-14 16:18:18.000000000 +0200
+@@ -4747,6 +4747,7 @@ shell_execve (command, args, env)
+             && memcmp (sample, ELFMAG, SELFMAG) == 0)
+           {
+             off_t offset = -1;
++              int dynamic_nobits = 0;
+             /* It is an ELF file.  Now determine whether it is dynamically
+                linked and if yes, get the offset of the interpreter
+@@ -4756,13 +4757,61 @@ shell_execve (command, args, env)
+               {
+                 Elf32_Ehdr ehdr;
+                 Elf32_Phdr *phdr;
+-                int nphdr;
++                  Elf32_Shdr *shdr;
++                int nphdr, nshdr;
+                 /* We have to copy the data since the sample buffer
+                    might not be aligned correctly to be accessed as
+                    an Elf32_Ehdr struct.  */
+                 memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
++                nshdr = ehdr.e_shnum;
++                shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize);
++                  
++                if (shdr != NULL)
++                  {
++#ifdef HAVE_PREAD
++                    sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
++                                        ehdr.e_shoff);
++#else
++                    if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
++                      sample_len = read (fd, shdr,
++                                         nshdr * ehdr.e_shentsize);
++                    else
++                      sample_len = -1;
++#endif
++                    if (sample_len == nshdr * ehdr.e_shentsize)
++                        {
++                          char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size);
++                          if (strings != NULL)
++                            {
++#ifdef HAVE_PREAD
++                            sample_len = pread (fd, strings,
++                                             shdr[ehdr.e_shstrndx].sh_size,
++                                           shdr[ehdr.e_shstrndx].sh_offset);
++#else
++                            if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset,
++                                         SEEK_SET) != -1)
++                              sample_len = read (fd, strings,
++                                             shdr[ehdr.e_shstrndx].sh_size);
++                            else
++                              sample_len = -1;
++#endif
++                              if (sample_len == shdr[ehdr.e_shstrndx].sh_size)
++                              while (nshdr-- > 0)
++                                  if (strcmp (strings + shdr[nshdr].sh_name,
++                                              ".interp") == 0 &&
++                                      shdr[nshdr].sh_type == SHT_NOBITS)
++                                    {
++                                      dynamic_nobits++;
++                                      break;
++                                    }
++                              free (strings);
++                            }
++                        }
++                    free (shdr);
++                  }
++
+                 nphdr = ehdr.e_phnum;
+                 phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
+                 if (phdr != NULL)
+@@ -4792,13 +4841,60 @@ shell_execve (command, args, env)
+               {
+                 Elf64_Ehdr ehdr;
+                 Elf64_Phdr *phdr;
+-                int nphdr;
++                  Elf64_Shdr *shdr;
++                int nphdr, nshdr;
+                 /* We have to copy the data since the sample buffer
+                    might not be aligned correctly to be accessed as
+                    an Elf64_Ehdr struct.  */
+                 memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
++                nshdr = ehdr.e_shnum;
++                shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize);
++                if (shdr != NULL)
++                  {
++#ifdef HAVE_PREAD
++                    sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
++                                        ehdr.e_shoff);
++#else
++                    if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
++                      sample_len = read (fd, shdr,
++                                         nshdr * ehdr.e_shentsize);
++                    else
++                      sample_len = -1;
++#endif
++                    if (sample_len == nshdr * ehdr.e_shentsize)
++                        {
++                          char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size);
++                          if (strings != NULL)
++                            {
++#ifdef HAVE_PREAD
++                            sample_len = pread (fd, strings,
++                                             shdr[ehdr.e_shstrndx].sh_size,
++                                           shdr[ehdr.e_shstrndx].sh_offset);
++#else
++                            if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset,
++                                         SEEK_SET) != -1)
++                              sample_len = read (fd, strings,
++                                             shdr[ehdr.e_shstrndx].sh_size);
++                            else
++                              sample_len = -1;
++#endif
++                              if (sample_len == shdr[ehdr.e_shstrndx].sh_size)
++                              while (nshdr-- > 0)
++                                  if (strcmp (strings + shdr[nshdr].sh_name,
++                                              ".interp") == 0 &&
++                                      shdr[nshdr].sh_type == SHT_NOBITS)
++                                    {
++                                      dynamic_nobits++;
++                                      break;
++                                    }
++                              free (strings);
++                            }
++                        }
++                    free (shdr);
++                  }
++
+                 nphdr = ehdr.e_phnum;
+                 phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
+                 if (phdr != NULL)
+@@ -4858,8 +4954,15 @@ shell_execve (command, args, env)
+                   {
+                     close (fd);
+                     errno = i;
+-                    sys_error ("%s: %s: bad ELF interpreter", command,
+-                               interp);
++                      if (dynamic_nobits > 0)
++                        {
++                          sys_error ("%s: bad ELF interpreter", command);
++                        }
++                      else
++                        {
++                        sys_error ("%s: %s: bad ELF interpreter", command,
++                                   interp);
++                        }
+                     free (interp);
+                     return (EX_NOEXEC);
+                   }
diff --git a/bash/patches/bash-4.0-paths-1.patch b/bash/patches/bash-4.0-paths-1.patch
deleted file mode 100644 (file)
index 735a381..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---- bash-3.0/config.h.in.paths 2004-07-21 21:08:31.000000000 +0100
-+++ bash-3.0/config.h.in       2004-07-28 09:16:27.257884999 +0100
-@@ -197,7 +197,7 @@
- /* System paths */
--#define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail"
-+#define DEFAULT_MAIL_DIRECTORY "/var/spool/mail"
- /* Characteristics of the system's header files and libraries that affect
-    the compilation environment. */
---- bash-3.0/config-top.h.paths        2003-08-05 15:36:12.000000000 +0100
-+++ bash-3.0/config-top.h      2004-07-28 09:36:27.117205637 +0100
-@@ -52,14 +52,14 @@
- /* The default value of the PATH variable. */
- #ifndef DEFAULT_PATH_VALUE
- #define DEFAULT_PATH_VALUE \
--  "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:."
-+  "/usr/local/bin:/bin:/usr/bin"
- #endif
- /* The value for PATH when invoking `command -p'.  This is only used when
-    the Posix.2 confstr () function, or CS_PATH define are not present. */
- #ifndef STANDARD_UTILS_PATH
- #define STANDARD_UTILS_PATH \
--  "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
-+  "/bin:/usr/bin:/usr/sbin:/sbin"
- #endif
- /* Default primary and secondary prompt strings. */
diff --git a/bash/patches/bash-4.1-broken_pipe.patch b/bash/patches/bash-4.1-broken_pipe.patch
new file mode 100644 (file)
index 0000000..e083374
--- /dev/null
@@ -0,0 +1,12 @@
+diff -up bash-4.1/config-top.h.broken_pipe bash-4.1/config-top.h
+--- bash-4.1/config-top.h.broken_pipe  2011-01-06 18:01:30.000000000 +0100
++++ bash-4.1/config-top.h      2011-01-06 18:02:14.000000000 +0100
+@@ -51,7 +51,7 @@
+ /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins
+    like `echo' and `printf' to report errors when output does not succeed
+    due to EPIPE. */
+-/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */
++#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS
+ /* The default value of the PATH variable. */
+ #ifndef DEFAULT_PATH_VALUE
diff --git a/bash/patches/bash-4.1-defer-sigchld-trap.patch b/bash/patches/bash-4.1-defer-sigchld-trap.patch
new file mode 100644 (file)
index 0000000..e00adec
--- /dev/null
@@ -0,0 +1,11 @@
+diff -pruN bash-4.1/jobs.c bash-4.1.patched/jobs.c
+--- bash-4.1/jobs.c    2009-11-30 03:42:05.000000000 +0530
++++ bash-4.1.patched/jobs.c    2012-03-06 16:44:15.706595703 +0530
+@@ -3037,6 +3037,7 @@ waitchld (wpid, block)
+   pid_t pid;
+   int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
++  int called_from_sighand = sigchld;
+   static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */
+   call_set_current = children_exited = 0;
diff --git a/bash/patches/bash-4.1-examples.patch b/bash/patches/bash-4.1-examples.patch
new file mode 100644 (file)
index 0000000..19159e7
--- /dev/null
@@ -0,0 +1,24 @@
+diff -up bash-4.1/examples/loadables/Makefile.in.examples bash-4.1/examples/loadables/Makefile.in
+--- bash-4.1/examples/loadables/Makefile.in.examples   2010-06-22 16:20:02.000000000 +0200
++++ bash-4.1/examples/loadables/Makefile.in    2010-06-22 16:20:41.000000000 +0200
+@@ -43,7 +43,7 @@ host_os = @host_os@
+ host_cpu = @host_cpu@
+ host_vendor = @host_vendor@
+-CFLAGS = @CFLAGS@
++CFLAGS = -O2 -g
+ LOCAL_CFLAGS = @LOCAL_CFLAGS@
+ DEFS = @DEFS@
+ LOCAL_DEFS = @LOCAL_DEFS@
+diff -up bash-4.1/examples/loadables/perl/Makefile.in.examples bash-4.1/examples/loadables/perl/Makefile.in
+--- bash-4.1/examples/loadables/perl/Makefile.in.examples      2010-06-22 16:20:46.000000000 +0200
++++ bash-4.1/examples/loadables/perl/Makefile.in       2010-06-22 16:21:04.000000000 +0200
+@@ -42,7 +42,7 @@ SHELL = @MAKE_SHELL@
+ PERL5 = perl5
+-CFLAGS = @CFLAGS@
++CFLAGS = -O2 -g
+ #
+ # These values are generated for configure by ${topdir}/support/shobj-conf.
diff --git a/bash/patches/bash-4.2-coverity.patch b/bash/patches/bash-4.2-coverity.patch
new file mode 100644 (file)
index 0000000..5fc8456
--- /dev/null
@@ -0,0 +1,99 @@
+diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c
+--- bash-4.2/execute_cmd.c.coverity    2011-02-24 13:04:35.000000000 +0100
++++ bash-4.2/execute_cmd.c     2011-02-24 13:49:13.000000000 +0100
+@@ -5036,7 +5036,7 @@ shell_execve (command, args, env)
+                 Elf32_Ehdr ehdr;
+                 Elf32_Phdr *phdr;
+                   Elf32_Shdr *shdr;
+-                int nphdr, nshdr;
++                Elf32_Half nphdr, nshdr;
+                 /* We have to copy the data since the sample buffer
+                    might not be aligned correctly to be accessed as
+@@ -5044,12 +5044,12 @@ shell_execve (command, args, env)
+                 memcpy (&ehdr, sample, sizeof (Elf32_Ehdr));
+                 nshdr = ehdr.e_shnum;
+-                shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize);
++                shdr = (Elf32_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize);
+                   
+                 if (shdr != NULL)
+                   {
+ #ifdef HAVE_PREAD
+-                    sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
++                    sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize,
+                                         ehdr.e_shoff);
+ #else
+                     if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
+@@ -5091,11 +5091,11 @@ shell_execve (command, args, env)
+                   }
+                 nphdr = ehdr.e_phnum;
+-                phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize);
++                phdr = (Elf32_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize);
+                 if (phdr != NULL)
+                   {
+ #ifdef HAVE_PREAD
+-                    sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
++                    sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize,
+                                         ehdr.e_phoff);
+ #else
+                     if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
+@@ -5120,7 +5120,7 @@ shell_execve (command, args, env)
+                 Elf64_Ehdr ehdr;
+                 Elf64_Phdr *phdr;
+                   Elf64_Shdr *shdr;
+-                int nphdr, nshdr;
++                Elf32_Half nphdr, nshdr;
+                 /* We have to copy the data since the sample buffer
+                    might not be aligned correctly to be accessed as
+@@ -5128,11 +5128,11 @@ shell_execve (command, args, env)
+                 memcpy (&ehdr, sample, sizeof (Elf64_Ehdr));
+                 nshdr = ehdr.e_shnum;
+-                shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize);
++                shdr = (Elf64_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize);
+                 if (shdr != NULL)
+                   {
+ #ifdef HAVE_PREAD
+-                    sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize,
++                    sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize,
+                                         ehdr.e_shoff);
+ #else
+                     if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1)
+@@ -5174,11 +5174,11 @@ shell_execve (command, args, env)
+                   }
+                 nphdr = ehdr.e_phnum;
+-                phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize);
++                phdr = (Elf64_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize);
+                 if (phdr != NULL)
+                   {
+ #ifdef HAVE_PREAD
+-                    sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize,
++                    sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize,
+                                         ehdr.e_phoff);
+ #else
+                     if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1)
+@@ -5200,8 +5200,8 @@ shell_execve (command, args, env)
+             if (offset != -1)
+               {
+-                size_t maxlen = 0;
+-                size_t actlen = 0;
++                ssize_t maxlen = 0;
++                ssize_t actlen = 0;
+                 char *interp = NULL;
+                 do
+@@ -5250,7 +5250,8 @@ shell_execve (command, args, env)
+           }
+ #endif
+ #if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H)
+-        close (fd);
++          if (fd >= 0)
++          close (fd);
+ #endif
+         errno = i;
+         file_error (command);
diff --git a/bash/patches/bash-4.2-manpage_trap.patch b/bash/patches/bash-4.2-manpage_trap.patch
new file mode 100644 (file)
index 0000000..e81882f
--- /dev/null
@@ -0,0 +1,12 @@
+diff -up bash-4.1/doc/bash.1.manpage_trap bash-4.1/doc/bash.1
+--- bash-4.1/doc/bash.1.manpage_trap   2012-08-28 10:06:00.561999092 +0200
++++ bash-4.1/doc/bash.1        2012-08-28 10:06:24.225304505 +0200
+@@ -9251,7 +9251,7 @@ being inverted via
+ These are the same conditions obeyed by the \fBerrexit\fP (\fB\-e\fP) option.
+ .if t .sp 0.5
+ .if n .sp 1
+-Signals ignored upon entry to the shell cannot be trapped or reset.
++Signals ignored upon entry to the shell cannot be trapped, reset or listed.
+ Trapped signals that are not being ignored are reset to their original
+ values in a subshell or subshell environment when one is created.
+ The return status is false if any
diff --git a/bash/patches/bash-4.2-rc2-logout.patch b/bash/patches/bash-4.2-rc2-logout.patch
new file mode 100644 (file)
index 0000000..5aff01a
--- /dev/null
@@ -0,0 +1,36 @@
+diff -up bash-3.2/config-top.h.logout bash-3.2/config-top.h
+--- bash-3.2/config-top.h.logout       2011-04-14 08:55:55.000000000 +0200
++++ bash-3.2/config-top.h      2011-04-14 08:55:55.000000000 +0200
+@@ -78,7 +78,7 @@
+ /* #define SYS_BASHRC "/etc/bash.bashrc" */
+ /* System-wide .bash_logout for login shells. */
+-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */
++#define SYS_BASH_LOGOUT "/etc/bash.bash_logout"
+ /* Define this to make non-interactive shells begun with argv[0][0] == '-'
+    run the startup files when not in posix mode. */
+diff -up bash-3.2/doc/bash.1.logout bash-3.2/doc/bash.1
+--- bash-3.2/doc/bash.1.logout 2011-04-14 09:16:32.000000000 +0200
++++ bash-3.2/doc/bash.1        2011-04-14 11:59:33.000000000 +0200
+@@ -326,8 +326,8 @@ option may be used when the shell is sta
+ .PP
+ When a login shell exits,
+ .B bash
+-reads and executes commands from the file \fI~/.bash_logout\fP, if it
+-exists.
++reads and executes commands from the files \fI~/.bash_logout\fP
++and \fI/etc/bash.bash_logout\fP, if the files exists.
+ .PP
+ When an interactive shell that is not a login shell is started,
+ .B bash
+@@ -8814,6 +8814,9 @@ The \fBbash\fP executable
+ .FN /etc/profile
+ The systemwide initialization file, executed for login shells
+ .TP
++.FN /etc/bash.bash_logout
++The systemwide login shell cleanup file, executed when a login shell exits
++.TP
+ .FN ~/.bash_profile
+ The personal initialization file, executed for login shells
+ .TP
diff --git a/bash/patches/bash-4.2-size_type.patch b/bash/patches/bash-4.2-size_type.patch
new file mode 100644 (file)
index 0000000..ab56677
--- /dev/null
@@ -0,0 +1,14 @@
+diff -up bash-4.2/variables.h.size_type bash-4.2/variables.h
+--- bash-4.2/variables.h.size_type     2012-11-29 10:33:25.109036844 +0100
++++ bash-4.2/variables.h       2012-11-29 10:46:12.718530162 +0100
+@@ -95,8 +95,8 @@ typedef struct variable {
+ typedef struct _vlist {
+   SHELL_VAR **list;
+-  int list_size;      /* allocated size */
+-  int list_len;               /* current number of entries */
++  size_t list_size;   /* allocated size */
++  size_t list_len;    /* current number of entries */
+ } VARLIST;
+ /* The various attributes that a given variable can have. */
diff --git a/bash/patches/bash-4.3-here-doc-ps2-comsub.patch0 b/bash/patches/bash-4.3-here-doc-ps2-comsub.patch0
new file mode 100644 (file)
index 0000000..0ccfd20
--- /dev/null
@@ -0,0 +1,47 @@
+*** ../bash-4.3-patched/shell.h        2012-12-25 21:11:01.000000000 -0500
+--- shell.h    2014-06-03 09:24:28.000000000 -0400
+***************
+*** 169,173 ****
+    int expand_aliases;
+    int echo_input_at_read;
+!   
+  } sh_parser_state_t;
+  
+--- 169,174 ----
+    int expand_aliases;
+    int echo_input_at_read;
+!   int need_here_doc;
+! 
+  } sh_parser_state_t;
+  
+*** ../bash-4.3-patched/parse.y        2014-05-14 09:16:40.000000000 -0400
+--- parse.y    2014-04-30 09:27:59.000000000 -0400
+***************
+*** 2643,2647 ****
+  
+    r = 0;
+!   while (need_here_doc)
+      {
+        parser_state |= PST_HEREDOC;
+--- 2643,2647 ----
+  
+    r = 0;
+!   while (need_here_doc > 0)
+      {
+        parser_state |= PST_HEREDOC;
+***************
+*** 6076,6079 ****
+--- 6076,6080 ----
+    ps->expand_aliases = expand_aliases;
+    ps->echo_input_at_read = echo_input_at_read;
++   ps->need_here_doc = need_here_doc;
+  
+    ps->token = token;
+***************
+*** 6124,6127 ****
+--- 6125,6129 ----
+    expand_aliases = ps->expand_aliases;
+    echo_input_at_read = ps->echo_input_at_read;
++   need_here_doc = ps->need_here_doc;
+  
+    FREE (token);
diff --git a/bash/patches/bash-4.3-lastpipe-nested-pipe-segfault.patch0 b/bash/patches/bash-4.3-lastpipe-nested-pipe-segfault.patch0
new file mode 100644 (file)
index 0000000..200a84f
--- /dev/null
@@ -0,0 +1,24 @@
+*** ../bash-4.3-patched/execute_cmd.c  2014-01-31 10:54:52.000000000 -0500
+--- execute_cmd.c      2014-06-19 08:05:49.000000000 -0400
+***************
+*** 2410,2414 ****
+        lstdin = wait_for (lastpid);
+  #if defined (JOB_CONTROL)
+!       exec_result = job_exit_status (lastpipe_jid);
+  #endif
+        unfreeze_jobs_list ();
+--- 2425,2438 ----
+        lstdin = wait_for (lastpid);
+  #if defined (JOB_CONTROL)
+!       /* If wait_for removes the job from the jobs table, use result of last
+!       command as pipeline's exit status as usual.  The jobs list can get
+!       frozen and unfrozen at inconvenient times if there are multiple pipelines
+!       running simultaneously. */
+!       if (INVALID_JOB (lastpipe_jid) == 0)
+!      exec_result = job_exit_status (lastpipe_jid);
+!       else if (pipefail_opt)
+!      exec_result = exec_result | lstdin;     /* XXX */
+!       /* otherwise we use exec_result */
+!         
+  #endif
+        unfreeze_jobs_list ();
diff --git a/bash/patches/bash-4.3-man-ulimit.patch b/bash/patches/bash-4.3-man-ulimit.patch
new file mode 100644 (file)
index 0000000..fdba544
--- /dev/null
@@ -0,0 +1,24 @@
+From ccd35766d2451677f4c49f66b8e18ad6e274d56a Mon Sep 17 00:00:00 2001
+From: Jan Chaloupka <jchaloup@redhat.com>
+Date: Mon, 7 Jul 2014 07:15:41 +0200
+Subject: [PATCH] bash.1: posix block size for cf options
+
+---
+ doc/bash.1 | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/doc/bash.1 b/doc/bash.1
+index a4ad746..1916515 100644
+--- a/doc/bash.1
++++ b/doc/bash.1
+@@ -9451,6 +9451,7 @@ and
+ which are unscaled values.
+ The return status is 0 unless an invalid option or argument is supplied,
+ or an error occurs while setting a new limit.
++In POSIX Mode 512-byte blocks are used for the `-c' and `-f' options.
+ .RE
+ .TP
+ \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
+-- 
+1.9.3
+
diff --git a/bash/patches/bash-4.3-noecho.patch b/bash/patches/bash-4.3-noecho.patch
new file mode 100644 (file)
index 0000000..8a2842a
--- /dev/null
@@ -0,0 +1,39 @@
+--- bash-4.3/parse.y   2014-05-29 14:46:09.545543384 +0200
++++ bash-4.3/parse.y   2014-05-29 14:48:40.758626213 +0200
+@@ -3858,6 +3858,8 @@ xparse_dolparen (base, string, indp, fla
+   save_parser_state (&ps);
+   save_input_line_state (&ls);
+   orig_eof_token = shell_eof_token;
++  /* avoid echoing every substitution again */
++  echo_input_at_read = 0;
+   /*(*/
+   parser_state |= PST_CMDSUBST|PST_EOFTOKEN;  /* allow instant ')' */ /*(*/
+--- bash-4.3/subst.c   2014-05-29 16:04:35.802784549 +0200
++++ bash-4.3/subst.c   2014-05-29 16:08:25.021942676 +0200
+@@ -7103,6 +7103,7 @@ param_expand (string, sindex, quoted, ex
+   WORD_LIST *list;
+   WORD_DESC *tdesc, *ret;
+   int tflag;
++  int old_echo_input;
+   zindex = *sindex;
+   c = string[++zindex];
+@@ -7401,6 +7402,9 @@ arithsub:
+       }
+ comsub:
++      old_echo_input = echo_input_at_read;
++      /* avoid echoing every substitution again */
++      echo_input_at_read = 0;
+       if (pflags & PF_NOCOMSUB)
+       /* we need zindex+1 because string[zindex] == RPAREN */
+       temp1 = substring (string, *sindex, zindex+1);
+@@ -7413,6 +7417,7 @@ comsub:
+       }
+       FREE (temp);
+       temp = temp1;
++      echo_input_at_read = old_echo_input;
+       break;
+     /* Do POSIX.2d9-style arithmetic substitution.  This will probably go
diff --git a/bash/patches/bash-4.3-parse-time-keyword.patch0 b/bash/patches/bash-4.3-parse-time-keyword.patch0
new file mode 100644 (file)
index 0000000..40337f5
--- /dev/null
@@ -0,0 +1,28 @@
+*** ../bash-4.3-patched/parse.y        2014-04-07 11:56:12.000000000 -0400
+--- parse.y    2014-06-11 10:25:53.000000000 -0400
+***************
+*** 2789,2797 ****
+      case OR_OR:
+      case '&':
+      case DO:
+      case THEN:
+      case ELSE:
+      case '{':                /* } */
+!     case '(':                /* ) */
+      case BANG:               /* ! time pipeline */
+      case TIME:               /* time time pipeline */
+--- 2789,2802 ----
+      case OR_OR:
+      case '&':
++     case WHILE:
+      case DO:
++     case UNTIL:
++     case IF:
+      case THEN:
++     case ELIF:
+      case ELSE:
+      case '{':                /* } */
+!     case '(':                /* )( */
+!     case ')':                /* only valid in case statement */
+      case BANG:               /* ! time pipeline */
+      case TIME:               /* time time pipeline */
diff --git a/bash/patches/bash-4.3-pathexp-globignore-delim.patch0 b/bash/patches/bash-4.3-pathexp-globignore-delim.patch0
new file mode 100644 (file)
index 0000000..6b019f9
--- /dev/null
@@ -0,0 +1,15 @@
+*** ../bash-4.3-patched/pathexp.c      2014-01-31 09:34:33.000000000 -0500
+--- pathexp.c  2014-06-20 15:33:09.000000000 -0400
+***************
+*** 539,543 ****
+      return 0;
+  
+!   n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB);
+    t = substring (s, i, n);
+  
+--- 539,543 ----
+      return 0;
+  
+!   n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB|SD_GLOB);
+    t = substring (s, i, n);
+  
diff --git a/bash/patches/bash-4.3-readline-revert-lines.patch0 b/bash/patches/bash-4.3-readline-revert-lines.patch0
new file mode 100644 (file)
index 0000000..2ce3d87
--- /dev/null
@@ -0,0 +1,18 @@
+*** ../bash-4.3-patched/lib/readline/misc.c    2012-09-01 18:03:11.000000000 -0400
+--- lib/readline/misc.c        2014-06-30 13:41:19.000000000 -0400
+***************
+*** 462,465 ****
+--- 462,466 ----
+         /* Set up rl_line_buffer and other variables from history entry */
+         rl_replace_from_history (entry, 0);   /* entry->line is now current */
++        entry->data = 0;                      /* entry->data is now current undo list */
+         /* Undo all changes to this history entry */
+         while (rl_undo_list)
+***************
+*** 469,473 ****
+         FREE (entry->line);
+         entry->line = savestring (rl_line_buffer);
+-        entry->data = 0;
+       }
+        entry = previous_history ();
+--- 470,473 ----
diff --git a/bash/patches/bash-bashbug.patch b/bash/patches/bash-bashbug.patch
new file mode 100644 (file)
index 0000000..7ed60d2
--- /dev/null
@@ -0,0 +1,56 @@
+diff -up bash-4.2-rc2/doc/bash.1.bashbug bash-4.2-rc2/doc/bash.1
+--- bash-4.2-rc2/doc/bash.1.bashbug    2011-01-16 21:31:39.000000000 +0100
++++ bash-4.2-rc2/doc/bash.1    2011-02-09 08:52:14.000000000 +0100
+@@ -9857,7 +9857,7 @@ The latest version is always available f
+ .PP
+ Once you have determined that a bug actually exists, use the
+ .I bashbug
+-command to submit a bug report.
++command (from the source package) to submit a bug report.
+ If you have a fix, you are encouraged to mail that as well!
+ Suggestions and `philosophical' bug reports may be mailed
+ to \fIbug-bash@gnu.org\fP or posted to the Usenet
+@@ -9879,10 +9879,6 @@ A description of the bug behaviour
+ A short script or `recipe' which exercises the bug
+ .PD
+ .PP
+-.I bashbug
+-inserts the first three items automatically into the template
+-it provides for filing a bug report.
+-.PP
+ Comments and bug reports concerning
+ this manual page should be directed to
+ .IR chet.ramey@case.edu .
+diff -up bash-4.2-rc2/doc/bashref.texi.bashbug bash-4.2-rc2/doc/bashref.texi
+--- bash-4.2-rc2/doc/bashref.texi.bashbug      2011-01-16 21:31:57.000000000 +0100
++++ bash-4.2-rc2/doc/bashref.texi      2011-02-09 08:47:07.000000000 +0100
+@@ -7635,7 +7635,7 @@ The latest version of Bash is always ava
+ @uref{ftp://ftp.gnu.org/pub/gnu/bash/}.
+ Once you have determined that a bug actually exists, use the
+-@code{bashbug} command to submit a bug report.
++@code{bashbug} command (from the source package) to submit a bug report.
+ If you have a fix, you are encouraged to mail that as well!
+ Suggestions and `philosophical' bug reports may be mailed
+ to @email{bug-bash@@gnu.org} or posted to the Usenet
+@@ -7657,9 +7657,6 @@ to reproduce it.
+ @end itemize
+ @noindent
+-@code{bashbug} inserts the first three items automatically into
+-the template it provides for filing a bug report.
+-
+ Please send all reports concerning this manual to
+ @email{bug-bash@@gnu.org}.
+diff -up bash-4.2-rc2/shell.c.bashbug bash-4.2-rc2/shell.c
+--- bash-4.2-rc2/shell.c.bashbug       2011-01-02 22:04:51.000000000 +0100
++++ bash-4.2-rc2/shell.c       2011-02-09 08:47:07.000000000 +0100
+@@ -1823,7 +1823,6 @@ show_shell_usage (fp, extra)
+     {
+       fprintf (fp, _("Type `%s -c \"help set\"' for more information about shell options.\n"), shell_name);
+       fprintf (fp, _("Type `%s -c help' for more information about shell builtin commands.\n"), shell_name);
+-      fprintf (fp, _("Use the `bashbug' command to report bugs.\n"));
+     }
+ }
diff --git a/bash/patches/bash-infotags.patch b/bash/patches/bash-infotags.patch
new file mode 100644 (file)
index 0000000..2e50d6e
--- /dev/null
@@ -0,0 +1,30 @@
+--- bash-3.1/doc/Makefile.in.infotags  2006-07-12 13:57:18.000000000 +0100
++++ bash-3.1/doc/Makefile.in   2006-07-12 13:58:25.000000000 +0100
+@@ -69,7 +69,6 @@
+ TEXI2HTML   = ${SUPPORT_SRCDIR}/texi2html
+ MAN2HTML    = ${BUILD_DIR}/support/man2html
+ HTMLPOST    = ${srcdir}/htmlpost.sh
+-INFOPOST    = ${srcdir}/infopost.sh
+ QUIETPS           = #set this to -q to shut up dvips
+ PAPERSIZE   = letter  # change to a4 for A4-size paper
+ PSDPI       = 600     # could be 300 if you like
+@@ -146,7 +145,7 @@
+ PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps 
+ DVIFILES = bashref.dvi bashref.ps
+-INFOFILES = bashref.info
++INFOFILES = bashref.info bash.info
+ MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0
+ HTMLFILES = bashref.html bash.html
+ PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf
+@@ -167,8 +166,8 @@
+ bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
+       $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
+-bash.info: bashref.info
+-      ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \
++bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
++      $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -o $@
+ bash.txt: bash.1
+ bash.ps: bash.1
index 63ef4d7f696710a0073bab5d5018e64c986ccd95..5d82ac60763d46aeed65b5e0cdf353c0303b5e6b 100644 (file)
@@ -71,7 +71,7 @@ diff -up bash-4.1/builtins/mkbuiltins.c.requires bash-4.1/builtins/mkbuiltins.c
 +                  (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "",
                    document_name (builtin));
  
-                 fprintf
+                 if (inhibit_functions)
 @@ -1581,6 +1599,13 @@ is_posix_builtin (name)
    return (_find_in_table (name, posix_builtins));
  }
@@ -130,8 +130,8 @@ diff -up bash-4.1/eval.c.requires bash-4.1/eval.c
  extern int expand_aliases;
 +extern int rpm_requires;
  
- static void send_pwd_to_eterm __P((void));
static sighandler alrm_catcher __P((int));
+ #if defined (HAVE_POSIX_SIGNALS)
extern sigset_t top_level_mask;
 @@ -136,7 +137,7 @@ reader_loop ()
  
        if (read_command () == 0)
@@ -150,11 +150,11 @@ diff -up bash-4.1/execute_cmd.c.requires bash-4.1/execute_cmd.c
  
 +extern int rpm_requires;
 +
- /* Execute the command passed in COMMAND, perhaps doing it asynchrounously.
+ /* Execute the command passed in COMMAND, perhaps doing it asynchronously.
     COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
     ASYNCHROUNOUS, if non-zero, says to do this command in the background.
 @@ -534,7 +536,13 @@ execute_command_internal (command, async
- #else
    if (breaking || continuing)
      return (last_command_exit_value);
 -  if (command == 0 || read_but_dont_execute)
@@ -166,8 +166,8 @@ diff -up bash-4.1/execute_cmd.c.requires bash-4.1/execute_cmd.c
 +                              command->value.Function_def->command);
 +  if (read_but_dont_execute)
      return (EXECUTION_SUCCESS);
- #endif
  
+   QUIT;
 @@ -5066,7 +5074,7 @@ execute_intern_function (name, function)
  
    if (check_identifier (name, posixly_correct) == 0)
@@ -289,8 +289,8 @@ diff -up bash-4.1/shell.c.requires bash-4.1/shell.c
  static int act_like_sh;
  
 @@ -251,6 +254,7 @@ static const struct {
-   { "posix", Int, &posixly_correct, (char **)0x0 },
    { "protected", Int, &protected_mode, (char **)0x0 },
+ #endif
    { "rcfile", Charp, (int *)0x0, &bashrc_file },
 +  { "rpm-requires", Int, &rpm_requires, (char **)0x0 },
  #if defined (RESTRICTED_SHELL)
diff --git a/bash/patches/bash-setlocale.patch b/bash/patches/bash-setlocale.patch
new file mode 100644 (file)
index 0000000..f068ec7
--- /dev/null
@@ -0,0 +1,10 @@
+--- bash-3.0/builtins/setattr.def.setlocale    2005-08-08 12:22:42.000000000 +0100
++++ bash-3.0/builtins/setattr.def      2005-08-08 12:25:16.000000000 +0100
+@@ -423,4 +423,7 @@
+   if (var && (exported_p (var) || (attribute & att_exported)))
+     array_needs_making++;     /* XXX */
++
++  if (var)
++    stupidly_hack_special_variables (name);
+ }
diff --git a/bash/patches/bash-tty-tests.patch b/bash/patches/bash-tty-tests.patch
new file mode 100644 (file)
index 0000000..984f1b4
--- /dev/null
@@ -0,0 +1,54 @@
+diff -up bash-4.2-rc2/tests/exec.right.tty_tests bash-4.2-rc2/tests/exec.right
+--- bash-4.2-rc2/tests/exec.right.tty_tests    2011-02-09 10:42:48.000000000 +0100
++++ bash-4.2-rc2/tests/exec.right      2011-02-09 10:42:59.000000000 +0100
+@@ -50,7 +50,6 @@ this is ohio-state
+ 0
+ 1
+ testb
+-expand_aliases        on
+ 1
+ 1
+ 1
+diff -up bash-4.2-rc2/tests/execscript.tty_tests bash-4.2-rc2/tests/execscript
+--- bash-4.2-rc2/tests/execscript.tty_tests    2010-12-27 22:01:02.000000000 +0100
++++ bash-4.2-rc2/tests/execscript      2011-02-09 10:42:34.000000000 +0100
+@@ -107,8 +107,6 @@ ${THIS_SH} ./exec6.sub
+ # checks for properly deciding what constitutes an executable file
+ ${THIS_SH} ./exec7.sub
+-${THIS_SH} -i ./exec8.sub
+-
+ ${THIS_SH} ./exec9.sub
+ true | `echo true` &
+diff -up bash-4.2-rc2/tests/read.right.tty_tests bash-4.2-rc2/tests/read.right
+--- bash-4.2-rc2/tests/read.right.tty_tests    2010-12-21 16:49:00.000000000 +0100
++++ bash-4.2-rc2/tests/read.right      2011-02-09 10:42:34.000000000 +0100
+@@ -33,14 +33,6 @@ a = abcdefg
+ a = xyz
+ a = -xyz 123-
+ a = abc
+-timeout 1: ok
+-
+-timeout 2: ok
+-
+-./read2.sub: line 23: read: -3: invalid timeout specification
+-1
+-
+-abcde
+ ./read3.sub: line 4: read: -1: invalid number
+ abc
+ ab
+diff -up bash-4.2-rc2/tests/read.tests.tty_tests bash-4.2-rc2/tests/read.tests
+--- bash-4.2-rc2/tests/read.tests.tty_tests    2008-09-06 19:09:11.000000000 +0200
++++ bash-4.2-rc2/tests/read.tests      2011-02-09 10:42:34.000000000 +0100
+@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; re
+ # test read -d delim behavior
+ ${THIS_SH} ./read1.sub
+-# test read -t timeout behavior
+-${THIS_SH} ./read2.sub
+-
+ # test read -n nchars behavior
+ ${THIS_SH} ./read3.sub
diff --git a/bash/patches/bash43-001 b/bash/patches/bash43-001
new file mode 100644 (file)
index 0000000..ea1c6b2
--- /dev/null
@@ -0,0 +1,58 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-001
+
+Bug-Reported-by:       NBaH <nbah@sfr.fr>
+Bug-Reference-ID:      <ler0b5$iu9$1@speranza.aioe.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html
+
+Bug-Description:
+
+A missing check for a valid option prevented `test -R' from working.  There
+is another problem that causes bash to look up the wrong variable name when
+processing the argument to `test -R'.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/test.c 2014-02-04 16:52:58.000000000 -0500
+--- test.c     2014-02-28 21:22:44.000000000 -0500
+***************
+*** 647,652 ****
+  
+      case 'R':
+!       v = find_variable (arg);
+!       return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE);
+      }
+  
+--- 647,652 ----
+  
+      case 'R':
+!       v = find_variable_noref (arg);
+!       return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE);
+      }
+  
+***************
+*** 724,727 ****
+--- 724,728 ----
+      case 'u': case 'v': case 'w': case 'x': case 'z':
+      case 'G': case 'L': case 'O': case 'S': case 'N':
++     case 'R':
+        return (1);
+      }
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 0
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-002 b/bash/patches/bash43-002
new file mode 100644 (file)
index 0000000..735b7b8
--- /dev/null
@@ -0,0 +1,62 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-002
+
+Bug-Reported-by:       Moe Tunes <moetunes42@gmail.com>
+Bug-Reference-ID:      <53103F49.3070100@gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html
+
+Bug-Description:
+
+A change to save state while running the DEBUG trap caused pipelines to hang
+on systems which need process group synchronization while building pipelines.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/trap.c 2014-02-05 10:03:21.000000000 -0500
+--- trap.c     2014-02-28 09:51:43.000000000 -0500
+***************
+*** 921,925 ****
+  
+  #if defined (JOB_CONTROL)
+!       save_pipeline (1);     /* XXX only provides one save level */
+  #endif
+  
+--- 921,926 ----
+  
+  #if defined (JOB_CONTROL)
+!       if (sig != DEBUG_TRAP) /* run_debug_trap does this */
+!      save_pipeline (1);      /* XXX only provides one save level */
+  #endif
+  
+***************
+*** 941,945 ****
+  
+  #if defined (JOB_CONTROL)
+!       restore_pipeline (1);
+  #endif
+  
+--- 942,947 ----
+  
+  #if defined (JOB_CONTROL)
+!       if (sig != DEBUG_TRAP) /* run_debug_trap does this */
+!      restore_pipeline (1);
+  #endif
+  
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 1
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-003 b/bash/patches/bash43-003
new file mode 100644 (file)
index 0000000..0f32f41
--- /dev/null
@@ -0,0 +1,48 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-003
+
+Bug-Reported-by:       Anatol Pomozov <anatol.pomozov@gmail.com>
+Bug-Reference-ID:      <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html
+
+Bug-Description:
+
+When in callback mode, some readline commands can cause readline to seg
+fault by passing invalid contexts to callback functions.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/readline/readline.c        2013-10-28 14:58:06.000000000 -0400
+--- lib/readline/readline.c    2014-03-10 14:15:02.000000000 -0400
+***************
+*** 745,749 ****
+  
+    RL_CHECK_SIGNALS ();
+!   if (r == 0)                        /* success! */
+      {
+        _rl_keyseq_chain_dispose ();
+--- 745,750 ----
+  
+    RL_CHECK_SIGNALS ();
+!   /* We only treat values < 0 specially to simulate recursion. */
+!   if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0))        /* success! or failure! */
+      {
+        _rl_keyseq_chain_dispose ();
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 2
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-004 b/bash/patches/bash43-004
new file mode 100644 (file)
index 0000000..010f04a
--- /dev/null
@@ -0,0 +1,47 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-004
+
+Bug-Reported-by:       Daan van Rossum <daan@flash.uchicago.edu>
+Bug-Reference-ID:      <20140307072523.GA14250@flash.uchicago.edu>
+Bug-Reference-URL:     
+
+Bug-Description:
+
+The `.' command in vi mode cannot undo multi-key commands beginning with
+`c', `d', and `y' (command plus motion specifier).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/readline/readline.c        2013-10-28 14:58:06.000000000 -0400
+--- lib/readline/readline.c    2014-03-07 15:20:33.000000000 -0500
+***************
+*** 965,969 ****
+    if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
+        key != ANYOTHERKEY &&
+!       rl_key_sequence_length == 1 && /* XXX */
+        _rl_vi_textmod_command (key))
+      _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
+--- 965,969 ----
+    if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
+        key != ANYOTHERKEY &&
+!       _rl_dispatching_keymap == vi_movement_keymap &&
+        _rl_vi_textmod_command (key))
+      _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 3
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-005 b/bash/patches/bash43-005
new file mode 100644 (file)
index 0000000..bcd4069
--- /dev/null
@@ -0,0 +1,63 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-005
+
+Bug-Reported-by:       David Sines <dave.gma@googlemail.com>
+Bug-Reference-ID:      <CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html
+
+Bug-Description:
+
+When in Posix mode, bash did not correctly interpret the ANSI-C-style
+$'...' quoting mechanism when performing pattern substitution word
+expansions within double quotes.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/parse.y        2014-02-11 09:42:10.000000000 -0500
+--- parse.y    2014-03-07 20:57:15.000000000 -0500
+***************
+*** 3399,3403 ****
+           unescaped double-quotes or single-quotes, if any, shall occur." */
+        /* This was changed in Austin Group Interp 221 */
+!       if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+       continue;
+  
+--- 3399,3403 ----
+           unescaped double-quotes or single-quotes, if any, shall occur." */
+        /* This was changed in Austin Group Interp 221 */
+!       if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+       continue;
+  
+*** ../bash-4.3/y.tab.c        2014-02-11 10:57:47.000000000 -0500
+--- y.tab.c    2014-03-28 10:41:15.000000000 -0400
+***************
+*** 5711,5715 ****
+           unescaped double-quotes or single-quotes, if any, shall occur." */
+        /* This was changed in Austin Group Interp 221 */
+!       if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+       continue;
+  
+--- 5711,5715 ----
+           unescaped double-quotes or single-quotes, if any, shall occur." */
+        /* This was changed in Austin Group Interp 221 */
+!       if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
+       continue;
+  
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 4
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-006 b/bash/patches/bash43-006
new file mode 100644 (file)
index 0000000..24ff057
--- /dev/null
@@ -0,0 +1,48 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-006
+
+Bug-Reported-by:       Eduardo A . Bustamante Lopez <dualbus@gmail.com>
+Bug-Reference-ID:      <20140228170013.GA16015@dualbus.me>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html
+
+Bug-Description:
+
+A shell that started with job control active but was not interactive left
+the terminal in the wrong process group when exiting, causing its parent
+shell to get a stop signal when it attempted to read from the terminal.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/jobs.c 2014-01-10 09:05:34.000000000 -0500
+--- jobs.c     2014-03-02 18:05:09.000000000 -0500
+***************
+*** 4375,4379 ****
+  end_job_control ()
+  {
+!   if (interactive_shell)             /* XXX - should it be interactive? */
+      {
+        terminate_stopped_jobs ();
+--- 4375,4379 ----
+  end_job_control ()
+  {
+!   if (interactive_shell || job_control)              /* XXX - should it be just job_control? */
+      {
+        terminate_stopped_jobs ();
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 5
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-007 b/bash/patches/bash43-007
new file mode 100644 (file)
index 0000000..0d62c9e
--- /dev/null
@@ -0,0 +1,50 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-007
+
+Bug-Reported-by:       geir.hauge@gmail.com
+Bug-Reference-ID:      <20140318093650.B181C1C5B0B@gina.itea.ntnu.no>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html
+
+Bug-Description:
+
+Using compound assignments for associative arrays like
+
+assoc=( [x]= [y]=bar )
+
+left the value corresponding to the key `x' NULL.  This caused subsequent
+lookups to interpret it as unset.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/arrayfunc.c    2013-08-02 16:19:59.000000000 -0400
+--- arrayfunc.c        2014-03-18 11:08:15.000000000 -0400
+***************
+*** 598,601 ****
+--- 598,606 ----
+       {
+         val = expand_assignment_string_to_string (val, 0);
++        if (val == 0)
++          {
++            val = (char *)xmalloc (1);
++            val[0] = '\0';    /* like do_assignment_internal */
++          }
+         free_val = 1;
+       }
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 6
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-008 b/bash/patches/bash43-008
new file mode 100644 (file)
index 0000000..0ae7c95
--- /dev/null
@@ -0,0 +1,188 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-008
+
+Bug-Reported-by:       Stephane Chazelas <stephane.chazelas@gmail.com>
+Bug-Reference-ID:      <20140318135901.GB22158@chaz.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html
+
+Bug-Description:
+
+Some extended glob patterns incorrectly matched filenames with a leading
+dot, regardless of the setting of the `dotglob' option.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3/lib/glob/gmisc.c       2013-10-28 14:45:25.000000000 -0400
+--- lib/glob/gmisc.c   2014-03-19 09:16:08.000000000 -0400
+***************
+*** 211,214 ****
+--- 211,215 ----
+      case '!':
+      case '@':
++     case '?':
+        return (pat[1] == LPAREN);
+      default:
+*** ../bash-4.3/lib/glob/glob.c        2014-01-31 21:43:51.000000000 -0500
+--- lib/glob/glob.c    2014-03-20 09:01:26.000000000 -0400
+***************
+*** 180,202 ****
+       int flags;
+  {
+!   char *pp, *pe, *t;
+!   int n, r;
+  
+    pp = pat + 2;
+!   pe = pp + strlen (pp) - 1; /*(*/
+!   if (*pe != ')')
+!     return 0;
+!   if ((t = strchr (pp, '|')) == 0)   /* easy case first */
+      {
+        *pe = '\0';
+        r = skipname (pp, dname, flags);       /*(*/
+        *pe = ')';
+        return r;
+      }
+    while (t = glob_patscan (pp, pe, '|'))
+      {
+        n = t[-1];
+        t[-1] = '\0';
+        r = skipname (pp, dname, flags);
+        t[-1] = n;
+        if (r == 0)    /* if any pattern says not skip, we don't skip */
+--- 180,215 ----
+       int flags;
+  {
+!   char *pp, *pe, *t, *se;
+!   int n, r, negate;
+  
++   negate = *pat == '!';
+    pp = pat + 2;
+!   se = pp + strlen (pp) - 1;         /* end of string */
+!   pe = glob_patscan (pp, se, 0);     /* end of extglob pattern (( */
+!   /* we should check for invalid extglob pattern here */
+!   /* if pe != se we have more of the pattern at the end of the extglob
+!      pattern. Check the easy case first ( */
+!   if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
+      {
+        *pe = '\0';
++ #if defined (HANDLE_MULTIBYTE)
++       r = mbskipname (pp, dname, flags);
++ #else
+        r = skipname (pp, dname, flags);       /*(*/
++ #endif
+        *pe = ')';
+        return r;
+      }
++ 
++   /* check every subpattern */
+    while (t = glob_patscan (pp, pe, '|'))
+      {
+        n = t[-1];
+        t[-1] = '\0';
++ #if defined (HANDLE_MULTIBYTE)
++       r = mbskipname (pp, dname, flags);
++ #else
+        r = skipname (pp, dname, flags);
++ #endif
+        t[-1] = n;
+        if (r == 0)    /* if any pattern says not skip, we don't skip */
+***************
+*** 205,219 ****
+      }        /*(*/
+  
+!   if (pp == pe)              /* glob_patscan might find end of pattern */
+      return r;
+  
+!   *pe = '\0';
+! #  if defined (HANDLE_MULTIBYTE)
+!   r = mbskipname (pp, dname, flags); /*(*/
+! #  else
+!   r = skipname (pp, dname, flags);   /*(*/
+! #  endif
+!   *pe = ')';
+!   return r;
+  }
+  #endif
+--- 218,227 ----
+      }        /*(*/
+  
+!   /* glob_patscan might find end of pattern */
+!   if (pp == se)
+      return r;
+  
+!   /* but if it doesn't then we didn't match a leading dot */
+!   return 0;
+  }
+  #endif
+***************
+*** 278,289 ****
+  {
+  #if EXTENDED_GLOB
+!   wchar_t *pp, *pe, *t, n;
+!   int r;
+  
+    pp = pat + 2;
+!   pe = pp + wcslen (pp) - 1; /*(*/
+!   if (*pe != L')')
+!     return 0;
+!   if ((t = wcschr (pp, L'|')) == 0)
+      {
+        *pe = L'\0';
+--- 286,298 ----
+  {
+  #if EXTENDED_GLOB
+!   wchar_t *pp, *pe, *t, n, *se;
+!   int r, negate;
+  
++   negate = *pat == L'!';
+    pp = pat + 2;
+!   se = pp + wcslen (pp) - 1; /*(*/
+!   pe = glob_patscan_wc (pp, se, 0);
+! 
+!   if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
+      {
+        *pe = L'\0';
+***************
+*** 292,295 ****
+--- 301,306 ----
+        return r;
+      }
++ 
++   /* check every subpattern */
+    while (t = glob_patscan_wc (pp, pe, '|'))
+      {
+***************
+*** 306,313 ****
+      return r;
+  
+!   *pe = L'\0';
+!   r = wchkname (pp, dname);  /*(*/
+!   *pe = L')';
+!   return r;
+  #else
+    return (wchkname (pat, dname));
+--- 317,322 ----
+      return r;
+  
+!   /* but if it doesn't then we didn't match a leading dot */
+!   return 0;
+  #else
+    return (wchkname (pat, dname));
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-009 b/bash/patches/bash43-009
new file mode 100644 (file)
index 0000000..015835c
--- /dev/null
@@ -0,0 +1,64 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-009
+
+Bug-Reported-by:       Matthias Klose <doko@debian.org>
+Bug-Reference-ID:      <53346FC8.6090005@debian.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html
+
+Bug-Description:
+
+There is a problem with unsigned sign extension when attempting to reallocate
+the input line when it is fewer than 3 characters long and there has been a
+history expansion.  The sign extension causes the shell to not reallocate the
+line, which results in a segmentation fault when it writes past the end.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/parse.y        2014-02-11 09:42:10.000000000 -0500
+--- parse.y    2014-03-27 16:33:29.000000000 -0400
+***************
+*** 2425,2429 ****
+        if (shell_input_line_terminator != EOF)
+       {
+!        if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
+           shell_input_line = (char *)xrealloc (shell_input_line,
+                                       1 + (shell_input_line_size += 2));
+--- 2425,2429 ----
+        if (shell_input_line_terminator != EOF)
+       {
+!        if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
+           shell_input_line = (char *)xrealloc (shell_input_line,
+                                       1 + (shell_input_line_size += 2));
+*** ../bash-4.3-patched/y.tab.c        2014-03-28 11:17:06.000000000 -0400
+--- y.tab.c    2014-04-07 11:48:31.000000000 -0400
+***************
+*** 4737,4741 ****
+        if (shell_input_line_terminator != EOF)
+       {
+!        if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
+           shell_input_line = (char *)xrealloc (shell_input_line,
+                                       1 + (shell_input_line_size += 2));
+--- 4737,4741 ----
+        if (shell_input_line_terminator != EOF)
+       {
+!        if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
+           shell_input_line = (char *)xrealloc (shell_input_line,
+                                       1 + (shell_input_line_size += 2));
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-010 b/bash/patches/bash43-010
new file mode 100644 (file)
index 0000000..835a96e
--- /dev/null
@@ -0,0 +1,157 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-010
+
+Bug-Reported-by:       Albert Shih <Albert.Shih@obspm.fr>
+Bug-Reference-ID:      Wed, 5 Mar 2014 23:01:40 +0100
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html
+
+Bug-Description:
+
+Patch (apply with `patch -p0'):
+
+This patch changes the behavior of programmable completion to compensate
+for two assumptions made by the bash-completion package.  Bash-4.3 changed
+to dequote the argument to programmable completion only under certain
+circumstances, to make the behavior of compgen more consistent when run
+from the command line -- closer to the behavior when run by a shell function
+run as part of programmable completion.  Bash-completion can pass quoted
+arguments to compgen when the original word to be completed was not quoted,
+expecting programmable completion to dequote the word before attempting
+completion.
+
+This patch fixes two cases:
+
+1.  An empty string that bash-completion passes to compgen as a quoted null
+    string ('').
+
+2.  An unquoted word that bash-completion quotes using single quotes or
+    backslashes before passing it to compgen.
+
+In these cases, since readline did not detect a quote character in the original
+word to be completed, bash-4.3 
+
+*** ../bash-4.3/externs.h      2014-01-02 14:58:20.000000000 -0500
+--- externs.h  2014-03-13 14:42:57.000000000 -0400
+***************
+*** 325,328 ****
+--- 325,329 ----
+  extern char *sh_backslash_quote_for_double_quotes __P((char *));
+  extern int sh_contains_shell_metas __P((char *));
++ extern int sh_contains_quotes __P((char *));
+  
+  /* declarations for functions defined in lib/sh/spell.c */
+*** ../bash-4.3/lib/sh/shquote.c       2013-03-31 21:53:32.000000000 -0400
+--- lib/sh/shquote.c   2014-03-13 14:42:57.000000000 -0400
+***************
+*** 312,313 ****
+--- 312,327 ----
+    return (0);
+  }
++ 
++ int
++ sh_contains_quotes (string)
++      char *string;
++ {
++   char *s;
++ 
++   for (s = string; s && *s; s++)
++     {
++       if (*s == '\'' || *s == '"' || *s == '\\')
++      return 1;
++     }
++   return 0;
++ }
+*** ../bash-4.3/pcomplete.c    2013-08-26 15:23:45.000000000 -0400
+--- pcomplete.c        2014-03-25 17:23:23.000000000 -0400
+***************
+*** 184,187 ****
+--- 184,188 ----
+  COMPSPEC *pcomp_curcs;
+  const char *pcomp_curcmd;
++ const char *pcomp_curtxt;
+  
+  #ifdef DEBUG
+***************
+*** 754,757 ****
+--- 755,784 ----
+         dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
+       }
++       /* Intended to solve a mismatched assumption by bash-completion.  If
++       the text to be completed is empty, but bash-completion turns it into
++       a quoted string ('') assuming that this code will dequote it before
++       calling readline, do the dequoting. */
++       else if (iscompgen && iscompleting &&
++             pcomp_curtxt && *pcomp_curtxt == 0 &&
++             text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 && 
++             rl_filename_dequoting_function)
++      dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
++       /* Another mismatched assumption by bash-completion.  If compgen is being
++               run as part of bash-completion, and the argument to compgen is not
++               the same as the word originally passed to the programmable completion
++               code, dequote the argument if it has quote characters.  It's an
++               attempt to detect when bash-completion is quoting its filename
++               argument before calling compgen. */
++       /* We could check whether gen_shell_function_matches is in the call
++       stack by checking whether the gen-shell-function-matches tag is in
++       the unwind-protect stack, but there's no function to do that yet.
++       We could simply check whether we're executing in a function by
++       checking variable_context, and may end up doing that. */
++       else if (iscompgen && iscompleting && rl_filename_dequoting_function &&
++             pcomp_curtxt && text &&
++             STREQ (pcomp_curtxt, text) == 0 &&
++             variable_context &&
++             sh_contains_quotes (text))       /* guess */
++      dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
+        else
+       dfn = savestring (text);
+***************
+*** 1523,1527 ****
+  {
+    COMPSPEC *cs, *oldcs;
+!   const char *oldcmd;
+    STRINGLIST *ret;
+  
+--- 1550,1554 ----
+  {
+    COMPSPEC *cs, *oldcs;
+!   const char *oldcmd, *oldtxt;
+    STRINGLIST *ret;
+  
+***************
+*** 1546,1552 ****
+--- 1573,1581 ----
+    oldcs = pcomp_curcs;
+    oldcmd = pcomp_curcmd;
++   oldtxt = pcomp_curtxt;
+  
+    pcomp_curcs = cs;
+    pcomp_curcmd = cmd;
++   pcomp_curtxt = word;
+  
+    ret = gen_compspec_completions (cs, cmd, word, start, end, foundp);
+***************
+*** 1554,1557 ****
+--- 1583,1587 ----
+    pcomp_curcs = oldcs;
+    pcomp_curcmd = oldcmd;
++   pcomp_curtxt = oldtxt;
+  
+    /* We need to conditionally handle setting *retryp here */
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-011 b/bash/patches/bash43-011
new file mode 100644 (file)
index 0000000..cdc1572
--- /dev/null
@@ -0,0 +1,49 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-011
+
+Bug-Reported-by:       Egmont Koblinger <egmont@gmail.com>
+Bug-Reference-ID:      <CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html
+
+Bug-Description:
+
+The signal handling changes to bash and readline (to avoid running any code
+in a signal handler context) cause the cursor to be placed on the wrong
+line of a multi-line command after a ^C interrupts editing.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/display.c 2013-12-27 13:10:56.000000000 -0500
+--- lib/readline/display.c     2014-03-27 11:52:45.000000000 -0400
+***************
+*** 2678,2682 ****
+    if (_rl_echoing_p)
+      {
+!       _rl_move_vert (_rl_vis_botlin);
+        _rl_vis_botlin = 0;
+        fflush (rl_outstream);
+--- 2678,2683 ----
+    if (_rl_echoing_p)
+      {
+!       if (_rl_vis_botlin > 0)        /* minor optimization plus bug fix */
+!      _rl_move_vert (_rl_vis_botlin);
+        _rl_vis_botlin = 0;
+        fflush (rl_outstream);
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 11
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-012 b/bash/patches/bash43-012
new file mode 100644 (file)
index 0000000..176fa15
--- /dev/null
@@ -0,0 +1,43 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-012
+
+Bug-Reported-by:       Eduardo A. Bustamante López<dualbus@gmail.com>
+Bug-Reference-ID:      <5346B54C.4070205@case.edu>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html
+
+Bug-Description:
+
+When a SIGCHLD trap runs a command containing a shell builtin while
+a script is running `wait' to wait for all running children to complete,
+the SIGCHLD trap will not be run once for each child that terminates.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/jobs.c 2014-03-28 10:54:19.000000000 -0400
+--- jobs.c     2014-04-15 08:47:03.000000000 -0400
+***************
+*** 3598,3601 ****
+--- 3598,3602 ----
+    unwind_protect_pointer (the_pipeline);
+    unwind_protect_pointer (subst_assign_varlist);
++   unwind_protect_pointer (this_shell_builtin);
+  
+    /* We have to add the commands this way because they will be run
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 11
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 12
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-013 b/bash/patches/bash43-013
new file mode 100644 (file)
index 0000000..8f4006b
--- /dev/null
@@ -0,0 +1,66 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-013
+
+Bug-Reported-by:       <Trond.Endrestol@ximalas.info>
+Bug-Reference-ID:      <alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html
+
+Bug-Description:
+
+Using reverse-i-search when horizontal scrolling is enabled does not redisplay
+the entire line containing the successful search results.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/lib/readline/display.c 2014-04-08 18:19:36.000000000 -0400
+--- lib/readline/display.c     2014-04-20 18:32:52.000000000 -0400
+***************
+*** 1638,1642 ****
+       the spot of first difference is before the end of the invisible chars,
+       lendiff needs to be adjusted. */
+!   if (current_line == 0 && !_rl_horizontal_scroll_mode &&
+        current_invis_chars != visible_wrap_offset)
+      {
+--- 1638,1642 ----
+       the spot of first difference is before the end of the invisible chars,
+       lendiff needs to be adjusted. */
+!   if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
+        current_invis_chars != visible_wrap_offset)
+      {
+***************
+*** 1826,1831 ****
+               _rl_last_c_pos += bytes_to_insert;
+  
+             if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
+!              goto clear_rest_of_line;
+           }
+       }
+--- 1826,1836 ----
+               _rl_last_c_pos += bytes_to_insert;
+  
++            /* XXX - we only want to do this if we are at the end of the line
++               so we move there with _rl_move_cursor_relative */
+             if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
+!              {
+!                _rl_move_cursor_relative (ne-new, new);
+!                goto clear_rest_of_line;
+!              }
+           }
+       }
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 12
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 13
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-014 b/bash/patches/bash43-014
new file mode 100644 (file)
index 0000000..f837196
--- /dev/null
@@ -0,0 +1,102 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-014
+
+Bug-Reported-by:       Greg Wooledge <wooledg@eeg.ccf.org>
+Bug-Reference-ID:      <20140418202123.GB7660@eeg.ccf.org>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html
+
+Bug-Description:
+
+Under certain circumstances, $@ is expanded incorrectly in contexts where
+word splitting is not performed.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/subst.c        2014-01-23 16:26:37.000000000 -0500
+--- subst.c    2014-04-19 15:41:26.000000000 -0400
+***************
+*** 3249,3254 ****
+--- 3249,3256 ----
+      return ((char *)NULL);
+  
++   expand_no_split_dollar_star = 1;
+    w->flags |= W_NOSPLIT2;
+    l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
++   expand_no_split_dollar_star = 0;
+    if (l)
+      {
+***************
+*** 7848,7851 ****
+--- 7850,7857 ----
+        according to POSIX.2, this expands to a list of the positional
+        parameters no matter what IFS is set to. */
++       /* XXX - what to do when in a context where word splitting is not
++       performed? Even when IFS is not the default, posix seems to imply
++       that we behave like unquoted $* ?  Maybe we should use PF_NOSPLIT2
++       here. */
+        temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted);
+  
+***************
+*** 8817,8820 ****
+--- 8823,8827 ----
+      {
+        char *ifs_chars;
++       char *tstring;
+  
+        ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
+***************
+*** 8831,8834 ****
+--- 8838,8865 ----
+        if (split_on_spaces)
+       list = list_string (istring, " ", 1);   /* XXX quoted == 1? */
++       /* If we have $@ (has_dollar_at != 0) and we are in a context where we
++       don't want to split the result (W_NOSPLIT2), and we are not quoted,
++       we have already separated the arguments with the first character of
++       $IFS.  In this case, we want to return a list with a single word
++       with the separator possibly replaced with a space (it's what other
++       shells seem to do).
++       quoted_dollar_at is internal to this function and is set if we are
++       passed an argument that is unquoted (quoted == 0) but we encounter a
++       double-quoted $@ while expanding it. */
++       else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2))
++      {
++        /* Only split and rejoin if we have to */
++        if (*ifs_chars && *ifs_chars != ' ')
++          {
++            list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
++            tstring = string_list (list);
++          }
++        else
++          tstring = istring;
++        tword = make_bare_word (tstring);
++        if (tstring != istring)
++          free (tstring);
++        goto set_word_flags;
++      }
+        else if (has_dollar_at && ifs_chars)
+       list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
+***************
+*** 8836,8839 ****
+--- 8867,8871 ----
+       {
+         tword = make_bare_word (istring);
++ set_word_flags:
+         if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
+           tword->flags |= W_QUOTED;
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 13
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 14
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-015 b/bash/patches/bash43-015
new file mode 100644 (file)
index 0000000..9c4e5ea
--- /dev/null
@@ -0,0 +1,58 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-015
+
+Bug-Reported-by:       Clark Wang <dearvoid@gmail.com>
+Bug-Reference-ID:      <CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html
+
+Bug-Description:
+
+When completing directory names, the directory name is dequoted twice.
+This causes problems for directories with single and double quotes in
+their names.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/bashline.c     2014-02-09 19:56:58.000000000 -0500
+--- bashline.c 2014-04-25 14:57:52.000000000 -0400
+***************
+*** 4168,4174 ****
+  
+    qc = rl_dispatching ? rl_completion_quote_character : 0;  
+!   dfn = bash_dequote_filename ((char *)text, qc);
+    m1 = rl_completion_matches (dfn, rl_filename_completion_function);
+!   free (dfn);
+  
+    if (m1 == 0 || m1[0] == 0)
+--- 4209,4222 ----
+  
+    qc = rl_dispatching ? rl_completion_quote_character : 0;  
+!   /* If rl_completion_found_quote != 0, rl_completion_matches will call the
+!      filename dequoting function, causing the directory name to be dequoted
+!      twice. */
+!   if (rl_dispatching && rl_completion_found_quote == 0)
+!     dfn = bash_dequote_filename ((char *)text, qc);
+!   else
+!     dfn = (char *)text;
+    m1 = rl_completion_matches (dfn, rl_filename_completion_function);
+!   if (dfn != text)
+!     free (dfn);
+  
+    if (m1 == 0 || m1[0] == 0)
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 14
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 15
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-016 b/bash/patches/bash43-016
new file mode 100644 (file)
index 0000000..882d593
--- /dev/null
@@ -0,0 +1,132 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-016
+
+Bug-Reported-by:       Pierre Gaston <pierre.gaston@gmail.com>
+Bug-Reference-ID:      <CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html
+
+Bug-Description:
+
+An extended glob pattern containing a slash (`/') causes the globbing code
+to misinterpret it as a directory separator.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/lib/glob/glob.c        2014-03-28 10:54:23.000000000 -0400
+--- lib/glob/glob.c    2014-05-02 10:24:28.000000000 -0400
+***************
+*** 124,127 ****
+--- 124,129 ----
+  extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int));
+  
++ extern char *glob_dirscan __P((char *, int));
++ 
+  /* Compile `glob_loop.c' for single-byte characters. */
+  #define CHAR unsigned char
+***************
+*** 188,191 ****
+--- 190,196 ----
+    pe = glob_patscan (pp, se, 0);     /* end of extglob pattern (( */
+    /* we should check for invalid extglob pattern here */
++   if (pe == 0)
++     return 0;
++ 
+    /* if pe != se we have more of the pattern at the end of the extglob
+       pattern. Check the easy case first ( */
+***************
+*** 1016,1020 ****
+    char **result;
+    unsigned int result_size;
+!   char *directory_name, *filename, *dname;
+    unsigned int directory_len;
+    int free_dirname;                  /* flag */
+--- 1021,1025 ----
+    char **result;
+    unsigned int result_size;
+!   char *directory_name, *filename, *dname, *fn;
+    unsigned int directory_len;
+    int free_dirname;                  /* flag */
+***************
+*** 1032,1035 ****
+--- 1037,1052 ----
+    /* Find the filename.  */
+    filename = strrchr (pathname, '/');
++ #if defined (EXTENDED_GLOB)
++   if (filename && extended_glob)
++     {
++       fn = glob_dirscan (pathname, '/');
++ #if DEBUG_MATCHING
++       if (fn != filename)
++      fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename);
++ #endif
++       filename = fn;
++     }
++ #endif
++ 
+    if (filename == NULL)
+      {
+*** ../bash-4.3-patched/lib/glob/gmisc.c       2014-03-28 10:54:23.000000000 -0400
+--- lib/glob/gmisc.c   2014-05-02 09:35:57.000000000 -0400
+***************
+*** 43,46 ****
+--- 43,48 ----
+  #define WRPAREN         L')'
+  
++ extern char *glob_patscan __P((char *, char *, int));
++ 
+  /* Return 1 of the first character of WSTRING could match the first
+     character of pattern WPAT.  Wide character version. */
+***************
+*** 376,377 ****
+--- 378,410 ----
+    return matlen;
+  }
++ 
++ /* Skip characters in PAT and return the final occurrence of DIRSEP.  This
++    is only called when extended_glob is set, so we have to skip over extglob
++    patterns x(...) */
++ char *
++ glob_dirscan (pat, dirsep)
++      char *pat;
++      int dirsep;
++ {
++   char *p, *d, *pe, *se;
++ 
++   d = pe = se = 0;
++   for (p = pat; p && *p; p++)
++     {
++       if (extglob_pattern_p (p))
++      {
++        if (se == 0)
++          se = p + strlen (p) - 1;
++        pe = glob_patscan (p + 2, se, 0);
++        if (pe == 0)
++          continue;
++        else if (*pe == 0)
++          break;
++        p = pe - 1;   /* will do increment above */
++        continue;
++      }
++       if (*p ==  dirsep)
++      d = p;
++     }
++   return d;
++ }
+
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 15
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 16
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-017 b/bash/patches/bash43-017
new file mode 100644 (file)
index 0000000..4016fb9
--- /dev/null
@@ -0,0 +1,51 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-017
+
+Bug-Reported-by:       Dan Douglas <ormaaj@gmail.com>
+Bug-Reference-ID:      <7781746.RhfoTROLxF@smorgbox>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html
+
+Bug-Description:
+
+The code that creates local variables should not clear the `invisible'
+attribute when returning an existing local variable.  Let the code that
+actually assigns a value clear it.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/variables.c    2014-02-14 11:55:12.000000000 -0500
+--- variables.c        2014-05-07 10:53:57.000000000 -0400
+***************
+*** 2198,2205 ****
+    old_var = find_variable (name);
+    if (old_var && local_p (old_var) && old_var->context == variable_context)
+!     {
+!       VUNSETATTR (old_var, att_invisible);   /* XXX */
+!       return (old_var);
+!     }
+  
+    was_tmpvar = old_var && tempvar_p (old_var);
+--- 2260,2264 ----
+    old_var = find_variable (name);
+    if (old_var && local_p (old_var) && old_var->context == variable_context)
+!     return (old_var);
+  
+    was_tmpvar = old_var && tempvar_p (old_var);
+
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 16
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 17
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-018 b/bash/patches/bash43-018
new file mode 100644 (file)
index 0000000..39499f6
--- /dev/null
@@ -0,0 +1,44 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-018
+
+Bug-Reported-by:       Geir Hauge <geir.hauge@gmail.com>
+Bug-Reference-ID:      <CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html
+
+Bug-Description:
+
+When assigning an array variable using the compound assignment syntax,
+but using `declare' with the rhs of the compound assignment quoted, the
+shell did not mark the variable as visible after successfully performing
+the assignment.
+
+Patch (apply with `patch -p0'):
+*** ../bash-4.3-patched/arrayfunc.c    2014-03-28 10:54:21.000000000 -0400
+--- arrayfunc.c        2014-05-12 11:19:00.000000000 -0400
+***************
+*** 180,183 ****
+--- 180,184 ----
+    FREE (newval);
+  
++   VUNSETATTR (entry, att_invisible); /* no longer invisible */
+    return (entry);
+  }
+
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 17
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 18
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-019 b/bash/patches/bash43-019
new file mode 100644 (file)
index 0000000..a93714b
--- /dev/null
@@ -0,0 +1,84 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-019
+
+Bug-Reported-by:       John Lenton
+Bug-Reference-ID:
+Bug-Reference-URL:     https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
+
+Bug-Description:
+
+The -t timeout option to `read' does not work when the -e option is used.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/input.c   2014-01-10 15:07:08.000000000 -0500
+--- lib/readline/input.c       2014-05-22 18:40:59.000000000 -0400
+***************
+*** 535,540 ****
+--- 538,551 ----
+        else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM)
+       return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
++       /* keyboard-generated signals of interest */
+        else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT)
+          RL_CHECK_SIGNALS ();
++       /* non-keyboard-generated signals of interest */
++       else if (_rl_caught_signal == SIGALRM
++ #if defined (SIGVTALRM)
++              || _rl_caught_signal == SIGVTALRM
++ #endif
++            )
++         RL_CHECK_SIGNALS ();
+  
+        if (rl_signal_event_hook)
+*** ../bash-4.3-patched/builtins/read.def      2013-09-02 11:54:00.000000000 -0400
+--- builtins/read.def  2014-05-08 11:43:35.000000000 -0400
+***************
+*** 443,447 ****
+  #if defined (READLINE)
+        if (edit)
+!      add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
+  #endif
+        falarm (tmsec, tmusec);
+--- 443,450 ----
+  #if defined (READLINE)
+        if (edit)
+!      {
+!        add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
+!        add_unwind_protect (bashline_reset_event_hook, (char *)NULL);
+!      }
+  #endif
+        falarm (tmsec, tmusec);
+***************
+*** 1022,1025 ****
+--- 1025,1029 ----
+    old_attempted_completion_function = rl_attempted_completion_function;
+    rl_attempted_completion_function = (rl_completion_func_t *)NULL;
++   bashline_set_event_hook ();
+    if (itext)
+      {
+***************
+*** 1033,1036 ****
+--- 1037,1041 ----
+    rl_attempted_completion_function = old_attempted_completion_function;
+    old_attempted_completion_function = (rl_completion_func_t *)NULL;
++   bashline_reset_event_hook ();
+  
+    if (ret == 0)
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 18
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 19
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-020 b/bash/patches/bash43-020
new file mode 100644 (file)
index 0000000..5f533ef
--- /dev/null
@@ -0,0 +1,110 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-020
+
+Bug-Reported-by:       Jared Yanovich <slovichon@gmail.com>
+Bug-Reference-ID:      <20140417073654.GB26875@nightderanger.psc.edu>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html
+
+Bug-Description:
+
+When PS2 contains a command substitution, here-documents entered in an
+interactive shell can sometimes cause a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/shell.h        2012-12-25 21:11:01.000000000 -0500
+--- shell.h    2014-06-03 09:24:28.000000000 -0400
+***************
+*** 169,173 ****
+    int expand_aliases;
+    int echo_input_at_read;
+!   
+  } sh_parser_state_t;
+  
+--- 169,174 ----
+    int expand_aliases;
+    int echo_input_at_read;
+!   int need_here_doc;
+! 
+  } sh_parser_state_t;
+  
+*** ../bash-4.3-patched/parse.y        2014-05-14 09:16:40.000000000 -0400
+--- parse.y    2014-04-30 09:27:59.000000000 -0400
+***************
+*** 2643,2647 ****
+  
+    r = 0;
+!   while (need_here_doc)
+      {
+        parser_state |= PST_HEREDOC;
+--- 2643,2647 ----
+  
+    r = 0;
+!   while (need_here_doc > 0)
+      {
+        parser_state |= PST_HEREDOC;
+***************
+*** 6076,6079 ****
+--- 6076,6080 ----
+    ps->expand_aliases = expand_aliases;
+    ps->echo_input_at_read = echo_input_at_read;
++   ps->need_here_doc = need_here_doc;
+  
+    ps->token = token;
+***************
+*** 6124,6127 ****
+--- 6125,6129 ----
+    expand_aliases = ps->expand_aliases;
+    echo_input_at_read = ps->echo_input_at_read;
++   need_here_doc = ps->need_here_doc;
+  
+    FREE (token);
+*** ../bash-4.3-patched/y.tab.c        2014-04-07 11:56:12.000000000 -0400
+--- y.tab.c    2014-07-30 09:55:57.000000000 -0400
+***************
+*** 4955,4959 ****
+  
+    r = 0;
+!   while (need_here_doc)
+      {
+        parser_state |= PST_HEREDOC;
+--- 5151,5155 ----
+  
+    r = 0;
+!   while (need_here_doc > 0)
+      {
+        parser_state |= PST_HEREDOC;
+***************
+*** 8388,8391 ****
+--- 8584,8588 ----
+    ps->expand_aliases = expand_aliases;
+    ps->echo_input_at_read = echo_input_at_read;
++   ps->need_here_doc = need_here_doc;
+  
+    ps->token = token;
+***************
+*** 8436,8439 ****
+--- 8633,8637 ----
+    expand_aliases = ps->expand_aliases;
+    echo_input_at_read = ps->echo_input_at_read;
++   need_here_doc = ps->need_here_doc;
+  
+    FREE (token);
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 19
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 20
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-021 b/bash/patches/bash43-021
new file mode 100644 (file)
index 0000000..fd1c945
--- /dev/null
@@ -0,0 +1,52 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-021
+
+Bug-Reported-by:       Jared Yanovich <slovichon@gmail.com>
+Bug-Reference-ID:      <20140625225019.GJ17044@nightderanger.psc.edu>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html
+
+Bug-Description:
+
+When the readline `revert-all-at-newline' option is set, pressing newline
+when the current line is one retrieved from history results in a double free
+and a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/lib/readline/misc.c    2012-09-01 18:03:11.000000000 -0400
+--- lib/readline/misc.c        2014-06-30 13:41:19.000000000 -0400
+***************
+*** 462,465 ****
+--- 462,466 ----
+         /* Set up rl_line_buffer and other variables from history entry */
+         rl_replace_from_history (entry, 0);   /* entry->line is now current */
++        entry->data = 0;                      /* entry->data is now current undo list */
+         /* Undo all changes to this history entry */
+         while (rl_undo_list)
+***************
+*** 469,473 ****
+         FREE (entry->line);
+         entry->line = savestring (rl_line_buffer);
+-        entry->data = 0;
+       }
+        entry = previous_history ();
+--- 470,473 ----
+
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 20
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 21
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-022 b/bash/patches/bash43-022
new file mode 100644 (file)
index 0000000..7ce39ec
--- /dev/null
@@ -0,0 +1,56 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-022
+
+Bug-Reported-by:       scorp.dev.null@gmail.com
+Bug-Reference-ID:      <E1WxXw8-0007iE-Bi@pcm14>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html
+
+Bug-Description:
+
+Using nested pipelines within loops with the `lastpipe' option set can result
+in a segmentation fault.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/execute_cmd.c  2014-01-31 10:54:52.000000000 -0500
+--- execute_cmd.c      2014-06-19 08:05:49.000000000 -0400
+***************
+*** 2410,2414 ****
+        lstdin = wait_for (lastpid);
+  #if defined (JOB_CONTROL)
+!       exec_result = job_exit_status (lastpipe_jid);
+  #endif
+        unfreeze_jobs_list ();
+--- 2425,2438 ----
+        lstdin = wait_for (lastpid);
+  #if defined (JOB_CONTROL)
+!       /* If wait_for removes the job from the jobs table, use result of last
+!       command as pipeline's exit status as usual.  The jobs list can get
+!       frozen and unfrozen at inconvenient times if there are multiple pipelines
+!       running simultaneously. */
+!       if (INVALID_JOB (lastpipe_jid) == 0)
+!      exec_result = job_exit_status (lastpipe_jid);
+!       else if (pipefail_opt)
+!      exec_result = exec_result | lstdin;     /* XXX */
+!       /* otherwise we use exec_result */
+!         
+  #endif
+        unfreeze_jobs_list ();
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 21
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 22
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-023 b/bash/patches/bash43-023
new file mode 100644 (file)
index 0000000..d1e4e9d
--- /dev/null
@@ -0,0 +1,104 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-023
+
+Bug-Reported-by:       Tim Friske <me@timfriske.com>
+Bug-Reference-ID:      <CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html
+
+Bug-Description:
+
+Bash does not correctly parse process substitution constructs that contain
+unbalanced parentheses as part of the contained command.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/subst.h        2014-01-11 21:02:27.000000000 -0500
+--- subst.h    2014-07-20 17:25:01.000000000 -0400
+***************
+*** 83,87 ****
+     Start extracting at (SINDEX) as if we had just seen "<(".
+     Make (SINDEX) get the position just after the matching ")". */
+! extern char *extract_process_subst __P((char *, char *, int *));
+  #endif /* PROCESS_SUBSTITUTION */
+  
+--- 83,87 ----
+     Start extracting at (SINDEX) as if we had just seen "<(".
+     Make (SINDEX) get the position just after the matching ")". */
+! extern char *extract_process_subst __P((char *, char *, int *, int));
+  #endif /* PROCESS_SUBSTITUTION */
+  
+*** ../bash-4.3-patched/subst.c        2014-05-15 08:26:45.000000000 -0400
+--- subst.c    2014-07-20 17:26:44.000000000 -0400
+***************
+*** 1193,1202 ****
+     Make (SINDEX) get the position of the matching ")". */ /*))*/
+  char *
+! extract_process_subst (string, starter, sindex)
+       char *string;
+       char *starter;
+       int *sindex;
+  {
+    return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
+  }
+  #endif /* PROCESS_SUBSTITUTION */
+--- 1193,1208 ----
+     Make (SINDEX) get the position of the matching ")". */ /*))*/
+  char *
+! extract_process_subst (string, starter, sindex, xflags)
+       char *string;
+       char *starter;
+       int *sindex;
++      int xflags;
+  {
++ #if 0
+    return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
++ #else
++   xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
++   return (xparse_dolparen (string, string+*sindex, sindex, xflags));
++ #endif
+  }
+  #endif /* PROCESS_SUBSTITUTION */
+***************
+*** 1786,1790 ****
+         if (string[si] == '\0')
+           CQ_RETURN(si);
+!        temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si);
+         free (temp);          /* no SX_ALLOC here */
+         i = si;
+--- 1792,1796 ----
+         if (string[si] == '\0')
+           CQ_RETURN(si);
+!        temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0);
+         free (temp);          /* no SX_ALLOC here */
+         i = si;
+***************
+*** 8250,8254 ****
+             t_index = sindex + 1; /* skip past both '<' and LPAREN */
+  
+!          temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
+           sindex = t_index;
+  
+--- 8256,8260 ----
+             t_index = sindex + 1; /* skip past both '<' and LPAREN */
+  
+!          temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/
+           sindex = t_index;
+  
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 22
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 23
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-024 b/bash/patches/bash43-024
new file mode 100644 (file)
index 0000000..a24b8fb
--- /dev/null
@@ -0,0 +1,54 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-024
+
+Bug-Reported-by:       Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
+Bug-Reference-ID:      <53CE9E5D.6050203@pom-monitoring.com>
+Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html
+
+Bug-Description:
+
+Indirect variable references do not work correctly if the reference
+variable expands to an array reference using a subscript other than 0
+(e.g., foo='bar[1]' ; echo ${!foo}).
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.3-patched/subst.c        2014-06-03 09:32:44.000000000 -0400
+--- subst.c    2014-07-23 09:58:19.000000000 -0400
+***************
+*** 7375,7379 ****
+  
+    if (want_indir)
+!     tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+    else
+      tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
+--- 7445,7455 ----
+  
+    if (want_indir)
+!     {
+!       tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+!       /* Turn off the W_ARRAYIND flag because there is no way for this function
+!       to return the index we're supposed to be using. */
+!       if (tdesc && tdesc->flags)
+!      tdesc->flags &= ~W_ARRAYIND;
+!     }
+    else
+      tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 23
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 24
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-025 b/bash/patches/bash43-025
new file mode 100644 (file)
index 0000000..721aca0
--- /dev/null
@@ -0,0 +1,123 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-025
+
+Bug-Reported-by:       Stephane Chazelas <stephane.chazelas@gmail.com>
+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-4.3-patched/builtins/common.h      2013-07-08 16:54:47.000000000 -0400
+--- builtins/common.h  2014-09-12 14:25:47.000000000 -0400
+***************
+*** 34,37 ****
+--- 49,54 ----
+  #define SEVAL_PARSEONLY      0x020
+  #define SEVAL_NOLONGJMP 0x040
++ #define SEVAL_FUNCDEF        0x080           /* only allow function definitions */
++ #define SEVAL_ONECMD 0x100           /* only allow a single command */
+  
+  /* Flags for describe_command, shared between type.def and command.def */
+*** ../bash-4.3-patched/builtins/evalstring.c  2014-02-11 09:42:10.000000000 -0500
+--- builtins/evalstring.c      2014-09-14 14:15:13.000000000 -0400
+***************
+*** 309,312 ****
+--- 313,324 ----
+             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");
+***************
+*** 369,372 ****
+--- 381,387 ----
+             dispose_fd_bitmap (bitmap);
+             discard_unwind_frame ("pe_dispose");
++ 
++            if (flags & SEVAL_ONECMD)
++              break;
+           }
+       }
+*** ../bash-4.3-patched/variables.c    2014-05-15 08:26:50.000000000 -0400
+--- variables.c        2014-09-14 14:23:35.000000000 -0400
+***************
+*** 359,369 ****
+         strcpy (temp_string + char_index + 1, string);
+  
+!        if (posixly_correct == 0 || legal_identifier (name))
+!          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))
+--- 364,372 ----
+         strcpy (temp_string + char_index + 1, string);
+  
+!        /* Don't import function names that are invalid identifiers from the
+!           environment, though we still allow them to be defined as shell
+!           variables. */
+!        if (legal_identifier (name))
+!          parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
+  
+         if (temp_var = find_function (name))
+***************
+*** 382,389 ****
+             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)
+--- 385,388 ----
+*** ../bash-4.3-patched/subst.c        2014-08-11 11:16:35.000000000 -0400
+--- subst.c    2014-09-12 15:31:04.000000000 -0400
+***************
+*** 8048,8052 ****
+         goto return0;
+       }
+!       else if (var = find_variable_last_nameref (temp1))
+       {
+         temp = nameref_cell (var);
+--- 8118,8124 ----
+         goto return0;
+       }
+!       else if (var && (invisible_p (var) || var_isset (var) == 0))
+!      temp = (char *)NULL;
+!       else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0)
+       {
+         temp = nameref_cell (var);
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 24
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 25
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/bash/patches/bash43-026 b/bash/patches/bash43-026
new file mode 100644 (file)
index 0000000..d5d5b1d
--- /dev/null
@@ -0,0 +1,60 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.3
+Patch-ID:      bash43-026
+
+Bug-Reported-by:       Tavis Ormandy <taviso@cmpxchg8b.com>
+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 (apply with `patch -p0'):
+
+*** ../bash-4.3.25/parse.y     2014-07-30 10:14:31.000000000 -0400
+--- parse.y    2014-09-25 20:20:21.000000000 -0400
+***************
+*** 2954,2957 ****
+--- 2954,2959 ----
+    word_desc_to_read = (WORD_DESC *)NULL;
+  
++   eol_ungetc_lookahead = 0;
++ 
+    current_token = '\n';              /* XXX */
+    last_read_token = '\n';
+*** ../bash-4.3.25/y.tab.c     2014-07-30 10:14:32.000000000 -0400
+--- y.tab.c    2014-09-25 20:21:48.000000000 -0400
+***************
+*** 5266,5269 ****
+--- 5266,5271 ----
+    word_desc_to_read = (WORD_DESC *)NULL;
+  
++   eol_ungetc_lookahead = 0;
++ 
+    current_token = '\n';              /* XXX */
+    last_read_token = '\n';
+***************
+*** 8540,8542 ****
+  }
+  #endif /* HANDLE_MULTIBYTE */
+- 
+--- 8542,8543 ----
+*** ../bash-4.3/patchlevel.h   2012-12-29 10:47:57.000000000 -0500
+--- patchlevel.h       2014-03-20 20:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 25
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 26
+  
+  #endif /* _PATCHLEVEL_H_ */
index 484c5e02819de8e1f4daa9c0ec25145a861abbd9..f472c55562269262659cbe3358e30018651e5d0b 100644 (file)
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = bind
-version    = 9.8.1
-release    = 3
+version    = 9.9.6-P1
+release    = 1
 
 groups     = Networking/Tools
 url        = http://www.isc.org/products/BIND/
@@ -19,37 +19,8 @@ end
 
 source_dl  = ftp://ftp.isc.org/isc/bind/%{version}/
 
-sources = \
-       bind-9.8.1.tar.gz \
-       bind-config-8.tar.bz2
-
-# Apply patches in a special order.
-patches = \
-       bind-nonexec.patch \
-       bind-9.5-PIE.patch \
-       bind-9.3.2-redhat_doc.patch \
-       bind-96-dyndb.patch \
-       bind98-rh725741.patch \
-       bind-9.5-overflow.patch \
-       bind-9.5-dlz-64bit.patch \
-       bind-9.5-libidn.patch \
-       bind-9.5-libidn2.patch \
-       bind-9.5-libidn3.patch \
-       bind-9.5-parallel-build.patch \
-       bind95-rh461409.patch\
-       bind-96-libtool2.patch \
-       bind-95-rh452060.patch \
-       bind97-dist-pkcs11.patch \
-       bind97-rh478718.patch \
-       bind97-rh570851.patch \
-       bind97-exportlib.patch \
-       bind97-rh645544.patch \
-       bind97-rh699951.patch \
-       bind97-rh693982.patch \
-       bind97-rh700097.patch \
-       bind97-rh714049.patch \
-       bind98-dlz_buildfix.patch \
-       bind98-rh735103.patch
+sources += \
+       %{name}-config-12.tar.bz2
 
 build
        requires
@@ -61,7 +32,7 @@ build
                libcap-devel
                libidn-devel
                pkg-config
-               openssl-devel
+               openssl-devel >= 1.0.1h-2
                shadow-utils
        end
 
@@ -77,7 +48,8 @@ build
                --with-export-includedir=/usr/include/ \
                --includedir=/usr/include/bind9/ \
                --with-pkcs11=%{libdir}/pkcs11/PKCS11_API.so \
-               --with-gssapi=yes \
+               --with-gssapi \
+               --enable-rrl \
                --disable-isc-spnego
 
        prepare
@@ -102,9 +74,6 @@ build
        end
 
        install
-               # Compress doc files.
-               gzip -9 doc/rfc/*
-
                # Create directory layout.
                mkdir -pv %{BUILDROOT}%{libdir}/bind
                mkdir -pv %{BUILDROOT}/var/named/{slaves,data,dynamic}
@@ -137,7 +106,7 @@ build
                touch %{BUILDROOT}/var/log/named.log
 
                # Configuration files
-               tar -C %{BUILDROOT} -xaf %{DIR_DL}/bind-config-8.tar.bz2
+               tar -C %{BUILDROOT} -xaf %{DIR_DL}/bind-config-12.tar.bz2
                touch %{BUILDROOT}/etc/rndc.key
                touch %{BUILDROOT}/etc/rndc.conf
 
@@ -148,10 +117,10 @@ build
                # Recreate symlinks for export libraries
                rm -rf %{BUILDROOT}/%{lib}/lib*-export.so
 
-               ln -svf ../../%{lib}/libdns-export.so.81 %{BUILDROOT}%{libdir}/libdns-export.so
-               ln -svf ../../%{lib}/libirs-export.so.80 %{BUILDROOT}%{libdir}/libirs-export.so
-               ln -svf ../../%{lib}/libisccfg-export.so.82 %{BUILDROOT}%{libdir}/libisccfg-export.so
-               ln -svf ../../%{lib}/libisc-export.so.83 %{BUILDROOT}%{libdir}/libisc-export.so
+               ln -svf ../../%{lib}/libdns-export.so.104 %{BUILDROOT}%{libdir}/libdns-export.so
+               ln -svf ../../%{lib}/libirs-export.so.91 %{BUILDROOT}%{libdir}/libirs-export.so
+               ln -svf ../../%{lib}/libisccfg-export.so.90 %{BUILDROOT}%{libdir}/libisccfg-export.so
+               ln -svf ../../%{lib}/libisc-export.so.95 %{BUILDROOT}%{libdir}/libisc-export.so
 
                # Create /run/named.
                mkdir -pv %{BUILDROOT}/run/named
diff --git a/bind/named.logrotate b/bind/named.logrotate
deleted file mode 100644 (file)
index 4ed78cc..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/var/named/data/named.run {
-    missingok
-    su named named
-    create 0644 named named
-    postrotate
-        /sbin/service named reload  2> /dev/null > /dev/null || true
-    endscript
-}
diff --git a/bind/patches/bind-9.3.2-redhat_doc.patch b/bind/patches/bind-9.3.2-redhat_doc.patch
deleted file mode 100644 (file)
index 791b95f..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
---- bind-9.4.0/bin/named/named.8.redhat_doc    2007-01-30 01:23:44.000000000 +0100
-+++ bind-9.4.0/bin/named/named.8       2007-03-12 15:39:19.000000000 +0100
-@@ -205,6 +205,63 @@
- \fI/var/run/named/named.pid\fR
- .RS 4
- The default process\-id file.
-+.PP
-+.SH "NOTES"
-+.PP
-+.TP
-+\fBRed Hat SELinux BIND Security Profile:\fR
-+.PP
-+By default, Red Hat ships BIND with the most secure SELinux policy
-+that will not prevent normal BIND operation and will prevent exploitation
-+of all known BIND security vulnerabilities . See the selinux(8) man page
-+for information about SElinux.
-+.PP
-+It is not necessary to run named in a chroot environment if the Red Hat
-+SELinux policy for named is enabled. When enabled, this policy is far
-+more secure than a chroot environment. Users are recommended to enable
-+SELinux and remove the bind-chroot package.
-+.PP
-+With this extra security comes some restrictions:
-+.PP
-+By default, the SELinux policy does not allow named to write any master
-+zone database files. Only the root user may create files in the $ROOTDIR/var/named
-+zone database file directory (the options { "directory" } option), where
-+$ROOTDIR is set in /etc/sysconfig/named.
-+.PP
-+The "named" group must be granted read privelege to 
-+these files in order for named to be enabled to read them. 
-+.PP
-+Any file created in the zone database file directory is automatically assigned
-+the SELinux file context named_zone_t .
-+.PP
-+By default, SELinux prevents any role from modifying named_zone_t files; this
-+means that files in the zone database directory cannot be modified by dynamic
-+DNS (DDNS) updates or zone transfers.
-+.PP
-+The Red Hat BIND distribution and SELinux policy creates three directories where
-+named is allowed to create and modify files: /var/named/slaves, /var/named/dynamic
-+/var/named/data. By placing files you want named to modify, such as
-+slave or DDNS updateable zone files and database / statistics dump files in 
-+these directories, named will work normally and no further operator action is
-+required. Files in these directories are automatically assigned the 'named_cache_t'
-+file context, which SELinux allows named to write.
-+.PP
-+\fBRed Hat BIND SDB support:\fR
-+.PP
-+Red Hat ships named with compiled in Simplified Database Backend modules that ISC
-+provides in the "contrib/sdb" directory. Install bind-sdb package if you want use them
-+.PP
-+The SDB modules for LDAP, PostGreSQL, DirDB and SQLite are compiled into named-sdb.
-+.PP
-+See the documentation for the various SDB modules in /usr/share/doc/bind-sdb-*/ .
-+.br
-+.PP
-+\fBRed Hat system-config-bind:\fR
-+.PP
-+Red Hat provides the system-config-bind GUI to configure named.conf and zone
-+database files. Run the "system-config-bind" command and access the manual
-+by selecting the Help menu.
-+.PP
- .RE
- .SH "SEE ALSO"
- .PP
diff --git a/bind/patches/bind-9.5-dlz-64bit.patch b/bind/patches/bind-9.5-dlz-64bit.patch
deleted file mode 100644 (file)
index 3e06577..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-diff -up bind-9.5.1b1/contrib/dlz/config.dlz.in.64bit bind-9.5.1b1/contrib/dlz/config.dlz.in
---- bind-9.5.1b1/contrib/dlz/config.dlz.in.64bit       2008-06-17 06:03:31.000000000 +0200
-+++ bind-9.5.1b1/contrib/dlz/config.dlz.in     2008-07-11 12:08:43.000000000 +0200
-@@ -17,6 +17,13 @@
- #
- dlzdir='${DLZ_DRIVER_DIR}'
-+AC_MSG_CHECKING([for target libdir])
-+AC_RUN_IFELSE([int main(void) {exit((sizeof(void *) == 8) ? 0 : 1);}],
-+      [target_lib=lib64],
-+      [target_lib=lib],
-+)
-+AC_MSG_RESULT(["$target_lib"])
-+
- #
- # Private autoconf macro to simplify configuring drivers:
- #
-@@ -135,9 +142,9 @@ then
-               then
-                       use_dlz_mysql=$d
-                       mysql_include=$d/include/mysql
--                      if test -d $d/lib/mysql
-+                      if test -d $d/${target_lib}/mysql
-                       then
--                              mysql_lib=$d/lib/mysql
-+                              mysql_lib=$d/${target_lib}/mysql
-                       else
-                               mysql_lib=$d/lib
-                       fi
-@@ -274,11 +281,11 @@ case "$use_dlz_bdb" in
-                       bdb_libnames="db42 db-4.2 db41 db-4.1 db"
-                       for d in $bdb_libnames
-                       do
--                              if test -f "$dd/lib/lib${d}.so"
-+                              if test -f "$dd/${target_lib}/lib${d}.so"
-                               then
-                                       if test "$dd" != "/usr"
-                                       then
--                                              dlz_bdb_libs="-L${dd}/lib "
-+                                              dlz_bdb_libs="-L${dd}/${target_lib} "
-                                       else
-                                               dlz_bdb_libs=""
-                                       fi
-@@ -383,7 +390,7 @@ case "$use_dlz_ldap" in
-       *)
-               DLZ_ADD_DRIVER(LDAP, dlz_ldap_driver,
-                               [-I$use_dlz_ldap/include],
--                              [-L$use_dlz_ldap/lib -lldap -llber])
-+                              [-L$use_dlz_ldap/${target_lib} -lldap -llber])
-               AC_MSG_RESULT(
- [using LDAP from $use_dlz_ldap/lib and $use_dlz_ldap/include])
-@@ -407,7 +414,7 @@ then
-       odbcdirs="/usr /usr/local /usr/pkg"
-       for d in $odbcdirs
-       do
--              if test -f $d/include/sql.h -a -f $d/lib/libodbc.a
-+              if test -f $d/include/sql.h -a -f $d/${target_lib}/libodbc.a
-               then
-                       use_dlz_odbc=$d
-                       break
-@@ -427,7 +434,7 @@ case "$use_dlz_odbc" in
-       *)
-               DLZ_ADD_DRIVER(ODBC, dlz_odbc_driver,
-                               [-I$use_dlz_odbc/include],
--                              [-L$use_dlz_odbc/lib -lodbc])
-+                              [-L$use_dlz_odbc/${target_lib} -lodbc])
-               AC_MSG_RESULT([using ODBC from $use_dlz_odbc])
-               ;;
diff --git a/bind/patches/bind-9.5-libidn.patch b/bind/patches/bind-9.5-libidn.patch
deleted file mode 100644 (file)
index fccfa61..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c
---- bind-9.7.0b1/bin/dig/dighost.c.libidn      2009-09-16 01:48:09.000000000 +0200
-+++ bind-9.7.0b1/bin/dig/dighost.c     2009-10-20 10:49:26.719056220 +0200
-@@ -44,6 +44,11 @@
- #include <idn/api.h>
- #endif
-+#ifdef WITH_LIBIDN
-+#include <stringprep.h>
-+#include <idna.h>
-+#endif
-+
- #include <dns/byaddr.h>
- #ifdef DIG_SIGCHASE
- #include <dns/dnssec.h>
-@@ -153,6 +158,14 @@ static void               idn_check_result(idn_result
- int  idnoptions       = 0;
- #endif
-+#ifdef WITH_LIBIDN
-+static isc_result_t   libidn_locale_to_utf8 (const char* from, char **to);
-+static isc_result_t   libidn_utf8_to_ascii (const char* from, char *to);
-+static isc_result_t   output_filter (isc_buffer_t *buffer,
-+                                     unsigned int used_org,
-+                                     isc_boolean_t absolute);
-+#endif
-+
- /*%
-  * Exit Codes:
-  *
-@@ -1184,6 +1197,9 @@ setup_system(void) {
-       dig_searchlist_t *domain = NULL;
-       lwres_result_t lwresult;
-       unsigned int lwresflags;
-+#ifdef WITH_LIBIDN
-+      isc_result_t result;
-+#endif
-       debug("setup_system()");
-@@ -1242,8 +1258,15 @@ setup_system(void) {
- #ifdef WITH_IDN
-       initialize_idn();
-+      
-+#endif
-+#ifdef WITH_LIBIDN
-+      result = dns_name_settotextfilter(output_filter);
-+      check_result(result, "dns_name_settotextfilter");
-+#ifdef HAVE_SETLOCALE
-+      setlocale (LC_ALL, "");
-+#endif
- #endif
--
-       if (keyfile[0] != 0)
-               setup_file_key();
-       else if (keysecret[0] != 0)
-@@ -1957,12 +1980,18 @@ setup_lookup(dig_lookup_t *lookup) {
-       idn_result_t mr;
-       char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
- #endif
-+#ifdef WITH_LIBIDN
-+      char *utf8_str = NULL, utf8_name[MXNAME], ascii_name[MXNAME];
-+#endif
- #ifdef WITH_IDN
-       result = dns_name_settotextfilter(output_filter);
-       check_result(result, "dns_name_settotextfilter");
- #endif
--
-+#ifdef WITH_LIBIDN
-+      result = dns_name_settotextfilter (output_filter);
-+      check_result(result, "dns_name_settotextfilter");
-+#endif
-       REQUIRE(lookup != NULL);
-       INSIST(!free_now);
-@@ -1999,6 +2028,16 @@ setup_lookup(dig_lookup_t *lookup) {
-       mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
-                           utf8_textname, sizeof(utf8_textname));
-       idn_check_result(mr, "convert textname to UTF-8");
-+#elif defined (WITH_LIBIDN)
-+      result = libidn_locale_to_utf8 (lookup->textname, &utf8_str);
-+      check_result (result, "converting textname to UTF-8");
-+      len = strlen (utf8_str);
-+      if (len < MXNAME) {
-+              (void) strcpy (utf8_name, utf8_str);
-+      } else {
-+              fatal ("Too long name");
-+      }
-+      isc_mem_free (mctx, utf8_str);
- #endif
-       /*
-@@ -2018,6 +2057,15 @@ setup_lookup(dig_lookup_t *lookup) {
-                       lookup->origin = ISC_LIST_HEAD(search_list);
-                       lookup->need_search = ISC_FALSE;
-               }
-+#elif defined (WITH_LIBIDN)
-+              if ((count_dots(utf8_name) >= ndots) || !usesearch) {
-+                      lookup->origin = NULL; /* Force abs lookup */
-+                      lookup->done_as_is = ISC_TRUE;
-+                      lookup->need_search = usesearch;
-+              } else if (lookup->origin == NULL && usesearch) {
-+                      lookup->origin = ISC_LIST_HEAD(search_list);
-+                      lookup->need_search = ISC_FALSE;
-+              }
- #else
-               if ((count_dots(lookup->textname) >= ndots) || !usesearch) {
-                       lookup->origin = NULL; /* Force abs lookup */
-@@ -2044,6 +2092,20 @@ setup_lookup(dig_lookup_t *lookup) {
-                           IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
-                           idn_textname, sizeof(idn_textname));
-       idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
-+#elif defined (WITH_LIBIDN)
-+      if (lookup->origin != NULL) {
-+              result = libidn_locale_to_utf8 (lookup->origin->origin, &utf8_str);
-+              check_result (result, "convert origin to UTF-8");
-+              if (len + strlen (utf8_str) + 1 < MXNAME) {
-+                      utf8_name[len++] = '.';
-+                      (void) strcpy (utf8_name + len, utf8_str);
-+              } else {
-+                      fatal ("Too long name + origin");
-+              }
-+              isc_mem_free (mctx, utf8_str);
-+      }
-+
-+      result = libidn_utf8_to_ascii (utf8_name, ascii_name);
- #else
-       if (lookup->origin != NULL) {
-               debug("trying origin %s", lookup->origin->origin);
-@@ -2099,6 +2161,13 @@ setup_lookup(dig_lookup_t *lookup) {
-                       result = dns_name_fromtext(lookup->name, &b,
-                                                  dns_rootname, 0,
-                                                  &lookup->namebuf);
-+#elif defined (WITH_LIBIDN)
-+                      len = strlen (ascii_name);
-+                      isc_buffer_init(&b, ascii_name, len);
-+                      isc_buffer_add(&b, len);
-+                      result = dns_name_fromtext(lookup->name, &b,
-+                                                 dns_rootname, 0,
-+                                                 &lookup->namebuf);
- #else
-                       len = strlen(lookup->textname);
-                       isc_buffer_init(&b, lookup->textname, len);
-@@ -3617,7 +3686,7 @@ destroy_libs(void) {
-       void * ptr;
-       dig_message_t *chase_msg;
- #endif
--#ifdef WITH_IDN
-+#if defined (WITH_IDN) || defined (WITH_LIBIDN)
-       isc_result_t result;
- #endif
-@@ -3656,6 +3725,10 @@ destroy_libs(void) {
-       result = dns_name_settotextfilter(NULL);
-       check_result(result, "dns_name_settotextfilter");
- #endif
-+#ifdef WITH_LIBIDN
-+      result = dns_name_settotextfilter (NULL);
-+      check_result(result, "clearing dns_name_settotextfilter");
-+#endif
-       dns_name_destroy();
-       if (commctx != NULL) {
-@@ -3834,6 +3907,79 @@ idn_check_result(idn_result_t r, const c
-       }
- }
- #endif /* WITH_IDN */
-+#ifdef WITH_LIBIDN
-+/* If stringprep_locale_to_utf8 fails simple copy string */
-+static isc_result_t
-+libidn_locale_to_utf8 (const char *from, char **to) {
-+      char *utf8_str;
-+
-+      utf8_str = stringprep_locale_to_utf8 (from);
-+      if (utf8_str == NULL) {
-+              *to = isc_mem_allocate (mctx, strlen (from) + 1);
-+              if (*to == NULL)
-+                      return (ISC_R_NOMEMORY);
-+              (void) strcpy (*to, from);
-+      } else {
-+              *to = isc_mem_allocate (mctx, strlen (utf8_str) + 1);
-+              if (*to == NULL)
-+                      return (ISC_R_NOMEMORY);
-+              (void) strcpy (*to, utf8_str);
-+              free (utf8_str);
-+      }
-+      return (ISC_R_SUCCESS);
-+}
-+static isc_result_t
-+libidn_utf8_to_ascii (const char *from, char *to) {
-+      char *ascii;
-+
-+      if (idna_to_ascii_8z (from, &ascii, 0) != IDNA_SUCCESS)
-+              return (ISC_R_FAILURE);
-+
-+      (void) strcpy (to, ascii);
-+      free (ascii);
-+      return (ISC_R_SUCCESS);
-+}
-+/* based on idnkit's code*/
-+static isc_result_t
-+output_filter (isc_buffer_t *buffer, unsigned int used_org,
-+             isc_boolean_t absolute) {
-+      char tmp1[MXNAME], *tmp2;
-+        size_t fromlen, tolen;
-+        isc_boolean_t end_with_dot;
-+
-+        fromlen = isc_buffer_usedlength(buffer) - used_org;
-+      if (fromlen >= MXNAME)
-+              return (ISC_R_SUCCESS);
-+        memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen);
-+        end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;
-+        if (absolute && !end_with_dot) {
-+                fromlen++;
-+              if (fromlen >= MXNAME)
-+                      return (ISC_R_SUCCESS);
-+                tmp1[fromlen - 1] = '.';
-+        }
-+        tmp1[fromlen] = '\0';
-+
-+      if (idna_to_unicode_lzlz (tmp1, &tmp2, 0) != IDNA_SUCCESS)
-+              return (ISC_R_SUCCESS);
-+
-+      (void) strcpy (tmp1, tmp2);
-+      free (tmp2);
-+
-+        tolen = strlen(tmp1);
-+        if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
-+                tolen--;
-+
-+        if (isc_buffer_length(buffer) < used_org + tolen)
-+                return (ISC_R_NOSPACE);
-+
-+        isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org);
-+        memcpy(isc_buffer_used(buffer), tmp1, tolen);
-+        isc_buffer_add(buffer, tolen);
-+
-+        return (ISC_R_SUCCESS);
-+}
-+#endif /* WITH_LIBIDN*/
- #ifdef DIG_SIGCHASE
- void
-diff -up bind-9.7.0b1/bin/dig/Makefile.in.libidn bind-9.7.0b1/bin/dig/Makefile.in
---- bind-9.7.0b1/bin/dig/Makefile.in.libidn    2009-09-22 10:47:55.000000000 +0200
-+++ bind-9.7.0b1/bin/dig/Makefile.in   2009-10-20 10:50:06.201543709 +0200
-@@ -46,10 +46,10 @@ DEPLIBS =  ${DNSDEPLIBS} ${BIND9DEPLIBS} 
-               ${LWRESDEPLIBS}
- LIBS =                ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
--              ${ISCLIBS} @IDNLIBS@ @LIBS@
-+              ${ISCLIBS} @IDNLIBS@ @LIBS@ -lidn
- NOSYMLIBS =   ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
--              ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@
-+              ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@ -lidn
- SUBDIRS =
-@@ -67,6 +67,8 @@ HTMLPAGES =  dig.html host.html nslookup.
- MANOBJS =     ${MANPAGES} ${HTMLPAGES}
-+EXT_CFLAGS = -DWITH_LIBIDN
-+
- @BIND9_MAKE_RULES@
- dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS}
diff --git a/bind/patches/bind-9.5-libidn2.patch b/bind/patches/bind-9.5-libidn2.patch
deleted file mode 100644 (file)
index 785b6eb..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-diff -up bind-9.5.0b1/bin/dig/dighost.c.libidn2 bind-9.5.0b1/bin/dig/dighost.c
---- bind-9.5.0b1/bin/dig/dighost.c.libidn2     2007-12-10 13:12:26.000000000 +0100
-+++ bind-9.5.0b1/bin/dig/dighost.c     2007-12-10 14:21:09.000000000 +0100
-@@ -153,7 +153,7 @@ int  idnoptions    = 0;
- #endif
- #ifdef WITH_LIBIDN
--static isc_result_t   libidn_locale_to_utf8 (const char* from, char **to);
-+static isc_result_t   libidn_locale_to_utf8 (const char* from, char *to);
- static isc_result_t   libidn_utf8_to_ascii (const char* from, char *to);
- static isc_result_t   output_filter (isc_buffer_t *buffer,
-                                      unsigned int used_org,
-@@ -1764,17 +1764,13 @@ setup_lookup(dig_lookup_t *lookup) {
-       char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
- #endif
- #ifdef WITH_LIBIDN
--      char *utf8_str = NULL, utf8_name[MXNAME], ascii_name[MXNAME];
-+      char utf8_str[MXNAME], utf8_name[MXNAME], ascii_name[MXNAME];
- #endif
--#ifdef WITH_IDN
-+#if defined (WITH_IDN) || defined (WITH_LIBIDN)
-       result = dns_name_settotextfilter(output_filter);
-       check_result(result, "dns_name_settotextfilter");
- #endif
--#ifdef WITH_LIBIDN
--      result = dns_name_settotextfilter (output_filter);
--      check_result(result, "dns_name_settotextfilter");
--#endif
-       REQUIRE(lookup != NULL);
-       INSIST(!free_now);
-@@ -1812,15 +1808,13 @@ setup_lookup(dig_lookup_t *lookup) {
-                           utf8_textname, sizeof(utf8_textname));
-       idn_check_result(mr, "convert textname to UTF-8");
- #elif defined (WITH_LIBIDN)
--      result = libidn_locale_to_utf8 (lookup->textname, &utf8_str);
--      check_result (result, "converting textname to UTF-8");
-+      result = libidn_locale_to_utf8 (lookup->textname, utf8_str);
-+      check_result (result, "convert textname to UTF-8");
-       len = strlen (utf8_str);
--      if (len < MXNAME) {
-+      if (len < MXNAME)
-               (void) strcpy (utf8_name, utf8_str);
--      } else {
-+      else
-               fatal ("Too long name");
--      }
--      isc_mem_free (mctx, utf8_str);
- #endif
-       /*
-@@ -1833,24 +1827,11 @@ setup_lookup(dig_lookup_t *lookup) {
-       if (lookup->new_search) {
- #ifdef WITH_IDN
-               if ((count_dots(utf8_textname) >= ndots) || !usesearch) {
--                      lookup->origin = NULL; /* Force abs lookup */
--                      lookup->done_as_is = ISC_TRUE;
--                      lookup->need_search = usesearch;
--              } else if (lookup->origin == NULL && usesearch) {
--                      lookup->origin = ISC_LIST_HEAD(search_list);
--                      lookup->need_search = ISC_FALSE;
--              }
- #elif defined (WITH_LIBIDN)
-               if ((count_dots(utf8_name) >= ndots) || !usesearch) {
--                      lookup->origin = NULL; /* Force abs lookup */
--                      lookup->done_as_is = ISC_TRUE;
--                      lookup->need_search = usesearch;
--              } else if (lookup->origin == NULL && usesearch) {
--                      lookup->origin = ISC_LIST_HEAD(search_list);
--                      lookup->need_search = ISC_FALSE;
--              }
- #else
-               if ((count_dots(lookup->textname) >= ndots) || !usesearch) {
-+#endif
-                       lookup->origin = NULL; /* Force abs lookup */
-                       lookup->done_as_is = ISC_TRUE;
-                       lookup->need_search = usesearch;
-@@ -1858,7 +1839,6 @@ setup_lookup(dig_lookup_t *lookup) {
-                       lookup->origin = ISC_LIST_HEAD(search_list);
-                       lookup->need_search = ISC_FALSE;
-               }
--#endif
-       }
- #ifdef WITH_IDN
-@@ -1877,15 +1857,12 @@ setup_lookup(dig_lookup_t *lookup) {
-       idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
- #elif defined (WITH_LIBIDN)
-       if (lookup->origin != NULL) {
--              result = libidn_locale_to_utf8 (lookup->origin->origin, &utf8_str);
-+              result = libidn_locale_to_utf8 (lookup->origin->origin, utf8_str);
-               check_result (result, "convert origin to UTF-8");
--              if (len + strlen (utf8_str) + 1 < MXNAME) {
--                      utf8_name[len++] = '.';
-+              if (len + strlen (utf8_str) < MXNAME)
-                       (void) strcpy (utf8_name + len, utf8_str);
--              } else {
-+              else
-                       fatal ("Too long name + origin");
--              }
--              isc_mem_free (mctx, utf8_str);
-       }
-       result = libidn_utf8_to_ascii (utf8_name, ascii_name);
-@@ -3600,76 +3577,85 @@ idn_check_result(idn_result_t r, const c
- }
- #endif /* WITH_IDN */
- #ifdef WITH_LIBIDN
--/* If stringprep_locale_to_utf8 fails simple copy string */
- static isc_result_t
--libidn_locale_to_utf8 (const char *from, char **to) {
-+libidn_locale_to_utf8 (const char *from, char *to) {
-       char *utf8_str;
-+      debug ("libidn_locale_to_utf8");
-       utf8_str = stringprep_locale_to_utf8 (from);
--      if (utf8_str == NULL) {
--              *to = isc_mem_allocate (mctx, strlen (from) + 1);
--              if (*to == NULL)
--                      return (ISC_R_NOMEMORY);
--              (void) strcpy (*to, from);
--      } else {
--              *to = isc_mem_allocate (mctx, strlen (utf8_str) + 1);
--              if (*to == NULL)
--                      return (ISC_R_NOMEMORY);
--              (void) strcpy (*to, utf8_str);
-+      if (utf8_str != NULL) {
-+              (void) strcpy (to, utf8_str);
-               free (utf8_str);
-+              return ISC_R_SUCCESS;
-       }
--      return (ISC_R_SUCCESS);
-+
-+      debug ("libidn_locale_to_utf8: failure");
-+      return ISC_R_FAILURE;
- }
- static isc_result_t
- libidn_utf8_to_ascii (const char *from, char *to) {
-       char *ascii;
-+      int iresult;
--      if (idna_to_ascii_8z (from, &ascii, 0) != IDNA_SUCCESS)
--              return (ISC_R_FAILURE);
-+      debug ("libidn_utf8_to_ascii");
-+      iresult = idna_to_ascii_8z (from, &ascii, 0);
-+      if (iresult != IDNA_SUCCESS) {
-+              debug ("idna_to_ascii_8z: %s", idna_strerror (iresult));
-+              return ISC_R_FAILURE;
-+      }
-       (void) strcpy (to, ascii);
-       free (ascii);
--      return (ISC_R_SUCCESS);
-+      return ISC_R_SUCCESS;
- }
--/* based on idnkit's code*/
-+
- static isc_result_t
- output_filter (isc_buffer_t *buffer, unsigned int used_org,
-              isc_boolean_t absolute) {
-+
-       char tmp1[MXNAME], *tmp2;
-         size_t fromlen, tolen;
-         isc_boolean_t end_with_dot;
-+      int iresult;
-+
-+      debug ("output_filter");
--        fromlen = isc_buffer_usedlength(buffer) - used_org;
-+        fromlen = isc_buffer_usedlength (buffer) - used_org;
-       if (fromlen >= MXNAME)
--              return (ISC_R_SUCCESS);
--        memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen);
-+              return ISC_R_SUCCESS;
-+        memcpy (tmp1, (char *) isc_buffer_base (buffer) + used_org, fromlen);
-         end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;
-         if (absolute && !end_with_dot) {
-                 fromlen++;
-               if (fromlen >= MXNAME)
--                      return (ISC_R_SUCCESS);
-+                      return ISC_R_SUCCESS;
-                 tmp1[fromlen - 1] = '.';
-         }
-         tmp1[fromlen] = '\0';
--      if (idna_to_unicode_lzlz (tmp1, &tmp2, 0) != IDNA_SUCCESS)
--              return (ISC_R_SUCCESS);
-+      iresult = idna_to_unicode_8z8z (tmp1, &tmp2, 0);
-+      if (iresult != IDNA_SUCCESS) {
-+              debug ("output_filter: %s", idna_strerror (iresult));
-+              return ISC_R_SUCCESS;
-+      }
-       (void) strcpy (tmp1, tmp2);
-       free (tmp2);
--        tolen = strlen(tmp1);
-+        tolen = strlen (tmp1);
-         if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
-                 tolen--;
--        if (isc_buffer_length(buffer) < used_org + tolen)
--                return (ISC_R_NOSPACE);
-+        if (isc_buffer_length (buffer) < used_org + tolen)
-+                return ISC_R_NOSPACE;
-+
-+      debug ("%s", tmp1);
--        isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org);
--        memcpy(isc_buffer_used(buffer), tmp1, tolen);
--        isc_buffer_add(buffer, tolen);
-+        isc_buffer_subtract (buffer, isc_buffer_usedlength (buffer) - used_org);
-+        memcpy (isc_buffer_used (buffer), tmp1, tolen);
-+        isc_buffer_add (buffer, tolen);
--        return (ISC_R_SUCCESS);
-+        return ISC_R_SUCCESS;
- }
- #endif /* WITH_LIBIDN*/
diff --git a/bind/patches/bind-9.5-libidn3.patch b/bind/patches/bind-9.5-libidn3.patch
deleted file mode 100644 (file)
index 3fd5573..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up bind-9.5.0b1/bin/dig/dighost.c.libidn3 bind-9.5.0b1/bin/dig/dighost.c
---- bind-9.5.0b1/bin/dig/dighost.c.libidn3     2007-12-20 13:24:27.000000000 +0100
-+++ bind-9.5.0b1/bin/dig/dighost.c     2007-12-20 13:27:10.000000000 +0100
-@@ -1859,10 +1859,13 @@ setup_lookup(dig_lookup_t *lookup) {
-       if (lookup->origin != NULL) {
-               result = libidn_locale_to_utf8 (lookup->origin->origin, utf8_str);
-               check_result (result, "convert origin to UTF-8");
--              if (len + strlen (utf8_str) < MXNAME)
--                      (void) strcpy (utf8_name + len, utf8_str);
--              else
--                      fatal ("Too long name + origin");
-+              if (len > 0 && utf8_name[len - 1] != '.') {
-+                      utf8_name[len++] = '.';
-+                      if (len + strlen (utf8_str) < MXNAME)
-+                              (void) strcpy (utf8_name + len, utf8_str);
-+                      else
-+                              fatal ("Too long name + origin");
-+              }
-       }
-       result = libidn_utf8_to_ascii (utf8_name, ascii_name);
diff --git a/bind/patches/bind-9.5-overflow.patch b/bind/patches/bind-9.5-overflow.patch
deleted file mode 100644 (file)
index 34b7bed..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -up bind-9.5.0a5/lib/isc/pthreads/condition.c.overflow bind-9.5.0a5/lib/isc/pthreads/condition.c
---- bind-9.5.0a5/lib/isc/pthreads/condition.c.overflow 2007-07-17 07:53:59.000000000 +0200
-+++ bind-9.5.0a5/lib/isc/pthreads/condition.c  2007-07-17 07:55:08.000000000 +0200
-@@ -43,7 +43,7 @@ isc_condition_waituntil(isc_condition_t 
-        * POSIX defines a timespec's tv_sec as time_t.
-        */
-       result = isc_time_secondsastimet(t, &ts.tv_sec);
--      if (result != ISC_R_SUCCESS)
-+      if (result != ISC_R_RANGE && result != ISC_R_SUCCESS)
-               return (result);
-       /*!
-diff -up bind-9.5.0a5/lib/isc/unix/time.c.overflow bind-9.5.0a5/lib/isc/unix/time.c
---- bind-9.5.0a5/lib/isc/unix/time.c.overflow  2007-02-14 01:27:27.000000000 +0100
-+++ bind-9.5.0a5/lib/isc/unix/time.c   2007-07-17 07:53:08.000000000 +0200
-@@ -379,6 +379,9 @@ isc_time_secondsastimet(const isc_time_t
-                * (Let's hope the compiler got the actual test right.)
-                */
-               UNUSED(i);
-+
-+              /* Means that t->seconds > maximum value in time_t and we have int time_t */
-+              seconds = INT_MAX;
-               return (ISC_R_RANGE);
-       }
similarity index 68%
rename from bind/patches/bind97-exportlib.patch
rename to bind/patches/bind-9.7-exportlib.patch
index 1f5aa20d72b719a0a72c64e1ef7f167a87cb8742..4468ef526f9821004a3b1f3839c0090936b5253b 100644 (file)
@@ -1,35 +1,7 @@
-diff -up bind-9.7.2-P2/isc-config.sh.in.exportlib bind-9.7.2-P2/isc-config.sh.in
---- bind-9.7.2-P2/isc-config.sh.in.exportlib   2007-06-20 01:46:59.000000000 +0200
-+++ bind-9.7.2-P2/isc-config.sh.in     2010-10-20 14:05:25.423861548 +0200
-@@ -20,6 +20,8 @@
- prefix=@prefix@
- exec_prefix=@exec_prefix@
- exec_prefix_set=
-+libdir=@libdir@
-+includedir=@includedir@
- usage()
- {
-@@ -115,14 +117,14 @@ if test x"$echo_exec_prefix" = x"true" ;
-       echo $exec_prefix
- fi
- if test x"$echo_cflags" = x"true"; then
--      includes="-I${exec_prefix}/include"
-+      includes="-I${includedir}"
-       if test x"$libisc" = x"true"; then
-               includes="$includes @ALWAYS_DEFINES@ @STD_CINCLUDES@ @STD_CDEFINES@ @CCOPT@"
-       fi
-       echo $includes
- fi
- if test x"$echo_libs" = x"true"; then
--      libs=-L${exec_prefix}/lib
-+      libs="-L${libdir}"
-       if test x"$liblwres" = x"true" ; then
-               libs="$libs -llwres"
-       fi
-diff -up bind-9.7.2-P2/lib/export/dns/Makefile.in.exportlib bind-9.7.2-P2/lib/export/dns/Makefile.in
---- bind-9.7.2-P2/lib/export/dns/Makefile.in.exportlib 2010-06-10 01:49:43.000000000 +0200
-+++ bind-9.7.2-P2/lib/export/dns/Makefile.in   2010-10-20 14:08:58.123772859 +0200
+diff -up bind-9.9.3rc2/isc-config.sh.in.exportlib bind-9.9.3rc2/isc-config.sh.in
+diff -up bind-9.9.3rc2/lib/export/dns/Makefile.in.exportlib bind-9.9.3rc2/lib/export/dns/Makefile.in
+--- bind-9.9.3rc2/lib/export/dns/Makefile.in.exportlib 2013-04-30 08:38:46.000000000 +0200
++++ bind-9.9.3rc2/lib/export/dns/Makefile.in   2013-05-13 10:45:22.574089729 +0200
 @@ -35,9 +35,9 @@ CDEFINES =   -DUSE_MD5 @USE_OPENSSL@ @USE_
  
  CWARNINGS =
@@ -42,7 +14,7 @@ diff -up bind-9.7.2-P2/lib/export/dns/Makefile.in.exportlib bind-9.7.2-P2/lib/ex
  
  LIBS =                @LIBS@
  
-@@ -114,29 +114,29 @@ version.@O@: ${srcdir}/version.c
+@@ -116,29 +116,29 @@ version.@O@: ${srcdir}/version.c
                -DLIBAGE=${LIBAGE} \
                -c ${srcdir}/version.c
  
@@ -78,10 +50,10 @@ diff -up bind-9.7.2-P2/lib/export/dns/Makefile.in.exportlib bind-9.7.2-P2/lib/ex
        rm -f gen code.h include/dns/enumtype.h include/dns/enumclass.h
        rm -f include/dns/rdatastruct.h
  
-diff -up bind-9.7.2-P2/lib/export/irs/Makefile.in.exportlib bind-9.7.2-P2/lib/export/irs/Makefile.in
---- bind-9.7.2-P2/lib/export/irs/Makefile.in.exportlib 2009-12-06 00:31:40.000000000 +0100
-+++ bind-9.7.2-P2/lib/export/irs/Makefile.in   2010-10-20 14:10:39.893717488 +0200
-@@ -42,9 +42,9 @@ SRCS =               context.c \
+diff -up bind-9.9.3rc2/lib/export/irs/Makefile.in.exportlib bind-9.9.3rc2/lib/export/irs/Makefile.in
+--- bind-9.9.3rc2/lib/export/irs/Makefile.in.exportlib 2013-04-30 08:38:46.000000000 +0200
++++ bind-9.9.3rc2/lib/export/irs/Makefile.in   2013-05-13 10:45:22.575089729 +0200
+@@ -43,9 +43,9 @@ SRCS =               context.c \
                gai_sterror.c getaddrinfo.c getnameinfo.c \
                resconf.c
  
@@ -94,7 +66,7 @@ diff -up bind-9.7.2-P2/lib/export/irs/Makefile.in.exportlib bind-9.7.2-P2/lib/ex
  
  LIBS =                @LIBS@
  
-@@ -61,26 +61,26 @@ version.@O@: ${srcdir}/version.c
+@@ -62,26 +62,26 @@ version.@O@: ${srcdir}/version.c
                -DLIBAGE=${LIBAGE} \
                -c ${srcdir}/version.c
  
@@ -127,17 +99,17 @@ diff -up bind-9.7.2-P2/lib/export/irs/Makefile.in.exportlib bind-9.7.2-P2/lib/ex
  clean distclean::
 -      rm -f libirs.@A@ libirs.la timestamp
 +      rm -f libirs-export.@A@ libirs-export.la timestamp
-diff -up bind-9.7.2-P2/lib/export/isccfg/Makefile.in.exportlib bind-9.7.2-P2/lib/export/isccfg/Makefile.in
---- bind-9.7.2-P2/lib/export/isccfg/Makefile.in.exportlib      2009-12-06 00:31:41.000000000 +0100
-+++ bind-9.7.2-P2/lib/export/isccfg/Makefile.in        2010-10-20 14:10:14.593741247 +0200
+diff -up bind-9.9.3rc2/lib/export/isccfg/Makefile.in.exportlib bind-9.9.3rc2/lib/export/isccfg/Makefile.in
+--- bind-9.9.3rc2/lib/export/isccfg/Makefile.in.exportlib      2013-04-30 08:38:46.000000000 +0200
++++ bind-9.9.3rc2/lib/export/isccfg/Makefile.in        2013-05-13 10:45:22.576089729 +0200
 @@ -30,11 +30,11 @@ CINCLUDES =        -I. ${DNS_INCLUDES} -I${expo
  CDEFINES =
  CWARNINGS =
  
 -ISCLIBS =     ../isc/libisc.@A@
--DNSLIBS =     ../dns/libdns.@A@
+-DNSLIBS =     ../dns/libdns.@A@ @DNS_CRYPTO_LIBS@
 +ISCLIBS =     ../isc/libisc-export.@A@
-+DNSLIBS =     ../dns/libdns-export.@A@
++DNSLIBS =     ../dns/libdns-export.@A@ @DNS_CRYPTO_LIBS@
  
  ISCDEPLIBS =  ../../lib/isc/libisc.@A@
 -ISCCFGDEPLIBS =       libisccfg.@A@
@@ -178,10 +150,10 @@ diff -up bind-9.7.2-P2/lib/export/isccfg/Makefile.in.exportlib bind-9.7.2-P2/lib
  clean distclean::
 -      rm -f libisccfg.@A@ timestamp
 +      rm -f libisccfg-export.@A@ timestamp
-diff -up bind-9.7.2-P2/lib/export/isc/Makefile.in.exportlib bind-9.7.2-P2/lib/export/isc/Makefile.in
---- bind-9.7.2-P2/lib/export/isc/Makefile.in.exportlib 2010-06-10 01:49:43.000000000 +0200
-+++ bind-9.7.2-P2/lib/export/isc/Makefile.in   2010-10-20 14:05:25.433861543 +0200
-@@ -101,6 +101,10 @@ SRCS =            @ISC_EXTRA_SRCS@ \
+diff -up bind-9.9.3rc2/lib/export/isc/Makefile.in.exportlib bind-9.9.3rc2/lib/export/isc/Makefile.in
+--- bind-9.9.3rc2/lib/export/isc/Makefile.in.exportlib 2013-04-30 08:38:46.000000000 +0200
++++ bind-9.9.3rc2/lib/export/isc/Makefile.in   2013-05-13 10:45:22.576089729 +0200
+@@ -100,6 +100,10 @@ SRCS =            @ISC_EXTRA_SRCS@ \
  
  LIBS =                @LIBS@
  
@@ -192,7 +164,7 @@ diff -up bind-9.7.2-P2/lib/export/isc/Makefile.in.exportlib bind-9.7.2-P2/lib/ex
  SUBDIRS =     include unix nls @ISC_THREAD_DIR@
  TARGETS =     timestamp
  
-@@ -114,26 +118,26 @@ version.@O@: ${srcdir}/version.c
+@@ -113,26 +117,26 @@ version.@O@: ${srcdir}/version.c
                -DLIBAGE=${LIBAGE} \
                -c ${srcdir}/version.c
  
@@ -225,10 +197,10 @@ diff -up bind-9.7.2-P2/lib/export/isc/Makefile.in.exportlib bind-9.7.2-P2/lib/ex
  clean distclean::
 -      rm -f libisc.@A@ libisc.la timestamp
 +      rm -f libisc-export.@A@ libisc-export.la timestamp
-diff -up bind-9.7.2-P2/lib/export/samples/Makefile.in.exportlib bind-9.7.2-P2/lib/export/samples/Makefile.in
---- bind-9.7.2-P2/lib/export/samples/Makefile.in.exportlib     2009-12-06 00:31:41.000000000 +0100
-+++ bind-9.7.2-P2/lib/export/samples/Makefile.in       2010-10-20 14:05:25.433861543 +0200
-@@ -30,15 +30,15 @@ CINCLUDES =        -I${srcdir}/include -I../dns
+diff -up bind-9.9.3rc2/lib/export/samples/Makefile.in.exportlib bind-9.9.3rc2/lib/export/samples/Makefile.in
+--- bind-9.9.3rc2/lib/export/samples/Makefile.in.exportlib     2013-04-30 08:38:46.000000000 +0200
++++ bind-9.9.3rc2/lib/export/samples/Makefile.in       2013-05-13 10:45:22.577089729 +0200
+@@ -31,15 +31,15 @@ CINCLUDES =        -I${srcdir}/include -I../dns
  CDEFINES =
  CWARNINGS =
  
@@ -236,16 +208,15 @@ diff -up bind-9.7.2-P2/lib/export/samples/Makefile.in.exportlib bind-9.7.2-P2/li
 -ISCLIBS =     ../isc/libisc.@A@
 -ISCCFGLIBS =  ../isccfg/libisccfg.@A@
 -IRSLIBS =     ../irs/libirs.@A@
--
--DNSDEPLIBS =  ../dns/libdns.@A@
--ISCDEPLIBS =  ../isc/libisc.@A@
--ISCCFGDEPLIBS =       ../isccfg/libisccfg.@A@
--IRSDEPLIBS =  ../irs/libirs.@A@
 +DNSLIBS =     ../dns/libdns-export.@A@ @DNS_CRYPTO_LIBS@
 +ISCLIBS =     ../isc/libisc-export.@A@
 +ISCCFGLIBS =  ../isccfg/libisccfg-export.@A@
 +IRSLIBS =     ../irs/libirs-export.@A@
-+
+-DNSDEPLIBS =  ../dns/libdns.@A@
+-ISCDEPLIBS =  ../isc/libisc.@A@
+-ISCCFGDEPLIBS =       ../isccfg/libisccfg.@A@
+-IRSDEPLIBS =  ../irs/libirs.@A@
 +DNSDEPLIBS =  ../dns/libdns-export.@A@
 +ISCDEPLIBS =  ../isc/libisc-export.@A@
 +ISCCFGDEPLIBS =       ../isccfg/libisccfg-export.@A@
diff --git a/bind/patches/bind-9.9-libidn.patch b/bind/patches/bind-9.9-libidn.patch
new file mode 100644 (file)
index 0000000..fca8665
--- /dev/null
@@ -0,0 +1,326 @@
+From 19809fe6154ea0471a2c4fa3bd66787facf7704a Mon Sep 17 00:00:00 2001
+From: Tomas Hozza <thozza@redhat.com>
+Date: Mon, 26 May 2014 15:25:34 +0200
+Subject: [PATCH] Use libidn instead of bundled idnkit
+
+Signed-off-by: Tomas Hozza <thozza@redhat.com>
+---
+ bin/dig/Makefile.in |   6 +-
+ bin/dig/dig.docbook |   4 +-
+ bin/dig/dighost.c   | 168 ++++++++++++++++++++++++++++++++++++++++++++++++----
+ 3 files changed, 162 insertions(+), 16 deletions(-)
+
+diff --git a/bin/dig/Makefile.in b/bin/dig/Makefile.in
+index 5bc4db0..3864e06 100644
+--- a/bin/dig/Makefile.in
++++ b/bin/dig/Makefile.in
+@@ -48,10 +48,10 @@ DEPLIBS =  ${DNSDEPLIBS} ${BIND9DEPLIBS} ${ISCDEPLIBS} ${ISCCFGDEPLIBS} \
+               ${LWRESDEPLIBS}
+ LIBS =                ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
+-              ${ISCLIBS} @IDNLIBS@ @LIBS@
++              ${ISCLIBS} @IDNLIBS@ @LIBS@ -lidn
+ NOSYMLIBS =   ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \
+-              ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@
++              ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@ -lidn
+ SUBDIRS =
+@@ -69,6 +69,8 @@ HTMLPAGES =  dig.html host.html nslookup.html
+ MANOBJS =     ${MANPAGES} ${HTMLPAGES}
++EXT_CFLAGS = -DWITH_LIBIDN
++
+ @BIND9_MAKE_RULES@
+ dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS}
+diff --git a/bin/dig/dig.docbook b/bin/dig/dig.docbook
+index 7a01ec0..c3a7976 100644
+--- a/bin/dig/dig.docbook
++++ b/bin/dig/dig.docbook
+@@ -970,8 +970,8 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
+       <command>dig</command> appropriately converts character encoding of
+       domain name before sending a request to DNS server or displaying a
+       reply from the server.
+-      If you'd like to turn off the IDN support for some reason, defines
+-      the <envar>IDN_DISABLE</envar> environment variable.
++      If you'd like to turn off the IDN support for some reason, define
++      the <envar>CHARSET=ASCII</envar> environment variable.
+       The IDN support is disabled if the variable is set when 
+       <command>dig</command> runs.
+     </para>
+diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c
+index 56d763c..5a40051 100644
+--- a/bin/dig/dighost.c
++++ b/bin/dig/dighost.c
+@@ -44,6 +44,11 @@
+ #include <idn/api.h>
+ #endif
++#ifdef WITH_LIBIDN
++#include <stringprep.h>
++#include <idna.h>
++#endif
++
+ #include <dns/byaddr.h>
+ #ifdef DIG_SIGCHASE
+ #include <dns/callbacks.h>
+@@ -158,6 +163,14 @@ static void               idn_check_result(idn_result_t r, const char *msg);
+ int  idnoptions       = 0;
+ #endif
++#ifdef WITH_LIBIDN
++static isc_result_t   libidn_locale_to_utf8 (const char* from, char *to);
++static isc_result_t   libidn_utf8_to_ascii (const char* from, char *to);
++static isc_result_t   output_filter (isc_buffer_t *buffer,
++                                     unsigned int used_org,
++                                     isc_boolean_t absolute);
++#endif
++
+ isc_socket_t *keep = NULL;
+ isc_sockaddr_t keepaddr;
+@@ -1210,6 +1223,9 @@ setup_system(void) {
+       dig_searchlist_t *domain = NULL;
+       lwres_result_t lwresult;
+       unsigned int lwresflags;
++#ifdef WITH_LIBIDN
++      isc_result_t result;
++#endif
+       debug("setup_system()");
+@@ -1268,8 +1284,15 @@ setup_system(void) {
+ #ifdef WITH_IDN
+       initialize_idn();
++      
++#endif
++#ifdef WITH_LIBIDN
++      result = dns_name_settotextfilter(output_filter);
++      check_result(result, "dns_name_settotextfilter");
++#ifdef HAVE_SETLOCALE
++      setlocale (LC_ALL, "");
++#endif
+ #endif
+-
+       if (keyfile[0] != 0)
+               setup_file_key();
+       else if (keysecret[0] != 0)
+@@ -2028,12 +2051,14 @@ setup_lookup(dig_lookup_t *lookup) {
+       idn_result_t mr;
+       char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
+ #endif
++#ifdef WITH_LIBIDN
++      char utf8_str[MXNAME], utf8_name[MXNAME], ascii_name[MXNAME];
++#endif
+-#ifdef WITH_IDN
++#if defined (WITH_IDN) || defined (WITH_LIBIDN)
+       result = dns_name_settotextfilter(output_filter);
+       check_result(result, "dns_name_settotextfilter");
+ #endif
+-
+       REQUIRE(lookup != NULL);
+       INSIST(!free_now);
+@@ -2070,6 +2095,14 @@ setup_lookup(dig_lookup_t *lookup) {
+       mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
+                           utf8_textname, sizeof(utf8_textname));
+       idn_check_result(mr, "convert textname to UTF-8");
++#elif defined (WITH_LIBIDN)
++      result = libidn_locale_to_utf8 (lookup->textname, utf8_str);
++      check_result (result, "convert textname to UTF-8");
++      len = strlen (utf8_str);
++      if (len < MXNAME)
++              (void) strcpy (utf8_name, utf8_str);
++      else
++              fatal ("Too long name");
+ #endif
+       /*
+@@ -2082,15 +2115,11 @@ setup_lookup(dig_lookup_t *lookup) {
+       if (lookup->new_search) {
+ #ifdef WITH_IDN
+               if ((count_dots(utf8_textname) >= ndots) || !usesearch) {
+-                      lookup->origin = NULL; /* Force abs lookup */
+-                      lookup->done_as_is = ISC_TRUE;
+-                      lookup->need_search = usesearch;
+-              } else if (lookup->origin == NULL && usesearch) {
+-                      lookup->origin = ISC_LIST_HEAD(search_list);
+-                      lookup->need_search = ISC_FALSE;
+-              }
++#elif defined (WITH_LIBIDN)
++              if ((count_dots(utf8_name) >= ndots) || !usesearch) {
+ #else
+               if ((count_dots(lookup->textname) >= ndots) || !usesearch) {
++#endif
+                       lookup->origin = NULL; /* Force abs lookup */
+                       lookup->done_as_is = ISC_TRUE;
+                       lookup->need_search = usesearch;
+@@ -2098,7 +2127,6 @@ setup_lookup(dig_lookup_t *lookup) {
+                       lookup->origin = ISC_LIST_HEAD(search_list);
+                       lookup->need_search = ISC_FALSE;
+               }
+-#endif
+       }
+ #ifdef WITH_IDN
+@@ -2115,6 +2143,20 @@ setup_lookup(dig_lookup_t *lookup) {
+                           IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
+                           idn_textname, sizeof(idn_textname));
+       idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
++#elif defined (WITH_LIBIDN)
++      if (lookup->origin != NULL) {
++              result = libidn_locale_to_utf8 (lookup->origin->origin, utf8_str);
++              check_result (result, "convert origin to UTF-8");
++              if (len > 0 && utf8_name[len - 1] != '.') {
++                      utf8_name[len++] = '.';
++                      if (len + strlen (utf8_str) < MXNAME)
++                              (void) strcpy (utf8_name + len, utf8_str);
++                      else
++                              fatal ("Too long name + origin");
++              }
++      }
++
++      result = libidn_utf8_to_ascii (utf8_name, ascii_name);
+ #else
+       if (lookup->origin != NULL) {
+               debug("trying origin %s", lookup->origin->origin);
+@@ -2170,6 +2212,13 @@ setup_lookup(dig_lookup_t *lookup) {
+                       result = dns_name_fromtext(lookup->name, &b,
+                                                  dns_rootname, 0,
+                                                  &lookup->namebuf);
++#elif defined (WITH_LIBIDN)
++                      len = strlen (ascii_name);
++                      isc_buffer_init(&b, ascii_name, len);
++                      isc_buffer_add(&b, len);
++                      result = dns_name_fromtext(lookup->name, &b,
++                                                 dns_rootname, 0,
++                                                 &lookup->namebuf);
+ #else
+                       len = strlen(lookup->textname);
+                       isc_buffer_init(&b, lookup->textname, len);
+@@ -3788,7 +3837,7 @@ destroy_libs(void) {
+       void * ptr;
+       dig_message_t *chase_msg;
+ #endif
+-#ifdef WITH_IDN
++#if defined (WITH_IDN) || defined (WITH_LIBIDN)
+       isc_result_t result;
+ #endif
+@@ -3829,6 +3878,10 @@ destroy_libs(void) {
+       result = dns_name_settotextfilter(NULL);
+       check_result(result, "dns_name_settotextfilter");
+ #endif
++#ifdef WITH_LIBIDN
++      result = dns_name_settotextfilter (NULL);
++      check_result(result, "clearing dns_name_settotextfilter");
++#endif
+       dns_name_destroy();
+       if (commctx != NULL) {
+@@ -4008,6 +4061,97 @@ idn_check_result(idn_result_t r, const char *msg) {
+       }
+ }
+ #endif /* WITH_IDN */
++#ifdef WITH_LIBIDN
++static isc_result_t
++libidn_locale_to_utf8 (const char *from, char *to) {
++      char *utf8_str;
++
++      debug ("libidn_locale_to_utf8");
++      utf8_str = stringprep_locale_to_utf8 (from);
++      if (utf8_str != NULL) {
++              (void) strcpy (to, utf8_str);
++              free (utf8_str);
++              return ISC_R_SUCCESS;
++      }
++
++      debug ("libidn_locale_to_utf8: failure");
++      return ISC_R_FAILURE;
++}
++static isc_result_t
++libidn_utf8_to_ascii (const char *from, char *to) {
++      char *ascii;
++      int iresult;
++
++      debug ("libidn_utf8_to_ascii");
++      iresult = idna_to_ascii_8z (from, &ascii, 0);
++      if (iresult != IDNA_SUCCESS) {
++              debug ("idna_to_ascii_8z: %s", idna_strerror (iresult));
++              return ISC_R_FAILURE;
++      }
++
++      (void) strcpy (to, ascii);
++      free (ascii);
++      return ISC_R_SUCCESS;
++}
++
++static isc_result_t
++output_filter (isc_buffer_t *buffer, unsigned int used_org,
++             isc_boolean_t absolute) {
++
++      char tmp1[MXNAME], *tmp2;
++        size_t fromlen, tolen;
++        isc_boolean_t end_with_dot;
++      int iresult;
++
++      debug ("output_filter");
++
++        fromlen = isc_buffer_usedlength (buffer) - used_org;
++      if (fromlen >= MXNAME)
++              return ISC_R_SUCCESS;
++        memcpy (tmp1, (char *) isc_buffer_base (buffer) + used_org, fromlen);
++        end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;
++        if (absolute && !end_with_dot) {
++                fromlen++;
++              if (fromlen >= MXNAME)
++                      return ISC_R_SUCCESS;
++                tmp1[fromlen - 1] = '.';
++        }
++        tmp1[fromlen] = '\0';
++
++      iresult = idna_to_unicode_8z8z (tmp1, &tmp2, 0);
++      if (iresult != IDNA_SUCCESS) {
++              debug ("output_filter: %s", idna_strerror (iresult));
++              return ISC_R_SUCCESS;
++      }
++
++      (void) strcpy (tmp1, tmp2);
++      free (tmp2);
++
++      tmp2 = stringprep_utf8_to_locale (tmp1);
++      if (tmp2 == NULL) {
++              debug ("output_filter: stringprep_utf8_to_locale failed");
++              return ISC_R_SUCCESS;
++      }
++
++      (void) strcpy (tmp1, tmp2);
++      free (tmp2);
++
++        tolen = strlen (tmp1);
++        if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
++                tolen--;
++
++        if (isc_buffer_length (buffer) < used_org + tolen)
++                return ISC_R_NOSPACE;
++
++      debug ("%s", tmp1);
++
++        isc_buffer_subtract (buffer, isc_buffer_usedlength (buffer) - used_org);
++        memcpy (isc_buffer_used (buffer), tmp1, tolen);
++        isc_buffer_add (buffer, tolen);
++
++        return ISC_R_SUCCESS;
++}
++#endif /* WITH_LIBIDN*/
+ #ifdef DIG_SIGCHASE
+ void
+-- 
+1.9.0
+
diff --git a/bind/patches/bind-95-rh452060.patch b/bind/patches/bind-95-rh452060.patch
deleted file mode 100644 (file)
index 58808b0..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -up bind-9.5.0-P2/bin/dig/dighost.c.rh452060 bind-9.5.0-P2/bin/dig/dighost.c
---- bind-9.5.0-P2/bin/dig/dighost.c.rh452060   2008-12-01 22:30:01.000000000 +0100
-+++ bind-9.5.0-P2/bin/dig/dighost.c    2008-12-01 22:30:07.000000000 +0100
-@@ -1280,6 +1280,12 @@ clear_query(dig_query_t *query) {
-       debug("clear_query(%p)", query);
-+      if (query->waiting_senddone) {
-+              debug("send_done not yet called");
-+              query->pending_free = ISC_TRUE;
-+              return;
-+      }
-+
-       lookup = query->lookup;
-       if (lookup->current_query == query)
-@@ -1301,10 +1307,7 @@ clear_query(dig_query_t *query) {
-       isc_mempool_put(commctx, query->recvspace);
-       isc_buffer_invalidate(&query->recvbuf);
-       isc_buffer_invalidate(&query->lengthbuf);
--      if (query->waiting_senddone)
--              query->pending_free = ISC_TRUE;
--      else
--              isc_mem_free(mctx, query);
-+      isc_mem_free(mctx, query);
- }
- /*%
-@@ -2175,9 +2178,9 @@ send_done(isc_task_t *_task, isc_event_t
-       isc_event_free(&event);
-       if (query->pending_free)
--              isc_mem_free(mctx, query);
-+              clear_query(query);
--      check_if_done();
-+      check_next_lookup(l);
-       UNLOCK_LOOKUP;
- }
diff --git a/bind/patches/bind-96-dyndb.patch b/bind/patches/bind-96-dyndb.patch
deleted file mode 100644 (file)
index 176be49..0000000
+++ /dev/null
@@ -1,722 +0,0 @@
-diff -up bind-9.8.1rc1/bin/named/main.c.dyndb bind-9.8.1rc1/bin/named/main.c
---- bind-9.8.1rc1/bin/named/main.c.dyndb       2011-03-11 07:47:00.000000000 +0100
-+++ bind-9.8.1rc1/bin/named/main.c     2011-08-31 14:25:02.244088457 +0200
-@@ -45,6 +45,7 @@
- #include <isccc/result.h>
- #include <dns/dispatch.h>
-+#include <dns/dynamic_db.h>
- #include <dns/name.h>
- #include <dns/result.h>
- #include <dns/view.h>
-@@ -884,6 +885,8 @@ setup(void) {
- static void
- cleanup(void) {
-+      dns_dynamic_db_cleanup(ISC_TRUE);
-+
-       destroy_managers();
-       ns_server_destroy(&ns_g_server);
-diff -up bind-9.8.1rc1/bin/named/server.c.dyndb bind-9.8.1rc1/bin/named/server.c
---- bind-9.8.1rc1/bin/named/server.c.dyndb     2011-08-02 06:58:45.000000000 +0200
-+++ bind-9.8.1rc1/bin/named/server.c   2011-08-31 14:29:04.261071645 +0200
-@@ -61,6 +61,7 @@
- #include <dns/db.h>
- #include <dns/dispatch.h>
- #include <dns/dlz.h>
-+#include <dns/dynamic_db.h>
- #include <dns/dns64.h>
- #include <dns/forward.h>
- #include <dns/journal.h>
-@@ -1151,6 +1152,72 @@ configure_peer(const cfg_obj_t *cpeer, i
- }
- static isc_result_t
-+configure_dynamic_db(const cfg_obj_t *dynamic_db, isc_mem_t *mctx,
-+                   const dns_dyndb_arguments_t *dyndb_args)
-+{
-+      isc_result_t result;
-+      const cfg_obj_t *obj;
-+      const cfg_obj_t *options;
-+      const cfg_listelt_t *element;
-+      const char *name;
-+      const char *libname;
-+      const char **argv = NULL;
-+      unsigned int i;
-+      unsigned int len;
-+
-+      /* Get the name of the database. */
-+      obj = cfg_tuple_get(dynamic_db, "name");
-+      name = cfg_obj_asstring(obj);
-+
-+      /* Get options. */
-+      options = cfg_tuple_get(dynamic_db, "options");
-+
-+      /* Get library name. */
-+      obj = NULL;
-+      CHECK(cfg_map_get(options, "library", &obj));
-+      libname = cfg_obj_asstring(obj);
-+
-+      /* Create a list of arguments. */
-+      obj = NULL;
-+      result = cfg_map_get(options, "arg", &obj);
-+      if (result == ISC_R_NOTFOUND)
-+              len = 0;
-+      else if (result == ISC_R_SUCCESS)
-+              len = cfg_list_length(obj, isc_boolean_false);
-+      else
-+              goto cleanup;
-+
-+      /* Account for the last terminating NULL. */
-+      len++;
-+
-+      argv = isc_mem_allocate(mctx, len * sizeof(const char *));
-+      if (argv == NULL) {
-+              result = ISC_R_NOMEMORY;
-+              goto cleanup;
-+      }
-+      for (element = cfg_list_first(obj), i = 0;
-+           element != NULL;
-+           element = cfg_list_next(element), i++)
-+      {
-+              REQUIRE(i < len);
-+
-+              obj = cfg_listelt_value(element);
-+              argv[i] = cfg_obj_asstring(obj);
-+      }
-+      REQUIRE(i < len);
-+      argv[i] = NULL;
-+
-+      CHECK(dns_dynamic_db_load(libname, name, mctx, argv, dyndb_args));
-+
-+cleanup:
-+      if (argv != NULL)
-+              isc_mem_free(mctx, argv);
-+
-+      return result;
-+}
-+
-+
-+static isc_result_t
- disable_algorithms(const cfg_obj_t *disabled, dns_resolver_t *resolver) {
-       isc_result_t result;
-       const cfg_obj_t *algorithms;
-@@ -1562,6 +1629,7 @@ configure_view(dns_view_t *view, cfg_obj
-       const cfg_obj_t *dlz;
-       unsigned int dlzargc;
-       char **dlzargv;
-+      const cfg_obj_t *dynamic_db_list;
-       const cfg_obj_t *disabled;
-       const cfg_obj_t *obj;
-       const cfg_listelt_t *element;
-@@ -1792,6 +1860,39 @@ configure_view(dns_view_t *view, cfg_obj
-               }
-       }
-+
-+
-+      /*
-+       * Configure dynamic databases.
-+       */
-+      dynamic_db_list = NULL;
-+      if (voptions != NULL)
-+              (void)cfg_map_get(voptions, "dynamic-db", &dynamic_db_list);
-+      else
-+              (void)cfg_map_get(config, "dynamic-db", &dynamic_db_list);
-+      element = cfg_list_first(dynamic_db_list);
-+      if (element != NULL) {
-+              dns_dyndb_arguments_t *args;
-+
-+              args = dns_dyndb_arguments_create(mctx);
-+              if (args == NULL) {
-+                      result = ISC_R_NOMEMORY;
-+                      goto cleanup;
-+              }
-+              dns_dyndb_set_view(args, view);
-+              dns_dyndb_set_zonemgr(args, ns_g_server->zonemgr);
-+              dns_dyndb_set_task(args, ns_g_server->task);
-+              dns_dyndb_set_timermgr(args, ns_g_timermgr);
-+              while (element != NULL) {
-+                      obj = cfg_listelt_value(element);
-+                      CHECK(configure_dynamic_db(obj, mctx, args));
-+              
-+                      element = cfg_list_next(element);
-+              }
-+
-+              dns_dyndb_arguments_destroy(mctx, args);
-+      }
-+
-       /*
-        * Obtain configuration parameters that affect the decision of whether
-        * we can reuse/share an existing cache.
-@@ -4292,6 +4393,7 @@ load_configuration(const char *filename,
-               cfg_aclconfctx_detach(&ns_g_aclconfctx);
-       CHECK(cfg_aclconfctx_create(ns_g_mctx, &ns_g_aclconfctx));
-+      dns_dynamic_db_cleanup(ISC_FALSE);
-       /*
-        * Parse the global default pseudo-config file.
-        */
-diff -up bind-9.8.1rc1/lib/dns/dynamic_db.c.dyndb bind-9.8.1rc1/lib/dns/dynamic_db.c
---- bind-9.8.1rc1/lib/dns/dynamic_db.c.dyndb   2011-08-31 14:25:02.249088456 +0200
-+++ bind-9.8.1rc1/lib/dns/dynamic_db.c 2011-08-31 14:25:02.249088456 +0200
-@@ -0,0 +1,366 @@
-+/*
-+ * Copyright (C) 2008-2011  Red Hat, Inc.
-+ *
-+ * Permission to use, copy, modify, and/or distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND Red Hat DISCLAIMS ALL WARRANTIES WITH
-+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-+ * AND FITNESS.  IN NO EVENT SHALL Red Hat BE LIABLE FOR ANY SPECIAL, DIRECT,
-+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-+ * PERFORMANCE OF THIS SOFTWARE.
-+ */
-+
-+
-+#include <config.h>
-+
-+#include <isc/buffer.h>
-+#include <isc/mem.h>
-+#include <isc/mutex.h>
-+#include <isc/once.h>
-+#include <isc/result.h>
-+#include <isc/region.h>
-+#include <isc/task.h>
-+#include <isc/types.h>
-+#include <isc/util.h>
-+
-+#include <dns/dynamic_db.h>
-+#include <dns/log.h>
-+#include <dns/types.h>
-+#include <dns/view.h>
-+#include <dns/zone.h>
-+
-+#include <string.h>
-+
-+#if HAVE_DLFCN_H
-+#include <dlfcn.h>
-+#endif
-+
-+#ifndef DYNDB_LIBDIR
-+#define DYNDB_LIBDIR ""
-+#endif
-+
-+#define CHECK(op)                                             \
-+      do { result = (op);                                     \
-+              if (result != ISC_R_SUCCESS) goto cleanup;      \
-+      } while (0)
-+
-+
-+typedef isc_result_t (*register_func_t)(isc_mem_t *mctx, const char *name,
-+              const char * const *argv,
-+              const dns_dyndb_arguments_t *dyndb_args);
-+typedef void (*destroy_func_t)(void);
-+
-+typedef struct dyndb_implementation dyndb_implementation_t;
-+
-+struct dyndb_implementation {
-+      isc_mem_t                       *mctx;
-+      void                            *handle;
-+      register_func_t                 register_function;
-+      destroy_func_t                  destroy_function;
-+      LINK(dyndb_implementation_t)    link;
-+};
-+
-+struct dns_dyndb_arguments {
-+      dns_view_t      *view;
-+      dns_zonemgr_t   *zmgr;
-+      isc_task_t      *task;
-+      isc_timermgr_t  *timermgr;
-+};
-+
-+/* List of implementations. Locked by dyndb_lock. */
-+static LIST(dyndb_implementation_t) dyndb_implementations;
-+/* Locks dyndb_implementations. */
-+static isc_mutex_t dyndb_lock;
-+static isc_once_t once = ISC_ONCE_INIT;
-+
-+static void
-+dyndb_initialize(void) {
-+      RUNTIME_CHECK(isc_mutex_init(&dyndb_lock) == ISC_R_SUCCESS);
-+      INIT_LIST(dyndb_implementations);
-+}
-+
-+
-+#if HAVE_DLFCN_H
-+static isc_result_t
-+load_symbol(void *handle, const char *symbol_name, void **symbolp)
-+{
-+      const char *errmsg;
-+      void *symbol;
-+
-+      REQUIRE(handle != NULL);
-+      REQUIRE(symbolp != NULL && *symbolp == NULL);
-+
-+      symbol = dlsym(handle, symbol_name);
-+      if (symbol == NULL) {
-+              errmsg = dlerror();
-+              if (errmsg == NULL)
-+                      errmsg = "returned function pointer is NULL";
-+              isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-+                            DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR,
-+                            "failed to lookup symbol %s: %s",
-+                            symbol_name, errmsg);
-+              return ISC_R_FAILURE;
-+      }
-+      dlerror();
-+
-+      *symbolp = symbol;
-+
-+      return ISC_R_SUCCESS;
-+}
-+
-+static isc_result_t
-+load_library(isc_mem_t *mctx, const char *filename, dyndb_implementation_t **impp)
-+{
-+      isc_result_t result;
-+      size_t module_size;
-+      isc_buffer_t *module_buf = NULL;
-+      isc_region_t module_region;
-+      void *handle = NULL;
-+      dyndb_implementation_t *imp;
-+      register_func_t register_function = NULL;
-+      destroy_func_t destroy_function = NULL;
-+
-+      REQUIRE(impp != NULL && *impp == NULL);
-+
-+      /* Build up the full path. */
-+      module_size = strlen(DYNDB_LIBDIR) + strlen(filename) + 1;
-+      CHECK(isc_buffer_allocate(mctx, &module_buf, module_size));
-+      isc_buffer_putstr(module_buf, DYNDB_LIBDIR);
-+      isc_buffer_putstr(module_buf, filename);
-+      isc_buffer_putuint8(module_buf, 0);
-+      isc_buffer_region(module_buf, &module_region);
-+
-+      handle = dlopen((char *)module_region.base, RTLD_LAZY);
-+      if (handle == NULL) {
-+              isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
-+                            DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR,
-+                            "failed to dynamically load driver '%s': %s",
-+                            filename, dlerror());
-+              result = ISC_R_FAILURE;
-+              goto cleanup;
-+      }
-+      dlerror();
-+
-+      CHECK(load_symbol(handle, "dynamic_driver_init",
-+                        (void **)&register_function));
-+      CHECK(load_symbol(handle, "dynamic_driver_destroy",
-+                        (void **)&destroy_function));
-+
-+      imp = isc_mem_get(mctx, sizeof(dyndb_implementation_t));
-+      if (imp == NULL) {
-+              result = ISC_R_NOMEMORY;
-+              goto cleanup;
-+      }
-+
-+      imp->mctx = NULL;
-+      isc_mem_attach(mctx, &imp->mctx);
-+      imp->handle = handle;
-+      imp->register_function = register_function;
-+      imp->destroy_function = destroy_function;
-+      INIT_LINK(imp, link);
-+
-+      *impp = imp;
-+
-+cleanup:
-+      if (result != ISC_R_SUCCESS && handle != NULL)
-+              dlclose(handle);
-+      if (module_buf != NULL)
-+              isc_buffer_free(&module_buf);
-+
-+      return result;
-+}
-+
-+static void
-+unload_library(dyndb_implementation_t **impp)
-+{
-+      dyndb_implementation_t *imp;
-+
-+      REQUIRE(impp != NULL && *impp != NULL);
-+
-+      imp = *impp;
-+
-+      isc_mem_putanddetach(&imp->mctx, imp, sizeof(dyndb_implementation_t));
-+
-+      *impp = NULL;
-+}
-+
-+#else /* HAVE_DLFCN_H */
-+static isc_result_t
-+load_library(isc_mem_t *mctx, const char *filename, dyndb_implementation_t **impp)
-+{
-+      UNUSED(mctx);
-+      UNUSED(filename);
-+      UNUSED(impp);
-+
-+      isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_DYNDB,
-+                    ISC_LOG_ERROR,
-+                    "dynamic database support is not implemented")
-+
-+      return ISC_R_NOTIMPLEMENTED;
-+}
-+
-+static void
-+unload_library(dyndb_implementation_t **impp)
-+{
-+      dyndb_implementation_t *imp;
-+
-+      REQUIRE(impp != NULL && *impp != NULL);
-+
-+      imp = *impp;
-+
-+      isc_mem_putanddetach(&imp->mctx, imp, sizeof(dyndb_implementation_t));
-+
-+      *impp = NULL;
-+}
-+#endif        /* HAVE_DLFCN_H */
-+
-+isc_result_t
-+dns_dynamic_db_load(const char *libname, const char *name, isc_mem_t *mctx,
-+                  const char * const *argv,
-+                  const dns_dyndb_arguments_t *dyndb_args)
-+{
-+      isc_result_t result;
-+      dyndb_implementation_t *implementation = NULL;
-+
-+      RUNTIME_CHECK(isc_once_do(&once, dyndb_initialize) == ISC_R_SUCCESS);
-+
-+      CHECK(load_library(mctx, libname, &implementation));
-+      CHECK(implementation->register_function(mctx, name, argv, dyndb_args));
-+
-+      LOCK(&dyndb_lock);
-+      APPEND(dyndb_implementations, implementation, link);
-+      UNLOCK(&dyndb_lock);
-+
-+      return ISC_R_SUCCESS;
-+
-+cleanup:
-+      if (implementation != NULL)
-+              unload_library(&implementation);
-+
-+      return result;
-+}
-+
-+void
-+dns_dynamic_db_cleanup(isc_boolean_t exiting)
-+{
-+      dyndb_implementation_t *elem;
-+      dyndb_implementation_t *prev;
-+
-+      RUNTIME_CHECK(isc_once_do(&once, dyndb_initialize) == ISC_R_SUCCESS);
-+
-+      LOCK(&dyndb_lock);
-+      elem = TAIL(dyndb_implementations);
-+      while (elem != NULL) {
-+              prev = PREV(elem, link);
-+              UNLINK(dyndb_implementations, elem, link);
-+              elem->destroy_function();
-+              unload_library(&elem);
-+              elem = prev;
-+      }
-+      UNLOCK(&dyndb_lock);
-+
-+      if (exiting == ISC_TRUE)
-+              isc_mutex_destroy(&dyndb_lock);
-+}
-+
-+dns_dyndb_arguments_t *
-+dns_dyndb_arguments_create(isc_mem_t *mctx)
-+{
-+      dns_dyndb_arguments_t *args;
-+
-+      args = isc_mem_get(mctx, sizeof(*args));
-+      if (args != NULL)
-+              memset(args, 0, sizeof(*args));
-+
-+      return args;
-+}
-+
-+void
-+dns_dyndb_arguments_destroy(isc_mem_t *mctx, dns_dyndb_arguments_t *args)
-+{
-+      REQUIRE(args != NULL);
-+
-+      dns_dyndb_set_view(args, NULL);
-+      dns_dyndb_set_zonemgr(args, NULL);
-+      dns_dyndb_set_task(args, NULL);
-+      dns_dyndb_set_timermgr(args, NULL);
-+
-+      isc_mem_put(mctx, args, sizeof(*args));
-+}
-+
-+void
-+dns_dyndb_set_view(dns_dyndb_arguments_t *args, dns_view_t *view)
-+{
-+      REQUIRE(args != NULL);
-+
-+      if (args->view != NULL)
-+              dns_view_detach(&args->view);
-+      if (view != NULL)
-+              dns_view_attach(view, &args->view);
-+}
-+
-+dns_view_t *
-+dns_dyndb_get_view(dns_dyndb_arguments_t *args)
-+{
-+      REQUIRE(args != NULL);
-+
-+      return args->view;
-+}
-+
-+void
-+dns_dyndb_set_zonemgr(dns_dyndb_arguments_t *args, dns_zonemgr_t *zmgr)
-+{
-+      REQUIRE(args != NULL);
-+
-+      if (args->zmgr != NULL)
-+              dns_zonemgr_detach(&args->zmgr);
-+      if (zmgr != NULL)
-+              dns_zonemgr_attach(zmgr, &args->zmgr);
-+}
-+
-+dns_zonemgr_t *
-+dns_dyndb_get_zonemgr(dns_dyndb_arguments_t *args)
-+{
-+      REQUIRE(args != NULL);
-+
-+      return args->zmgr;
-+}
-+
-+void
-+dns_dyndb_set_task(dns_dyndb_arguments_t *args, isc_task_t *task)
-+{
-+      REQUIRE(args != NULL);
-+
-+      if (args->task != NULL)
-+              isc_task_detach(&args->task);
-+      if (task != NULL)
-+              isc_task_attach(task, &args->task);
-+}
-+
-+isc_task_t *
-+dns_dyndb_get_task(dns_dyndb_arguments_t *args)
-+{
-+      REQUIRE(args != NULL);
-+
-+      return args->task;
-+}
-+
-+void
-+dns_dyndb_set_timermgr(dns_dyndb_arguments_t *args, isc_timermgr_t *timermgr)
-+{
-+      REQUIRE(args != NULL);
-+
-+      args->timermgr = timermgr;
-+}
-+
-+isc_timermgr_t *
-+dns_dyndb_get_timermgr(dns_dyndb_arguments_t *args)
-+{
-+      REQUIRE(args != NULL);
-+
-+      return args->timermgr;
-+}
-diff -up bind-9.8.1rc1/lib/dns/include/dns/dynamic_db.h.dyndb bind-9.8.1rc1/lib/dns/include/dns/dynamic_db.h
---- bind-9.8.1rc1/lib/dns/include/dns/dynamic_db.h.dyndb       2011-08-31 14:25:02.249088456 +0200
-+++ bind-9.8.1rc1/lib/dns/include/dns/dynamic_db.h     2011-08-31 14:25:02.249088456 +0200
-@@ -0,0 +1,50 @@
-+/*
-+ * Copyright (C) 2008-2011  Red Hat, Inc.
-+ *
-+ * Permission to use, copy, modify, and/or distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND Red Hat DISCLAIMS ALL WARRANTIES WITH
-+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-+ * AND FITNESS.  IN NO EVENT SHALL Red Hat BE LIABLE FOR ANY SPECIAL, DIRECT,
-+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-+ * PERFORMANCE OF THIS SOFTWARE.
-+ */
-+
-+
-+#ifndef DYNAMIC_DB_H
-+#define DYNAMIC_DB_H
-+
-+#include <isc/types.h>
-+
-+#include <dns/types.h>
-+
-+/*
-+ * TODO:
-+ * Reformat the prototypes.
-+ * Add annotated comments.
-+ */
-+
-+isc_result_t dns_dynamic_db_load(const char *libname, const char *name,
-+                               isc_mem_t *mctx, const char * const *argv,
-+                               const dns_dyndb_arguments_t *dyndb_args);
-+
-+void dns_dynamic_db_cleanup(isc_boolean_t exiting);
-+
-+dns_dyndb_arguments_t *dns_dyndb_arguments_create(isc_mem_t *mctx);
-+void dns_dyndb_arguments_destroy(isc_mem_t *mctx, dns_dyndb_arguments_t *args);
-+
-+void dns_dyndb_set_view(dns_dyndb_arguments_t *args, dns_view_t *view);
-+dns_view_t *dns_dyndb_get_view(dns_dyndb_arguments_t *args);
-+void dns_dyndb_set_zonemgr(dns_dyndb_arguments_t *args, dns_zonemgr_t *zmgr);
-+dns_zonemgr_t *dns_dyndb_get_zonemgr(dns_dyndb_arguments_t *args);
-+void dns_dyndb_set_task(dns_dyndb_arguments_t *args, isc_task_t *task);
-+isc_task_t *dns_dyndb_get_task(dns_dyndb_arguments_t *args);
-+void dns_dyndb_set_timermgr(dns_dyndb_arguments_t *args,
-+                          isc_timermgr_t *timermgr);
-+isc_timermgr_t *dns_dyndb_get_timermgr(dns_dyndb_arguments_t *args);
-+
-+#endif
-diff -up bind-9.8.1rc1/lib/dns/include/dns/log.h.dyndb bind-9.8.1rc1/lib/dns/include/dns/log.h
---- bind-9.8.1rc1/lib/dns/include/dns/log.h.dyndb      2009-12-18 23:16:49.000000000 +0100
-+++ bind-9.8.1rc1/lib/dns/include/dns/log.h    2011-08-31 14:25:02.250088456 +0200
-@@ -74,6 +74,7 @@ LIBDNS_EXTERNAL_DATA extern isc_logmodul
- #define DNS_LOGMODULE_ACACHE          (&dns_modules[25])
- #define DNS_LOGMODULE_DLZ             (&dns_modules[26])
- #define DNS_LOGMODULE_DNSSEC          (&dns_modules[27])
-+#define DNS_LOGMODULE_DYNDB           (&dns_modules[28])
- ISC_LANG_BEGINDECLS
-diff -up bind-9.8.1rc1/lib/dns/include/dns/Makefile.in.dyndb bind-9.8.1rc1/lib/dns/include/dns/Makefile.in
---- bind-9.8.1rc1/lib/dns/include/dns/Makefile.in.dyndb        2011-02-28 02:20:02.000000000 +0100
-+++ bind-9.8.1rc1/lib/dns/include/dns/Makefile.in      2011-08-31 14:25:02.250088456 +0200
-@@ -22,7 +22,7 @@ top_srcdir = @top_srcdir@
- @BIND9_VERSION@
- HEADERS =     acl.h adb.h byaddr.h cache.h callbacks.h cert.h compress.h \
--              db.h dbiterator.h dbtable.h diff.h dispatch.h dlz.h \
-+              db.h dbiterator.h dbtable.h diff.h dispatch.h dlz.h dynamic_db.h \
-               dnssec.h ds.h events.h fixedname.h iptable.h journal.h \
-               keyflags.h keytable.h keyvalues.h lib.h log.h \
-               master.h masterdump.h message.h name.h ncache.h nsec.h \
-diff -up bind-9.8.1rc1/lib/dns/include/dns/types.h.dyndb bind-9.8.1rc1/lib/dns/include/dns/types.h
---- bind-9.8.1rc1/lib/dns/include/dns/types.h.dyndb    2010-12-08 03:46:16.000000000 +0100
-+++ bind-9.8.1rc1/lib/dns/include/dns/types.h  2011-08-31 14:25:02.251088456 +0200
-@@ -60,6 +60,7 @@ typedef struct dns_dbtable                   dns_dbtable
- typedef void                                  dns_dbversion_t;
- typedef struct dns_dlzimplementation          dns_dlzimplementation_t;
- typedef struct dns_dlzdb                      dns_dlzdb_t;
-+typedef struct dns_dyndb_arguments            dns_dyndb_arguments_t;
- typedef struct dns_sdlzimplementation         dns_sdlzimplementation_t;
- typedef struct dns_decompress                 dns_decompress_t;
- typedef struct dns_dispatch                   dns_dispatch_t;
-diff -up bind-9.8.1rc1/lib/dns/log.c.dyndb bind-9.8.1rc1/lib/dns/log.c
---- bind-9.8.1rc1/lib/dns/log.c.dyndb  2009-12-19 00:49:03.000000000 +0100
-+++ bind-9.8.1rc1/lib/dns/log.c        2011-08-31 14:25:02.251088456 +0200
-@@ -80,6 +80,7 @@ LIBDNS_EXTERNAL_DATA isc_logmodule_t dns
-       { "dns/acache",         0 },
-       { "dns/dlz",            0 },
-       { "dns/dnssec",         0 },
-+      { "dns/dynamic_db",     0 },
-       { NULL,                 0 }
- };
-diff -up bind-9.8.1rc1/lib/dns/Makefile.in.dyndb bind-9.8.1rc1/lib/dns/Makefile.in
---- bind-9.8.1rc1/lib/dns/Makefile.in.dyndb    2011-08-31 14:25:02.230088458 +0200
-+++ bind-9.8.1rc1/lib/dns/Makefile.in  2011-08-31 14:25:02.251088456 +0200
-@@ -58,7 +58,7 @@ DNSOBJS =    acache.@O@ acl.@O@ adb.@O@ bya
-               cache.@O@ callbacks.@O@ compress.@O@ \
-               db.@O@ dbiterator.@O@ dbtable.@O@ diff.@O@ dispatch.@O@ \
-               dlz.@O@ dns64.@O@ dnssec.@O@ ds.@O@ forward.@O@ iptable.@O@ \
--              journal.@O@ keydata.@O@ keytable.@O@ \
-+              dynamic_db.@O@ journal.@O@ keydata.@O@ keytable.@O@ \
-               lib.@O@ log.@O@ lookup.@O@ \
-               master.@O@ masterdump.@O@ message.@O@ \
-               name.@O@ ncache.@O@ nsec.@O@ nsec3.@O@ order.@O@ peer.@O@ \
-@@ -87,7 +87,7 @@ DNSSRCS =    acache.c acl.c adb.c byaddr.c 
-               cache.c callbacks.c compress.c \
-               db.c dbiterator.c dbtable.c diff.c dispatch.c \
-               dlz.c dns64.c dnssec.c ds.c forward.c iptable.c journal.c \
--              keydata.c keytable.c lib.c log.c lookup.c \
-+              dynamic_db.c keydata.c keytable.c lib.c log.c lookup.c \
-               master.c masterdump.c message.c \
-               name.c ncache.c nsec.c nsec3.c order.c peer.c portlist.c \
-               rbt.c rbtdb.c rbtdb64.c rcode.c rdata.c rdatalist.c \
-@@ -118,6 +118,11 @@ version.@O@: version.c
-               -DLIBAGE=${LIBAGE} \
-               -c ${srcdir}/version.c
-+dynamic_db.@O@: dynamic_db.c
-+      ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
-+      -DDYNDB_LIBDIR=\"@libdir@/bind/\" \
-+      -c ${srcdir}/dynamic_db.c
-+
- libdns.@SA@: ${OBJS}
-       ${AR} ${ARFLAGS} $@ ${OBJS}
-       ${RANLIB} $@
-diff -up bind-9.8.1rc1/lib/isccfg/namedconf.c.dyndb bind-9.8.1rc1/lib/isccfg/namedconf.c
---- bind-9.8.1rc1/lib/isccfg/namedconf.c.dyndb 2011-05-23 22:56:11.000000000 +0200
-+++ bind-9.8.1rc1/lib/isccfg/namedconf.c       2011-08-31 14:25:02.253088456 +0200
-@@ -89,6 +89,7 @@ static cfg_type_t cfg_type_controls;
- static cfg_type_t cfg_type_controls_sockaddr;
- static cfg_type_t cfg_type_destinationlist;
- static cfg_type_t cfg_type_dialuptype;
-+static cfg_type_t cfg_type_dynamic_db;
- static cfg_type_t cfg_type_ixfrdifftype;
- static cfg_type_t cfg_type_key;
- static cfg_type_t cfg_type_logfile;
-@@ -860,6 +861,7 @@ namedconf_or_view_clauses[] = {
-       { "zone", &cfg_type_zone, CFG_CLAUSEFLAG_MULTI },
-       /* only 1 DLZ per view allowed */
-       { "dlz", &cfg_type_dynamically_loadable_zones, 0 },
-+      { "dynamic-db", &cfg_type_dynamic_db, CFG_CLAUSEFLAG_MULTI },
-       { "server", &cfg_type_server, CFG_CLAUSEFLAG_MULTI },
-       { "trusted-keys", &cfg_type_dnsseckeys, CFG_CLAUSEFLAG_MULTI },
-       { "managed-keys", &cfg_type_managedkeys, CFG_CLAUSEFLAG_MULTI },
-@@ -1860,6 +1862,40 @@ static cfg_type_t cfg_type_dialuptype = 
-       &cfg_rep_string, dialup_enums
- };
-+/*
-+ * Dynamic database clauses.
-+ */
-+
-+static cfg_clausedef_t
-+dynamic_db_clauses[] = {
-+      { "library", &cfg_type_qstring, 0 },
-+      { "arg", &cfg_type_qstring, CFG_CLAUSEFLAG_MULTI },
-+      { NULL, NULL, 0 }
-+};
-+
-+static cfg_clausedef_t *
-+dynamic_db_clausesets[] = {
-+      dynamic_db_clauses,
-+      NULL
-+};
-+
-+static cfg_type_t cfg_type_dynamic_db_opts = {
-+      "dynamically_loadable_zones_opts", cfg_parse_map,
-+      cfg_print_map, cfg_doc_map, &cfg_rep_map,
-+      dynamic_db_clausesets
-+};
-+
-+static cfg_tuplefielddef_t dynamic_db_fields[] = {
-+      { "name", &cfg_type_astring, 0 },
-+      { "options", &cfg_type_dynamic_db_opts, 0 },
-+      { NULL, NULL, 0 }
-+};
-+
-+static cfg_type_t cfg_type_dynamic_db = {
-+      "dynamic_db", cfg_parse_tuple, cfg_print_tuple, cfg_doc_tuple,
-+      &cfg_rep_tuple, dynamic_db_fields
-+};
-+
- static const char *notify_enums[] = { "explicit", "master-only", NULL };
- static isc_result_t
- parse_notify_type(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) {
diff --git a/bind/patches/bind-96-libtool2.patch b/bind/patches/bind-96-libtool2.patch
deleted file mode 100644 (file)
index 8ceba2f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up bind-9.6.0b1/configure.in.libtool2 bind-9.6.0b1/configure.in
---- bind-9.6.0b1/configure.in.libtool2 2008-11-24 13:05:37.000000000 +0100
-+++ bind-9.6.0b1/configure.in  2008-11-24 13:05:56.000000000 +0100
-@@ -27,6 +27,8 @@ AC_CONFIG_SUBDIRS(lib/bind)
- AC_CONFIG_HEADER(config.h)
-+AC_CONFIG_MACRO_DIR([m4])
-+
- AC_CANONICAL_HOST
- AC_PROG_MAKE_SET
-diff -up bind-9.6.0b1/Makefile.in.libtool2 bind-9.6.0b1/Makefile.in
diff --git a/bind/patches/bind-nonexec.patch b/bind/patches/bind-nonexec.patch
deleted file mode 100644 (file)
index 780ffed..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-diff -up bind-9.7.0rc2/lib/bind9/Makefile.in.nonexec bind-9.7.0rc2/lib/bind9/Makefile.in
---- bind-9.7.0rc2/lib/bind9/Makefile.in.nonexec        2009-12-06 00:31:40.000000000 +0100
-+++ bind-9.7.0rc2/lib/bind9/Makefile.in        2010-01-28 12:13:33.406696161 +0100
-@@ -78,7 +78,7 @@ installdirs:
-       $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
- install:: timestamp installdirs
--      ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libbind9.@A@ ${DESTDIR}${libdir}
-+      ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libbind9.@A@ ${DESTDIR}${libdir}
- clean distclean::
-       rm -f libbind9.@A@ timestamp
-diff -up bind-9.7.0rc2/lib/dns/Makefile.in.nonexec bind-9.7.0rc2/lib/dns/Makefile.in
---- bind-9.7.0rc2/lib/dns/Makefile.in.nonexec  2009-12-06 00:31:40.000000000 +0100
-+++ bind-9.7.0rc2/lib/dns/Makefile.in  2010-01-28 12:13:33.406696161 +0100
-@@ -131,7 +131,7 @@ installdirs:
-       $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
- install:: timestamp installdirs
--      ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libdns.@A@ ${DESTDIR}${libdir}
-+      ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libdns.@A@ ${DESTDIR}${libdir}
- clean distclean::
-       rm -f libdns.@A@ timestamp
-diff -up bind-9.7.0rc2/lib/isccc/Makefile.in.nonexec bind-9.7.0rc2/lib/isccc/Makefile.in
---- bind-9.7.0rc2/lib/isccc/Makefile.in.nonexec        2009-12-06 00:31:41.000000000 +0100
-+++ bind-9.7.0rc2/lib/isccc/Makefile.in        2010-01-28 12:13:33.406696161 +0100
-@@ -80,7 +80,7 @@ installdirs:
-       $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
- install:: timestamp installdirs
--      ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libisccc.@A@ ${DESTDIR}${libdir}
-+      ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libisccc.@A@ ${DESTDIR}${libdir}
- clean distclean::
-       rm -f libisccc.@A@ timestamp
-diff -up bind-9.7.0rc2/lib/isccfg/Makefile.in.nonexec bind-9.7.0rc2/lib/isccfg/Makefile.in
---- bind-9.7.0rc2/lib/isccfg/Makefile.in.nonexec       2009-12-06 00:31:41.000000000 +0100
-+++ bind-9.7.0rc2/lib/isccfg/Makefile.in       2010-01-28 12:13:33.406696161 +0100
-@@ -77,7 +77,7 @@ installdirs:
-       $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
- install:: timestamp installdirs
--      ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libisccfg.@A@ ${DESTDIR}${libdir}
-+      ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libisccfg.@A@ ${DESTDIR}${libdir}
- clean distclean::
-       rm -f libisccfg.@A@ timestamp
-diff -up bind-9.7.0rc2/lib/isc/Makefile.in.nonexec bind-9.7.0rc2/lib/isc/Makefile.in
---- bind-9.7.0rc2/lib/isc/Makefile.in.nonexec  2009-12-18 05:09:55.000000000 +0100
-+++ bind-9.7.0rc2/lib/isc/Makefile.in  2010-01-28 12:13:53.566696766 +0100
-@@ -121,7 +121,7 @@ installdirs:
-       $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
- install:: timestamp installdirs
--      ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libisc.@A@ ${DESTDIR}${libdir}
-+      ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libisc.@A@ ${DESTDIR}${libdir}
- clean distclean::
-       rm -f libisc.@A@ libisc-nosymtbl.@A@ libisc.la \
-diff -up bind-9.7.0rc2/lib/lwres/Makefile.in.nonexec bind-9.7.0rc2/lib/lwres/Makefile.in
---- bind-9.7.0rc2/lib/lwres/Makefile.in.nonexec        2007-06-20 01:47:22.000000000 +0200
-+++ bind-9.7.0rc2/lib/lwres/Makefile.in        2010-01-28 12:13:33.406696161 +0100
-@@ -78,7 +78,7 @@ installdirs:
-       $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
- install:: timestamp installdirs
--      ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} liblwres.@A@ ${DESTDIR}${libdir}
-+      ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} liblwres.@A@ ${DESTDIR}${libdir}
- clean distclean::
-       rm -f liblwres.@A@ liblwres.la timestamp
diff --git a/bind/patches/bind93-rh490837.patch0 b/bind/patches/bind93-rh490837.patch0
deleted file mode 100644 (file)
index 230d7a7..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-? patch
-? lib/isc/lex.c.rh490837
-Index: lib/isc/lex.c
-===================================================================
-RCS file: /var/snap/bind9/lib/isc/lex.c,v
-retrieving revision 1.86
-diff -p -u -r1.86 lex.c
---- lib/isc/lex.c      17 Sep 2007 09:56:29 -0000      1.86
-+++ lib/isc/lex.c      6 Apr 2009 13:24:15 -0000
-@@ -425,17 +425,14 @@ isc_lex_gettoken(isc_lex_t *lex, unsigne
-                       if (source->is_file) {
-                               stream = source->input;
--#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED)
--                              c = getc_unlocked(stream);
--#else
--                              c = getc(stream);
--#endif
--                              if (c == EOF) {
--                                      if (ferror(stream)) {
--                                              source->result = ISC_R_IOERROR;
--                                              result = source->result;
-+                              result = isc_stdio_fgetc(stream, &c);
-+
-+                              if (result != ISC_R_SUCCESS) {
-+                                      if (result != ISC_R_EOF) {
-+                                              source->result = result;
-                                               goto done;
-                                       }
-+
-                                       source->at_eof = ISC_TRUE;
-                               }
-                       } else {
-Index: lib/isc/include/isc/stdio.h
-===================================================================
-RCS file: /var/snap/bind9/lib/isc/include/isc/stdio.h,v
-retrieving revision 1.13
-diff -p -u -r1.13 stdio.h
---- lib/isc/include/isc/stdio.h        19 Jun 2007 23:47:18 -0000      1.13
-+++ lib/isc/include/isc/stdio.h        6 Apr 2009 13:24:15 -0000
-@@ -72,6 +72,9 @@ isc_stdio_sync(FILE *f);
-  * direct counterpart in the stdio library.
-  */
-+isc_result_t
-+isc_stdio_fgetc(FILE *f, int *ret);
-+
- ISC_LANG_ENDDECLS
- #endif /* ISC_STDIO_H */
-Index: lib/isc/unix/errno2result.c
-===================================================================
-RCS file: /var/snap/bind9/lib/isc/unix/errno2result.c,v
-retrieving revision 1.17
-diff -p -u -r1.17 errno2result.c
---- lib/isc/unix/errno2result.c        19 Jun 2007 23:47:18 -0000      1.17
-+++ lib/isc/unix/errno2result.c        6 Apr 2009 13:24:15 -0000
-@@ -43,6 +43,7 @@ isc__errno2result(int posixerrno) {
-       case EINVAL:            /* XXX sometimes this is not for files */
-       case ENAMETOOLONG:
-       case EBADF:
-+      case EISDIR:
-               return (ISC_R_INVALIDFILE);
-       case ENOENT:
-               return (ISC_R_FILENOTFOUND);
-Index: lib/isc/unix/stdio.c
-===================================================================
-RCS file: /var/snap/bind9/lib/isc/unix/stdio.c,v
-retrieving revision 1.8
-diff -p -u -r1.8 stdio.c
---- lib/isc/unix/stdio.c       19 Jun 2007 23:47:18 -0000      1.8
-+++ lib/isc/unix/stdio.c       6 Apr 2009 13:24:15 -0000
-@@ -115,3 +115,22 @@ isc_stdio_sync(FILE *f) {
-               return (isc__errno2result(errno));
- }
-+isc_result_t
-+isc_stdio_fgetc(FILE *f, int *ret) {
-+      int r;
-+      isc_result_t result = ISC_R_SUCCESS;
-+
-+#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED)
-+      r = fgetc_unlocked(f);
-+#else
-+      r = fgets(f);
-+#endif
-+
-+      if (r == EOF)
-+              result = ferror(f) ? isc__errno2result(errno) : ISC_R_EOF;
-+
-+      *ret = r;
-+
-+      return result;
-+}
-+
diff --git a/bind/patches/bind95-rh461409.patch b/bind/patches/bind95-rh461409.patch
deleted file mode 100644 (file)
index 8c0c772..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -up bind-9.5.1b1/bin/dig/dighost.c.rh461409 bind-9.5.1b1/bin/dig/dighost.c
---- bind-9.5.1b1/bin/dig/dighost.c.rh461409    2008-09-16 14:04:03.000000000 +0200
-+++ bind-9.5.1b1/bin/dig/dighost.c     2008-09-16 14:06:06.000000000 +0200
-@@ -3665,6 +3665,15 @@ output_filter (isc_buffer_t *buffer, uns
-       (void) strcpy (tmp1, tmp2);
-       free (tmp2);
-+      tmp2 = stringprep_utf8_to_locale (tmp1);
-+      if (tmp2 == NULL) {
-+              debug ("output_filter: stringprep_utf8_to_locale failed");
-+              return ISC_R_SUCCESS;
-+      }
-+
-+      (void) strcpy (tmp1, tmp2);
-+      free (tmp2);
-+
-         tolen = strlen (tmp1);
-         if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
-                 tolen--;
diff --git a/bind/patches/bind97-dist-pkcs11.patch b/bind/patches/bind97-dist-pkcs11.patch
deleted file mode 100644 (file)
index cf8c9f0..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up bind-9.7.0b1/configure.in.dist-pkcs11 bind-9.7.0b1/configure.in
---- bind-9.7.0b1/configure.in.dist-pkcs11      2009-11-03 11:37:25.481430279 +0100
-+++ bind-9.7.0b1/configure.in  2009-11-03 11:41:04.573930858 +0100
-@@ -721,15 +721,16 @@ AC_ARG_WITH(pkcs11,
- case "$use_pkcs11" in
-       no|'')
-               AC_MSG_RESULT(disabled)
--              USE_PKCS11=''
-               PKCS11_TOOLS=''
-               ;;
-       yes|*)
-               AC_MSG_RESULT(using OpenSSL with PKCS11 support)
--              USE_PKCS11='-DUSE_PKCS11'
-               PKCS11_TOOLS=pkcs11
-               ;;
- esac
-+# We don't want to automatically load engine because it needs to have openct,
-+# opencryptoki and friends installed.
-+USE_PKCS11=''
- AC_SUBST(USE_PKCS11)
- AC_SUBST(PKCS11_TOOLS)
diff --git a/bind/patches/bind97-rh478718.patch b/bind/patches/bind97-rh478718.patch
deleted file mode 100644 (file)
index c6ea596..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -up bind-9.7.0/configure.in.rh478718 bind-9.7.0/configure.in
---- bind-9.7.0/configure.in.rh478718   2010-03-01 14:50:02.331207076 +0100
-+++ bind-9.7.0/configure.in    2010-03-01 14:50:21.501207488 +0100
-@@ -2540,6 +2540,10 @@ main() {
-       AC_MSG_RESULT($arch)
- fi
-+if test ! "$arch" = "x86_64" -a "$have_xaddq" = "yes"; then
-+      AC_MSG_ERROR([XADDQ present but disabled by Fedora patch!])
-+fi
-+
- if test "$have_atomic" = "yes"; then
-       AC_MSG_CHECKING([compiler support for inline assembly code])
-diff -up bind-9.7.0/lib/isc/include/isc/platform.h.in.rh478718 bind-9.7.0/lib/isc/include/isc/platform.h.in
---- bind-9.7.0/lib/isc/include/isc/platform.h.in.rh478718      2010-03-01 14:50:31.421207522 +0100
-+++ bind-9.7.0/lib/isc/include/isc/platform.h.in       2010-03-01 14:50:40.313707286 +0100
-@@ -255,7 +255,11 @@
-  * If the "xaddq" operation (64bit xadd) is available on this architecture,
-  * ISC_PLATFORM_HAVEXADDQ will be defined.
-  */
--@ISC_PLATFORM_HAVEXADDQ@
-+#ifdef __x86_64__
-+#define ISC_PLATFORM_HAVEXADDQ 1
-+#else
-+#undef ISC_PLATFORM_HAVEXADDQ
-+#endif
- /*
-  * If the "atomic swap" operation is available on this architecture,
diff --git a/bind/patches/bind97-rh570851.patch b/bind/patches/bind97-rh570851.patch
deleted file mode 100644 (file)
index e24b94c..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-diff -up bind-9.7.2b1/bin/dig/dighost.c.rh570851 bind-9.7.2b1/bin/dig/dighost.c
---- bind-9.7.2b1/bin/dig/dighost.c.rh570851    2010-08-10 12:55:14.219403986 +0200
-+++ bind-9.7.2b1/bin/dig/dighost.c     2010-08-10 12:56:40.716015777 +0200
-@@ -126,7 +126,8 @@ isc_boolean_t
-       usesearch = ISC_FALSE,
-       showsearch = ISC_FALSE,
-       qr = ISC_FALSE,
--      is_dst_up = ISC_FALSE;
-+      is_dst_up = ISC_FALSE,
-+      verbose = ISC_FALSE;
- in_port_t port = 53;
- unsigned int timeout = 0;
- unsigned int extrabytes;
-@@ -1240,10 +1241,24 @@ setup_system(void) {
-               }
-       }
-+      if (lwconf->resdebug) {
-+              verbose = ISC_TRUE;
-+              debug("verbose is on");
-+      }
-       if (ndots == -1) {
-               ndots = lwconf->ndots;
-               debug("ndots is %d.", ndots);
-       }
-+      if (lwconf->attempts) {
-+              tries = lwconf->attempts + 1;
-+              if (tries < 2)
-+                      tries = 2;
-+              debug("tries is %d.", tries);
-+      }
-+      if (lwconf->timeout) {
-+              timeout = lwconf->timeout;
-+              debug("timeout is %d.", timeout);
-+      }
-       /* If user doesn't specify server use nameservers from resolv.conf. */
-       if (ISC_LIST_EMPTY(server_list))
-diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c
---- bind-9.7.2b1/bin/dig/host.c.rh570851       2010-08-10 12:57:16.032758098 +0200
-+++ bind-9.7.2b1/bin/dig/host.c        2010-08-10 13:02:12.848559845 +0200
-@@ -659,6 +659,7 @@ parse_args(isc_boolean_t is_batchfile, i
-       lookup->servfail_stops = ISC_FALSE;
-       lookup->comments = ISC_FALSE;
-+      short_form = !verbose;
-       while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
-               switch (c) {
-@@ -869,8 +870,8 @@ main(int argc, char **argv) {
-       result = isc_app_start();
-       check_result(result, "isc_app_start");
-       setup_libs();
--      parse_args(ISC_FALSE, argc, argv);
-       setup_system();
-+      parse_args(ISC_FALSE, argc, argv);
-       result = isc_app_onrun(mctx, global_task, onrun_callback, NULL);
-       check_result(result, "isc_app_onrun");
-       isc_app_run();
-diff -up bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 bind-9.7.2b1/bin/dig/include/dig/dig.h
---- bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851    2010-08-10 13:02:32.722244088 +0200
-+++ bind-9.7.2b1/bin/dig/include/dig/dig.h     2010-08-10 13:02:48.465158159 +0200
-@@ -278,6 +278,7 @@ extern isc_boolean_t debugging, memdebug
- extern char *progname;
- extern int tries;
- extern int fatalexit;
-+extern isc_boolean_t verbose;
- #ifdef WITH_IDN
- extern int idnoptions;
- #endif
-diff -up bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.7.2b1/lib/lwres/include/lwres/lwres.h
---- bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851      2010-08-10 13:04:40.465780506 +0200
-+++ bind-9.7.2b1/lib/lwres/include/lwres/lwres.h       2010-08-10 13:05:57.559867830 +0200
-@@ -243,6 +243,8 @@ typedef struct {
-       lwres_uint8_t   resdebug;      /*%< non-zero if 'options debug' set */
-       lwres_uint8_t   ndots;         /*%< set to n in 'options ndots:n' */
-       lwres_uint8_t   no_tld_query;  /*%< non-zero if 'options no_tld_query' */
-+      lwres_int32_t   attempts;      /*%< set to n in 'options attempts:n' */
-+      lwres_int32_t   timeout;       /*%< set to n in 'options timeout:n' */
- } lwres_conf_t;
- #define LWRES_ADDRTYPE_V4             0x00000001U     /*%< ipv4 */
-diff -up bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 bind-9.7.2b1/lib/lwres/lwconfig.c
---- bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 2010-08-10 13:06:08.051778429 +0200
-+++ bind-9.7.2b1/lib/lwres/lwconfig.c  2010-08-10 13:09:53.972555776 +0200
-@@ -237,6 +237,8 @@ lwres_conf_init(lwres_context_t *ctx) {
-       confdata->resdebug = 0;
-       confdata->ndots = 1;
-       confdata->no_tld_query = 0;
-+      confdata->attempts = 0;
-+      confdata->timeout = 0;
-       for (i = 0; i < LWRES_CONFMAXNAMESERVERS; i++)
-               lwres_resetaddr(&confdata->nameservers[i]);
-@@ -289,6 +291,8 @@ lwres_conf_clear(lwres_context_t *ctx) {
-       confdata->resdebug = 0;
-       confdata->ndots = 1;
-       confdata->no_tld_query = 0;
-+      confdata->attempts = 0;
-+      confdata->timeout = 0;
- }
- static lwres_result_t
-@@ -530,6 +534,8 @@ static lwres_result_t
- lwres_conf_parseoption(lwres_context_t *ctx,  FILE *fp) {
-       int delim;
-       long ndots;
-+      long attempts;
-+      long timeout;
-       char *p;
-       char word[LWRES_CONFMAXLINELEN];
-       lwres_conf_t *confdata;
-@@ -546,6 +552,8 @@ lwres_conf_parseoption(lwres_context_t *
-                       confdata->resdebug = 1;
-               } else if (strcmp("no_tld_query", word) == 0) {
-                       confdata->no_tld_query = 1;
-+              } else if (strcmp("debug", word) == 0) {
-+                      confdata->resdebug = 1;
-               } else if (strncmp("ndots:", word, 6) == 0) {
-                       ndots = strtol(word + 6, &p, 10);
-                       if (*p != '\0') /* Bad string. */
-@@ -553,6 +561,18 @@ lwres_conf_parseoption(lwres_context_t *
-                       if (ndots < 0 || ndots > 0xff) /* Out of range. */
-                               return (LWRES_R_FAILURE);
-                       confdata->ndots = (lwres_uint8_t)ndots;
-+              } else if (strncmp("timeout:", word, 8) == 0) {
-+                      timeout = strtol(word + 8, &p, 10);
-+                      if (*p != '\0') /* Bad string. */
-+                              return (LWRES_R_FAILURE);
-+                      confdata->timeout = (lwres_int32_t)timeout;
-+              } else if (strncmp("attempts:", word, 9) == 0) {
-+                      attempts = strtol(word + 9, &p, 10);
-+                      if (*p != '\0') /* Bad string. */
-+                              return (LWRES_R_FAILURE);
-+                      if (attempts < 0) /* Out of range. */
-+                              return (LWRES_R_FAILURE);
-+                      confdata->attempts = (lwres_int32_t)attempts;
-               }
-               if (delim == EOF || delim == '\n')
-@@ -716,6 +736,12 @@ lwres_conf_print(lwres_context_t *ctx, F
-       if (confdata->no_tld_query)
-               fprintf(fp, "options no_tld_query\n");
-+      if (confdata->attempts)
-+              fprintf(fp, "options attempts:%d\n", confdata->attempts);
-+
-+      if (confdata->timeout)
-+              fprintf(fp, "options timeout:%d\n", confdata->timeout);
-+
-       return (LWRES_R_SUCCESS);
- }
diff --git a/bind/patches/bind97-rh645544.patch b/bind/patches/bind97-rh645544.patch
deleted file mode 100644 (file)
index 8b9c4e3..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -up bind-9.7.2-P2/lib/dns/resolver.c.rh645544 bind-9.7.2-P2/lib/dns/resolver.c
---- bind-9.7.2-P2/lib/dns/resolver.c.rh645544  2010-11-08 14:32:12.254896255 +0100
-+++ bind-9.7.2-P2/lib/dns/resolver.c   2010-11-08 14:33:18.674869633 +0100
-@@ -1097,7 +1097,7 @@ log_edns(fetchctx_t *fctx) {
-       dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf));
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_EDNS_DISABLED,
--                    DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
-+                    DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
-                     "success resolving '%s' (in '%s'?) after %s",
-                     fctx->info, domainbuf, fctx->reason);
-@@ -3795,7 +3795,7 @@ log_lame(fetchctx_t *fctx, dns_adbaddrin
-       dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf));
-       isc_sockaddr_format(&addrinfo->sockaddr, addrbuf, sizeof(addrbuf));
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_LAME_SERVERS,
--                    DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
-+                    DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
-                     "lame server resolving '%s' (in '%s'?): %s",
-                     namebuf, domainbuf, addrbuf);
- }
-@@ -3822,7 +3822,7 @@ log_formerr(fetchctx_t *fctx, const char
-       }
-       isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER,
--                    DNS_LOGMODULE_RESOLVER, ISC_LOG_NOTICE,
-+                    DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1),
-                     "DNS format error from %s resolving %s%s%s: %s",
-                     nsbuf, fctx->info, clmsg, clbuf, msgbuf);
- }
diff --git a/bind/patches/bind97-rh693982.patch b/bind/patches/bind97-rh693982.patch
deleted file mode 100644 (file)
index 57bf812..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -up bind-9.7.3-P3/bin/named/server.c.rh693982 bind-9.7.3-P3/bin/named/server.c
---- bind-9.7.3-P3/bin/named/server.c.rh693982  2011-08-12 17:18:55.611978110 +0200
-+++ bind-9.7.3-P3/bin/named/server.c   2011-08-12 17:19:36.009975303 +0200
-@@ -4444,15 +4444,6 @@ load_configuration(const char *filename,
-               ns_os_changeuser();
-       /*
--       * Check that the working directory is writable.
--       */
--      if (access(".", W_OK) != 0) {
--              isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
--                            NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
--                            "the working directory is not writable");
--      }
--
--      /*
-        * Configure the logging system.
-        *
-        * Do this after changing UID to make sure that any log
-@@ -4498,6 +4489,15 @@ load_configuration(const char *filename,
-       }
-       /*
-+       * Check that the working directory is writable.
-+       */
-+      if (access(".", W_OK) != 0) {
-+              isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
-+                            NS_LOGMODULE_SERVER, ISC_LOG_DEBUG(1),
-+                            "the working directory is not writable");
-+      }
-+
-+      /*
-        * Set the default value of the query logging flag depending
-        * whether a "queries" category has been defined.  This is
-        * a disgusting hack, but we need to do this for BIND 8
diff --git a/bind/patches/bind97-rh699951.patch b/bind/patches/bind97-rh699951.patch
deleted file mode 100644 (file)
index 77a807f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
---- bind-9.8.0-P4/lib/dns/request.c.test       2011-08-04 19:13:34.300999355 +0200
-+++ bind-9.8.0-P4/lib/dns/request.c    2011-08-04 19:37:40.347002723 +0200
-@@ -97,6 +97,7 @@ struct dns_request {
-                                          synchronously canceled */
- #define DNS_REQUEST_F_TIMEDOUT 0x0008 /*%< canceled due to a timeout */
- #define DNS_REQUEST_F_TCP 0x0010      /*%< This request used TCP */
-+#define DNS_REQUEST_F_RESPONSE 0x0020 /*%< We got response */
- #define DNS_REQUEST_CANCELED(r) \
-       (((r)->flags & DNS_REQUEST_F_CANCELED) != 0)
- #define DNS_REQUEST_CONNECTING(r) \
-@@ -105,6 +106,8 @@ struct dns_request {
-       (((r)->flags & DNS_REQUEST_F_SENDING) != 0)
- #define DNS_REQUEST_TIMEDOUT(r) \
-       (((r)->flags & DNS_REQUEST_F_TIMEDOUT) != 0)
-+#define DNS_REQUEST_RESPONSE(r) \
-+      (((r)->flags & DNS_REQUEST_F_RESPONSE) != 0)
- /***
-@@ -1312,9 +1315,15 @@ req_senddone(isc_task_t *task, isc_event
-       if (DNS_REQUEST_CANCELED(request)) {
-               /*
--               * Send delayed event.
-+               * Response can arrive before we proccess
-+               * req_senddone which means we received cancellation
-+               * request from req_response(). If we successfully
-+               * fetched response, send success. Otherwise
-+               * indicate failure.
-                */
--              if (DNS_REQUEST_TIMEDOUT(request))
-+              if (DNS_REQUEST_RESPONSE(request))
-+                      send_if_done(request, ISC_R_SUCCESS);
-+              else if (DNS_REQUEST_TIMEDOUT(request))
-                       send_if_done(request, ISC_R_TIMEDOUT);
-               else
-                       send_if_done(request, ISC_R_CANCELED);
-@@ -1367,6 +1376,8 @@ req_response(isc_task_t *task, isc_event
-       /*
-        * Send completion event.
-        */
-+      if (result == ISC_R_SUCCESS)
-+              request->flags |= DNS_REQUEST_F_RESPONSE;
-       send_if_done(request, result);
-       UNLOCK(&request->requestmgr->locks[request->hash]);
- }
diff --git a/bind/patches/bind97-rh700097.patch b/bind/patches/bind97-rh700097.patch
deleted file mode 100644 (file)
index 60db2af..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up bind-9.7.3-P3/bin/nsupdate/nsupdate.c.rh700097 bind-9.7.3-P3/bin/nsupdate/nsupdate.c
---- bind-9.7.3-P3/bin/nsupdate/nsupdate.c.rh700097     2011-08-12 16:24:18.730205763 +0200
-+++ bind-9.7.3-P3/bin/nsupdate/nsupdate.c      2011-08-12 16:24:27.833205103 +0200
-@@ -2298,6 +2298,7 @@ recvsoa(isc_task_t *task, isc_event_t *e
-               dns_message_destroy(&soaquery);
-               ddebug("Out of recvsoa");
-               done_update();
-+              seenerror = ISC_TRUE;
-               return;
-       }
diff --git a/bind/patches/bind97-rh714049.patch b/bind/patches/bind97-rh714049.patch
deleted file mode 100644 (file)
index 77ed806..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-diff -up bind-9.7.3-P3/bin/nsupdate/nsupdate.c.rh714049 bind-9.7.3-P3/bin/nsupdate/nsupdate.c
---- bind-9.7.3-P3/bin/nsupdate/nsupdate.c.rh714049     2011-08-12 14:17:39.520175003 +0200
-+++ bind-9.7.3-P3/bin/nsupdate/nsupdate.c      2011-08-12 15:11:01.812173573 +0200
-@@ -109,6 +109,13 @@ extern int h_errno;
- #define DNSDEFAULTPORT 53
-+/*
-+ * Assume that bind9_getaddresses returns IPv6 and IPv4 addrs
-+ * so when master server is not reachable via IPv6
-+ * we can switch to IPv4.
-+ */
-+#define MAX_SERVERADDRS 4
-+
- static isc_uint16_t dnsport = DNSDEFAULTPORT;
- #ifndef RESOLV_CONF
-@@ -151,6 +158,8 @@ static isc_sockaddr_t *servers;
- static int ns_inuse = 0;
- static int ns_total = 0;
- static isc_sockaddr_t *userserver = NULL;
-+static int curserver = 0;
-+static int userservers = 0;
- static isc_sockaddr_t *localaddr = NULL;
- static isc_sockaddr_t *serveraddr = NULL;
- static isc_sockaddr_t tempaddr;
-@@ -703,7 +712,8 @@ doshutdown(void) {
-       isc_task_detach(&global_task);
-       if (userserver != NULL)
--              isc_mem_put(mctx, userserver, sizeof(isc_sockaddr_t));
-+              isc_mem_put(mctx, userserver,
-+                          MAX_SERVERADDRS * sizeof(isc_sockaddr_t));
-       if (localaddr != NULL)
-               isc_mem_put(mctx, localaddr, sizeof(isc_sockaddr_t));
-@@ -914,17 +924,21 @@ setup_system(void) {
- }
- static void
--get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr) {
-+get_addresses(char *host, in_port_t port, isc_sockaddr_t *sockaddr, int *naddrs) {
-       int count;
-       isc_result_t result;
-       isc_app_block();
--      result = bind9_getaddresses(host, port, sockaddr, 1, &count);
-+      result = bind9_getaddresses(host, port, sockaddr,
-+                                  (naddrs == NULL) ? 1 : MAX_SERVERADDRS, &count);
-       isc_app_unblock();
-       if (result != ISC_R_SUCCESS)
-               fatal("couldn't get address for '%s': %s",
-                     host, isc_result_totext(result));
--      INSIST(count == 1);
-+      if (naddrs == NULL)
-+              INSIST(count == 1);
-+      else
-+              *naddrs = count;
- }
- #define PARSE_ARGS_FMT "dDML:y:ghlovk:p:rR::t:u:"
-@@ -1364,12 +1378,14 @@ evaluate_server(char *cmdline) {
-       }
-       if (userserver == NULL) {
--              userserver = isc_mem_get(mctx, sizeof(isc_sockaddr_t));
-+              userserver = isc_mem_get(mctx,
-+                                       MAX_SERVERADDRS * sizeof(isc_sockaddr_t));
-               if (userserver == NULL)
-                       fatal("out of memory");
-       }
--      get_address(server, (in_port_t)port, userserver);
-+      memset(userserver, 0, MAX_SERVERADDRS * sizeof(isc_sockaddr_t));
-+      get_addresses(server, (in_port_t)port, userserver, &userservers);
-       return (STATUS_MORE);
- }
-@@ -2207,19 +2223,25 @@ recvsoa(isc_task_t *task, isc_event_t *e
-       if (eresult != ISC_R_SUCCESS) {
-               char addrbuf[ISC_SOCKADDR_FORMATSIZE];
-+              isc_sockaddr_t *server;
-               isc_sockaddr_format(addr, addrbuf, sizeof(addrbuf));
-               fprintf(stderr, "; Communication with %s failed: %s\n",
-                       addrbuf, isc_result_totext(eresult));
--              if (userserver != NULL)
--                      fatal("could not talk to specified name server");
--              else if (++ns_inuse >= lwconf->nsnext)
-+              if (userserver != NULL) {
-+                      if (++curserver == MAX_SERVERADDRS)
-+                              fatal("could not talk to specified name server");
-+                      else
-+                              ddebug("recvsoa: trying next server");
-+              } else if (++ns_inuse >= lwconf->nsnext)
-                       fatal("could not talk to any default name server");
-               ddebug("Destroying request [%p]", request);
-               dns_request_destroy(&request);
-               dns_message_renderreset(soaquery);
-               dns_message_settsigkey(soaquery, NULL);
--              sendrequest(localaddr, &servers[ns_inuse], soaquery, &request);
-+              server = (userserver != NULL) ? &userserver[curserver] :
-+                                              &servers[ns_inuse];
-+              sendrequest(localaddr, server, soaquery, &request);
-               isc_mem_put(mctx, reqinfo, sizeof(nsu_requestinfo_t));
-               isc_event_free(&event);
-               setzoneclass(dns_rdataclass_none);
-@@ -2351,7 +2373,7 @@ recvsoa(isc_task_t *task, isc_event_t *e
-       }
-       if (userserver != NULL)
--              serveraddr = userserver;
-+              serveraddr = &userserver[curserver];
-       else {
-               char serverstr[DNS_NAME_MAXTEXT+1];
-               isc_buffer_t buf;
-@@ -2360,7 +2382,7 @@ recvsoa(isc_task_t *task, isc_event_t *e
-               result = dns_name_totext(&master, ISC_TRUE, &buf);
-               check_result(result, "dns_name_totext");
-               serverstr[isc_buffer_usedlength(&buf)] = 0;
--              get_address(serverstr, dnsport, &tempaddr);
-+              get_addresses(serverstr, dnsport, &tempaddr, NULL);
-               serveraddr = &tempaddr;
-       }
-       dns_rdata_freestruct(&soa);
-@@ -2464,9 +2486,9 @@ start_gssrequest(dns_name_t *master)
-                       fatal("out of memory");
-       }
-       if (userserver == NULL)
--              get_address(namestr, dnsport, kserver);
-+              get_addresses(namestr, dnsport, kserver, NULL);
-       else
--              (void)memcpy(kserver, userserver, sizeof(isc_sockaddr_t));
-+              (void)memcpy(kserver, &userserver[curserver], sizeof(isc_sockaddr_t));
-       dns_fixedname_init(&fname);
-       servname = dns_fixedname_name(&fname);
-@@ -2594,15 +2616,17 @@ recvgss(isc_task_t *task, isc_event_t *e
-               isc_sockaddr_format(addr, addrbuf, sizeof(addrbuf));
-               fprintf(stderr, "; Communication with %s failed: %s\n",
-                       addrbuf, isc_result_totext(eresult));
--              if (userserver != NULL)
-+              if (userserver != NULL) {
-                       fatal("could not talk to specified name server");
--              else if (++ns_inuse >= lwconf->nsnext)
-+              } else if (++ns_inuse >= lwconf->nsnext)
-                       fatal("could not talk to any default name server");
-               ddebug("Destroying request [%p]", request);
-               dns_request_destroy(&request);
-               dns_message_renderreset(tsigquery);
--              sendrequest(localaddr, &servers[ns_inuse], tsigquery,
--                          &request);
-+              sendrequest(localaddr,
-+                          (userserver != NULL) ? &userserver[curserver] :
-+                                                 &servers[ns_inuse],
-+                          tsigquery, &request);
-               isc_mem_put(mctx, reqinfo, sizeof(nsu_gssinfo_t));
-               isc_event_free(&event);
-               return;
diff --git a/bind/patches/bind98-dlz_buildfix.patch b/bind/patches/bind98-dlz_buildfix.patch
deleted file mode 100644 (file)
index dc44919..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -up bind-9.8.1rc1/bin/tests/system/dlzexternal/Makefile.in.dlz_buildfix bind-9.8.1rc1/bin/tests/system/dlzexternal/Makefile.in
-diff -up bind-9.8.1rc1/bin/tests/system/Makefile.in.dlz_buildfix bind-9.8.1rc1/bin/tests/system/Makefile.in
---- bind-9.8.1rc1/bin/tests/system/Makefile.in.dlz_buildfix    2011-08-31 17:04:34.466423526 +0200
-+++ bind-9.8.1rc1/bin/tests/system/Makefile.in 2011-08-31 17:04:38.512423247 +0200
-@@ -21,7 +21,7 @@ top_srcdir = @top_srcdir@
- @BIND9_MAKE_INCLUDES@
--SUBDIRS =     dlzexternal filter-aaaa lwresd rpz tkey tsiggss
-+SUBDIRS =     filter-aaaa lwresd rpz tkey tsiggss
- TARGETS =
- @BIND9_MAKE_RULES@
-diff -up bind-9.8.1rc1/contrib/dlz/drivers/sdlz_helper.c.dlz_buildfix bind-9.8.1rc1/contrib/dlz/drivers/sdlz_helper.c
---- bind-9.8.1rc1/contrib/dlz/drivers/sdlz_helper.c.dlz_buildfix       2010-05-14 08:29:37.000000000 +0200
-+++ bind-9.8.1rc1/contrib/dlz/drivers/sdlz_helper.c    2011-08-31 16:53:47.736468453 +0200
-@@ -50,7 +50,7 @@
-  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-  */
--#ifdef DLZ
-+#ifdef CONTRIB_DLZ
- #include <config.h>
diff --git a/bind/patches/bind98-rh725741.patch b/bind/patches/bind98-rh725741.patch
deleted file mode 100644 (file)
index 53d924d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -up bind-9.8.0-P4/bin/named/main.c.rh725741 bind-9.8.0-P4/bin/named/main.c
---- bind-9.8.0-P4/bin/named/main.c.rh725741    2011-08-03 15:20:28.487516386 +0200
-+++ bind-9.8.0-P4/bin/named/main.c     2011-08-03 15:20:50.197514932 +0200
-@@ -872,8 +872,6 @@ setup(void) {
- static void
- cleanup(void) {
--      dns_dynamic_db_cleanup(ISC_TRUE);
--
-       destroy_managers();
-       ns_server_destroy(&ns_g_server);
-diff -up bind-9.8.0-P4/bin/named/server.c.rh725741 bind-9.8.0-P4/bin/named/server.c
---- bind-9.8.0-P4/bin/named/server.c.rh725741  2011-08-03 15:20:42.009515447 +0200
-+++ bind-9.8.0-P4/bin/named/server.c   2011-08-03 15:21:01.878514035 +0200
-@@ -5263,6 +5263,8 @@ shutdown_server(isc_task_t *task, isc_ev
-                       dns_view_detach(&view);
-       }
-+      dns_dynamic_db_cleanup(ISC_TRUE);
-+
-       while ((nsc = ISC_LIST_HEAD(server->cachelist)) != NULL) {
-               ISC_LIST_UNLINK(server->cachelist, nsc, link);
-               dns_cache_detach(&nsc->cache);
diff --git a/bind/patches/bind98-rh735103.patch b/bind/patches/bind98-rh735103.patch
deleted file mode 100644 (file)
index 77acfa8..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -up bind-9.8.1rc1/lib/isc/unix/socket.c.rh735103 bind-9.8.1rc1/lib/isc/unix/socket.c
---- bind-9.8.1rc1/lib/isc/unix/socket.c.rh735103       2011-07-29 04:19:20.000000000 +0200
-+++ bind-9.8.1rc1/lib/isc/unix/socket.c        2011-09-07 18:49:54.100215897 +0200
-@@ -57,6 +57,20 @@
- #include <isc/util.h>
- #include <isc/xml.h>
-+/* See task.c about the following definition: */
-+#ifdef BIND9
-+#ifdef ISC_PLATFORM_USETHREADS
-+#define USE_WATCHER_THREAD
-+#else
-+#define USE_SHARED_MANAGER
-+#endif        /* ISC_PLATFORM_USETHREADS */
-+#else /* BIND9 */
-+#undef ISC_PLATFORM_HAVESYSUNH
-+#undef ISC_PLATFORM_HAVEKQUEUE
-+#undef ISC_PLATFORM_HAVEEPOLL
-+#undef ISC_PLATFORM_HAVEDEVPOLL
-+#endif        /* BIND9 */
-+
- #ifdef ISC_PLATFORM_HAVESYSUNH
- #include <sys/un.h>
- #endif
-@@ -76,15 +90,6 @@
- #include "errno2result.h"
--/* See task.c about the following definition: */
--#ifdef BIND9
--#ifdef ISC_PLATFORM_USETHREADS
--#define USE_WATCHER_THREAD
--#else
--#define USE_SHARED_MANAGER
--#endif        /* ISC_PLATFORM_USETHREADS */
--#endif        /* BIND9 */
--
- #ifndef USE_WATCHER_THREAD
- #include "socket_p.h"
- #include "../task_p.h"
index ecde05136055be2f77c694a32e17b0740275eb5f..451e434d12e78bcd9015f6eec4323a7242aea686 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = binutils
-version    = 2.23.52.0.1
+version    = 2.24
 release    = 1
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
@@ -30,6 +30,7 @@ build
                flex
                gcc-c++
                pakfire-builder >= 0.9.23-5
+               perl
                texinfo
                zlib-devel
        end
@@ -37,12 +38,24 @@ build
        prepare_cmds
                mkdir -pv %{DIR_SRC}/binutils-build
 
+               # On aarch64 we might use 64KiB pages
+               sed -i -e '/#define.*ELF_COMMONPAGESIZE/s/0x1000$/0x10000/' bfd/elf*aarch64.c
+
                # Suppress the installation of an outdated standards.info file as a newer
                # one is installed later on in the Autoconf instructions:
                rm -fv etc/standards.info
                sed -e '/^INFO/s/standards.info //' -i etc/Makefile.in
 
+               perl -pi -e 's/i\[3-7\]86/i[34567]86/g' */conf*
                sed -i -e 's/%''{release}/%{release}/g' bfd/Makefile{.am,.in}
+               sed -i -e '/^libopcodes_la_\(DEPENDENCIES\|LIBADD\)/s,$, ../bfd/libbfd.la,' opcodes/Makefile.{am,in}
+
+               # Build libbfd.so and libopcodes.so with -Bsymbolic-functions if possible.
+               if gcc %{CFLAGS} -v --help 2>&1 | grep -q -- -Bsymbolic-functions; then
+                       sed -i -e 's/^libbfd_la_LDFLAGS = /&-Wl,-Bsymbolic-functions /' bfd/Makefile.{am,in}
+                       sed -i -e 's/^libopcodes_la_LDFLAGS = /&-Wl,-Bsymbolic-functions /' opcodes/Makefile.{am,in}
+               fi
+               touch */configure
        end
 
        configure_options += \
diff --git a/binutils/patches/binutils-2.22.52.0.1-relro-on-by-default.patch b/binutils/patches/binutils-2.22.52.0.1-relro-on-by-default.patch
deleted file mode 100644 (file)
index 65a6c97..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-diff -Nur binutils-2.22.52.0.4-vanilla/ld/emultempl/armelf.em binutils-2.22.52.0.4/ld/emultempl/armelf.em
---- binutils-2.22.52.0.4-vanilla/ld/emultempl/armelf.em        2012-06-05 18:44:10.000000000 +0200
-+++ binutils-2.22.52.0.4/ld/emultempl/armelf.em        2012-06-08 13:34:30.578427241 +0200
-@@ -52,6 +52,7 @@
-   input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
-   config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
-   config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
-+  link_info.relro = TRUE;
- }
- static void
-diff -Nur binutils-2.22.52.0.4-vanilla/ld/emultempl/elf32.em binutils-2.22.52.0.4/ld/emultempl/elf32.em
---- binutils-2.22.52.0.4-vanilla/ld/emultempl/elf32.em 2012-06-05 18:44:10.000000000 +0200
-+++ binutils-2.22.52.0.4/ld/emultempl/elf32.em 2012-06-08 13:33:07.090612102 +0200
-@@ -106,6 +106,7 @@
-   input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
-   config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
-   link_info.sharable_sections = `if test "$SHARABLE_SECTIONS" = "yes" ; then echo TRUE ; else echo FALSE ; fi`;
-+  link_info.relro = TRUE;
- }
- EOF
-diff -Nur binutils-2.22.52.0.4-vanilla/ld/testsuite/config/default.exp binutils-2.22.52.0.4/ld/testsuite/config/default.exp
---- binutils-2.22.52.0.4-vanilla/ld/testsuite/config/default.exp       2012-06-05 18:44:10.000000000 +0200
-+++ binutils-2.22.52.0.4/ld/testsuite/config/default.exp       2012-06-08 13:33:07.085612052 +0200
-@@ -23,7 +23,7 @@
- #
- if ![info exists ld] then {
--    set ld [findfile $base_dir/ld-new $base_dir/ld-new [transform ld]]
-+    set ld "[findfile $base_dir/ld-new $base_dir/ld-new [transform ld]] -znorelro"
- }
- if ![info exists as] then {
-@@ -69,7 +69,7 @@
-     catch "exec ln -s ../../ld-new tmpdir/ld/ld" status
-     catch "exec ln -s ld tmpdir/ld/collect-ld" status
- }
--set gcc_ld_flag "-B[pwd]/tmpdir/ld/"
-+set gcc_ld_flag "-B[pwd]/tmpdir/ld/ -Wl,-z,norelro"
- # load the linker path
- if {[file exists tmpdir/libpath.exp]} {
-@@ -279,7 +279,7 @@
- }
- if ![info exists LD] then {
--    set LD [findfile $base_dir/ld-new ./ld-new [transform ld]]
-+    set LD "[findfile $base_dir/ld-new ./ld-new [transform ld]] -znorelro"
- }
- if ![info exists LDFLAGS] then {
-diff -Nur binutils-2.22.52.0.4-vanilla/ld/testsuite/ld-bootstrap/bootstrap.exp binutils-2.22.52.0.4/ld/testsuite/ld-bootstrap/bootstrap.exp
---- binutils-2.22.52.0.4-vanilla/ld/testsuite/ld-bootstrap/bootstrap.exp       2012-06-05 18:44:10.000000000 +0200
-+++ binutils-2.22.52.0.4/ld/testsuite/ld-bootstrap/bootstrap.exp       2012-06-08 13:33:07.086612062 +0200
-@@ -71,7 +71,13 @@
-     # This test can only be run if we have the ld build directory,
-     # since we need the object files.
--    if {$ld != "$objdir/ld-new"} {
-+    set ldexe $ld
-+    set ldparm [string first " " $ld]
-+    if { $ldparm > 0 } then {
-+      set ldparm [expr $ldparm - 1]
-+      set ldexe [string range $ld 0 $ldparm]
-+    }
-+    if {$ldexe != "$objdir/ld-new"} {
-       untested $testname
-       continue
-     }
diff --git a/binutils/patches/binutils-2.23.2-aarch64-em.patch0 b/binutils/patches/binutils-2.23.2-aarch64-em.patch0
new file mode 100644 (file)
index 0000000..f4aae4c
--- /dev/null
@@ -0,0 +1,47 @@
+*** ../binutils-2.23.2.orig/ld/emultempl/aarch64elf.em 2013-06-05 09:46:17.499278813 +0100
+--- ld/emultempl/aarch64elf.em 2013-06-05 09:54:36.981292659 +0100
+*************** gld${EMULATION_NAME}_after_allocation (v
+*** 264,270 ****
+  }
+  
+  static void
+! gld${EMULATION_NAME}_finish (void)
+  {
+    if (! link_info.relocatable)
+      {
+--- 264,270 ----
+  }
+  
+  static void
+! gld${EMULATION_NAME}_local_finish (void)
+  {
+    if (! link_info.relocatable)
+      {
+*************** gld${EMULATION_NAME}_finish (void)
+*** 276,282 ****
+       }
+      }
+  
+!   finish_default ();
+  }
+  
+  /* This is a convenient point to tell BFD about target specific flags.
+--- 276,282 ----
+       }
+      }
+  
+!   gld${EMULATION_NAME}_finish ();
+  }
+  
+  /* This is a convenient point to tell BFD about target specific flags.
+*************** LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=
+*** 413,416 ****
+  LDEMUL_BEFORE_PARSE=gld"${EMULATION_NAME}"_before_parse
+  
+  # Call the extra arm-elf function
+! LDEMUL_FINISH=gld${EMULATION_NAME}_finish
+--- 413,416 ----
+  LDEMUL_BEFORE_PARSE=gld"${EMULATION_NAME}"_before_parse
+  
+  # Call the extra arm-elf function
+! LDEMUL_FINISH=gld${EMULATION_NAME}_local_finish
diff --git a/binutils/patches/binutils-2.23.2-kernel-ld-r.patch0 b/binutils/patches/binutils-2.23.2-kernel-ld-r.patch0
new file mode 100644 (file)
index 0000000..2ba70c5
--- /dev/null
@@ -0,0 +1,2734 @@
+diff -cpr ../binutils-2.23.2.orig/bfd/bfd.c bfd/bfd.c
+*** ../binutils-2.23.2.orig/bfd/bfd.c  2013-05-14 16:39:24.681717759 +0100
+--- bfd/bfd.c  2013-05-14 16:40:06.988718932 +0100
+*************** CODE_FRAGMENT
+*** 43,48 ****
+--- 43,56 ----
+  .    both_direction = 3
+  .  };
+  .
++ .enum bfd_lto_object_type
++ .  {
++ .    lto_non_object,
++ .    lto_non_ir_object,
++ .    lto_ir_object,
++ .    lto_mixed_object
++ .  };
++ .
+  .struct bfd
+  .{
+  .  {* A unique identifier of the BFD  *}
+*************** CODE_FRAGMENT
+*** 190,195 ****
+--- 198,206 ----
+  .  {* The last section on the section list.  *}
+  .  struct bfd_section *section_last;
+  .
++ .  {* The object-only section on the section list.  *}
++ .  struct bfd_section *object_only_section;
++ .
+  .  {* The number of sections.  *}
+  .  unsigned int section_count;
+  .
+*************** CODE_FRAGMENT
+*** 308,313 ****
+--- 319,327 ----
+  .  {* Set if only required symbols should be added in the link hash table for
+  .     this object.  Used by VMS linkers.  *}
+  .  unsigned int selective_search : 1;
++ .
++ .  {* LTO object type.  *}
++ .  unsigned int lto_type : 2;
+  .};
+  .
+  */
+*************** bfd_demangle (bfd *abfd, const char *nam
+*** 2026,2028 ****
+--- 2040,2075 ----
+  
+    return res;
+  }
++ 
++ /*
++ FUNCTION
++      bfd_group_signature
++ 
++ SYNOPSIS
++      asymbol *bfd_group_signature (asection *group, asymbol **isympp);
++ 
++ DESCRIPTION
++      Return a pointer to the symbol used as a signature for GROUP.
++ */
++ 
++ asymbol *
++ bfd_group_signature (asection *group, asymbol **isympp)
++ {
++   bfd *abfd = group->owner;
++   Elf_Internal_Shdr *ghdr;
++ 
++   if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
++     return NULL;
++ 
++   ghdr = &elf_section_data (group)->this_hdr;
++   if (ghdr->sh_link < elf_numsections (abfd))
++     {
++       const struct elf_backend_data *bed = get_elf_backend_data (abfd);
++       Elf_Internal_Shdr *symhdr = elf_elfsections (abfd) [ghdr->sh_link];
++ 
++       if (symhdr->sh_type == SHT_SYMTAB
++        && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym)
++      return isympp[ghdr->sh_info - 1];
++     }
++   return NULL;
++ }
+diff -cpr ../binutils-2.23.2.orig/bfd/bfd-in2.h bfd/bfd-in2.h
+*** ../binutils-2.23.2.orig/bfd/bfd-in2.h      2013-05-14 16:39:24.640717758 +0100
+--- bfd/bfd-in2.h      2013-05-14 16:42:03.217722154 +0100
+*************** struct bfd_section *bfd_create_gnu_debug
+*** 1050,1055 ****
+--- 1050,1058 ----
+  bfd_boolean bfd_fill_in_gnu_debuglink_section
+     (bfd *abfd, struct bfd_section *sect, const char *filename);
+  
++ const char *bfd_extract_object_only_section
++    (bfd *abfd);
++ 
+  /* Extracted from libbfd.c.  */
+  
+  /* Byte swapping macros for user section data.  */
+*************** extern asection std_section[4];
+*** 1594,1599 ****
+--- 1597,1605 ----
+    || ((SEC) == bfd_com_section_ptr)            \
+    || ((SEC) == bfd_ind_section_ptr))
+  
++ /* GNU object-only section name.  */
++ #define GNU_OBJECT_ONLY_SECTION_NAME ".gnu_object_only"
++ 
+  /* Macros to handle insertion and deletion of a bfd's sections.  These
+     only handle the list pointers, ie. do not adjust section_count,
+     target_index etc.  */
+*************** enum bfd_direction
+*** 5681,5686 ****
+--- 5687,5700 ----
+      both_direction = 3
+    };
+  
++ enum bfd_lto_object_type
++   {
++     lto_non_object,
++     lto_non_ir_object,
++     lto_ir_object,
++     lto_mixed_object
++   };
++ 
+  struct bfd
+  {
+    /* A unique identifier of the BFD  */
+*************** struct bfd
+*** 5828,5833 ****
+--- 5842,5850 ----
+    /* The last section on the section list.  */
+    struct bfd_section *section_last;
+  
++   /* The object-only section on the section list.  */
++   struct bfd_section *object_only_section;
++ 
+    /* The number of sections.  */
+    unsigned int section_count;
+  
+*************** struct bfd
+*** 5946,5951 ****
+--- 5963,5971 ----
+    /* Set if only required symbols should be added in the link hash table for
+       this object.  Used by VMS linkers.  */
+    unsigned int selective_search : 1;
++ 
++   /* LTO object type.  */
++   unsigned int lto_type : 2;
+  };
+  
+  typedef enum bfd_error
+*************** void bfd_emul_set_commonpagesize (const
+*** 6167,6172 ****
+--- 6187,6194 ----
+  
+  char *bfd_demangle (bfd *, const char *, int);
+  
++ asymbol *bfd_group_signature (asection *group, asymbol **isympp);
++ 
+  /* Extracted from archive.c.  */
+  symindex bfd_get_next_mapent
+     (bfd *abfd, symindex previous, carsym **sym);
+diff -cpr ../binutils-2.23.2.orig/bfd/elf.c bfd/elf.c
+*** ../binutils-2.23.2.orig/bfd/elf.c  2013-05-14 16:39:25.317717777 +0100
+--- bfd/elf.c  2013-05-14 16:40:06.993718932 +0100
+*************** static const struct bfd_elf_special_sect
+*** 2092,2097 ****
+--- 2092,2098 ----
+    { STRING_COMMA_LEN (".gnu.linkonce.b"), -2, SHT_NOBITS,      SHF_ALLOC + SHF_WRITE },
+    { STRING_COMMA_LEN (".gnu.lto_"),       -1, SHT_PROGBITS,    SHF_EXCLUDE },
+    { STRING_COMMA_LEN (".got"),             0, SHT_PROGBITS,    SHF_ALLOC + SHF_WRITE },
++   { STRING_COMMA_LEN (".gnu_object_only"), 0, SHT_GNU_OBJECT_ONLY, SHF_EXCLUDE },
+    { STRING_COMMA_LEN (".gnu.version"),     0, SHT_GNU_versym,  0 },
+    { STRING_COMMA_LEN (".gnu.version_d"),   0, SHT_GNU_verdef,  0 },
+    { STRING_COMMA_LEN (".gnu.version_r"),   0, SHT_GNU_verneed, 0 },
+diff -cpr ../binutils-2.23.2.orig/bfd/elflink.c bfd/elflink.c
+*** ../binutils-2.23.2.orig/bfd/elflink.c      2013-05-14 16:39:25.280717776 +0100
+--- bfd/elflink.c      2013-05-14 16:40:06.997718932 +0100
+*************** elf_link_add_archive_symbols (bfd *abfd,
+*** 5127,5132 ****
+--- 5127,5135 ----
+            something wrong with the archive.  */
+         if (element->archive_pass != 0)
+           {
++            /* Don't load the IR archive member twice.  */
++            if (element->lto_type == lto_ir_object)
++              continue;
+             bfd_set_error (bfd_error_bad_value);
+             goto error_return;
+           }
+diff -cpr ../binutils-2.23.2.orig/bfd/format.c bfd/format.c
+*** ../binutils-2.23.2.orig/bfd/format.c       2013-05-14 16:39:24.265717748 +0100
+--- bfd/format.c       2013-05-14 16:40:07.006718933 +0100
+*************** bfd_check_format (bfd *abfd, bfd_format
+*** 95,100 ****
+--- 95,127 ----
+    return bfd_check_format_matches (abfd, format, NULL);
+  }
+  
++ /* Set lto_type in ABFD.  */
++ 
++ static void
++ bfd_set_lto_type (bfd *abfd)
++ {
++   if (abfd->format == bfd_object
++       && abfd->lto_type == lto_non_object
++       && (abfd->flags & (DYNAMIC | EXEC_P)) == 0)
++     {
++       asection *sec;
++       enum bfd_lto_object_type type = lto_non_ir_object;
++       for (sec = abfd->sections; sec != NULL; sec = sec->next)
++      {
++        if (strcmp (sec->name, GNU_OBJECT_ONLY_SECTION_NAME) == 0)
++          {
++            type = lto_mixed_object;
++            abfd->object_only_section = sec;
++            break;
++          }
++        else if (type != lto_ir_object
++                 && strncmp (sec->name, ".gnu.lto_", 9) == 0)
++          type = lto_ir_object;
++      }
++       abfd->lto_type = type;
++     }
++ }
++ 
+  struct bfd_preserve
+  {
+    void *marker;
+*************** bfd_check_format_matches (bfd *abfd, bfd
+*** 136,142 ****
+      }
+  
+    if (abfd->format != bfd_unknown)
+!     return abfd->format == format;
+  
+    if (matching != NULL || *bfd_associated_vector != NULL)
+      {
+--- 163,172 ----
+      }
+  
+    if (abfd->format != bfd_unknown)
+!     {
+!       bfd_set_lto_type (abfd);
+!       return abfd->format == format;
+!     }
+  
+    if (matching != NULL || *bfd_associated_vector != NULL)
+      {
+*************** bfd_check_format_matches (bfd *abfd, bfd
+*** 322,327 ****
+--- 352,360 ----
+  
+        if (matching_vector)
+       free (matching_vector);
++ 
++       bfd_set_lto_type (abfd);
++ 
+  
+        /* File position has moved, BTW.  */
+        return TRUE;
+diff -cpr ../binutils-2.23.2.orig/bfd/opncls.c bfd/opncls.c
+*** ../binutils-2.23.2.orig/bfd/opncls.c       2013-05-14 16:39:23.701717732 +0100
+--- bfd/opncls.c       2013-05-14 16:40:07.008718933 +0100
+*************** bfd_fill_in_gnu_debuglink_section (bfd *
+*** 1569,1571 ****
+--- 1569,1637 ----
+  
+    return TRUE;
+  }
++ 
++ /*
++ FUNCTION
++      bfd_extract_object_only_section
++ 
++ SYNOPSIS
++      const char *bfd_extract_object_only_section
++        (bfd *abfd);
++ 
++ DESCRIPTION
++ 
++      Takes a @var{ABFD} and extract the .gnu_object_only section into
++      a temporary file.
++ 
++ RETURNS
++      The name of the temporary file is returned if all is ok.
++      Otherwise <<NULL>> is returned and bfd_error is set.
++ */
++ 
++ const char *
++ bfd_extract_object_only_section (bfd *abfd)
++ {
++   asection *sec = abfd->object_only_section;
++   const char *name;
++   FILE *file;
++   bfd_byte *memhunk = NULL;
++   size_t off, size;
++   bfd_error_type err;
++ 
++   /* Get a temporary object-only file.  */
++   name = make_temp_file (".obj-only.o");
++ 
++   /* Open the object-only file.  */
++   file = real_fopen (name, FOPEN_WB);
++   if (!bfd_get_full_section_contents (abfd, sec, &memhunk))
++     {
++       err = bfd_get_error ();
++ 
++ loser:
++       free (memhunk);
++       fclose (file);
++       unlink (name);
++       bfd_set_error (err);
++       return NULL;
++     }
++ 
++   off = 0;
++   size = sec->size;
++   while (off != size)
++     {
++       size_t written, nwrite = size - off;
++ 
++       written = fwrite (memhunk + off, 1, nwrite, file);
++       if (written < nwrite && ferror (file))
++      {
++        err = bfd_error_system_call;
++        goto loser;
++      }
++ 
++       off += written;
++     }
++ 
++   free (memhunk);
++   fclose (file);
++   return name;
++ }
+diff -cpr ../binutils-2.23.2.orig/bfd/plugin.c bfd/plugin.c
+*** ../binutils-2.23.2.orig/bfd/plugin.c       2013-05-14 16:39:25.137717772 +0100
+--- bfd/plugin.c       2013-05-14 16:40:07.010718933 +0100
+*************** register_claim_file (ld_plugin_claim_fil
+*** 130,135 ****
+--- 130,268 ----
+    return LDPS_OK;
+  }
+  
++ static asection bfd_plugin_fake_text_section
++   = BFD_FAKE_SECTION (bfd_plugin_fake_text_section, 0, 0, ".text", 0);
++ static asection bfd_plugin_fake_common_section
++   = BFD_FAKE_SECTION (bfd_plugin_fake_common_section, SEC_IS_COMMON, 0,
++                    NULL, 0);
++ 
++ /* Get symbols from object only section.  */
++ 
++ static void
++ bfd_plugin_get_symbols_in_object_only (bfd *abfd)
++ {
++   struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
++   const char *object_only_file;
++   bfd *nbfd;
++   long storage;
++   long object_only_nsyms, added_nsyms, i;
++   asymbol **object_only_syms, **added_syms;
++ 
++   plugin_data->object_only_syms = NULL;
++   plugin_data->object_only_nsyms = 0;
++ 
++   if (abfd->sections == NULL && abfd->my_archive == NULL)
++     {
++       nbfd = bfd_openr (abfd->filename, NULL);
++       if (nbfd == NULL || !bfd_check_format (nbfd, bfd_object))
++      {
++        (*_bfd_error_handler)
++          (_("%s: failed to open to extract object only section: %s"),
++           abfd->filename, bfd_errmsg (bfd_get_error ()));
++        bfd_close (nbfd);
++        return;
++      }
++     }
++   else
++     {
++       if (!bfd_check_format (abfd, bfd_object))
++      {
++        (*_bfd_error_handler)
++          (_("%B: invalid file to extract object only section: %s"),
++           abfd, bfd_errmsg (bfd_get_error ()));
++        return;
++      }
++       nbfd = abfd;
++     }
++ 
++   if (nbfd->lto_type == lto_mixed_object
++       && (nbfd->flags & HAS_SYMS) != 0)
++     {
++       object_only_file = bfd_extract_object_only_section (nbfd);
++       if (object_only_file == NULL)
++      (*_bfd_error_handler)
++        (_("%B: failed to extract object only section: %s"),
++         abfd, bfd_errmsg (bfd_get_error ()));
++     }
++   else
++     object_only_file = NULL;
++ 
++   /* Close the new bfd we just opened.  */
++   if (nbfd != abfd)
++     bfd_close (nbfd);
++ 
++   /* Return if there is no object only section or there is no
++      symbol in object only section.  */
++   if (!object_only_file)
++     return;
++ 
++   /* Open the file containing object only section.  */
++   nbfd = bfd_openr (object_only_file, NULL);
++   if (!bfd_check_format (nbfd, bfd_object))
++     {
++       (*_bfd_error_handler)
++      (_("%B: failed to open object only section: %s"),
++       abfd, bfd_errmsg (bfd_get_error ()));
++       goto quit;
++     }
++ 
++   storage = bfd_get_symtab_upper_bound (nbfd);
++   if (storage <= 0)
++     {
++       if (storage < 0)
++      (*_bfd_error_handler)
++        (_("%B: failed to get symbol table in object only section: %s"),
++         abfd, bfd_errmsg (bfd_get_error ()));
++ 
++       goto quit;
++     }
++ 
++   object_only_syms = (asymbol **) bfd_malloc (storage);
++   object_only_nsyms = bfd_canonicalize_symtab (nbfd, object_only_syms);
++ 
++   /* FIXME: We waste some spaces if not all symbols are copied.  */
++   added_syms = (asymbol **) bfd_alloc (abfd, storage);
++   added_nsyms = 0;
++ 
++   /* Copy only global symbols from object only section.  */
++   for (i = 0; i < object_only_nsyms; i++)
++     {
++       asection *sec = object_only_syms[i]->section;
++       flagword flags = object_only_syms[i]->flags;
++       asymbol *s;
++ 
++       if (bfd_is_com_section (sec))
++      sec = &bfd_plugin_fake_common_section;
++       else if (bfd_is_und_section (sec))
++      ;
++       else if ((flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0)
++      sec = &bfd_plugin_fake_text_section;
++       else
++      continue;
++ 
++       s = bfd_alloc (abfd, sizeof (asymbol)); 
++       BFD_ASSERT (s);
++       added_syms[added_nsyms++] = s;
++ 
++       s->section = sec;
++       s->the_bfd = abfd;
++       s->name = xstrdup (object_only_syms[i]->name);
++       s->value = 0;
++       s->flags = flags;
++       s->udata.p = NULL;
++     }
++ 
++   plugin_data->object_only_syms = added_syms;
++   plugin_data->object_only_nsyms = added_nsyms;
++ 
++   free (object_only_syms);
++ 
++ quit:
++   /* Close and remove the object only section file.  */
++   bfd_close (nbfd);
++   unlink (object_only_file);
++ }
++ 
+  static enum ld_plugin_status
+  add_symbols (void * handle,
+            int nsyms,
+*************** add_symbols (void * handle,
+*** 142,148 ****
+    plugin_data->nsyms = nsyms;
+    plugin_data->syms = syms;
+  
+!   if (nsyms != 0)
+      abfd->flags |= HAS_SYMS;
+  
+    abfd->tdata.plugin_data = plugin_data;
+--- 275,283 ----
+    plugin_data->nsyms = nsyms;
+    plugin_data->syms = syms;
+  
+!   bfd_plugin_get_symbols_in_object_only (abfd);
+! 
+!   if ((nsyms + plugin_data->object_only_nsyms) != 0)
+      abfd->flags |= HAS_SYMS;
+  
+    abfd->tdata.plugin_data = plugin_data;
+*************** static long
+*** 389,395 ****
+  bfd_plugin_get_symtab_upper_bound (bfd *abfd)
+  {
+    struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
+!   long nsyms = plugin_data->nsyms;
+  
+    BFD_ASSERT (nsyms >= 0);
+  
+--- 524,531 ----
+  bfd_plugin_get_symtab_upper_bound (bfd *abfd)
+  {
+    struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
+!   /* Add symbols from object only section.  */
+!   long nsyms = plugin_data->nsyms + plugin_data->object_only_nsyms;
+  
+    BFD_ASSERT (nsyms >= 0);
+  
+*************** bfd_plugin_canonicalize_symtab (bfd *abf
+*** 423,434 ****
+    struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
+    long nsyms = plugin_data->nsyms;
+    const struct ld_plugin_symbol *syms = plugin_data->syms;
+!   static asection fake_section;
+!   static asection fake_common_section;
+!   int i;
+! 
+!   fake_section.name = ".text";
+!   fake_common_section.flags = SEC_IS_COMMON;
+  
+    for (i = 0; i < nsyms; i++)
+      {
+--- 559,565 ----
+    struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
+    long nsyms = plugin_data->nsyms;
+    const struct ld_plugin_symbol *syms = plugin_data->syms;
+!   int i, j;
+  
+    for (i = 0; i < nsyms; i++)
+      {
+*************** bfd_plugin_canonicalize_symtab (bfd *abf
+*** 441,450 ****
+        s->name = syms[i].name;
+        s->value = 0;
+        s->flags = convert_flags (&syms[i]);
+        switch (syms[i].def)
+       {
+       case LDPK_COMMON:
+!        s->section = &fake_common_section;
+         break;
+       case LDPK_UNDEF:
+       case LDPK_WEAKUNDEF:
+--- 572,582 ----
+        s->name = syms[i].name;
+        s->value = 0;
+        s->flags = convert_flags (&syms[i]);
++       s->udata.p = NULL;
+        switch (syms[i].def)
+       {
+       case LDPK_COMMON:
+!        s->section = &bfd_plugin_fake_common_section;
+         break;
+       case LDPK_UNDEF:
+       case LDPK_WEAKUNDEF:
+*************** bfd_plugin_canonicalize_symtab (bfd *abf
+*** 452,466 ****
+         break;
+       case LDPK_DEF:
+       case LDPK_WEAKDEF:
+!        s->section = &fake_section;
+         break;
+       default:
+         BFD_ASSERT (0);
+       }
+- 
+-       s->udata.p = (void *) &syms[i];
+      }
+  
+    return nsyms;
+  }
+  
+--- 584,601 ----
+         break;
+       case LDPK_DEF:
+       case LDPK_WEAKDEF:
+!        s->section = &bfd_plugin_fake_text_section;
+         break;
+       default:
+         BFD_ASSERT (0);
+       }
+      }
+  
++   /* Copy symbols from object only section.  */
++   nsyms += plugin_data->object_only_nsyms;
++   for (j = 0; j < plugin_data->object_only_nsyms; j++, i++)
++     alocation[i] = plugin_data->object_only_syms[j];
++ 
+    return nsyms;
+  }
+  
+diff -cpr ../binutils-2.23.2.orig/bfd/plugin.h bfd/plugin.h
+*** ../binutils-2.23.2.orig/bfd/plugin.h       2013-05-14 16:39:25.481717782 +0100
+--- bfd/plugin.h       2013-05-14 16:40:07.010718933 +0100
+*************** typedef struct plugin_data_struct
+*** 30,35 ****
+--- 30,37 ----
+  {
+    int nsyms;
+    const struct ld_plugin_symbol *syms;
++   int object_only_nsyms;
++   asymbol **object_only_syms;
+  }
+  plugin_data_struct;
+  
+diff -cpr ../binutils-2.23.2.orig/bfd/section.c bfd/section.c
+*** ../binutils-2.23.2.orig/bfd/section.c      2013-05-14 16:39:26.180717801 +0100
+--- bfd/section.c      2013-05-14 16:43:06.082723897 +0100
+*************** CODE_FRAGMENT
+*** 571,576 ****
+--- 571,579 ----
+  .  || ((SEC) == bfd_com_section_ptr)         \
+  .  || ((SEC) == bfd_ind_section_ptr))
+  .
++ .{* GNU object-only section name.  *}
++ .#define GNU_OBJECT_ONLY_SECTION_NAME ".gnu_object_only"
++ .
+  .{* Macros to handle insertion and deletion of a bfd's sections.  These
+  .   only handle the list pointers, ie. do not adjust section_count,
+  .   target_index etc.  *}
+diff -cpr ../binutils-2.23.2.orig/binutils/objcopy.c binutils/objcopy.c
+*** ../binutils-2.23.2.orig/binutils/objcopy.c 2013-05-14 16:39:36.214718079 +0100
+--- binutils/objcopy.c 2013-05-14 16:45:04.631727183 +0100
+*************** is_specified_symbol (const char *name, h
+*** 943,972 ****
+    return htab_find (htab, name) != NULL;
+  }
+  
+- /* Return a pointer to the symbol used as a signature for GROUP.  */
+- 
+- static asymbol *
+- group_signature (asection *group)
+- {
+-   bfd *abfd = group->owner;
+-   Elf_Internal_Shdr *ghdr;
+- 
+-   if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+-     return NULL;
+- 
+-   ghdr = &elf_section_data (group)->this_hdr;
+-   if (ghdr->sh_link < elf_numsections (abfd))
+-     {
+-       const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+-       Elf_Internal_Shdr *symhdr = elf_elfsections (abfd) [ghdr->sh_link];
+- 
+-       if (symhdr->sh_type == SHT_SYMTAB
+-        && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym)
+-      return isympp[ghdr->sh_info - 1];
+-     }
+-   return NULL;
+- }
+- 
+  /* Return TRUE if the section is a DWO section.  */
+  
+  static bfd_boolean
+--- 943,948 ----
+*************** is_strip_section (bfd *abfd ATTRIBUTE_UN
+*** 1034,1040 ****
+        /* PR binutils/3181
+        If we are going to strip the group signature symbol, then
+        strip the group section too.  */
+!       gsym = group_signature (sec);
+        if (gsym != NULL)
+       gname = gsym->name;
+        else
+--- 1010,1016 ----
+        /* PR binutils/3181
+        If we are going to strip the group signature symbol, then
+        strip the group section too.  */
+!       gsym = bfd_group_signature (sec, isympp);
+        if (gsym != NULL)
+       gname = gsym->name;
+        else
+*************** setup_section (bfd *ibfd, sec_ptr isecti
+*** 2633,2639 ****
+  
+    if ((isection->flags & SEC_GROUP) != 0)
+      {
+!       asymbol *gsym = group_signature (isection);
+  
+        if (gsym != NULL)
+       {
+--- 2609,2615 ----
+  
+    if ((isection->flags & SEC_GROUP) != 0)
+      {
+!       asymbol *gsym = bfd_group_signature (isection, isympp);
+  
+        if (gsym != NULL)
+       {
+diff -cpr ../binutils-2.23.2.orig/binutils/readelf.c binutils/readelf.c
+*** ../binutils-2.23.2.orig/binutils/readelf.c 2013-05-14 16:39:35.668718064 +0100
+--- binutils/readelf.c 2013-05-14 16:40:07.022718933 +0100
+*************** get_section_type_name (unsigned int sh_t
+*** 3101,3106 ****
+--- 3101,3107 ----
+      case 0x7ffffffd:         return "AUXILIARY";
+      case 0x7fffffff:         return "FILTER";
+      case SHT_GNU_LIBLIST:    return "GNU_LIBLIST";
++     case SHT_GNU_OBJECT_ONLY:        return "GNU_OBJECT_ONLY";
+  
+      default:
+        if ((sh_type >= SHT_LOPROC) && (sh_type <= SHT_HIPROC))
+diff -cpr ../binutils-2.23.2.orig/include/bfdlink.h include/bfdlink.h
+*** ../binutils-2.23.2.orig/include/bfdlink.h  2013-05-14 16:39:19.745717623 +0100
+--- include/bfdlink.h  2013-05-14 16:40:07.023718933 +0100
+*************** struct bfd_link_info
+*** 380,385 ****
+--- 380,391 ----
+    /* TRUE if ok to have multiple definition.  */
+    unsigned int allow_multiple_definition: 1;
+  
++   /* TRUE if .gnu_object_only section should be created.  */
++   unsigned int emit_gnu_object_only: 1;
++ 
++   /* TRUE if .gnu_object_only section is being created.  */
++   unsigned int emitting_gnu_object_only: 1;
++ 
+    /* TRUE if ok to have version with no definition.  */
+    unsigned int allow_undefined_version: 1;
+  
+diff -cpr ../binutils-2.23.2.orig/include/elf/common.h include/elf/common.h
+*** ../binutils-2.23.2.orig/include/elf/common.h       2013-05-14 16:39:19.628717619 +0100
+--- include/elf/common.h       2013-05-14 16:40:07.023718933 +0100
+***************
+*** 472,477 ****
+--- 472,478 ----
+  #define SHT_GNU_ATTRIBUTES 0x6ffffff5        /* Object attributes */
+  #define SHT_GNU_HASH 0x6ffffff6      /* GNU style symbol hash table */
+  #define SHT_GNU_LIBLIST      0x6ffffff7      /* List of prelink dependencies */
++ #define SHT_GNU_OBJECT_ONLY 0x6ffffff8       /* Object only */
+  
+  /* The next three section types are defined by Solaris, and are named
+     SHT_SUNW*.  We use them in GNU code, so we also define SHT_GNU*
+diff -cpr ../binutils-2.23.2.orig/ld/emultempl/alphaelf.em ld/emultempl/alphaelf.em
+*** ../binutils-2.23.2.orig/ld/emultempl/alphaelf.em   2013-05-14 16:39:37.461718114 +0100
+--- ld/emultempl/alphaelf.em   2013-05-14 16:40:07.030718933 +0100
+*************** alpha_finish (void)
+*** 100,106 ****
+    if (limit_32bit)
+      elf_elfheader (link_info.output_bfd)->e_flags |= EF_ALPHA_32BIT;
+  
+!   finish_default ();
+  }
+  EOF
+  
+--- 100,106 ----
+    if (limit_32bit)
+      elf_elfheader (link_info.output_bfd)->e_flags |= EF_ALPHA_32BIT;
+  
+!   gld${EMULATION_NAME}_finish ();
+  }
+  EOF
+  
+diff -cpr ../binutils-2.23.2.orig/ld/emultempl/armelf.em ld/emultempl/armelf.em
+*** ../binutils-2.23.2.orig/ld/emultempl/armelf.em     2013-05-14 16:39:37.458718114 +0100
+--- ld/emultempl/armelf.em     2013-05-14 16:40:07.033718933 +0100
+*************** gld${EMULATION_NAME}_after_allocation (v
+*** 366,372 ****
+  }
+  
+  static void
+! gld${EMULATION_NAME}_finish (void)
+  {
+    struct bfd_link_hash_entry * h;
+  
+--- 366,372 ----
+  }
+  
+  static void
+! arm_finish (void)
+  {
+    struct bfd_link_hash_entry * h;
+  
+*************** gld${EMULATION_NAME}_finish (void)
+*** 389,395 ****
+       }
+      }
+  
+!   finish_default ();
+  
+    if (thumb_entry_symbol)
+      {
+--- 389,395 ----
+       }
+      }
+  
+!   gld${EMULATION_NAME}_finish ();
+  
+    if (thumb_entry_symbol)
+      {
+*************** LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=
+*** 690,693 ****
+  LDEMUL_BEFORE_PARSE=gld"${EMULATION_NAME}"_before_parse
+  
+  # Call the extra arm-elf function
+! LDEMUL_FINISH=gld${EMULATION_NAME}_finish
+--- 690,693 ----
+  LDEMUL_BEFORE_PARSE=gld"${EMULATION_NAME}"_before_parse
+  
+  # Call the extra arm-elf function
+! LDEMUL_FINISH=arm_finish
+diff -cpr ../binutils-2.23.2.orig/ld/emultempl/elf32.em ld/emultempl/elf32.em
+*** ../binutils-2.23.2.orig/ld/emultempl/elf32.em      2013-05-14 16:39:37.465718114 +0100
+--- ld/emultempl/elf32.em      2013-05-14 16:40:07.035718933 +0100
+*************** static void gld${EMULATION_NAME}_before_
+*** 68,73 ****
+--- 68,74 ----
+  static void gld${EMULATION_NAME}_after_allocation (void);
+  static lang_output_section_statement_type *gld${EMULATION_NAME}_place_orphan
+    (asection *, const char *, int);
++ static void gld${EMULATION_NAME}_finish (void);
+  EOF
+  
+  if [ "x${USE_LIBPATH}" = xyes ] ; then
+*************** output_rel_find (asection *sec, int isdy
+*** 1764,1769 ****
+--- 1765,1772 ----
+    return last;
+  }
+  
++ static int orphan_init_done = 0;
++ 
+  /* Place an orphan section.  We use this to put random SHF_ALLOC
+     sections in the right segment.  */
+  
+*************** gld${EMULATION_NAME}_place_orphan (asect
+*** 1772,1778 ****
+                                  const char *secname,
+                                  int constraint)
+  {
+!   static struct orphan_save hold[] =
+      {
+        { ".text",
+       SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE,
+--- 1775,1781 ----
+                                  const char *secname,
+                                  int constraint)
+  {
+!   static struct orphan_save orig_hold[] =
+      {
+        { ".text",
+       SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE,
+*************** gld${EMULATION_NAME}_place_orphan (asect
+*** 1799,1804 ****
+--- 1802,1808 ----
+       SEC_HAS_CONTENTS,
+       0, 0, 0, 0 },
+      };
++   static struct orphan_save hold[ARRAY_SIZE (orig_hold)];
+    enum orphan_save_index
+      {
+        orphan_text = 0,
+*************** gld${EMULATION_NAME}_place_orphan (asect
+*** 1810,1816 ****
+        orphan_sdata,
+        orphan_nonalloc
+      };
+-   static int orphan_init_done = 0;
+    struct orphan_save *place;
+    lang_output_section_statement_type *after;
+    lang_output_section_statement_type *os;
+--- 1814,1819 ----
+*************** gld${EMULATION_NAME}_place_orphan (asect
+*** 1887,1901 ****
+  
+    if (!orphan_init_done)
+      {
+!       struct orphan_save *ho;
+  
+        for (ho = hold; ho < hold + sizeof (hold) / sizeof (hold[0]); ++ho)
+       if (ho->name != NULL)
+         {
+           ho->os = lang_output_section_find (ho->name);
+           if (ho->os != NULL && ho->os->flags == 0)
+             ho->os->flags = ho->flags;
+         }
+        orphan_init_done = 1;
+      }
+  
+--- 1890,1911 ----
+  
+    if (!orphan_init_done)
+      {
+!       struct orphan_save *ho, *horig;
+  
+        for (ho = hold; ho < hold + sizeof (hold) / sizeof (hold[0]); ++ho)
++       for (ho = hold, horig = orig_hold;
++         ho < hold + ARRAY_SIZE (hold);
++         ++ho, ++horig)
++      {
++        *ho = *horig;
++        if (ho->name != NULL)
+       if (ho->name != NULL)
+         {
+           ho->os = lang_output_section_find (ho->name);
+           if (ho->os != NULL && ho->os->flags == 0)
+             ho->os->flags = ho->flags;
+         }
++      }
+        orphan_init_done = 1;
+      }
+  
+*************** gld${EMULATION_NAME}_place_orphan (asect
+*** 1965,1970 ****
+--- 1975,2001 ----
+  EOF
+  fi
+  
++ fragment <<EOF
++ 
++ /* Final emulation specific call.  */
++ 
++ static void
++ gld${EMULATION_NAME}_finish (void)
++ {
++ EOF
++ if test x"$LDEMUL_PLACE_ORPHAN" != xgld"$EMULATION_NAME"_place_orphan; then
++ fragment <<EOF
++   /* Support the object-only output.  */
++   if (link_info.emit_gnu_object_only)
++     orphan_init_done = 0;
++ 
++ EOF
++ fi
++ fragment <<EOF
++   finish_default ();
++ }
++ EOF
++ 
+  if test x"$LDEMUL_AFTER_ALLOCATION" != xgld"$EMULATION_NAME"_after_allocation; then
+  fragment <<EOF
+  
+*************** struct ld_emulation_xfer_struct ld_${EMU
+*** 2497,2503 ****
+    ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script},
+    "${EMULATION_NAME}",
+    "${OUTPUT_FORMAT}",
+!   ${LDEMUL_FINISH-finish_default},
+    ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL},
+    ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-gld${EMULATION_NAME}_open_dynamic_archive},
+    ${LDEMUL_PLACE_ORPHAN-gld${EMULATION_NAME}_place_orphan},
+--- 2528,2534 ----
+    ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script},
+    "${EMULATION_NAME}",
+    "${OUTPUT_FORMAT}",
+!   ${LDEMUL_FINISH-gld${EMULATION_NAME}_finish},
+    ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL},
+    ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-gld${EMULATION_NAME}_open_dynamic_archive},
+    ${LDEMUL_PLACE_ORPHAN-gld${EMULATION_NAME}_place_orphan},
+diff -cpr ../binutils-2.23.2.orig/ld/emultempl/ppc64elf.em ld/emultempl/ppc64elf.em
+*** ../binutils-2.23.2.orig/ld/emultempl/ppc64elf.em   2013-05-14 16:39:37.454718113 +0100
+--- ld/emultempl/ppc64elf.em   2013-05-14 16:40:07.044718934 +0100
+*************** gld${EMULATION_NAME}_after_allocation (v
+*** 533,539 ****
+  /* Final emulation specific call.  */
+  
+  static void
+! gld${EMULATION_NAME}_finish (void)
+  {
+    /* e_entry on PowerPC64 points to the function descriptor for
+       _start.  If _start is missing, default to the first function
+--- 533,539 ----
+  /* Final emulation specific call.  */
+  
+  static void
+! ppc_finish (void)
+  {
+    /* e_entry on PowerPC64 points to the function descriptor for
+       _start.  If _start is missing, default to the first function
+*************** gld${EMULATION_NAME}_finish (void)
+*** 565,571 ****
+      }
+  
+    ppc64_elf_restore_symbols (&link_info);
+!   finish_default ();
+  }
+  
+  
+--- 565,571 ----
+      }
+  
+    ppc64_elf_restore_symbols (&link_info);
+!   gld${EMULATION_NAME}_finish ();
+  }
+  
+  
+*************** PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LI
+*** 867,872 ****
+  #
+  LDEMUL_BEFORE_ALLOCATION=ppc_before_allocation
+  LDEMUL_AFTER_ALLOCATION=gld${EMULATION_NAME}_after_allocation
+! LDEMUL_FINISH=gld${EMULATION_NAME}_finish
+  LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=ppc_create_output_section_statements
+  LDEMUL_NEW_VERS_PATTERN=gld${EMULATION_NAME}_new_vers_pattern
+--- 867,872 ----
+  #
+  LDEMUL_BEFORE_ALLOCATION=ppc_before_allocation
+  LDEMUL_AFTER_ALLOCATION=gld${EMULATION_NAME}_after_allocation
+! LDEMUL_FINISH=ppc_finish
+  LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=ppc_create_output_section_statements
+  LDEMUL_NEW_VERS_PATTERN=gld${EMULATION_NAME}_new_vers_pattern
+diff -cpr ../binutils-2.23.2.orig/ld/emultempl/spuelf.em ld/emultempl/spuelf.em
+*** ../binutils-2.23.2.orig/ld/emultempl/spuelf.em     2013-05-14 16:39:37.453718113 +0100
+--- ld/emultempl/spuelf.em     2013-05-14 16:40:07.045718934 +0100
+*************** spu_elf_relink (void)
+*** 416,422 ****
+  /* Final emulation specific call.  */
+  
+  static void
+! gld${EMULATION_NAME}_finish (void)
+  {
+    if (is_spu_target ())
+      {
+--- 416,422 ----
+  /* Final emulation specific call.  */
+  
+  static void
+! spu_finish (void)
+  {
+    if (is_spu_target ())
+      {
+*************** gld${EMULATION_NAME}_finish (void)
+*** 432,438 ****
+       einfo ("%P: --auto-overlay ignored with zero local store range\n");
+      }
+  
+!   finish_default ();
+  }
+  
+  static char *
+--- 432,438 ----
+       einfo ("%P: --auto-overlay ignored with zero local store range\n");
+      }
+  
+!   gld${EMULATION_NAME}_finish ();
+  }
+  
+  static char *
+*************** PARSE_AND_LIST_ARGS_CASES='
+*** 832,836 ****
+  
+  LDEMUL_AFTER_OPEN=spu_after_open
+  LDEMUL_BEFORE_ALLOCATION=spu_before_allocation
+! LDEMUL_FINISH=gld${EMULATION_NAME}_finish
+  LDEMUL_CHOOSE_TARGET=gld${EMULATION_NAME}_choose_target
+--- 832,836 ----
+  
+  LDEMUL_AFTER_OPEN=spu_after_open
+  LDEMUL_BEFORE_ALLOCATION=spu_before_allocation
+! LDEMUL_FINISH=spu_finish
+  LDEMUL_CHOOSE_TARGET=gld${EMULATION_NAME}_choose_target
+diff -cpr ../binutils-2.23.2.orig/ld/ldfile.c ld/ldfile.c
+*** ../binutils-2.23.2.orig/ld/ldfile.c        2013-05-14 16:39:37.164718105 +0100
+--- ld/ldfile.c        2013-05-14 16:40:07.046718934 +0100
+*************** success:
+*** 319,325 ****
+--- 319,327 ----
+         plugin_maybe_claim (&file, entry);
+       }
+      }
++   else
+  #endif /* ENABLE_PLUGINS */
++     cmdline_check_object_only_section (entry->the_bfd, FALSE);
+  
+    /* It opened OK, the format checked out, and the plugins have had
+       their chance to claim it, so this is success.  */
+diff -cpr ../binutils-2.23.2.orig/ld/ldlang.c ld/ldlang.c
+*** ../binutils-2.23.2.orig/ld/ldlang.c        2013-05-14 16:39:39.704718176 +0100
+--- ld/ldlang.c        2013-05-14 17:03:54.030758491 +0100
+***************
+*** 38,43 ****
+--- 38,44 ----
+  #include "ldctor.h"
+  #include "ldfile.h"
+  #include "ldemul.h"
++ #include "ldwrite.h"
+  #include "fnmatch.h"
+  #include "demangle.h"
+  #include "hashtab.h"
+***************
+*** 46,51 ****
+--- 47,55 ----
+  #include "plugin.h"
+  #endif /* ENABLE_PLUGINS */
+  
++ /* FIXME: Put it here to avoid NAME conflict from ldgram.h.  */
++ #include "elf-bfd.h"
++ 
+  #ifndef offsetof
+  #define offsetof(TYPE, MEMBER) ((size_t) & (((TYPE*) 0)->MEMBER))
+  #endif
+*************** static struct bfd_hash_table lang_define
+*** 69,74 ****
+--- 73,81 ----
+  static lang_statement_list_type *stat_save[10];
+  static lang_statement_list_type **stat_save_ptr = &stat_save[0];
+  static struct unique_sections *unique_section_list;
++ static cmdline_list_type cmdline_object_only_file_list;
++ static cmdline_list_type cmdline_object_only_archive_list;
++ static cmdline_list_type cmdline_temp_object_only_list;
+  
+  /* Forward declarations.  */
+  static void exp_init_os (etree_type *);
+*************** static void lang_record_phdrs (void);
+*** 89,94 ****
+--- 96,105 ----
+  static void lang_do_version_exports_section (void);
+  static void lang_finalize_version_expr_head
+    (struct bfd_elf_version_expr_head *);
++ static void cmdline_lists_init (void);
++ static void cmdline_get_object_only_input_files (void);
++ static void print_cmdline_list (cmdline_union_type *);
++ static bfd_boolean cmdline_on_object_only_archive_list_p (bfd *);
+  
+  /* Exported variables.  */
+  const char *output_target;
+*************** output_section_statement_table_free (voi
+*** 1204,1217 ****
+  /* Build enough state so that the parser can build its tree.  */
+  
+  void
+! lang_init (void)
+  {
+!   obstack_begin (&stat_obstack, 1000);
+  
+    stat_ptr = &statement_list;
+  
+    output_section_statement_table_init ();
+  
+    lang_list_init (stat_ptr);
+  
+    lang_list_init (&input_file_chain);
+--- 1215,1231 ----
+  /* Build enough state so that the parser can build its tree.  */
+  
+  void
+! lang_init (bfd_boolean object_only)
+  {
+!   if (!object_only)
+!     obstack_begin (&stat_obstack, 1000);
+  
+    stat_ptr = &statement_list;
+  
+    output_section_statement_table_init ();
+  
++   cmdline_lists_init ();
++ 
+    lang_list_init (stat_ptr);
+  
+    lang_list_init (&input_file_chain);
+*************** lang_init (void)
+*** 1230,1239 ****
+       simpler to re-use working machinery than using a linked list in terms
+       of code-complexity here in ld, besides the initialization which just
+       looks like other code here.  */
+!   if (!bfd_hash_table_init_n (&lang_definedness_table,
+!                            lang_definedness_newfunc,
+!                            sizeof (struct lang_definedness_hash_entry),
+!                            3))
+      einfo (_("%P%F: can not create hash table: %E\n"));
+  }
+  
+--- 1244,1254 ----
+       simpler to re-use working machinery than using a linked list in terms
+       of code-complexity here in ld, besides the initialization which just
+       looks like other code here.  */
+!   if (!object_only
+!       && !bfd_hash_table_init_n (&lang_definedness_table,
+!                               lang_definedness_newfunc,
+!                               sizeof (struct lang_definedness_hash_entry),
+!                               3))
+      einfo (_("%P%F: can not create hash table: %E\n"));
+  }
+  
+*************** load_symbols (lang_input_statement_type
+*** 2769,2774 ****
+--- 2784,2795 ----
+                 loaded = FALSE;
+               }
+  
++            if (link_info.emitting_gnu_object_only)
++              {
++                if (!cmdline_on_object_only_archive_list_p (member))
++                  continue;
++              }
++ 
+             subsbfd = member;
+             if (!(*link_info.callbacks
+                   ->add_archive_element) (&link_info, member,
+*************** lang_process (void)
+*** 6659,6665 ****
+--- 6680,6716 ----
+         open_input_bfds (statement_list.head, OPEN_BFD_RESCAN);
+       }
+      }
++   else
+  #endif /* ENABLE_PLUGINS */
++     if (link_info.relocatable)
++     {
++       /* Check if .gnu_object_only section should be created.  */
++       bfd *p;
++       int object_type;
++ 
++       object_type = 0;
++       for (p = link_info.input_bfds; p != (bfd *) NULL; p = p->link_next)
++      {
++        object_type |= 1 << p->lto_type;
++        if ((object_type & (1 << lto_mixed_object)) != 0
++            || ((object_type
++                 & (1 << lto_non_ir_object
++                    | 1 << lto_ir_object))
++                == (1 << lto_non_ir_object | 1 << lto_ir_object)))
++          {
++            link_info.emit_gnu_object_only = TRUE;
++            break;
++          }
++      }
++ 
++       if (trace_files
++        && (cmdline_object_only_file_list.head
++            || cmdline_object_only_archive_list.head))
++      {
++        print_cmdline_list (cmdline_object_only_file_list.head);
++        print_cmdline_list (cmdline_object_only_archive_list.head);
++      }
++     }
+  
+    link_info.gc_sym_list = &entry_symbol;
+    if (entry_symbol.name == NULL)
+*************** lang_ld_feature (char *str)
+*** 8059,8061 ****
+--- 8111,9071 ----
+        p = q;
+      }
+  }
++ 
++ static void
++ cmdline_lists_init (void)
++ {
++   cmdline_object_only_file_list.tail
++     = &cmdline_object_only_file_list.head;
++   cmdline_object_only_archive_list.tail
++     = &cmdline_object_only_archive_list.head;
++   cmdline_temp_object_only_list.tail
++     = &cmdline_temp_object_only_list.head;
++ }
++ 
++ /* Allocate an item with TYPE and DATA.  */
++ 
++ static cmdline_union_type *
++ cmdline_list_new (cmdline_enum_type type, void *data)
++ {
++   cmdline_union_type *new_opt;
++ 
++   new_opt = (cmdline_union_type *) stat_alloc (sizeof (*new_opt));
++   new_opt->header.type = type;
++   switch (type)
++     {
++     default:
++       break;
++     case cmdline_is_file_enum:
++       new_opt->file.filename = (const char *) data;
++       break;
++     case cmdline_is_bfd_enum:
++       new_opt->abfd.abfd = (bfd *) data;
++       break;
++     }
++   return new_opt;
++ }
++ 
++ /* Append an item with TYPE and DATA to LIST.  */
++ 
++ static void
++ cmdline_list_append (cmdline_list_type *list, cmdline_enum_type type,
++                   void *data)
++ {
++   cmdline_union_type *new_opt = cmdline_list_new (type, data);
++   new_opt->header.next = NULL;
++   *list->tail = new_opt;
++   list->tail = &new_opt->header.next;
++ }
++ 
++ static void
++ print_cmdline_list (cmdline_union_type *c)
++ {
++   for (; c != NULL; c = c->header.next)
++     switch (c->header.type)
++       {
++       default:
++      abort ();
++       case cmdline_is_file_enum:
++      info_msg (" %s", c->file.filename);
++      break;
++       case cmdline_is_bfd_enum:
++      info_msg (" [%B]", c->abfd.abfd);
++      break;
++       }
++ 
++   info_msg ("\n");
++ }
++ 
++ /* Return TRUE if ABFD is on cmdline_object_only_archive_list.  */
++ 
++ static bfd_boolean
++ cmdline_on_object_only_archive_list_p (bfd *abfd)
++ {
++   cmdline_union_type *c, *next;
++   bfd *archive, *obfd, *oarchive;
++   ufile_ptr origin = abfd->origin;
++ 
++   archive = bfd_my_archive (abfd);
++   for (c = cmdline_object_only_archive_list.head; c != NULL; c = next)
++     {
++       if (c->header.type != cmdline_is_bfd_enum)
++      abort ();
++ 
++       next = c->header.next;
++       obfd = c->abfd.abfd;
++       oarchive = bfd_my_archive (obfd);
++ 
++       /* The list is grouped by archive file name and sorted by member
++       origin.  */
++       if (strcmp (archive->filename, oarchive->filename) != 0)
++      continue;
++ 
++       if (origin == obfd->origin)
++      return TRUE;
++       else if (origin < obfd->origin)
++      return FALSE;
++     }
++ 
++   return FALSE;
++ }
++ 
++ /* Append an item with TYPE and DATA to cmdline_object_only_file_list
++    or cmdline_object_only_archive_list if needed.  */
++ 
++ static void
++ cmdline_object_only_list_append (cmdline_enum_type type, void *data)
++ {
++   cmdline_union_type *c;
++   cmdline_union_type *new_opt, *next, **prev;
++   bfd *abfd, *archive;
++   bfd *obfd, *oarchive;
++   bfd *nbfd, *narchive;
++   ufile_ptr origin, norigin;
++ 
++   /* Put it on cmdline_object_only_file_list if it isn't an archive
++      member.  */
++   switch (type)
++     {
++     default:
++       abort ();
++     case cmdline_is_bfd_enum:
++       abfd = (bfd *) data;
++       archive = bfd_my_archive (abfd);
++       if (archive)
++      break;
++     case cmdline_is_file_enum:
++       cmdline_list_append (&cmdline_object_only_file_list, type, data);
++       return;
++     }
++ 
++   /* Put archive member on cmdline_object_only_archive_list and sort
++      the list by archive name and archive member origin.  */
++   new_opt = (cmdline_union_type *) stat_alloc (sizeof (*new_opt));
++   new_opt->header.type = cmdline_is_bfd_enum;
++   new_opt->header.next = NULL;
++   new_opt->abfd.abfd = (bfd *) data;
++ 
++   c = cmdline_object_only_archive_list.head;
++   if (c == NULL)
++     {
++       cmdline_object_only_archive_list.head = new_opt;
++       cmdline_object_only_archive_list.tail = &new_opt->header.next;
++       return;
++     }
++ 
++   prev = NULL;
++   origin = abfd->origin;
++   for (; c != NULL; c = next)
++     {
++       if (c->header.type != cmdline_is_bfd_enum)
++      abort ();
++ 
++       next = c->header.next;
++ 
++       obfd = c->abfd.abfd;
++       oarchive = bfd_my_archive (obfd);
++ 
++       if (strcmp (archive->filename, oarchive->filename) == 0)
++      {
++        bfd_boolean after;
++ 
++        if (origin < obfd->origin)
++          {
++            /* Insert it before the current.  */
++            new_opt->header.next = c;
++            if (prev)
++              *prev = new_opt;
++            else
++              cmdline_object_only_archive_list.head = new_opt;
++            return;
++          }
++ 
++        after = TRUE;
++ 
++        /* Check origin.  */
++        while (next)
++          {
++            if (next->header.type != cmdline_is_bfd_enum)
++              abort ();
++ 
++            nbfd = next->abfd.abfd;
++            norigin = nbfd->origin;
++            if (origin > norigin)
++              {
++                /* Insert it after NEXT.  */
++                break;
++              }
++ 
++            narchive = bfd_my_archive (nbfd);
++            if (strcmp (archive->filename, narchive->filename) != 0)
++              {
++                /* Insert it befor NEXT.  */
++                after = FALSE;
++                break;
++              }
++ 
++            c = next;
++            next = next->header.next;
++          }
++ 
++        if (after && next)
++          {
++            c = next;
++            next = next->header.next;
++          }
++ 
++        if (*cmdline_object_only_archive_list.tail == c->header.next)
++          cmdline_object_only_archive_list.tail
++            = &new_opt->header.next;
++ 
++        prev = &c->header.next;
++        new_opt->header.next = next;
++        *prev = new_opt;
++        return;
++      }
++ 
++       prev = &c->header.next;
++     }
++ 
++   *cmdline_object_only_archive_list.tail = new_opt;
++   cmdline_object_only_archive_list.tail = &new_opt->header.next;
++ }
++ 
++ 
++ static void
++ cmdline_get_object_only_input_files (void)
++ {
++   cmdline_union_type *c, *next;
++   bfd *abfd, *archive;
++   bfd *nbfd, *narchive;
++ 
++   /* Add files first.  */
++   for (c = cmdline_object_only_file_list.head;
++        c != NULL; c = c->header.next)
++     switch (c->header.type)
++       {
++       default:
++      abort ();
++       case cmdline_is_file_enum:
++      lang_add_input_file (c->file.filename,
++                           lang_input_file_is_file_enum, NULL);
++      break;
++       case cmdline_is_bfd_enum:
++      abfd = c->abfd.abfd;
++      if (bfd_my_archive (abfd))
++        abort ();
++      lang_add_input_file (abfd->filename,
++                           lang_input_file_is_file_enum, NULL);
++      break;
++       }
++ 
++   /* Add archive members next.  */
++   for (c = cmdline_object_only_archive_list.head; c != NULL; c = next)
++     {
++       if (c->header.type != cmdline_is_bfd_enum)
++      abort ();
++ 
++       next = c->header.next;
++ 
++       abfd = c->abfd.abfd;
++       archive = bfd_my_archive (abfd);
++    
++       /* Add the first archive of the archive member group.  */
++       lang_add_input_file (archive->filename,
++                         lang_input_file_is_file_enum, NULL);
++ 
++       /* Skip the rest members in the archive member group.  */
++       do
++      {
++        if (!next)
++          break;
++ 
++        if (next->header.type != cmdline_is_bfd_enum)
++          abort ();
++ 
++        next = next->header.next;
++        if (!next)
++          break;
++        nbfd = next->abfd.abfd;
++        narchive = bfd_my_archive (nbfd);
++      }
++       while (strcmp (archive->filename, narchive->filename) == 0);
++     }
++ }
++ 
++ struct cmdline_arg
++ {
++   bfd *obfd;
++   asymbol **isympp;
++   int status;
++ };
++ 
++ /* Create a section in OBFD with the same
++    name and attributes as ISECTION in IBFD.  */
++ 
++ static void
++ setup_section (bfd *ibfd, sec_ptr isection, void *p)
++ {
++   struct cmdline_arg *arg = (struct cmdline_arg *) p;
++   bfd *obfd = arg->obfd;
++   asymbol **isympp = arg->isympp;
++   const char *name = isection->name;
++   sec_ptr osection;
++   const char *err;
++ 
++   /* Skip the object-only section.  */
++   if (ibfd->object_only_section == isection)
++     return;
++ 
++   /* If we have already failed earlier on, do not keep on generating
++      complaints now.  */
++   if (arg->status)
++     return;
++ 
++   osection = bfd_make_section_anyway_with_flags (obfd, name,
++                                               isection->flags);
++ 
++   if (osection == NULL)
++     {
++       err = _("failed to create output section");
++       goto loser;
++     }
++ 
++   osection->size = isection->size;
++   osection->vma = isection->vma;
++   osection->lma = isection->lma;
++   osection->alignment_power = isection->alignment_power;
++ 
++   /* Copy merge entity size.  */
++   osection->entsize = isection->entsize;
++ 
++   /* This used to be mangle_section; we do here to avoid using
++      bfd_get_section_by_name since some formats allow multiple
++      sections with the same name.  */
++   isection->output_section = osection;
++   isection->output_offset = 0;
++ 
++   if ((isection->flags & SEC_GROUP) != 0)
++     {
++       asymbol *gsym = bfd_group_signature (isection, isympp);
++ 
++       if (gsym != NULL)
++      {
++        gsym->flags |= BSF_KEEP;
++        if (ibfd->xvec->flavour == bfd_target_elf_flavour)
++          elf_group_id (isection) = gsym;
++      }
++     }
++ 
++   /* Allow the BFD backend to copy any private data it understands
++      from the input section to the output section.  */
++   if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection))
++     {
++       err = _("failed to copy private data");
++       goto loser;
++     }
++ 
++   /* All went well.  */
++   return;
++ 
++ loser:
++   arg->status = 1;
++   einfo (_("%P%F: setup_section: %s: %s\n"), err, name);
++ }
++ 
++ /* Copy the data of input section ISECTION of IBFD
++    to an output section with the same name in OBFD.
++    If stripping then don't copy any relocation info.  */
++ 
++ static void
++ copy_section (bfd *ibfd, sec_ptr isection, void *p)
++ {
++   struct cmdline_arg *arg = (struct cmdline_arg *) p;
++   bfd *obfd = arg->obfd;
++   asymbol **isympp = arg->isympp;
++   arelent **relpp;
++   long relcount;
++   sec_ptr osection;
++   bfd_size_type size;
++   long relsize;
++   flagword flags;
++   const char *err;
++ 
++   /* Skip the object-only section.  */
++   if (ibfd->object_only_section == isection)
++     return;
++ 
++   /* If we have already failed earlier on, do not keep on generating
++      complaints now.  */
++   if (arg->status)
++     return;
++ 
++   flags = bfd_get_section_flags (ibfd, isection);
++   if ((flags & SEC_GROUP) != 0)
++     return;
++ 
++   osection = isection->output_section;
++   size = bfd_get_section_size (isection);
++ 
++   if (size == 0 || osection == 0)
++     return;
++ 
++   relsize = bfd_get_reloc_upper_bound (ibfd, isection);
++ 
++   if (relsize < 0)
++     {
++       /* Do not complain if the target does not support relocations.  */
++       if (relsize == -1
++        && bfd_get_error () == bfd_error_invalid_operation)
++      relsize = 0;
++       else
++      {
++        err = bfd_errmsg (bfd_get_error ());
++        goto loser;
++      }
++     }
++ 
++   if (relsize == 0)
++     bfd_set_reloc (obfd, osection, NULL, 0);
++   else
++     {
++       relpp = (arelent **) xmalloc (relsize);
++       relcount = bfd_canonicalize_reloc (ibfd, isection, relpp, isympp);
++       if (relcount < 0)
++      {
++        err = _("relocation count is negative");
++        goto loser;
++      }
++ 
++       bfd_set_reloc (obfd, osection,
++                   relcount == 0 ? NULL : relpp, relcount);
++       if (relcount == 0)
++      free (relpp);
++     }
++ 
++   if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS)
++     {
++       bfd_byte *memhunk = NULL;
++ 
++       if (!bfd_get_full_section_contents (ibfd, isection, &memhunk))
++      {
++        err = bfd_errmsg (bfd_get_error ());
++        goto loser;
++      }
++ 
++       if (!bfd_set_section_contents (obfd, osection, memhunk, 0, size))
++      {
++        err = bfd_errmsg (bfd_get_error ());
++        goto loser;
++      }
++       free (memhunk);
++     }
++ 
++   /* All went well.  */
++   return;
++ 
++ loser:
++   einfo (_("%P%F: copy_section: %s: %s\n"), err, isection->name);
++ }
++ /* Open the temporary bfd created in the same directory as PATH.  */
++ 
++ static bfd *
++ cmdline_fopen_temp (const char *path, const char *target,
++                  const char *mode)
++ {
++ #define template "ldXXXXXX"
++   const char *slash = strrchr (path, '/');
++   char *tmpname;
++   size_t len;
++   int fd;
++ 
++ #ifdef HAVE_DOS_BASED_FILE_SYSTEM
++   {
++     /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
++     char *bslash = strrchr (path, '\\');
++ 
++     if (slash == NULL || (bslash != NULL && bslash > slash))
++       slash = bslash;
++     if (slash == NULL && path[0] != '\0' && path[1] == ':')
++       slash = path + 1;
++   }
++ #endif
++ 
++   if (slash != (char *) NULL)
++     {
++       len = slash - path;
++       tmpname = (char *) xmalloc (len + sizeof (template) + 2);
++       memcpy (tmpname, path, len);
++ 
++ #ifdef HAVE_DOS_BASED_FILE_SYSTEM
++       /* If tmpname is "X:", appending a slash will make it a root
++       directory on drive X, which is NOT the same as the current
++       directory on drive X.  */
++       if (len == 2 && tmpname[1] == ':')
++      tmpname[len++] = '.';
++ #endif
++       tmpname[len++] = '/';
++     }
++   else
++     {
++       tmpname = (char *) xmalloc (sizeof (template));
++       len = 0;
++     }
++ 
++   memcpy (tmpname + len, template, sizeof (template));
++ #undef template
++ 
++ #ifdef HAVE_MKSTEMP
++   fd = mkstemp (tmpname);
++ #else
++   tmpname = mktemp (tmpname);
++   if (tmpname == NULL)
++     return NULL;
++   fd = open (tmpname, O_RDWR | O_CREAT | O_EXCL, 0600);
++ #endif
++   if (fd == -1)
++     return NULL;
++   return bfd_fopen (tmpname, target, mode, fd);
++ }
++ 
++ /* Add the object-only section.  */
++ 
++ static void
++ cmdline_add_object_only_section (bfd_byte *contents, size_t size)
++ {
++   bfd_vma start;
++   flagword flags;
++   enum bfd_architecture iarch;
++   unsigned int imach;
++   long symcount;
++   long symsize;
++   asymbol **isympp = NULL;
++   asymbol **osympp = NULL;
++   bfd *obfd = NULL, *ibfd;
++   const char *err;
++   struct arg
++     {
++       bfd *obfd;
++       asymbol **isympp;
++       int status;
++     } arg;
++   char **matching;
++   const char *ofilename = NULL;
++   asection *sec;
++ 
++   ibfd = bfd_openr (output_filename, output_target);
++   if (!ibfd)
++     {
++       err = bfd_errmsg (bfd_get_error ());
++       goto loser;
++     }
++ 
++   if (!bfd_check_format_matches (ibfd, bfd_object, &matching))
++     {
++       err = bfd_errmsg (bfd_get_error ());
++       goto loser;
++     }
++ 
++   obfd = cmdline_fopen_temp (output_filename, output_target, "w");
++   if (!obfd)
++     {
++       err = bfd_errmsg (bfd_get_error ());
++       goto loser;
++     }
++   ofilename = bfd_get_filename (obfd);
++ 
++   if (!bfd_set_format (obfd, bfd_object))
++     {
++       err = bfd_errmsg (bfd_get_error ());
++       goto loser;
++     }
++ 
++   /* Copy the start address, flags and architecture of input file to
++      output file.  */
++   flags = bfd_get_file_flags (ibfd);
++   start = bfd_get_start_address (ibfd);
++   iarch = bfd_get_arch (ibfd);
++   imach = bfd_get_mach (ibfd);
++   if (!bfd_set_start_address (obfd, start)
++       || !bfd_set_file_flags (obfd, flags)
++       || !bfd_set_arch_mach (obfd, iarch, imach))
++     {
++       err = bfd_errmsg (bfd_get_error ());
++       goto loser;
++     }
++      
++   symsize = bfd_get_symtab_upper_bound (ibfd);
++   if (symsize < 0)
++     {
++       err = bfd_errmsg (bfd_get_error ());
++       goto loser;
++     }
++ 
++   isympp = (asymbol **) xmalloc (symsize);
++   symcount = bfd_canonicalize_symtab (ibfd, isympp);
++   if (symcount < 0)
++     {
++       err = bfd_errmsg (bfd_get_error ());
++       goto loser;
++     }
++ 
++   arg.obfd = obfd;
++   arg.isympp = isympp;
++   arg.status = 0;
++ 
++   /* BFD mandates that all output sections be created and sizes set before
++      any output is done.  Thus, we traverse all sections multiple times.  */
++   bfd_map_over_sections (ibfd, setup_section, &arg);
++ 
++   if (arg.status)
++     {
++       err = _("error setting up sections");
++       goto loser;
++     }
++ 
++   /* Allow the BFD backend to copy any private data it understands
++      from the input section to the output section.  */
++   if (! bfd_copy_private_header_data (ibfd, obfd))
++     {
++       err = _("error copying private header data");
++       goto loser;
++     }
++ 
++   /* Create the object-only section.  */
++   sec = bfd_make_section_with_flags (obfd,
++                                   GNU_OBJECT_ONLY_SECTION_NAME,
++                                   (SEC_HAS_CONTENTS
++                                    | SEC_READONLY
++                                    | SEC_DATA
++                                    | SEC_LINKER_CREATED));
++   if (sec == NULL)
++     {
++       err = _("can't create object-only section");
++       goto loser;
++     }
++ 
++   if (! bfd_set_section_size (obfd, sec, size))
++     {
++       err = _("can't set object-only section size");
++       goto loser;
++     }
++ 
++   if (ibfd->object_only_section)
++     {
++       /* Filter out the object-only section symbol.  */
++       long src_count = 0, dst_count = 0;
++       asymbol **from, **to;
++ 
++       osympp = (asymbol **) xmalloc (symcount * sizeof (asymbol *));
++       from = isympp;
++       to = osympp;
++       for (; src_count < symcount; src_count++)
++      {
++        asymbol *sym = from[src_count];
++        if (bfd_get_section (sym) != ibfd->object_only_section)
++          to[dst_count++] = sym;
++      }
++       to[dst_count] = NULL;
++       symcount = dst_count;
++       bfd_set_symtab (obfd, osympp, symcount);
++     }
++   else
++     bfd_set_symtab (obfd, isympp, symcount);
++ 
++   /* This has to happen after the symbol table has been set.  */
++   bfd_map_over_sections (ibfd, copy_section, &arg);
++ 
++   if (arg.status)
++     {
++       err = _("error copying sections");
++       goto loser;
++     }
++ 
++   /* Copy the object-only section to the output.  */
++   if (! bfd_set_section_contents (obfd, sec, contents, 0, size))
++     {
++       err = _("error adding object-only section");
++       goto loser;
++     }
++ 
++   /* Allow the BFD backend to copy any private data it understands
++      from the input BFD to the output BFD.  This is done last to
++      permit the routine to look at the filtered symbol table, which is
++      important for the ECOFF code at least.  */
++   if (! bfd_copy_private_bfd_data (ibfd, obfd))
++     {
++       err = _("error copying private BFD data");
++       goto loser;
++     }
++ 
++   if (!bfd_close (obfd))
++     {
++       unlink (ofilename);
++       einfo (_("%P%F: failed to finish output with object-only section\n"));
++     }
++ 
++   /* Must be freed after bfd_close ().  */
++   free (isympp);
++   if (osympp)
++     free (osympp);
++ 
++   if (rename (ofilename, output_filename))
++     {
++       unlink (ofilename);
++       einfo (_("%P%F: failed to rename output with object-only section\n"));
++     }
++ 
++   return;
++ 
++ loser:
++   if (isympp)
++     free (isympp);
++   if (osympp)
++     free (osympp);
++   if (obfd)
++     bfd_close (obfd);
++   if (ofilename)
++     unlink (ofilename);
++   einfo (_("%P%F: failed to add object-only section: %s\n"), err);
++ }
++ 
++ /* Emit the final output with object-only section.  */
++ 
++ void
++ cmdline_emit_object_only_section (void)
++ {
++   const char *saved_output_filename = output_filename;
++   int fd;
++   size_t size, off;
++   bfd_byte *contents;
++   struct stat st;
++ 
++   /* Get a temporary object-only file.  */
++   output_filename = make_temp_file (".obj-only.o");
++ 
++   had_output_filename = FALSE;
++   link_info.input_bfds = NULL;
++   link_info.input_bfds_tail = &link_info.input_bfds;
++ 
++   lang_init (TRUE);
++ 
++   ld_parse_linker_script ();
++ 
++   /* Set up the object-only output. */
++   lang_final ();
++ 
++   /* Open the object-only file for output.  */
++   lang_for_each_statement (ldlang_open_output);
++ 
++   ldemul_create_output_section_statements ();
++ 
++   if (!bfd_section_already_linked_table_init ())
++     einfo (_("%P%F: Failed to create hash table\n"));
++ 
++   /* Call cmdline_on_object_only_archive_list_p to check which member
++      should be loaded.  */
++   input_flags.whole_archive = TRUE;
++ 
++   /* Set it to avoid adding more to cmdline lists.  */
++   link_info.emitting_gnu_object_only = TRUE;
++ 
++   cmdline_get_object_only_input_files ();
++ 
++   open_input_bfds (statement_list.head, FALSE);
++ 
++   ldemul_after_open ();
++ 
++   bfd_section_already_linked_table_free ();
++ 
++   /* Make sure that we're not mixing architectures.  We call this
++      after all the input files have been opened, but before we do any
++      other processing, so that any operations merge_private_bfd_data
++      does on the output file will be known during the rest of the
++      link.  */
++   lang_check ();
++ 
++   /* Size up the common data.  */
++   lang_common ();
++ 
++   /* Update wild statements.  */
++   update_wild_statements (statement_list.head);
++ 
++   /* Run through the contours of the script and attach input sections
++      to the correct output sections.  */
++   map_input_to_output_sections (statement_list.head, NULL, NULL);
++ 
++   /* Find any sections not attached explicitly and handle them.  */
++   lang_place_orphans ();
++ 
++   /* Do anything special before sizing sections.  This is where ELF
++      and other back-ends size dynamic sections.  */
++   ldemul_before_allocation ();
++ 
++   /* Size up the sections.  */
++   lang_size_sections (NULL, ! RELAXATION_ENABLED);
++ 
++   /* See if anything special should be done now we know how big
++      everything is.  This is where relaxation is done.  */
++   ldemul_after_allocation ();
++ 
++   ldemul_finish ();
++ 
++   /* Make sure that the section addresses make sense.  */
++   if (command_line.check_section_addresses)
++     lang_check_section_addresses ();
++ 
++   lang_end ();
++   
++   ldwrite ();
++ 
++   lang_finish ();
++ 
++   if (! bfd_close (link_info.output_bfd))
++     einfo (_("%P%F:%s: final close failed on object-only output: %E\n"),
++         output_filename);
++ 
++   /* Read in the object-only file.  */
++   fd = open (output_filename, O_RDONLY | O_BINARY);
++   if (fd < 0)
++     {
++       bfd_set_error (bfd_error_system_call);
++       einfo (_("%P%F:%s: cannot open object-only output: %E"),
++           output_filename);
++     }
++ 
++   /* Get the object-only file size.  */
++   if (fstat (fd, &st) != 0)
++     {
++       bfd_set_error (bfd_error_system_call);
++       einfo (_("%P%F:%s: cannot stat object-only output: %E"),
++           output_filename);
++     }
++ 
++   size = st.st_size;
++   off = 0;
++   contents = (bfd_byte *) xmalloc (size);
++   while (off != size)
++     {
++       ssize_t got;
++ 
++       got = read (fd, contents + off, size - off);
++       if (got < 0)
++      {
++        bfd_set_error (bfd_error_system_call);
++        einfo (_("%P%F:%s: read failed on object-only output: %E"),
++               output_filename);
++      }
++ 
++       off += got;
++     }
++ 
++   close (fd);
++ 
++   /* Remove the temporary object-only file.  */ 
++   unlink (output_filename);
++ 
++   output_filename = saved_output_filename;
++ 
++   cmdline_add_object_only_section (contents, size);
++ 
++   free (contents);
++ }
++ 
++ /* Extract the object-only section.  */
++ 
++ static const char *
++ cmdline_extract_object_only_section (bfd *abfd)
++ {
++   const char *name = bfd_extract_object_only_section (abfd);
++ 
++   if (name == NULL)
++     einfo (_("%P%F: cannot extract object-only section from %B: %E"),
++         abfd);
++ 
++   /* It should be removed after it is done.  */
++   cmdline_list_append (&cmdline_temp_object_only_list,
++                     cmdline_is_file_enum, (void *) name);
++ 
++   return name;
++ }
++ 
++ /* Check and handle the object-only section.   */
++ 
++ void
++ cmdline_check_object_only_section (bfd *abfd, bfd_boolean lto)
++ {
++   const char *filename;
++ 
++   if (link_info.emitting_gnu_object_only
++       || abfd->format != bfd_object)
++     return;
++ 
++   if (lto)
++     {
++       /* For LTO link, we only need to extract object-only section
++       from the mixed object, add it to input, and put it on LTO
++       claimed output.  */
++       switch (abfd->lto_type)
++      {
++      default:
++        abort ();
++      case lto_mixed_object:
++        filename = cmdline_extract_object_only_section (abfd);
++        lang_add_input_file (filename,
++                             lang_input_file_is_file_enum, NULL);
++        break;
++      case lto_non_ir_object:
++      case lto_ir_object:
++        break;
++      }
++     }
++   else if (link_info.relocatable)
++     {
++       /* For non-LTO relocatable link, we need to append non-IR object
++       file and the object file in object-only section to the object
++       only list.  */
++       switch (abfd->lto_type)
++      {
++      default:
++        abort ();
++      case lto_mixed_object:
++        filename = cmdline_extract_object_only_section (abfd);
++        cmdline_object_only_list_append (cmdline_is_file_enum,
++                                        (void *) filename);
++        break;
++      case lto_non_ir_object:
++        cmdline_object_only_list_append (cmdline_is_bfd_enum, abfd);
++        break;
++      case lto_ir_object:
++        break;
++      }
++     }
++ }
++ 
++ /* Remove temporary object-only files.  */
++ 
++ void
++ cmdline_remove_object_only_files (void)
++ {
++   cmdline_union_type *c;
++ 
++ #ifdef ENABLE_PLUGINS
++   if (plugin_save_temps)
++     return;
++ #endif
++ 
++   c = cmdline_temp_object_only_list.head;
++   for (; c != NULL; c = c->header.next)
++     switch (c->header.type)
++       {
++       default:
++      abort ();
++       case cmdline_is_file_enum:
++      unlink (c->file.filename);
++      break;
++       }
++ }
++
++
++ 
+diff -cpr ../binutils-2.23.2.orig/ld/ldlang.h ld/ldlang.h
+*** ../binutils-2.23.2.orig/ld/ldlang.h        2013-05-14 16:39:36.861718097 +0100
+--- ld/ldlang.h        2013-05-14 16:40:07.053718934 +0100
+*************** extern lang_statement_list_type input_fi
+*** 488,494 ****
+  extern int lang_statement_iteration;
+  
+  extern void lang_init
+!   (void);
+  extern void lang_finish
+    (void);
+  extern lang_memory_region_type * lang_memory_region_lookup
+--- 488,494 ----
+  extern int lang_statement_iteration;
+  
+  extern void lang_init
+!   (bfd_boolean);
+  extern void lang_finish
+    (void);
+  extern lang_memory_region_type * lang_memory_region_lookup
+*************** ldlang_override_segment_assignment
+*** 664,667 ****
+--- 664,708 ----
+  extern void
+  lang_ld_feature (char *);
+  
++ typedef enum
++ {
++   cmdline_is_file_enum,
++   cmdline_is_bfd_enum
++ } cmdline_enum_type;
++ 
++ typedef struct cmdline_header_struct
++ {
++   union cmdline_union *next;
++   cmdline_enum_type type;
++ } cmdline_header_type;
++ 
++ typedef struct cmdline_file_struct
++ {
++   cmdline_header_type header;
++   const char *filename;
++ } cmdline_file_type;
++ 
++ typedef struct cmdline_bfd_struct
++ {
++   cmdline_header_type header;
++   bfd *abfd;
++ } cmdline_bfd_type;
++ 
++ typedef union cmdline_union
++ {
++   cmdline_header_type header;
++   cmdline_file_type file;
++   cmdline_bfd_type abfd;
++ } cmdline_union_type;
++ 
++ typedef struct cmdline_list
++ {
++   cmdline_union_type *head;
++   cmdline_union_type **tail;
++ } cmdline_list_type;
++ 
++ extern void cmdline_emit_object_only_section (void);
++ extern void cmdline_check_object_only_section (bfd *, bfd_boolean);
++ extern void cmdline_remove_object_only_files (void);
++ 
+  #endif
+diff -cpr ../binutils-2.23.2.orig/ld/ldlex.h ld/ldlex.h
+*** ../binutils-2.23.2.orig/ld/ldlex.h 2013-05-14 16:39:39.789718178 +0100
+--- ld/ldlex.h 2013-05-14 16:47:18.651730898 +0100
+*************** enum option_values
+*** 133,138 ****
+--- 133,139 ----
+  #ifdef ENABLE_PLUGINS
+    OPTION_PLUGIN,
+    OPTION_PLUGIN_OPT,
++   OPTION_PLUGIN_SAVE_TEMPS,
+  #endif /* ENABLE_PLUGINS */
+    OPTION_DEFAULT_SCRIPT,
+    OPTION_PRINT_OUTPUT_FORMAT,
+diff -cpr ../binutils-2.23.2.orig/ld/ldmain.c ld/ldmain.c
+*** ../binutils-2.23.2.orig/ld/ldmain.c        2013-05-14 16:39:36.862718097 +0100
+--- ld/ldmain.c        2013-05-14 16:40:07.055718934 +0100
+*************** main (int argc, char **argv)
+*** 219,224 ****
+--- 219,227 ----
+  
+    xatexit (ld_cleanup);
+  
++   /* Remove temporary object-only files.  */
++   xatexit (cmdline_remove_object_only_files);
++ 
+    /* Set up the sysroot directory.  */
+    ld_sysroot = get_sysroot (argc, argv);
+    if (*ld_sysroot)
+*************** main (int argc, char **argv)
+*** 295,301 ****
+    default_target = ldemul_choose_target (argc, argv);
+    config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
+    config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
+!   lang_init ();
+    ldemul_before_parse ();
+    lang_has_input_file = FALSE;
+    parse_args (argc, argv);
+--- 298,304 ----
+    default_target = ldemul_choose_target (argc, argv);
+    config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
+    config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
+!   lang_init (FALSE);
+    ldemul_before_parse ();
+    lang_has_input_file = FALSE;
+    parse_args (argc, argv);
+*************** main (int argc, char **argv)
+*** 310,343 ****
+  
+    ldemul_set_symbols ();
+  
+!   /* If we have not already opened and parsed a linker script,
+!      try the default script from command line first.  */
+!   if (saved_script_handle == NULL
+!       && command_line.default_script != NULL)
+!     {
+!       ldfile_open_command_file (command_line.default_script);
+!       parser_input = input_script;
+!       yyparse ();
+!     }
+! 
+!   /* If we have not already opened and parsed a linker script
+!      read the emulation's appropriate default script.  */
+!   if (saved_script_handle == NULL)
+!     {
+!       int isfile;
+!       char *s = ldemul_get_script (&isfile);
+! 
+!       if (isfile)
+!      ldfile_open_default_command_file (s);
+!       else
+!      {
+!        lex_string = s;
+!        lex_redirect (s, _("built in linker script"), 1);
+!      }
+!       parser_input = input_script;
+!       yyparse ();
+!       lex_string = NULL;
+!     }
+  
+    if (verbose)
+      {
+--- 313,319 ----
+  
+    ldemul_set_symbols ();
+  
+!   ld_parse_linker_script ();
+  
+    if (verbose)
+      {
+*************** main (int argc, char **argv)
+*** 444,449 ****
+--- 420,427 ----
+        if (! bfd_close (link_info.output_bfd))
+       einfo (_("%F%B: final close failed: %E\n"), link_info.output_bfd);
+  
++       link_info.output_bfd = NULL;
++ 
+        /* If the --force-exe-suffix is enabled, and we're making an
+        executable file and it doesn't end in .exe, copy it to one
+        which does.  */
+*************** main (int argc, char **argv)
+*** 490,495 ****
+--- 468,476 ----
+       }
+      }
+  
++   if (link_info.emit_gnu_object_only)
++     cmdline_emit_object_only_section ();
++ 
+    END_PROGRESS (program_name);
+  
+    if (config.stats)
+*************** add_archive_element (struct bfd_link_inf
+*** 779,785 ****
+--- 760,768 ----
+           }
+       }
+      }
++   else
+  #endif /* ENABLE_PLUGINS */
++     cmdline_check_object_only_section (input->the_bfd, FALSE);
+  
+    ldlang_add_file (input);
+  
+*************** warning_callback (struct bfd_link_info *
+*** 1152,1158 ****
+      einfo ("%P: %s%s\n", _("warning: "), warning);
+    else if (symbol == NULL)
+      einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
+!   else
+      {
+        struct warning_callback_info cinfo;
+  
+--- 1135,1141 ----
+      einfo ("%P: %s%s\n", _("warning: "), warning);
+    else if (symbol == NULL)
+      einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
+!   else if ((abfd->flags & BFD_PLUGIN) == 0)
+      {
+        struct warning_callback_info cinfo;
+  
+*************** notice (struct bfd_link_info *info,
+*** 1459,1461 ****
+--- 1442,1479 ----
+  
+    return TRUE;
+  }
++ 
++ /* Parse the linker script.   */
++ 
++ void
++ ld_parse_linker_script ()
++ {
++   /* If we have not already opened and parsed a linker script,
++      try the default script from command line first.  */
++   if (saved_script_handle == NULL
++       && command_line.default_script != NULL)
++     {
++       ldfile_open_command_file (command_line.default_script);
++       parser_input = input_script;
++       yyparse ();
++     }
++ 
++   /* If we have not already opened and parsed a linker script
++      read the emulation's appropriate default script.  */
++   if (saved_script_handle == NULL)
++     {
++       int isfile;
++       char *s = ldemul_get_script (&isfile);
++ 
++       if (isfile)
++      ldfile_open_default_command_file (s);
++       else
++      {
++        lex_string = s;
++        lex_redirect (s, _("built in linker script"), 1);
++      }
++       parser_input = input_script;
++       yyparse ();
++       lex_string = NULL;
++     }
++ }
+diff -cpr ../binutils-2.23.2.orig/ld/ldmain.h ld/ldmain.h
+*** ../binutils-2.23.2.orig/ld/ldmain.h        2013-05-14 16:39:39.810718179 +0100
+--- ld/ldmain.h        2013-05-14 16:40:07.055718934 +0100
+*************** extern void add_ysym (const char *);
+*** 43,46 ****
+--- 43,48 ----
+  extern void add_ignoresym (struct bfd_link_info *, const char *);
+  extern void add_keepsyms_file (const char *);
+  
++ extern void ld_parse_linker_script (void);
++ 
+  #endif
+diff -cpr ../binutils-2.23.2.orig/ld/lexsup.c ld/lexsup.c
+*** ../binutils-2.23.2.orig/ld/lexsup.c        2013-05-14 16:39:36.709718093 +0100
+--- ld/lexsup.c        2013-05-14 16:40:07.058718934 +0100
+*************** static const struct ld_option ld_options
+*** 168,173 ****
+--- 168,176 ----
+      '\0', N_("PLUGIN"), N_("Load named plugin"), ONE_DASH },
+    { {"plugin-opt", required_argument, NULL, OPTION_PLUGIN_OPT},
+      '\0', N_("ARG"), N_("Send arg to last-loaded plugin"), ONE_DASH },
++   { {"plugin-save-temps", no_argument, NULL, OPTION_PLUGIN_SAVE_TEMPS},
++     '\0', NULL, N_("Store plugin intermediate files permanently"),
++     ONE_DASH },
+    { {"flto", optional_argument, NULL, OPTION_IGNORE},
+      '\0', NULL, N_("Ignored for GCC LTO option compatibility"),
+      ONE_DASH },
+*************** parse_args (unsigned argc, char **argv)
+*** 958,963 ****
+--- 961,969 ----
+         if (plugin_opt_plugin_arg (optarg))
+           einfo(_("%P%F: bad -plugin-opt option\n"));
+         break;
++      case OPTION_PLUGIN_SAVE_TEMPS:
++        plugin_save_temps = TRUE;
++        break;
+  #endif /* ENABLE_PLUGINS */
+       case 'q':
+         link_info.emitrelocations = TRUE;
+diff -cpr ../binutils-2.23.2.orig/ld/plugin.c ld/plugin.c
+*** ../binutils-2.23.2.orig/ld/plugin.c        2013-05-14 16:39:37.435718113 +0100
+--- ld/plugin.c        2013-05-14 16:48:59.039733681 +0100
+***************
+*** 39,44 ****
+--- 39,47 ----
+  /* Report plugin symbols.  */
+  bfd_boolean report_plugin_symbols;
+  
++ /* Store plugin intermediate files permanently.  */
++ bfd_boolean plugin_save_temps;
++ 
+  /* The suffix to append to the name of the real (claimed) object file
+     when generating a dummy BFD to hold the IR symbols sent from the
+     plugin.  For cosmetic use only; appears in maps, crefs etc.  */
+*************** plugin_opt_plugin_arg (const char *arg)
+*** 217,222 ****
+--- 220,236 ----
+    if (!last_plugin)
+      return set_plugin_error (_("<no plugin>"));
+  
++   /* Ignore -pass-through= from GCC driver.  */
++   if (*arg == '-')
++     {
++       const char *p;
++       for (p = arg + 1; p; p++)
++      if (*p != '-')
++        break;
++       if (strncmp (p, "pass-through=", 13) == 0)
++      return 0;
++     }
++ 
+    newarg = xmalloc (sizeof *newarg);
+    newarg->arg = arg;
+    newarg->next = NULL;
+*************** plugin_maybe_claim (struct ld_plugin_inp
+*** 876,881 ****
+--- 890,898 ----
+    close (file->fd);
+    if (claimed)
+      {
++       /* Check object only section.  */
++       cmdline_check_object_only_section (entry->the_bfd, TRUE);
++ 
+        /* Discard the real file's BFD and substitute the dummy one.  */
+  
+        /* BFD archive handling caches elements so we can't call
+*************** plugin_call_cleanup (void)
+*** 929,942 ****
+      {
+        if (curplug->cleanup_handler && !curplug->cleanup_done)
+       {
+!        enum ld_plugin_status rv;
+!        curplug->cleanup_done = TRUE;
+!        called_plugin = curplug;
+!        rv = (*curplug->cleanup_handler) ();
+!        called_plugin = NULL;
+!        if (rv != LDPS_OK)
+!          info_msg (_("%P: %s: error in plugin cleanup: %d (ignored)\n"),
+!                    curplug->name, rv);
+         dlclose (curplug->dlhandle);
+       }
+        curplug = curplug->next;
+--- 946,962 ----
+      {
+        if (curplug->cleanup_handler && !curplug->cleanup_done)
+       {
+!        if (!plugin_save_temps)
+!          {
+!            enum ld_plugin_status rv;
+!            curplug->cleanup_done = TRUE;
+!            called_plugin = curplug;
+!            rv = (*curplug->cleanup_handler) ();
+!            called_plugin = NULL;
+!            if (rv != LDPS_OK)
+!              info_msg (_("%P: %s: error in plugin cleanup: %d (ignored)\n"),
+!                        curplug->name, rv);
+!          }
+         dlclose (curplug->dlhandle);
+       }
+        curplug = curplug->next;
+diff -cpr ../binutils-2.23.2.orig/ld/plugin.h ld/plugin.h
+*** ../binutils-2.23.2.orig/ld/plugin.h        2013-05-14 16:39:39.705718176 +0100
+--- ld/plugin.h        2013-05-14 16:40:07.059718934 +0100
+***************
+*** 24,29 ****
+--- 24,32 ----
+  /* Report plugin symbols.  */
+  extern bfd_boolean report_plugin_symbols;
+  
++ /* Store plugin intermediate files permanently.  */
++ extern bfd_boolean plugin_save_temps;
++ 
+  /* Set at all symbols read time, to avoid recursively offering the plugin
+     its own newly-added input files and libs to claim.  */
+  extern bfd_boolean no_more_claiming;
+diff -cpr ../binutils-2.23.2.orig/ld/scripttempl/armbpabi.sc ld/scripttempl/armbpabi.sc
+*** ../binutils-2.23.2.orig/ld/scripttempl/armbpabi.sc 2013-05-14 16:39:39.758718177 +0100
+--- ld/scripttempl/armbpabi.sc 2013-05-14 16:54:15.657742458 +0100
+*************** INTERP=".interp       0 : { *(.interp) }
+*** 30,36 ****
+  PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
+  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro .data.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
+  if test -z "${NO_SMALL_DATA}"; then
+    SBSS=".sbss         ${RELOCATING-0} :
+    {
+--- 30,36 ----
+  PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
+  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro .data.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+  if test -z "${NO_SMALL_DATA}"; then
+    SBSS=".sbss         ${RELOCATING-0} :
+    {
+diff -cpr ../binutils-2.23.2.orig/ld/scripttempl/elf32sh-symbian.sc ld/scripttempl/elf32sh-symbian.sc
+*** ../binutils-2.23.2.orig/ld/scripttempl/elf32sh-symbian.sc  2013-05-14 16:39:39.759718177 +0100
+--- ld/scripttempl/elf32sh-symbian.sc  2013-05-14 16:40:07.062718934 +0100
+*************** fi
+*** 83,89 ****
+      PLT=".plt            : { *(.plt) } :dynamic :dyn"
+  DYNAMIC=".dynamic        : { *(.dynamic) } :dynamic :dyn"
+   RODATA=".rodata    ALIGN(4) : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.directive)  *(.gnu.lto_*) }"
+  test -z "$GOT" && GOT=".got          ${RELOCATING-0} : { *(.got.plt) *(.got) } :dynamic :dyn"
+  INIT_ARRAY=".init_array   ${RELOCATING-0} :
+    {
+--- 83,89 ----
+      PLT=".plt            : { *(.plt) } :dynamic :dyn"
+  DYNAMIC=".dynamic        : { *(.dynamic) } :dynamic :dyn"
+   RODATA=".rodata    ALIGN(4) : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.directive)  *(.gnu.lto_*) *(.gnu_object_only) }"
+  test -z "$GOT" && GOT=".got          ${RELOCATING-0} : { *(.got.plt) *(.got) } :dynamic :dyn"
+  INIT_ARRAY=".init_array   ${RELOCATING-0} :
+    {
+diff -cpr ../binutils-2.23.2.orig/ld/scripttempl/elf64hppa.sc ld/scripttempl/elf64hppa.sc
+*** ../binutils-2.23.2.orig/ld/scripttempl/elf64hppa.sc        2013-05-14 16:39:39.733718177 +0100
+--- ld/scripttempl/elf64hppa.sc        2013-05-14 16:55:16.076744133 +0100
+*************** fi
+*** 127,133 ****
+  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
+  if test -z "${NO_SMALL_DATA}"; then
+    SBSS=".sbss         ${RELOCATING-0} :
+    {
+--- 127,133 ----
+  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+  if test -z "${NO_SMALL_DATA}"; then
+    SBSS=".sbss         ${RELOCATING-0} :
+    {
+diff -cpr ../binutils-2.23.2.orig/ld/scripttempl/elf.sc ld/scripttempl/elf.sc
+*** ../binutils-2.23.2.orig/ld/scripttempl/elf.sc      2013-05-14 16:39:39.755718177 +0100
+--- ld/scripttempl/elf.sc      2013-05-14 16:54:44.618743261 +0100
+*************** RELA_IPLT=".rela.iplt    ${RELOCATING-0}
+*** 158,164 ****
+  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+  RODATA=".${RODATA_NAME}       ${RELOCATING-0} : { *(.${RODATA_NAME}${RELOCATING+ .${RODATA_NAME}.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }"
+  if test -z "${NO_SMALL_DATA}"; then
+    SBSS=".${SBSS_NAME}         ${RELOCATING-0} :
+    {
+--- 158,164 ----
+  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+  RODATA=".${RODATA_NAME}       ${RELOCATING-0} : { *(.${RODATA_NAME}${RELOCATING+ .${RODATA_NAME}.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+  if test -z "${NO_SMALL_DATA}"; then
+    SBSS=".${SBSS_NAME}         ${RELOCATING-0} :
+    {
+diff -cpr ../binutils-2.23.2.orig/ld/scripttempl/elfxtensa.sc ld/scripttempl/elfxtensa.sc
+*** ../binutils-2.23.2.orig/ld/scripttempl/elfxtensa.sc        2013-05-14 16:39:39.754718177 +0100
+--- ld/scripttempl/elfxtensa.sc        2013-05-14 16:55:44.908744932 +0100
+*************** fi
+*** 140,146 ****
+  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
+  INIT_LIT=".init.literal 0 : { *(.init.literal)       }"
+  INIT=".init         0 : { *(.init)           }"
+  FINI_LIT=".fini.literal 0 : { *(.fini.literal)       }"
+--- 140,146 ----
+  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+  INIT_LIT=".init.literal 0 : { *(.init.literal)       }"
+  INIT=".init         0 : { *(.init)           }"
+  FINI_LIT=".fini.literal 0 : { *(.fini.literal)       }"
+diff -cpr ../binutils-2.23.2.orig/ld/scripttempl/mep.sc ld/scripttempl/mep.sc
+*** ../binutils-2.23.2.orig/ld/scripttempl/mep.sc      2013-05-14 16:39:39.755718177 +0100
+--- ld/scripttempl/mep.sc      2013-05-14 16:56:08.605745589 +0100
+*************** fi
+*** 114,120 ****
+  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro .data.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink)  *(.gnu.lto_*) }"
+  if test -z "${NO_SMALL_DATA}"; then
+    SBSS=".sbss         ${RELOCATING-0} :
+    {
+--- 114,120 ----
+  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
+  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
+  DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro .data.rel.ro.*) }"
+! DISCARDED="/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) }"
+  if test -z "${NO_SMALL_DATA}"; then
+    SBSS=".sbss         ${RELOCATING-0} :
+    {
+diff -cpr ../binutils-2.23.2.orig/ld/scripttempl/pep.sc ld/scripttempl/pep.sc
+*** ../binutils-2.23.2.orig/ld/scripttempl/pep.sc      2013-05-14 16:39:39.755718177 +0100
+--- ld/scripttempl/pep.sc      2013-05-14 16:40:07.064718934 +0100
+*************** SECTIONS
+*** 154,159 ****
+--- 154,160 ----
+      *(.drectve)
+      ${RELOCATING+ *(.note.GNU-stack)}
+      ${RELOCATING+ *(.gnu.lto_*)}
++     ${RELOCATING+ *(.gnu_object_only)}
+    }
+  
+    .idata ${RELOCATING+BLOCK(__section_alignment__)} :
+diff -cpr ../binutils-2.23.2.orig/ld/scripttempl/pe.sc ld/scripttempl/pe.sc
+*** ../binutils-2.23.2.orig/ld/scripttempl/pe.sc       2013-05-14 16:39:39.758718177 +0100
+--- ld/scripttempl/pe.sc       2013-05-14 16:40:07.064718934 +0100
+*************** SECTIONS
+*** 148,153 ****
+--- 148,154 ----
+      *(.drectve)
+      ${RELOCATING+ *(.note.GNU-stack)}
+      ${RELOCATING+ *(.gnu.lto_*)}
++     ${RELOCATING+ *(.gnu_object_only)}
+    }
+  
+    .idata ${RELOCATING+BLOCK(__section_alignment__)} :
diff --git a/binutils/patches/binutils-2.23.52.0.1-addr2line-dynsymtab.patch0 b/binutils/patches/binutils-2.23.52.0.1-addr2line-dynsymtab.patch0
new file mode 100644 (file)
index 0000000..68f0470
--- /dev/null
@@ -0,0 +1,122 @@
+*** ../binutils-2.23.52.0.1.orig/bfd/opncls.c  2013-03-14 11:25:30.338306122 +0000
+--- bfd/opncls.c       2013-03-14 12:20:21.686397360 +0000
+*************** find_separate_debug_file (bfd *abfd, con
+*** 1297,1302 ****
+--- 1297,1304 ----
+        bfd_malloc (strlen (debug_file_directory) + 1
+                    + (canon_dirlen > dirlen ? canon_dirlen : dirlen)
+                    + strlen (".debug/")
++ #define FEDORA_LIB_DEBUG_DIR "/usr/lib/debug/"
++                + strlen (FEDORA_LIB_DEBUG_DIR) + strlen ("usr/")
+                    + strlen (base)
+                    + 1);
+    if (debugfile == NULL)
+*************** find_separate_debug_file (bfd *abfd, con
+*** 1332,1337 ****
+--- 1334,1359 ----
+    if (check_func (debugfile, crc32))
+      goto found;
+  
++   /* Then try in the global debug dir for Fedora libraries.  */
++   sprintf (debugfile, "%s%s%s", FEDORA_LIB_DEBUG_DIR, dir, base);
++   if (separate_debug_file_exists (debugfile, crc32))
++     {
++       free (base);
++       free (dir);
++       free (canon_dir);
++       return debugfile;
++     }
++ 
++   /* Then try in the usr subdirectory of the global debug dir for Fedora libraries.  */
++   sprintf (debugfile, "%s/usr%s%s", FEDORA_LIB_DEBUG_DIR, dir, base);
++   if (separate_debug_file_exists (debugfile, crc32))
++     {
++       free (base);
++       free (dir);
++       free (canon_dir);
++       return debugfile;
++     }
++   
+    /* Then try in the global debugfile directory.  */
+    strcpy (debugfile, debug_file_directory);
+    dirlen = strlen (debug_file_directory) - 1;
+*** ../binutils-2.23.52.0.1.orig/bfd/dwarf2.c  2013-03-14 11:25:30.608306129 +0000
+--- bfd/dwarf2.c       2013-03-14 13:14:18.102487075 +0000
+*************** find_line (bfd *abfd,
+*** 3339,3346 ****
+--- 3339,3349 ----
+    struct dwarf2_debug *stash;
+    /* What address are we looking for?  */
+    bfd_vma addr;
++   /* What is the address without relocation ?  */
++   bfd_vma unrelocated_addr;
+    struct comp_unit* each;
+    bfd_vma found = FALSE;
++   bfd_vma possible_find = FALSE;
+    bfd_boolean do_line;
+  
+    *filename_ptr = NULL;
+*************** find_line (bfd *abfd,
+*** 3380,3385 ****
+--- 3383,3394 ----
+    else
+      abort ();
+  
++   /* If we are dealing with PIC code then the debug information
++      will be based on unrelocated addresses.  Since we cannot be
++      sure if this is a PIC address we test both with and without
++      relocation.  */
++   unrelocated_addr = addr;
++ 
+    if (section->output_section)
+      addr += section->output_section->vma + section->output_offset;
+    else
+*************** find_line (bfd *abfd,
+*** 3442,3447 ****
+--- 3451,3466 ----
+                                                  stash));
+         if (found)
+           goto done;
++ 
++        if (! possible_find)
++          possible_find = ((each->arange.high == 0
++                            || comp_unit_contains_address (each, unrelocated_addr))
++                           && comp_unit_find_nearest_line (each, unrelocated_addr,
++                                                           filename_ptr,
++                                                           functionname_ptr,
++                                                           linenumber_ptr,
++                                                           discriminator_ptr,
++                                                           stash));
+       }
+      }
+  
+*************** find_line (bfd *abfd,
+*** 3535,3540 ****
+--- 3554,3569 ----
+                                                    discriminator_ptr,
+                                                    stash));
+  
++        if (! found && ! do_line && ! possible_find)
++          possible_find = ((each->arange.high == 0
++                            || comp_unit_contains_address (each, unrelocated_addr))
++                           && comp_unit_find_nearest_line (each, unrelocated_addr,
++                                                           filename_ptr,
++                                                           functionname_ptr,
++                                                           linenumber_ptr,
++                                                           discriminator_ptr,
++                                                           stash));
++ 
+         if ((bfd_vma) (stash->info_ptr - stash->sec_info_ptr)
+             == stash->sec->size)
+           {
+*************** find_line (bfd *abfd,
+*** 3552,3557 ****
+--- 3581,3588 ----
+    if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0)
+      unset_sections (stash);
+  
++   if (! found)
++     return possible_find;
+    return found;
+  }
+  
diff --git a/binutils/patches/binutils-2.23.52.0.1-as-doc-texinfo-fixes.patch0 b/binutils/patches/binutils-2.23.52.0.1-as-doc-texinfo-fixes.patch0
deleted file mode 100644 (file)
index d0b657f..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-diff -cp ../binutils-2.23.52.0.1.orig/gas/doc/c-arc.texi gas/doc/c-arc.texi
-*** ../binutils-2.23.52.0.1.orig/gas/doc/c-arc.texi    2013-03-04 08:25:32.051931944 +0000
---- gas/doc/c-arc.texi 2013-03-04 08:26:19.234930452 +0000
-*************** The extension instructions are not macro
-*** 220,226 ****
-  encodings for use of these instructions according to the specification
-  by the user.  The parameters are:
-  
-! @table @bullet
-  @item @var{name}
-  Name of the extension instruction
-  
---- 220,226 ----
-  encodings for use of these instructions according to the specification
-  by the user.  The parameters are:
-  
-! @table @code
-  @item @var{name}
-  Name of the extension instruction
-  
-diff -cp ../binutils-2.23.52.0.1.orig/gas/doc/c-arm.texi gas/doc/c-arm.texi
-*** ../binutils-2.23.52.0.1.orig/gas/doc/c-arm.texi    2013-03-04 08:25:32.039931945 +0000
---- gas/doc/c-arm.texi 2013-03-04 08:27:37.462927978 +0000
-*************** ARM and THUMB instructions had their own
-*** 390,418 ****
-  @code{unified} syntax, which can be selected via the @code{.syntax}
-  directive, and has the following main features:
-  
-! @table @bullet
-! @item
-  Immediate operands do not require a @code{#} prefix.
-  
-! @item
-  The @code{IT} instruction may appear, and if it does it is validated
-  against subsequent conditional affixes.  In ARM mode it does not
-  generate machine code, in THUMB mode it does.
-  
-! @item
-  For ARM instructions the conditional affixes always appear at the end
-  of the instruction.  For THUMB instructions conditional affixes can be
-  used, but only inside the scope of an @code{IT} instruction.
-  
-! @item
-  All of the instructions new to the V6T2 architecture (and later) are
-  available.  (Only a few such instructions can be written in the
-  @code{divided} syntax).
-  
-! @item
-  The @code{.N} and @code{.W} suffixes are recognized and honored.
-  
-! @item
-  All instructions set the flags if and only if they have an @code{s}
-  affix.
-  @end table
---- 390,418 ----
-  @code{unified} syntax, which can be selected via the @code{.syntax}
-  directive, and has the following main features:
-  
-! @table @code
-! @item 1
-  Immediate operands do not require a @code{#} prefix.
-  
-! @item 2
-  The @code{IT} instruction may appear, and if it does it is validated
-  against subsequent conditional affixes.  In ARM mode it does not
-  generate machine code, in THUMB mode it does.
-  
-! @item 3
-  For ARM instructions the conditional affixes always appear at the end
-  of the instruction.  For THUMB instructions conditional affixes can be
-  used, but only inside the scope of an @code{IT} instruction.
-  
-! @item 4
-  All of the instructions new to the V6T2 architecture (and later) are
-  available.  (Only a few such instructions can be written in the
-  @code{divided} syntax).
-  
-! @item 5
-  The @code{.N} and @code{.W} suffixes are recognized and honored.
-  
-! @item 6
-  All instructions set the flags if and only if they have an @code{s}
-  affix.
-  @end table
-*************** Either @samp{#} or @samp{$} can be used
-*** 451,478 ****
-  @cindex register names, ARM
-  *TODO* Explain about ARM register naming, and the predefined names.
-  
-- @node ARM-Neon-Alignment
-- @subsection NEON Alignment Specifiers
-- 
-- @cindex alignment for NEON instructions
-- Some NEON load/store instructions allow an optional address
-- alignment qualifier.
-- The ARM documentation specifies that this is indicated by
-- @samp{@@ @var{align}}. However GAS already interprets
-- the @samp{@@} character as a "line comment" start,
-- so @samp{: @var{align}} is used instead.  For example:
-- 
-- @smallexample
--         vld1.8 @{q0@}, [r0, :128]
-- @end smallexample
-- 
-- @node ARM Floating Point
-- @section Floating Point
-- 
-- @cindex floating point, ARM (@sc{ieee})
-- @cindex ARM floating point (@sc{ieee})
-- The ARM family uses @sc{ieee} floating-point numbers.
-- 
-  @node ARM-Relocations
-  @subsection ARM relocation generation
-  
---- 451,456 ----
-*************** respectively.  For example to load the 3
-*** 519,524 ****
---- 497,524 ----
-          MOVT r0, #:upper16:foo
-  @end smallexample
-  
-+ @node ARM-Neon-Alignment
-+ @subsection NEON Alignment Specifiers
-+ 
-+ @cindex alignment for NEON instructions
-+ Some NEON load/store instructions allow an optional address
-+ alignment qualifier.
-+ The ARM documentation specifies that this is indicated by
-+ @samp{@@ @var{align}}. However GAS already interprets
-+ the @samp{@@} character as a "line comment" start,
-+ so @samp{: @var{align}} is used instead.  For example:
-+ 
-+ @smallexample
-+         vld1.8 @{q0@}, [r0, :128]
-+ @end smallexample
-+ 
-+ @node ARM Floating Point
-+ @section Floating Point
-+ 
-+ @cindex floating point, ARM (@sc{ieee})
-+ @cindex ARM floating point (@sc{ieee})
-+ The ARM family uses @sc{ieee} floating-point numbers.
-+ 
-  @node ARM Directives
-  @section ARM Machine Directives
-  
-diff -cp ../binutils-2.23.52.0.1.orig/gas/doc/c-cr16.texi gas/doc/c-cr16.texi
-*** ../binutils-2.23.52.0.1.orig/gas/doc/c-cr16.texi   2013-03-04 08:25:32.086931943 +0000
---- gas/doc/c-cr16.texi        2013-03-04 08:28:09.304926971 +0000
-*************** Operand expression type qualifier is an
-*** 44,69 ****
-  CR16 target operand qualifiers and its size (in bits):
-  
-  @table @samp
-! @item Immediate Operand
-! - s ---- 4 bits
-! @item
-! - m ---- 16 bits, for movb and movw instructions.
-! @item
-! - m ---- 20 bits, movd instructions.
-! @item
-! - l ---- 32 bits
-! 
-! @item Absolute Operand
-! - s ---- Illegal specifier for this operand.
-! @item
-! - m ---- 20 bits, movd instructions.
-! 
-! @item Displacement Operand
-! - s ---- 8 bits
-! @item
-! - m ---- 16 bits
-! @item
-! - l ---- 24 bits
-  @end table
-  
-  For example:
---- 44,76 ----
-  CR16 target operand qualifiers and its size (in bits):
-  
-  @table @samp
-! @item Immediate Operand: s
-! 4 bits.
-! 
-! @item Immediate Operand: m
-! 16 bits, for movb and movw instructions.
-! 
-! @item Immediate Operand: m
-! 20 bits, movd instructions.
-! 
-! @item Immediate Operand: l
-! 32 bits.
-! 
-! @item Absolute Operand: s
-! Illegal specifier for this operand.
-! 
-! @item Absolute Operand: m
-! 20 bits, movd instructions.
-! 
-! @item Displacement Operand: s
-! 8 bits.
-! 
-! @item Displacement Operand: m
-! 16 bits.
-! 
-! @item Displacement Operand: l
-! 24 bits.
-! 
-  @end table
-  
-  For example:
-diff -cp ../binutils-2.23.52.0.1.orig/gas/doc/c-tic54x.texi gas/doc/c-tic54x.texi
-*** ../binutils-2.23.52.0.1.orig/gas/doc/c-tic54x.texi 2013-03-04 08:25:32.035931945 +0000
---- gas/doc/c-tic54x.texi      2013-03-04 08:28:38.186926057 +0000
-*************** In this example, x is replaced with SYM2
-*** 109,115 ****
-  is replaced with x.  At this point, x has already been encountered
-  and the substitution stops.
-  
-! @smallexample @code
-   .asg   "x",SYM1
-   .asg   "SYM1",SYM2
-   .asg   "SYM2",x
---- 109,115 ----
-  is replaced with x.  At this point, x has already been encountered
-  and the substitution stops.
-  
-! @smallexample
-   .asg   "x",SYM1
-   .asg   "SYM1",SYM2
-   .asg   "SYM2",x
-*************** Substitution may be forced in situations
-*** 126,139 ****
-  ambiguous by placing colons on either side of the subsym.  The following
-  code:
-  
-! @smallexample @code
-   .eval  "10",x
-  LAB:X:  add     #x, a
-  @end smallexample
-  
-  When assembled becomes:
-  
-! @smallexample @code
-  LAB10  add     #10, a
-  @end smallexample
-  
---- 126,139 ----
-  ambiguous by placing colons on either side of the subsym.  The following
-  code:
-  
-! @smallexample
-   .eval  "10",x
-  LAB:X:  add     #x, a
-  @end smallexample
-  
-  When assembled becomes:
-  
-! @smallexample
-  LAB10  add     #10, a
-  @end smallexample
-  
-*************** The @code{LDX} pseudo-op is provided for
-*** 309,315 ****
-  of a label or address.  For example, if an address @code{_label} resides
-  in extended program memory, the value of @code{_label} may be loaded as
-  follows:
-! @smallexample @code
-   ldx     #_label,16,a    ; loads extended bits of _label
-   or      #_label,a       ; loads lower 16 bits of _label
-   bacc    a               ; full address is in accumulator A
---- 309,315 ----
-  of a label or address.  For example, if an address @code{_label} resides
-  in extended program memory, the value of @code{_label} may be loaded as
-  follows:
-! @smallexample
-   ldx     #_label,16,a    ; loads extended bits of _label
-   or      #_label,a       ; loads lower 16 bits of _label
-   bacc    a               ; full address is in accumulator A
diff --git a/binutils/patches/binutils-2.24-DW_FORM_ref_addr.patch0 b/binutils/patches/binutils-2.24-DW_FORM_ref_addr.patch0
new file mode 100644 (file)
index 0000000..92ef150
--- /dev/null
@@ -0,0 +1,44 @@
+*** ../binutils-2.24.orig/bfd/dwarf2.c 2014-01-28 11:58:02.072737296 +0000
+--- bfd/dwarf2.c       2014-01-28 11:59:38.575739971 +0000
+*************** find_abstract_instance_name (struct comp
+*** 2126,2131 ****
+--- 2126,2153 ----
+       abort ();
+  
+        info_ptr = unit->sec_info_ptr + die_ref;
++ 
++       /* Now find the CU containing this pointer.  */
++       if (info_ptr >= unit->info_ptr_unit && info_ptr < unit->end_ptr)
++      ;
++       else
++      {
++        /* Check other CUs to see if they contain the abbrev.  */
++        struct comp_unit * u;
++ 
++        for (u = unit->prev_unit; u != NULL; u = u->prev_unit)
++          if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
++            break;
++ 
++        if (u == NULL)
++          for (u = unit->next_unit; u != NULL; u = u->next_unit)
++            if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
++              break;
++ 
++        if (u)
++          unit = u;
++        /* else FIXME: What do we do now ?  */
++      }
+      }
+    else if (attr_ptr->form == DW_FORM_GNU_ref_alt)
+      {
+*************** find_abstract_instance_name (struct comp
+*** 2137,2142 ****
+--- 2159,2166 ----
+         bfd_set_error (bfd_error_bad_value);
+         return name;
+       }
++       /* FIXME: Do we need to locate the correct CU, in a similar
++       fashion to the code in the DW_FORM_ref_addr case above ?  */
+      }
+    else
+      info_ptr = unit->info_ptr_unit + die_ref;
diff --git a/binutils/patches/binutils-2.24-aarch64-fix-final_link_relocate.patch b/binutils/patches/binutils-2.24-aarch64-fix-final_link_relocate.patch
new file mode 100644 (file)
index 0000000..8c2d37b
--- /dev/null
@@ -0,0 +1,54 @@
+commit f44a1f8e513b37bcc52ba9ea0c172c3e94852756
+Author: Christophe Lyon <christophe.lyon@st.com>
+Date:   Tue Jan 14 15:53:50 2014 +0100
+
+    2014-01-14  Michael Hudson-Doyle  <michael.hudson@linaro.org>
+           Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
+    
+       bfd/
+       * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use correct
+       offset while calculating relocation address.
+       (elfNN_aarch64_create_small_pltn_entry): Likewise.
+       (elfNN_aarch64_init_small_plt0_entry): Likewise.
+
+--- a/bfd/elfnn-aarch64.c
++++ b/bfd/elfnn-aarch64.c
+@@ -3844,7 +3844,7 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
+       value = (symbol_got_offset (input_bfd, h, r_symndx)
+              + globals->root.sgot->output_section->vma
+-             + globals->root.sgot->output_section->output_offset);
++             + globals->root.sgot->output_offset);
+       value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+                                                  0, weak_undef_p);
+@@ -3873,10 +3873,9 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
+     case BFD_RELOC_AARCH64_TLSDESC_LDR:
+       if (globals->root.sgot == NULL)
+       return bfd_reloc_notsupported;
+-
+       value = (symbol_tlsdesc_got_offset (input_bfd, h, r_symndx)
+              + globals->root.sgotplt->output_section->vma
+-             + globals->root.sgotplt->output_section->output_offset
++             + globals->root.sgotplt->output_offset
+              + globals->sgotplt_jump_table_size);
+       value = _bfd_aarch64_elf_resolve_relocation (bfd_r_type, place, value,
+@@ -6627,7 +6626,7 @@ elfNN_aarch64_create_small_pltn_entry (struct elf_link_hash_entry *h,
+   plt_entry = plt->contents + h->plt.offset;
+   plt_entry_address = plt->output_section->vma
+-    + plt->output_section->output_offset + h->plt.offset;
++    + plt->output_offset + h->plt.offset;
+   gotplt_entry_address = gotplt->output_section->vma +
+     gotplt->output_offset + got_offset;
+@@ -6934,7 +6933,7 @@ elfNN_aarch64_init_small_plt0_entry (bfd *output_bfd ATTRIBUTE_UNUSED,
+                 + GOT_ENTRY_SIZE * 2);
+   plt_base = htab->root.splt->output_section->vma +
+-    htab->root.splt->output_section->output_offset;
++    htab->root.splt->output_offset;
+   /* Fill in the top 21 bits for this: ADRP x16, PLT_GOT + n * 8.
+      ADRP:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff */
diff --git a/binutils/patches/binutils-2.24-aarch64-fix-gotplt-offset-ifunc.patch b/binutils/patches/binutils-2.24-aarch64-fix-gotplt-offset-ifunc.patch
new file mode 100644 (file)
index 0000000..64a1d9c
--- /dev/null
@@ -0,0 +1,103 @@
+commit 67428c4aa56d4183d0f531e0d752040745a94423
+Author: Will Newton <will.newton@linaro.org>
+Date:   Mon Nov 25 11:07:07 2013 +0000
+
+    bfd/elfnn-aarch64.c: Fix miscalculation of GOTPLT offset for ifunc syms.
+    
+    The .got.plt header size was not being correctly taken into account
+    when calculating the offset for relocations against ifunc symbols.
+    
+    bfd/ChangeLog:
+    
+    2013-11-26  Will Newton  <will.newton@linaro.org>
+    
+       * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Ensure
+       PLT_INDEX is calculated using correct header size.
+    
+    ld/testsuite/ChangeLog:
+    
+    2013-11-26  Will Newton  <will.newton@linaro.org>
+    
+       * ld-aarch64/aarch64-elf.exp: Add ifunc-21 test.
+       * ld-aarch64/ifunc-21.d: New file.
+       * ld-aarch64/ifunc-21.s: Likewise.
+
+diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
+index 6bc414e..3cd3a18 100644
+--- a/bfd/elfnn-aarch64.c
++++ b/bfd/elfnn-aarch64.c
+@@ -3589,7 +3589,8 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
+             if (globals->root.splt != NULL)
+               {
+-                plt_index = h->plt.offset / globals->plt_entry_size - 1;
++                plt_index = ((h->plt.offset - globals->plt_header_size) /
++                             globals->plt_entry_size);
+                 off = (plt_index + 3) * GOT_ENTRY_SIZE;
+                 base_got = globals->root.sgotplt;
+               }
+diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
+index 5c150dd..a6b3ea2 100644
+--- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
++++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
+@@ -155,3 +155,4 @@ run_dump_test "ifunc-18b"
+ run_dump_test "ifunc-19a"
+ run_dump_test "ifunc-19b"
+ run_dump_test "ifunc-20"
++run_dump_test "ifunc-21"
+diff --git a/ld/testsuite/ld-aarch64/ifunc-21.d b/ld/testsuite/ld-aarch64/ifunc-21.d
+new file mode 100644
+index 0000000..fa139b2
+--- /dev/null
++++ b/ld/testsuite/ld-aarch64/ifunc-21.d
+@@ -0,0 +1,31 @@
++#source: ifunc-21.s
++#ld: -shared -z nocombreloc
++#objdump: -d -s -j .got.plt -j .text
++#target: aarch64*-*-*
++
++# Ensure the .got.plt slot used is correct
++
++.*:     file format elf64-(little|big)aarch64
++
++Contents of section .text:
++ 02a0 .*
++Contents of section .got.plt:
++ 103a8 0+ 0+ 0+ 0+  .*
++ 103b8 0+ 0+ [0-9a-f]+ 0+  .*
++
++Disassembly of section .text:
++
++0+2a0 <ifunc>:
++ 2a0: d65f03c0        ret
++
++0+2a4 <bar>:
++ 2a4: 90000080        adrp    x0, 10000 <.*>
++ 2a8: f941e000        ldr     x0, \[x0,#960\]
++ 2ac: d65f03c0        ret
++
++Disassembly of section .got.plt:
++
++.*:
++.*
++.*
++.*
+diff --git a/ld/testsuite/ld-aarch64/ifunc-21.s b/ld/testsuite/ld-aarch64/ifunc-21.s
+new file mode 100644
+index 0000000..a1563dc
+--- /dev/null
++++ b/ld/testsuite/ld-aarch64/ifunc-21.s
+@@ -0,0 +1,13 @@
++      .text
++      .type ifunc, @gnu_indirect_function
++      .hidden ifunc
++ifunc:
++      ret
++      .size   ifunc, .-ifunc
++      .type bar, @function
++      .globl bar
++bar:
++        adrp    x0, :got:ifunc
++        ldr     x0, [x0, #:got_lo12:ifunc]
++      ret
++      .size   bar, .-bar
diff --git a/binutils/patches/binutils-2.24-aarch64-fix-ie-relax.patch b/binutils/patches/binutils-2.24-aarch64-fix-ie-relax.patch
new file mode 100644 (file)
index 0000000..d9157ea
--- /dev/null
@@ -0,0 +1,40 @@
+commit 44f814ce5066f10a3bed29c45d10e0d38f4fa433
+Author: Marcus Shawcroft <marcus.shawcroft@arm.com>
+Date:   Tue Apr 15 17:46:07 2014 +0100
+
+    [AArch64] Fix off by one error in instruction relaxation mask.
+    
+    The AArch64 TLSDESC to IE relaxation code uses a bit mask intended to
+    ensure that destination register in a relaxed ldr instruction is
+    always X0.  The mask has an off by one error resulting in the most
+    significant bit of the destination register being retained in the
+    relaxed instruction.  The issue generally appears when the compiler
+    emits TLS accesses code under high register pressure resulting in a
+    broken code sequence.
+
+diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
+index 42c83fb..8503419 100644
+--- a/bfd/elfnn-aarch64.c
++++ b/bfd/elfnn-aarch64.c
+@@ -3957,7 +3957,7 @@ elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
+            ldr xd, [x0, #:tlsdesc_lo12:var] => ldr x0, [x0, #:gottprel_lo12:var]
+          */
+         insn = bfd_getl32 (contents + rel->r_offset);
+-        insn &= 0xfffffff0;
++        insn &= 0xffffffe0;
+         bfd_putl32 (insn, contents + rel->r_offset);
+         return bfd_reloc_continue;
+       }
+diff --git a/ld/testsuite/ld-aarch64/tls-relax-gdesc-ie.s b/ld/testsuite/ld-aarch64/tls-relax-gdesc-ie.s
+index c20690c..38b3721 100644
+--- a/ld/testsuite/ld-aarch64/tls-relax-gdesc-ie.s
++++ b/ld/testsuite/ld-aarch64/tls-relax-gdesc-ie.s
+@@ -4,7 +4,7 @@ var:
+       .word   2
+       .text
+       adrp    x0, :tlsdesc:var
+-      ldr     x1, [x0, #:tlsdesc_lo12:var]
++      ldr     x17, [x0, #:tlsdesc_lo12:var]
+       add     x0, x0, :tlsdesc_lo12:var
+       .tlsdesccall    var
+       blr     x1
diff --git a/binutils/patches/binutils-2.24-aarch64-fix-static-ifunc.patch b/binutils/patches/binutils-2.24-aarch64-fix-static-ifunc.patch
new file mode 100644 (file)
index 0000000..296f162
--- /dev/null
@@ -0,0 +1,118 @@
+commit 14d96265dd8fd934d868c0b8e1991e2fefbe9fc8
+Author: Will Newton <will.newton@linaro.org>
+Date:   Mon Nov 25 14:44:59 2013 +0000
+
+    bfd/elfnn-aarch64.c: Handle static links with ifunc correctly.
+    
+    The code for handling GOT references to ifunc symbols in static links
+    was missing.
+    
+    bfd/ChangeLog:
+    
+    2013-11-26  Will Newton  <will.newton@linaro.org>
+    
+       * elfnn-aarch64.c (elfNN_aarch64_finish_dynamic_symbol):
+       Handle STT_GNU_IFUNC symbols correctly in static links.
+    
+    ld/testsuite/ChangeLog:
+    
+    2013-11-26  Will Newton  <will.newton@linaro.org>
+    
+       * ld-aarch64/aarch64-elf.exp: Add ifunc-22.
+       * ld-aarch64/ifunc-22.d: New file.
+       * ld-aarch64/ifunc-22.s: Likewise.
+
+diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
+index 3cd3a18..9053635 100644
+--- a/bfd/elfnn-aarch64.c
++++ b/bfd/elfnn-aarch64.c
+@@ -6824,7 +6824,34 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
+                      + htab->root.sgot->output_offset
+                      + (h->got.offset & ~(bfd_vma) 1));
+-      if (info->shared && SYMBOL_REFERENCES_LOCAL (info, h))
++      if (h->def_regular
++        && h->type == STT_GNU_IFUNC)
++      {
++        if (info->shared)
++          {
++            /* Generate R_AARCH64_GLOB_DAT.  */
++            goto do_glob_dat;
++          }
++        else
++          {
++            asection *plt;
++
++            if (!h->pointer_equality_needed)
++              abort ();
++
++            /* For non-shared object, we can't use .got.plt, which
++               contains the real function address if we need pointer
++               equality.  We load the GOT entry with the PLT entry.  */
++            plt = htab->root.splt ? htab->root.splt : htab->root.iplt;
++            bfd_put_NN (output_bfd, (plt->output_section->vma
++                                     + plt->output_offset
++                                     + h->plt.offset),
++                        htab->root.sgot->contents
++                        + (h->got.offset & ~(bfd_vma) 1));
++            return TRUE;
++          }
++      }
++      else if (info->shared && SYMBOL_REFERENCES_LOCAL (info, h))
+       {
+         if (!h->def_regular)
+           return FALSE;
+@@ -6837,6 +6864,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
+       }
+       else
+       {
++do_glob_dat:
+         BFD_ASSERT ((h->got.offset & 1) == 0);
+         bfd_put_NN (output_bfd, (bfd_vma) 0,
+                     htab->root.sgot->contents + h->got.offset);
+diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
+index a6b3ea2..692bf34 100644
+--- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
++++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
+@@ -156,3 +156,4 @@ run_dump_test "ifunc-19a"
+ run_dump_test "ifunc-19b"
+ run_dump_test "ifunc-20"
+ run_dump_test "ifunc-21"
++run_dump_test "ifunc-22"
+diff --git a/ld/testsuite/ld-aarch64/ifunc-22.d b/ld/testsuite/ld-aarch64/ifunc-22.d
+new file mode 100644
+index 0000000..f28b039
+--- /dev/null
++++ b/ld/testsuite/ld-aarch64/ifunc-22.d
+@@ -0,0 +1,11 @@
++#source: ifunc-22.s
++#objdump: -s -j .got
++#ld: -static
++#target: aarch64*-*-*
++
++# Ensure GOT is populated correctly in static link
++
++.*:     file format elf64-(little|big)aarch64
++
++Contents of section \.got:
++ 4100f0 00000000 00000000 d0004000 00000000  ..........@.....
+diff --git a/ld/testsuite/ld-aarch64/ifunc-22.s b/ld/testsuite/ld-aarch64/ifunc-22.s
+new file mode 100644
+index 0000000..69a87bb
+--- /dev/null
++++ b/ld/testsuite/ld-aarch64/ifunc-22.s
+@@ -0,0 +1,14 @@
++      .text
++      .type ifunc, @gnu_indirect_function
++      .global ifunc
++ifunc:
++      ret
++      .size   ifunc, .-ifunc
++      .type _start, @function
++      .globl _start
++_start:
++        adrp    x0, :got:ifunc
++        ldr     x0, [x0, #:got_lo12:ifunc]
++      .size   _start, .-_start
++      .data
++      .xword  ifunc
diff --git a/binutils/patches/binutils-2.24-aarch64-ld-shared-non-PIC-xfail.patch b/binutils/patches/binutils-2.24-aarch64-ld-shared-non-PIC-xfail.patch
new file mode 100644 (file)
index 0000000..8525596
--- /dev/null
@@ -0,0 +1,55 @@
+commit 273dc279306c2b69fbc1407cc695397e4b015152
+Author: Will Newton <will.newton@linaro.org>
+Date:   Fri May 16 15:22:58 2014 +0100
+
+    ld/aarch64: xfail non-PIC shared object tests on aarch64
+    
+    aarch64 does not support building non-PIC shared objects, so mark
+    tests for these as xfail.
+    
+    ld/testsuite/ChangeLog:
+    
+    2014-05-20  Will Newton  <will.newton@linaro.org>
+    
+       * ld-shared/shared.exp: Mark non-PIC shared object tests
+       as xfail on aarch64.
+
+#-- a/ld/testsuite/ChangeLog
+#++ b/ld/testsuite/ChangeLog
+#@ -1,3 +1,8 @@
++2014-05-20  Will Newton  <will.newton@linaro.org>
++
++      * ld-shared/shared.exp: Mark non-PIC shared object tests
++      as xfail on aarch64.
++
+ 2014-05-19  Andreas Tobler  <andreast@fgznet.ch>
+       * ld-elf/shared.exp: Introduce the extralibs variable to control
+diff --git a/ld/testsuite/ld-shared/shared.exp b/ld/testsuite/ld-shared/shared.exp
+index 9996ece..c723ef7 100644
+--- a/ld/testsuite/ld-shared/shared.exp
++++ b/ld/testsuite/ld-shared/shared.exp
+@@ -244,6 +244,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $srcdir/$subdir/main.c $tmpdir/mainnp.o]
+       if [ string match $shared_needs_pic "yes" ] {
+           setup_xfail "arm*-*-linux*"
+       }
++      setup_xfail "aarch64*-*-linux*"
+       shared_test shnp "shared (non PIC)" mainnp.o sh1np.o sh2np.o shared
+       # Test ELF shared library relocations with a non-zero load
+@@ -270,6 +271,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $srcdir/$subdir/main.c $tmpdir/mainnp.o]
+       if [ string match $shared_needs_pic "yes" ] {
+           setup_xfail "arm*-*-linux*"
+       }
++      setup_xfail "aarch64*-*-linux*"
+       shared_test shnp "shared (non PIC, load offset)" \
+               mainnp.o sh1np.o sh2np.o shared \
+               "-T $srcdir/$subdir/elf-offset.ld"
+@@ -326,6 +328,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG $picflag" $srcdir/$subdir/main.c $tmpdir/m
+           if [ string match $shared_needs_pic "yes" ] {
+               setup_xfail "arm*-*-linux*"
+           }
++          setup_xfail "aarch64*-*-linux*"
+           shared_test shmpnp "shared (PIC main, non PIC so)" mainp.o sh1np.o sh2np.o shared
+       }
+     } else {
diff --git a/binutils/patches/binutils-2.24-arm-static-tls.patch b/binutils/patches/binutils-2.24-arm-static-tls.patch
new file mode 100644 (file)
index 0000000..2b580f1
--- /dev/null
@@ -0,0 +1,42 @@
+commit eea6dad2b3ae91189caa91145dd133bae0398d21
+Author: Kyle McMartin <kyle@redhat.com>
+Date:   Fri Jun 20 11:14:09 2014 +0100
+
+    Similarly to the AArch64 patch, set DF_STATIC_TLS for consistency with
+    other architectures when we emit IE relocs in a shared library.
+    
+       * elf32-arm.c (elf32_arm_check_relocs): Set DF_STATIC_TLS when
+       emitting initial-exec relocs when not linking an executable.
+
+--- a/bfd/elf32-arm.c
++++ b/bfd/elf32-arm.c
+@@ -12711,6 +12711,9 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
+               default: tls_type = GOT_NORMAL; break;
+               }
++            if (!info->executable && (tls_type & GOT_TLS_IE))
++              info->flags |= DF_STATIC_TLS;
++
+             if (h != NULL)
+               {
+                 h->got.refcount++;
+--- a/ld/testsuite/ld-arm/tls-gdierelax2.d
++++ b/ld/testsuite/ld-arm/tls-gdierelax2.d
+@@ -11,13 +11,13 @@ Disassembly of section .text:
+     [0-9a-f]+:        e59f0004        ldr     r0, \[pc, #4\]  ; .*
+     [0-9a-f]+:        e79f0000        ldr     r0, \[pc, r0\]
+     [0-9a-f]+:        e1a00000        nop                     ; .*
+-    [0-9a-f]+:        00008098        .word   0x00008098
+-    [0-9a-f]+:        0000809c        .word   0x0000809c
++    [0-9a-f]+:        000080a0        .word   0x000080a0
++    [0-9a-f]+:        000080a4        .word   0x000080a4
+ [0-9a-f]+ <bar>:
+     [0-9a-f]+:        4801            ldr     r0, \[pc, #4\]  ; .*
+     [0-9a-f]+:        4478            add     r0, pc
+     [0-9a-f]+:        6800            ldr     r0, \[r0, #0\]
+     [0-9a-f]+:        46c0            nop                     ; .*
+-    [0-9a-f]+:        0000808a        .word   0x0000808a
+-    [0-9a-f]+:        0000808c        .word   0x0000808c
++    [0-9a-f]+:        00008092        .word   0x00008092
++    [0-9a-f]+:        00008094        .word   0x00008094
diff --git a/binutils/patches/binutils-2.24-elfnn-aarch64.patch0 b/binutils/patches/binutils-2.24-elfnn-aarch64.patch0
new file mode 100644 (file)
index 0000000..469387b
--- /dev/null
@@ -0,0 +1,21 @@
+*** ../binutils-2.24.orig/bfd/elfnn-aarch64.c  2013-12-17 11:16:28.723807381 +0000
+--- bfd/elfnn-aarch64.c        2013-12-17 11:18:13.517804067 +0000
+*************** _aarch64_elf_section_data;
+*** 1679,1686 ****
+  #define elf_aarch64_section_data(sec) \
+    ((_aarch64_elf_section_data *) elf_section_data (sec))
+  
+! /* The size of the thread control block.  */
+! #define TCB_SIZE     16
+  
+  struct elf_aarch64_local_symbol
+  {
+--- 1679,1686 ----
+  #define elf_aarch64_section_data(sec) \
+    ((_aarch64_elf_section_data *) elf_section_data (sec))
+  
+! /* The size of the thread control block which is defined to be two pointers.  */
+! #define TCB_SIZE     (ARCH_SIZE/8)*2
+  
+  struct elf_aarch64_local_symbol
+  {
diff --git a/binutils/patches/binutils-2.24-fake-zlib-sections.patch0 b/binutils/patches/binutils-2.24-fake-zlib-sections.patch0
new file mode 100644 (file)
index 0000000..e02dd51
--- /dev/null
@@ -0,0 +1,30 @@
+*** ../binutils-2.24.orig/bfd/compress.c       2014-04-28 16:35:20.429816317 +0100
+--- bfd/compress.c     2014-04-28 16:36:06.450963028 +0100
+***************
+*** 25,30 ****
+--- 25,31 ----
+  #ifdef HAVE_ZLIB_H
+  #include <zlib.h>
+  #endif
++ #include "safe-ctype.h"
+  
+  #ifdef HAVE_ZLIB_H
+  static bfd_boolean
+*************** bfd_is_section_compressed (bfd *abfd, se
+*** 304,309 ****
+--- 305,319 ----
+    compressed = (bfd_get_section_contents (abfd, sec, compressed_buffer, 0, 12)
+               && CONST_STRNEQ ((char*) compressed_buffer, "ZLIB"));
+  
++   /* Check for the pathalogical case of a debug string section that
++      contains the string ZLIB.... as the first entry.  We assume that
++      no uncompressed .debug_str section would ever be big enough to
++      have the first byte of its (big-endian) size be non-zero.  */
++   if (compressed
++       && strcmp (sec->name, ".debug_str") == 0
++       && ISPRINT (compressed_buffer[4]))
++     compressed = FALSE;
++ 
+    /* Restore compress_status.  */
+    sec->compress_status = saved;
+    return compressed;
diff --git a/binutils/patches/binutils-2.24-fat-lto-objects.patch b/binutils/patches/binutils-2.24-fat-lto-objects.patch
new file mode 100644 (file)
index 0000000..fe9c334
--- /dev/null
@@ -0,0 +1,57 @@
+commit b35d44f1af711925bfa4344ef00470fee67122f1
+Author: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+Date:   Wed Nov 27 13:43:39 2013 +0000
+
+    [ld/testsuite/]
+    2013-11-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+    
+       * ld-plugin/lto.exp: Add -ffat-lto-objects.
+       * lib/ld-lib.exp (check_lto_available): Likewise.
+
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -57,7 +57,7 @@ set lto_link_tests {
+    "" "-O2"
+    {lto-3c.c} {} "libdummy.a"}
+   {"Build liblto-3.a"
+-   "" "-flto"
++   "" "-flto -ffat-lto-objects"
+    {lto-3b.c} {} "liblto-3.a"}
+   {"Build libdummy.a 5a"
+    "" "-flto"
+@@ -111,7 +111,7 @@ set lto_link_tests {
+    "" ""
+    {pr12758a.s} {} "libdummy.a"}
+   {"Build libpr12758.a"
+-   "" "-flto -O2"
++   "" "-flto -O2 -ffat-lto-objects"
+    {pr12758b.c} {} "libpr12758.a"}
+   {"PR ld/12758"
+    "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" ""
+@@ -120,13 +120,13 @@ set lto_link_tests {
+    "" ""
+    {pr12760a.c} {} "libdummy.a"}
+   {"Build libpr12760.a"
+-   "" "-flto -O2"
++   "" "-flto -O2 -ffat-lto-objects"
+    {pr12760b.c} {} "libpr12760.a"}
+   {"PR ld/12760"
+    "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" ""
+    {dummy.c} {} "pr12760.exe" "c" "warning: Bad bar"}
+   {"Build libpr13183.a"
+-   "-T" "-flto -O2"
++   "-T" "-flto -O2 -ffat-lto-objects"
+    {pr13183a.c} {} "libpr13183.a"}
+   {"Build libdummy.a PR ld/13183"
+    "" "-flto -O2"
+--- a/ld/testsuite/lib/ld-lib.exp
++++ b/ld/testsuite/lib/ld-lib.exp
+@@ -1643,7 +1643,7 @@ proc check_lto_available { } {
+       set f [open $src "w"]
+       puts $f ""
+       close $f
+-      set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -fuse-linker-plugin $src -o $output"]
++      set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -ffat-lto-objects -fuse-linker-plugin $src -o $output"]
+       if { [lindex $status 0] == 0 } {
+           set lto_available_saved 1
+       } else {
diff --git a/binutils/patches/binutils-2.24-indirect-chain.patch0 b/binutils/patches/binutils-2.24-indirect-chain.patch0
new file mode 100644 (file)
index 0000000..b255424
--- /dev/null
@@ -0,0 +1,28 @@
+*** ../binutils-2.24.orig/bfd/elflink.c        2014-08-21 09:17:27.753408085 +0100
+--- bfd/elflink.c      2014-08-21 10:04:52.174935912 +0100
+*************** _bfd_elf_add_default_symbol (bfd *abfd,
+*** 1705,1710 ****
+--- 1705,1716 ----
+        ht = (struct elf_link_hash_entry *) hi->root.u.i.link;
+        (*bed->elf_backend_copy_indirect_symbol) (info, ht, hi);
+  
++        /* A reference to the SHORTNAME symbol from a dynamic library
++       will be satisfied by the versioned symbol at runtime.  In
++       effect, we have a reference to the versioned symbol.  */
++        ht->ref_dynamic_nonweak |= hi->ref_dynamic_nonweak;
++        hi->dynamic_def |= ht->dynamic_def;
++  
+        /* See if the new flags lead us to realize that the symbol must
+        be dynamic.  */
+        if (! *dynsym)
+*************** nondefault:
+*** 1774,1779 ****
+--- 1780,1787 ----
+        if (hi->root.type == bfd_link_hash_indirect)
+       {
+         (*bed->elf_backend_copy_indirect_symbol) (info, h, hi);
++        h->ref_dynamic_nonweak |= hi->ref_dynamic_nonweak;
++        hi->dynamic_def |= h->dynamic_def;
+  
+         /* See if the new flags lead us to realize that the symbol
+            must be dynamic.  */
diff --git a/binutils/patches/binutils-2.24-ldforcele.patch0 b/binutils/patches/binutils-2.24-ldforcele.patch0
new file mode 100644 (file)
index 0000000..6a46c78
--- /dev/null
@@ -0,0 +1,58 @@
+Common subdirectories: ../binutils-2.24.orig/ld/emulparams and ld/emulparams
+Common subdirectories: ../binutils-2.24.orig/ld/emultempl and ld/emultempl
+diff -cp ../binutils-2.24.orig/ld/ldlang.c ld/ldlang.c
+*** ../binutils-2.24.orig/ld/ldlang.c  2014-05-09 10:35:04.589504928 +0100
+--- ld/ldlang.c        2014-05-09 10:35:55.515661478 +0100
+*************** lang_add_output_format (const char *form
+*** 7096,7101 ****
+--- 7096,7113 ----
+              && little != NULL)
+       format = little;
+  
++       if (getenv ("LD_FORCE_LE") != NULL)
++      {
++        if (strcmp (format, "elf64-powerpc") == 0)
++          format = "elf64-powerpcle";
++        else if (strcmp (format, "elf32-powerpc") == 0)
++          format = "elf32-powerpcle";
++        else if (strcmp (format, "elf64-big") == 0)
++          format = "elf64-little";
++        else if (strcmp (format, "elf32-big") == 0)
++          format = "elf32-little";
++      }
++ 
+        output_target = format;
+      }
+  }
+Only in ld: ldlang.c.orig
+diff -cp ../binutils-2.24.orig/ld/ldmain.c ld/ldmain.c
+*** ../binutils-2.24.orig/ld/ldmain.c  2014-05-09 10:35:04.593504941 +0100
+--- ld/ldmain.c        2014-05-09 10:35:55.515661478 +0100
+*************** get_emulation (int argc, char **argv)
+*** 603,608 ****
+--- 603,620 ----
+       }
+      }
+  
++   if ((strncmp (emulation, "elf64ppc", 8) == 0
++        || strncmp (emulation, "elf32ppc", 8) == 0)
++       && getenv ("LD_FORCE_LE") != NULL)
++     {
++       size_t len = strlen (emulation);
++       char *le = xmalloc (len + 2);
++       memcpy (le, emulation, 5);
++       le[5] = 'l';
++       memcpy (le + 6, emulation + 5, len - 4);
++       emulation = le;
++     }
++ 
+    return emulation;
+  }
+  
+Only in ld: ldmain.c.orig
+Common subdirectories: ../binutils-2.24.orig/ld/ldscripts and ld/ldscripts
+Common subdirectories: ../binutils-2.24.orig/ld/.libs and ld/.libs
+Common subdirectories: ../binutils-2.24.orig/ld/po and ld/po
+Common subdirectories: ../binutils-2.24.orig/ld/scripttempl and ld/scripttempl
+Common subdirectories: ../binutils-2.24.orig/ld/testsuite and ld/testsuite
+Common subdirectories: ../binutils-2.24.orig/ld/tmpdir and ld/tmpdir
similarity index 81%
rename from binutils/patches/binutils-2.23.52.0.1-pt-pax-flags-20130326.patch
rename to binutils/patches/binutils-2.24-pt-pax-flags-20131231.patch
index b173b2ae768cd58a4df67444240c7326be7a23fb..cfb2035110849b1c8dc872f07a17800084b7f809 100644 (file)
@@ -1,5 +1,5 @@
---- binutils-2.23.52.0.1/bfd/elf-bfd.h
-+++ binutils-2.23.52.0.1/bfd/elf-bfd.h
+--- 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;
@@ -18,8 +18,8 @@
  #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.23.52.0.1/bfd/elf.c
-+++ binutils-2.23.52.0.1/bfd/elf.c
+--- 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;
@@ -89,8 +89,8 @@
     && (segment->p_type != PT_TLS                                      \
         || (section->flags & SEC_THREAD_LOCAL))                                \
     && (segment->p_type == PT_LOAD                                     \
---- binutils-2.23.52.0.1/bfd/elflink.c
-+++ binutils-2.23.52.0.1/bfd/elflink.c
+--- 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;
              notesec = s;
            }
          else if (bed->default_execstack)
---- binutils-2.23.52.0.1/binutils/readelf.c
-+++ binutils-2.23.52.0.1/binutils/readelf.c
+--- 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";
  
      default:
        if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
---- binutils-2.23.52.0.1/include/bfdlink.h
-+++ binutils-2.23.52.0.1/include/bfdlink.h
+--- 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 .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
       should be created.  */
    unsigned int eh_frame_hdr: 1;
---- binutils-2.23.52.0.1/include/elf/common.h
-+++ binutils-2.23.52.0.1/include/elf/common.h
+--- 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 */
- #define PT_GNU_SHR    (PT_LOOS + 0x474e554) /* Sharable segment */
  
  /* 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 */
  /* Values for section header, sh_type field.  */
  
  #define SHT_NULL      0               /* Section header table entry unused */
---- binutils-2.23.52.0.1/ld/emultempl/elf32.em
-+++ binutils-2.23.52.0.1/ld/emultempl/elf32.em
+--- binutils-2.24/ld/emultempl/elf32.em
++++ binutils-2.24/ld/emultempl/elf32.em
 @@ -2285,6 +2285,16 @@ fragment <<EOF
          link_info.noexecstack = TRUE;
          link_info.execstack = FALSE;
  EOF
  if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
  fragment <<EOF
---- binutils-2.23.52.0.1/ld/ldgram.y
-+++ binutils-2.23.52.0.1/ld/ldgram.y
+--- binutils-2.24/ld/ldgram.y
++++ binutils-2.24/ld/ldgram.y
 @@ -1119,6 +1119,8 @@ phdr_type:
                            $$ = exp_intop (0x6474e550);
                          else if (strcmp (s, "PT_GNU_STACK") == 0)
                          else
                            {
                              einfo (_("\
---- binutils-2.23.52.0.1/ld/testsuite/ld-alpha/tlsbin.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-alpha/tlsbin.rd
+--- binutils-2.24/ld/testsuite/ld-alpha/tlsbin.rd
++++ binutils-2.24/ld/testsuite/ld-alpha/tlsbin.rd
 @@ -35,13 +35,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
  
  Program Headers:
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 3 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-alpha/tlsbinr.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-alpha/tlsbinr.rd
+--- binutils-2.24/ld/testsuite/ld-alpha/tlsbinr.rd
++++ binutils-2.24/ld/testsuite/ld-alpha/tlsbinr.rd
 @@ -42,6 +42,7 @@ Program Headers:
   +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
   +DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 2 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-alpha/tlspic.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-alpha/tlspic.rd
+--- binutils-2.24/ld/testsuite/ld-alpha/tlspic.rd
++++ binutils-2.24/ld/testsuite/ld-alpha/tlspic.rd
 @@ -38,6 +38,7 @@ Program Headers:
   +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
   +DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 7 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-elf/eh1.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-elf/eh1.d
+--- binutils-2.24/ld/testsuite/ld-elf/eh1.d
++++ binutils-2.24/ld/testsuite/ld-elf/eh1.d
 @@ -22,11 +22,11 @@ Contents of the .eh_frame section:
    DW_CFA_nop
    DW_CFA_nop
  
--00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
--  DW_CFA_advance_loc: 0 to 00400078
-+00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
+-0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078..0+400078
+-  DW_CFA_advance_loc: 0 to 0+400078
++0+0018 0+001c 0+001c FDE cie=0+0000 pc=([0-9a-f]+)..\1
 +  DW_CFA_advance_loc: 0 to [0-9a-f]+
    DW_CFA_def_cfa_offset: 16
    DW_CFA_offset: r6 \(rbp\) at cfa-16
--  DW_CFA_advance_loc: 0 to 00400078
+-  DW_CFA_advance_loc: 0 to 0+400078
 +  DW_CFA_advance_loc: 0 to [0-9a-f]+
    DW_CFA_def_cfa_register: r6 \(rbp\)
  
- 00000038 ZERO terminator
---- binutils-2.23.52.0.1/ld/testsuite/ld-elf/eh2.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-elf/eh2.d
+ 0+0038 ZERO terminator
+--- binutils-2.24/ld/testsuite/ld-elf/eh2.d
++++ binutils-2.24/ld/testsuite/ld-elf/eh2.d
 @@ -22,11 +22,11 @@ Contents of the .eh_frame section:
    DW_CFA_nop
    DW_CFA_nop
  
--00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
--  DW_CFA_advance_loc: 0 to 00400078
-+00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
+-0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078..0+400078
+-  DW_CFA_advance_loc: 0 to 0+400078
++0+0018 0+001c 0+001c FDE cie=0+0000 pc=([0-9a-f]+)..\1
 +  DW_CFA_advance_loc: 0 to [0-9a-f]+
    DW_CFA_def_cfa_offset: 16
    DW_CFA_offset: r6 \(rbp\) at cfa-16
--  DW_CFA_advance_loc: 0 to 00400078
+-  DW_CFA_advance_loc: 0 to 0+400078
 +  DW_CFA_advance_loc: 0 to [0-9a-f]+
    DW_CFA_def_cfa_register: r6 \(rbp\)
  
- 00000038 ZERO terminator
---- binutils-2.23.52.0.1/ld/testsuite/ld-elf/eh3.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-elf/eh3.d
+ 0+0038 ZERO terminator
+--- binutils-2.24/ld/testsuite/ld-elf/eh3.d
++++ binutils-2.24/ld/testsuite/ld-elf/eh3.d
 @@ -22,11 +22,11 @@ Contents of the .eh_frame section:
    DW_CFA_nop
    DW_CFA_nop
  
--00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
--  DW_CFA_advance_loc: 0 to 00400078
-+00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
+-0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078..0+400078
+-  DW_CFA_advance_loc: 0 to 0+400078
++0+0018 0+001c 0+001c FDE cie=0+0000 pc=([0-9a-f]+)..\1
 +  DW_CFA_advance_loc: 0 to [0-9a-f]+
    DW_CFA_def_cfa_offset: 16
    DW_CFA_offset: r6 \(rbp\) at cfa-16
--  DW_CFA_advance_loc: 0 to 00400078
+-  DW_CFA_advance_loc: 0 to 0+400078
 +  DW_CFA_advance_loc: 0 to [0-9a-f]+
    DW_CFA_def_cfa_register: r6 \(rbp\)
  
- 00000038 ZERO terminator
---- binutils-2.23.52.0.1/ld/testsuite/ld-elf/orphan-region.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-elf/orphan-region.d
+ 0+0038 ZERO terminator
+--- binutils-2.24/ld/testsuite/ld-elf/orphan-region.d
++++ binutils-2.24/ld/testsuite/ld-elf/orphan-region.d
 @@ -15,7 +15,9 @@
  Program Headers:
    Type.*
    Segment Sections...
     00     .text .rodata .moredata *
 +   01 +
---- binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsbin.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsbin.rd
+--- binutils-2.24/ld/testsuite/ld-i386/tlsbin.rd
++++ binutils-2.24/ld/testsuite/ld-i386/tlsbin.rd
 @@ -44,6 +44,7 @@ Program Headers:
   +LOAD.*
   +DYNAMIC.*
  
  Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
   Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsbindesc.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsbindesc.rd
+--- binutils-2.24/ld/testsuite/ld-i386/tlsbindesc.rd
++++ binutils-2.24/ld/testsuite/ld-i386/tlsbindesc.rd
 @@ -42,6 +42,7 @@ Program Headers:
   +LOAD.*
   +DYNAMIC.*
  
  Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
   Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsdesc.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsdesc.rd
+--- binutils-2.24/ld/testsuite/ld-i386/tlsdesc.rd
++++ binutils-2.24/ld/testsuite/ld-i386/tlsdesc.rd
 @@ -39,6 +39,7 @@ Program Headers:
   +LOAD.*
   +DYNAMIC.*
  
  Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
   Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsgdesc.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsgdesc.rd
+--- binutils-2.24/ld/testsuite/ld-i386/tlsgdesc.rd
++++ binutils-2.24/ld/testsuite/ld-i386/tlsgdesc.rd
 @@ -36,12 +36,14 @@ Program Headers:
   +LOAD.*
   +LOAD.*
  
  Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
   Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsnopic.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlsnopic.rd
+--- binutils-2.24/ld/testsuite/ld-i386/tlsnopic.rd
++++ binutils-2.24/ld/testsuite/ld-i386/tlsnopic.rd
 @@ -37,6 +37,7 @@ Program Headers:
   +LOAD.*
   +DYNAMIC.*
  
  Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
   Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlspic.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-i386/tlspic.rd
+--- binutils-2.24/ld/testsuite/ld-i386/tlspic.rd
++++ binutils-2.24/ld/testsuite/ld-i386/tlspic.rd
 @@ -40,6 +40,7 @@ Program Headers:
   +LOAD.*
   +DYNAMIC.*
  
  Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 26 entries:
   Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23.52.0.1/ld/testsuite/ld-ia64/merge1.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-ia64/merge1.d
+--- binutils-2.24/ld/testsuite/ld-ia64/merge1.d
++++ binutils-2.24/ld/testsuite/ld-ia64/merge1.d
 @@ -4,7 +4,7 @@
  #objdump: -d
  
  [     ]*[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.23.52.0.1/ld/testsuite/ld-ia64/merge2.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-ia64/merge2.d
+--- binutils-2.24/ld/testsuite/ld-ia64/merge2.d
++++ binutils-2.24/ld/testsuite/ld-ia64/merge2.d
 @@ -4,7 +4,7 @@
  #objdump: -d
  
  [     ]*[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.23.52.0.1/ld/testsuite/ld-ia64/merge3.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-ia64/merge3.d
+--- binutils-2.24/ld/testsuite/ld-ia64/merge3.d
++++ binutils-2.24/ld/testsuite/ld-ia64/merge3.d
 @@ -4,7 +4,7 @@
  #objdump: -d
  
  [     ]*[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.23.52.0.1/ld/testsuite/ld-ia64/merge4.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-ia64/merge4.d
+--- binutils-2.24/ld/testsuite/ld-ia64/merge4.d
++++ binutils-2.24/ld/testsuite/ld-ia64/merge4.d
 @@ -4,7 +4,7 @@
  #objdump: -d
  
  [     ]*[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.23.52.0.1/ld/testsuite/ld-ia64/merge5.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-ia64/merge5.d
+--- binutils-2.24/ld/testsuite/ld-ia64/merge5.d
++++ binutils-2.24/ld/testsuite/ld-ia64/merge5.d
 @@ -4,7 +4,7 @@
  #objdump: -d
  
  [     ]*[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.23.52.0.1/ld/testsuite/ld-ia64/tlsbin.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-ia64/tlsbin.rd
+--- 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:
   +IA_64_UNWIND .* R +0x8
  #...
  
---- binutils-2.23.52.0.1/ld/testsuite/ld-ia64/tlspic.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-ia64/tlspic.rd
+--- 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
   +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.23.52.0.1/ld/testsuite/ld-mips-elf/multi-got-no-shared.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/multi-got-no-shared.d
+--- 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.*
  
  #...
  00408d60 <[^>]*> 3c1c0043     lui     gp,0x43
  00408d64 <[^>]*> 279c2c98     addiu   gp,gp,11416
---- binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd
+--- 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\)
   *0*3 * \.dynamic *
   *0*4 *
 + *0*5 *
---- binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd
+--- 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\)
   *0*6 *\.dynamic *
   *0*7 *
 + *0*8 *
---- binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd
+--- 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\)
   *0*6 * \.dynamic *
   *0*7 *
 + *0*8 *
---- binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd
+--- 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\)
   *0*6 * \.dynamic *
   *0*7 *
 + *0*8 *
---- binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd
-+++ binutils-2.23.52.0.1/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
++++ 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\)
   *0*6 * \.dynamic *
   *0*7 *
 + *0*8 *
---- binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd
-+++ binutils-2.23.52.0.1/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
++++ 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\)
   *0*5 * \.dynamic *
   *0*6 *
 + *0*7 *
---- binutils-2.23.52.0.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd
-+++ binutils-2.23.52.0.1/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
++++ 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\)
   *0*6 * \.dynamic *
   *0*7 *
 + *0*8 *
---- binutils-2.23.52.0.1/ld/testsuite/ld-powerpc/tlsexe32.r
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-powerpc/tlsexe32.r
+--- 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:
  
  Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
   Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
---- binutils-2.23.52.0.1/ld/testsuite/ld-powerpc/tlsso32.r
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-powerpc/tlsso32.r
+--- 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
  [0-9a-f ]+R_PPC_DTPMOD32 +0
  [0-9a-f ]+R_PPC_DTPREL32 +0
  [0-9a-f ]+R_PPC_DTPMOD32 +0
---- binutils-2.23.52.0.1/ld/testsuite/ld-s390/tlsbin.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-s390/tlsbin.rd
+--- 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
  
  Relocation section '.rela.dyn' at offset .* contains 4 entries:
   Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
---- binutils-2.23.52.0.1/ld/testsuite/ld-s390/tlsbin_64.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-s390/tlsbin_64.rd
+--- 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
  
  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.23.52.0.1/ld/testsuite/ld-s390/tlspic.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-s390/tlspic.rd
+--- 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
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
   Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
---- binutils-2.23.52.0.1/ld/testsuite/ld-s390/tlspic_64.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-s390/tlspic_64.rd
+--- 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
  
  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.23.52.0.1/ld/testsuite/ld-sh/tlsbin-2.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sh/tlsbin-2.d
+--- 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.*
  
  Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
   Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
---- binutils-2.23.52.0.1/ld/testsuite/ld-sh/tlspic-2.d
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sh/tlspic-2.d
+--- 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\)
  
  Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 10 entries:
   Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
---- binutils-2.23.52.0.1/ld/testsuite/ld-sparc/gotop32.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sparc/gotop32.rd
+--- 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
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-sparc/gotop64.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sparc/gotop64.rd
+--- 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
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunbin32.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunbin32.rd
+--- 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:
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunbin64.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunbin64.rd
+--- 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:
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunnopic32.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunnopic32.rd
+--- 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
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 12 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunnopic64.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunnopic64.rd
+--- 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
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunpic32.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunpic32.rd
+--- 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
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunpic64.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-sparc/tlssunpic64.rd
+--- 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
  #...
  
  Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
---- binutils-2.23.52.0.1/ld/testsuite/ld-x86-64/tlsgdesc.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-x86-64/tlsgdesc.rd
+--- 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.*
  
  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.23.52.0.1/ld/testsuite/ld-x86-64/tlspic.rd
-+++ binutils-2.23.52.0.1/ld/testsuite/ld-x86-64/tlspic.rd
+--- 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+11ac 0x0+2011ac 0x0+2011ac 0x0+244 0x0+244 RW +0x200000
-  +DYNAMIC +0x0+1210 0x0+201210 0x0+201210 0x0+130 0x0+130 RW +0x8
-  +TLS +0x0+11ac 0x0+2011ac 0x0+2011ac 0x0+60 0x0+80 R +0x1
+  +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:
diff --git a/binutils/patches/binutils-2.24-set-section-macros.patch0 b/binutils/patches/binutils-2.24-set-section-macros.patch0
new file mode 100644 (file)
index 0000000..6171c48
--- /dev/null
@@ -0,0 +1,103 @@
+diff -rcp ../binutils-2.24.orig/bfd/bfd-in2.h bfd/bfd-in2.h
+*** ../binutils-2.24.orig/bfd/bfd-in2.h        2014-04-22 12:03:35.226872578 +0100
+--- bfd/bfd-in2.h      2014-04-22 12:07:51.556393678 +0100
+*************** typedef struct bfd_section *sec_ptr;
+*** 294,302 ****
+  
+  #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
+  
+- #define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
+- #define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
+- #define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
+  /* Find the address one past the end of SEC.  */
+  #define bfd_get_section_limit(bfd, sec) \
+    (((bfd)->direction != write_direction && (sec)->rawsize != 0       \
+--- 294,299 ----
+*************** struct relax_table {
+*** 1592,1597 ****
+--- 1589,1620 ----
+    int size;
+  };
+  
++ /* Note: the following are provided as inline functions rather than macros
++    because not all callers use the return value.  A macro implementation
++    would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
++    compilers will complain about comma expressions that have no effect.  */
++ static inline bfd_boolean
++ bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
++ {
++   ptr->userdata = val;
++   return TRUE;
++ }
++ 
++ static inline bfd_boolean
++ bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
++ {
++   ptr->vma = ptr->lma = val;
++   ptr->user_set_vma = TRUE;
++   return TRUE;
++ }
++ 
++ static inline bfd_boolean
++ bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
++ {
++   ptr->alignment_power = val;
++   return TRUE;
++ }
++ 
+  /* These sections are global, and are managed by BFD.  The application
+     and target back end are not permitted to change the values in
+     these sections.  */
+diff -rcp ../binutils-2.24.orig/bfd/bfd-in.h bfd/bfd-in.h
+*** ../binutils-2.24.orig/bfd/bfd-in.h 2014-04-22 12:03:35.272868967 +0100
+--- bfd/bfd-in.h       2014-04-22 12:06:12.850914084 +0100
+*************** typedef struct bfd_section *sec_ptr;
+*** 287,295 ****
+  
+  #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
+  
+- #define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
+- #define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
+- #define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
+  /* Find the address one past the end of SEC.  */
+  #define bfd_get_section_limit(bfd, sec) \
+    (((bfd)->direction != write_direction && (sec)->rawsize != 0       \
+--- 287,292 ----
+diff -rcp ../binutils-2.24.orig/bfd/section.c bfd/section.c
+*** ../binutils-2.24.orig/bfd/section.c        2014-04-22 12:03:35.215873442 +0100
+--- bfd/section.c      2014-04-22 12:06:55.795118059 +0100
+*************** CODE_FRAGMENT
+*** 542,547 ****
+--- 542,573 ----
+  .  int size;
+  .};
+  .
++ .{* Note: the following are provided as inline functions rather than macros
++ .   because not all callers use the return value.  A macro implementation
++ .   would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
++ .   compilers will complain about comma expressions that have no effect.  *}
++ .static inline bfd_boolean
++ .bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
++ .{
++ .  ptr->userdata = val;
++ .  return TRUE;
++ .}
++ .
++ .static inline bfd_boolean
++ .bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
++ .{
++ .  ptr->vma = ptr->lma = val;
++ .  ptr->user_set_vma = TRUE;
++ .  return TRUE;
++ .}
++ .
++ .static inline bfd_boolean
++ .bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
++ .{
++ .  ptr->alignment_power = val;
++ .  return TRUE;
++ .}
++ .
+  .{* These sections are global, and are managed by BFD.  The application
+  .   and target back end are not permitted to change the values in
+  .   these sections.  *}
diff --git a/binutils/patches/binutils-2.24-symbol-warning.patch b/binutils/patches/binutils-2.24-symbol-warning.patch
new file mode 100644 (file)
index 0000000..aff6c48
--- /dev/null
@@ -0,0 +1,114 @@
+From 4c6d802e592b3762a149c343bc5722e065e57841 Mon Sep 17 00:00:00 2001
+From: H.J. Lu <hjl.tools@gmail.com>
+Date: Wed, 26 Mar 2014 12:18:59 -0700
+Subject: [PATCH] Scan all input files for symbol reference warning
+
+This patch scans all input files for symbol reference warning if the
+symbol reference doesn't exist in the current input file.
+
+ld/
+
+       PR ld/16756
+       * ldmain.c (symbol_warning): New function.
+       (warning_callback): Use it.  Scan all input files for a reference
+       to SYMBOL.
+
+ld/testsuite/
+
+       PR ld/16756
+       * ld-plugin/lto.exp: Expect filename and line number for PR
+       ld/12760 test.
+---
+ ld/ChangeLog                   |    7 ++++
+ ld/ldmain.c                    |   43 ++++++++++++++++----------
+ ld/testsuite/ChangeLog         |   64 ++++++++++++++++++++++------------------
+ ld/testsuite/ld-plugin/lto.exp |    4 +-
+ 4 files changed, 70 insertions(+), 48 deletions(-)
+
+diff --git a/ld/ldmain.c b/ld/ldmain.c
+index ffc9f84..14253a6 100644
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -1150,6 +1150,25 @@ struct warning_callback_info
+   asymbol **asymbols;
+ };
++/* Look through the relocs to see if we can find a plausible address
++   for SYMBOL in ABFD.  Return TRUE if found.  Otherwise return FALSE.  */
++
++static bfd_boolean
++symbol_warning (const char *warning, const char *symbol, bfd *abfd)
++{
++  struct warning_callback_info cinfo;
++
++  if (!bfd_generic_link_read_symbols (abfd))
++    einfo (_("%B%F: could not read symbols: %E\n"), abfd);
++
++  cinfo.found = FALSE;
++  cinfo.warning = warning;
++  cinfo.symbol = symbol;
++  cinfo.asymbols = bfd_get_outsymbols (abfd);
++  bfd_map_over_sections (abfd, warning_find_reloc, &cinfo);
++  return cinfo.found;
++}
++
+ /* This is called when there is a reference to a warning symbol.  */
+ static bfd_boolean
+--- a/ld/ldmain.c      2014-06-24 14:04:00.700594584 -0400
++++ b/ld/ldmain.c      2014-06-24 14:07:19.452270808 -0400
+@@ -1172,24 +1172,14 @@
+     einfo ("%P: %s%s\n", _("warning: "), warning);
+   else if (symbol == NULL)
+     einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
+-  else if ((abfd->flags & BFD_PLUGIN) == 0)
++  else if (! symbol_warning (warning, symbol, abfd))
+     {
+-      struct warning_callback_info cinfo;
+-
+-      /* Look through the relocs to see if we can find a plausible
+-       address.  */
+-
+-      if (!bfd_generic_link_read_symbols (abfd))
+-      einfo (_("%B%F: could not read symbols: %E\n"), abfd);
+-
+-      cinfo.found = FALSE;
+-      cinfo.warning = warning;
+-      cinfo.symbol = symbol;
+-      cinfo.asymbols = bfd_get_outsymbols (abfd);
+-      bfd_map_over_sections (abfd, warning_find_reloc, &cinfo);
+-
+-      if (! cinfo.found)
+-      einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
++      bfd *b;
++      /* Search all input files for a reference to SYMBOL.  */
++      for (b = info->input_bfds; b; b = b->link_next)
++      if (b != abfd && symbol_warning (warning, symbol, b))
++        return TRUE;
++      einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
+     }
+   return TRUE;
+diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
+index af7307f..53543a6 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -116,14 +116,14 @@ set lto_link_tests {
+    "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" ""
+    {dummy.c} {} "pr12758.exe"}
+   {"Build libdummy.a PR ld/12760"
+-   "" ""
++   "" "-g -O0"
+    {pr12760a.c} {} "libdummy.a"}
+   {"Build libpr12760.a"
+    "" "-flto -O2 -ffat-lto-objects"
+    {pr12760b.c} {} "libpr12760.a"}
+   {"PR ld/12760"
+    "-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" ""
+-   {dummy.c} {} "pr12760.exe" "c" "warning: Bad bar"}
++   {dummy.c} {} "pr12760.exe" "c" "pr12760a.c:6: warning: Bad bar"}
+   {"Build libpr13183.a"
+    "-T" "-flto -O2 -ffat-lto-objects"
+    {pr13183a.c} {} "libpr13183.a"}
+-- 
+1.7.1
diff --git a/binutils/patches/binutils-2.24-use-relro.patch b/binutils/patches/binutils-2.24-use-relro.patch
new file mode 100644 (file)
index 0000000..db3276b
--- /dev/null
@@ -0,0 +1,9 @@
+background:
+http://www.airs.com/blog/archives/189
+
+--- binutils/ld/ldmain.c
++++ binutils/ld/ldmain.c
+@@ -293,2 +293,3 @@ main (int argc, char **argv)
+   link_info.combreloc = TRUE;
++  link_info.relro = TRUE;
+   link_info.strip_discarded = TRUE;
diff --git a/binutils/patches/binutils-2.24-weak-sym-merge.patch0 b/binutils/patches/binutils-2.24-weak-sym-merge.patch0
new file mode 100644 (file)
index 0000000..0625f0d
--- /dev/null
@@ -0,0 +1,22 @@
+*** ../binutils-2.24.orig/bfd/elflink.c        2014-08-15 14:12:59.933394436 +0100
+--- bfd/elflink.c      2014-08-15 14:40:54.787075416 +0100
+*************** _bfd_elf_merge_symbol (bfd *abfd,
+*** 1437,1443 ****
+        if (!(oldbfd != NULL
+           && (oldbfd->flags & BFD_PLUGIN) != 0
+           && (abfd->flags & BFD_PLUGIN) == 0))
+!      *skip = TRUE;
+  
+        /* Merge st_other.  If the symbol already has a dynamic index,
+        but visibility says it should not be visible, turn it into a
+--- 1437,1446 ----
+        if (!(oldbfd != NULL
+           && (oldbfd->flags & BFD_PLUGIN) != 0
+           && (abfd->flags & BFD_PLUGIN) == 0))
+!      {
+!        newdef = FALSE;
+!        *skip = TRUE;
+!      }
+  
+        /* Merge st_other.  If the symbol already has a dynamic index,
+        but visibility says it should not be visible, turn it into a
diff --git a/binutils/patches/binutils-HEAD-change-ld-notice-interface.patch b/binutils/patches/binutils-HEAD-change-ld-notice-interface.patch
new file mode 100644 (file)
index 0000000..db2ea9b
--- /dev/null
@@ -0,0 +1,398 @@
+From 4613510308cea27713e8c7424b2afee9b99f6226 Mon Sep 17 00:00:00 2001
+From: Alan Modra <amodra@gmail.com>
+Date: Tue, 12 Aug 2014 10:43:33 +0930
+Subject: [PATCH] Change ld "notice" interface for better handling of
+ indirect symbols
+
+The main aim of this change was to have non_ir_ref set correctly on
+new indirect symbols.  I could have added a "copy" param to the "notice"
+function, so that indirect symbols could be created in plugin_notice,
+but it seemed cleaner to create indirect syms earlier and pass them
+rather than "string" to "notice".
+
+include/
+       * bfdlink.h (struct bfd_link_callbacks <notice>): Remove "string"
+       param, add "inh".
+bfd/
+       * coff-aux.c (coff_m68k_aux_link_add_one_symbol): Only call "notice"
+       here when not calling the generic add_symbol function.  Formatting.
+       Correct handling of indirect symbols.  Update notice call.
+       * elflink.c (_bfd_elf_notice_as_needed): Update notice call.
+       * linker.c (_bfd_generic_link_add_one_symbol): Create indirect
+       symbols early.  Update notice call.  Add comments regarding weak
+       symbols vs. indirect.
+ld/
+       * ldmain.c (notice): Update args.
+       * plugin.c (plugin_notice): Likewise.  Follow warning sym link.
+       Handle new indirect symbol.
+---
+ bfd/coff-aux.c    | 62 ++++++++++++++++++++++-------------------
+ bfd/elflink.c     |  2 +-
+ bfd/linker.c      | 82 +++++++++++++++++++++++++++++--------------------------
+ include/bfdlink.h | 13 ++++-----
+ ld/ldmain.c       |  6 ++--
+ ld/plugin.c       | 33 ++++++++++++----------
+ 9 files changed, 128 insertions(+), 91 deletions(-)
+
+diff --git a/bfd/coff-aux.c b/bfd/coff-aux.c
+index e79c77a..d95b98b 100644
+--- a/bfd/coff-aux.c
++++ b/bfd/coff-aux.c
+@@ -73,20 +73,17 @@ coff_m68k_aux_link_add_one_symbol (struct bfd_link_info *info,
+                                  bfd_boolean collect,
+                                  struct bfd_link_hash_entry **hashp)
+ {
+-  struct bfd_link_hash_entry *h;
++  struct bfd_link_hash_entry *h, *inh, *t;
+-  if ((flags & (BSF_WARNING | BSF_CONSTRUCTOR | BSF_WEAK)) == 0 &&
+-      !bfd_is_und_section (section) &&
+-      !bfd_is_com_section (section))
++  if ((flags & (BSF_WARNING | BSF_CONSTRUCTOR | BSF_WEAK)) == 0
++      && !bfd_is_und_section (section)
++      && !bfd_is_com_section (section))
+     {
+       /* The new symbol is a definition or an indirect definition */
+       /* This bit copied from linker.c */
+       if (hashp != NULL && *hashp != NULL)
+-      {
+-        h = *hashp;
+-        BFD_ASSERT (strcmp (h->root.string, name) == 0);
+-      }
++      h = *hashp;
+       else
+       {
+         h = bfd_link_hash_lookup (info->hash, name, TRUE, copy, FALSE);
+@@ -98,37 +95,46 @@ coff_m68k_aux_link_add_one_symbol (struct bfd_link_info *info,
+           }
+       }
+-      if (info->notice_hash != (struct bfd_hash_table *) NULL
+-        && (bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE)
+-            != (struct bfd_hash_entry *) NULL))
+-      {
+-        if (! (*info->callbacks->notice) (info, h, abfd, section, value,
+-                                          flags, string))
+-          return FALSE;
+-      }
+-
+       if (hashp != (struct bfd_link_hash_entry **) NULL)
+       *hashp = h;
+       /* end duplication from linker.c */
+-      if (h->type == bfd_link_hash_defined
+-        || h->type == bfd_link_hash_indirect)
++      t = h;
++      inh = NULL;
++      if (h->type == bfd_link_hash_indirect)
+       {
+-        asection *msec;
++        inh = h->u.i.link;
++        t = inh;
++      }
+-        if (h->type == bfd_link_hash_defined)
+-          msec = h->u.def.section;
+-        else
+-          msec = bfd_ind_section_ptr;
++      if (t->type == bfd_link_hash_defined)
++      {
++        asection *msec = t->u.def.section;
++        bfd_boolean special = FALSE;
+         if (bfd_is_abs_section (msec) && !bfd_is_abs_section (section))
+           {
+-            h->u.def.section = section;
+-            h->u.def.value = value;
+-            return TRUE;
++            t->u.def.section = section;
++            t->u.def.value = value;
++            special = TRUE;
+           }
+         else if (bfd_is_abs_section (section) && !bfd_is_abs_section (msec))
+-          return TRUE;
++          special = TRUE;
++
++        if (special)
++          {
++            if (info->notice_all
++                || (info->notice_hash != NULL
++                    && bfd_hash_lookup (info->notice_hash, name,
++                                        FALSE, FALSE) != NULL))
++              {
++                if (!(*info->callbacks->notice) (info, h, inh,
++                                                 abfd, section, value, flags))
++                  return FALSE;
++              }
++
++            return TRUE;
++          }
+       }
+     }
+diff --git a/bfd/elflink.c b/bfd/elflink.c
+index 69a87a6..de0a734 100644
+--- a/bfd/elflink.c
++++ b/bfd/elflink.c
+@@ -3299,7 +3299,7 @@ _bfd_elf_notice_as_needed (bfd *ibfd,
+                          struct bfd_link_info *info,
+                          enum notice_asneeded_action act)
+ {
+-  return (*info->callbacks->notice) (info, NULL, ibfd, NULL, act, 0, NULL);
++  return (*info->callbacks->notice) (info, NULL, NULL, ibfd, NULL, act, 0);
+ }
+ /* Add symbols from an ELF object file to the linker hash table.  */
+diff --git a/bfd/linker.c b/bfd/linker.c
+index 1a5ecef..abdf5b0 100644
+--- a/bfd/linker.c
++++ b/bfd/linker.c
+@@ -1442,13 +1442,23 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
+ {
+   enum link_row row;
+   struct bfd_link_hash_entry *h;
++  struct bfd_link_hash_entry *inh = NULL;
+   bfd_boolean cycle;
+   BFD_ASSERT (section != NULL);
+   if (bfd_is_ind_section (section)
+       || (flags & BSF_INDIRECT) != 0)
+-    row = INDR_ROW;
++    {
++      row = INDR_ROW;
++      /* Create the indirect symbol here.  This is for the benefit of
++       the plugin "notice" function.
++       STRING is the name of the symbol we want to indirect to.  */
++      inh = bfd_wrapped_link_hash_lookup (abfd, info, string, TRUE,
++                                        copy, FALSE);
++      if (inh == NULL)
++      return FALSE;
++    }
+   else if ((flags & BSF_WARNING) != 0)
+     row = WARN_ROW;
+   else if ((flags & BSF_CONSTRUCTOR) != 0)
+@@ -1493,8 +1503,8 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
+       || (info->notice_hash != NULL
+         && bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE) != NULL))
+     {
+-      if (! (*info->callbacks->notice) (info, h,
+-                                      abfd, section, value, flags, string))
++      if (! (*info->callbacks->notice) (info, h, inh,
++                                      abfd, section, value, flags))
+       return FALSE;
+     }
+@@ -1728,44 +1738,40 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
+           return FALSE;
+         /* Fall through.  */
+       case IND:
+-        /* Create an indirect symbol.  */
+-        {
+-          struct bfd_link_hash_entry *inh;
+-
+-          /* STRING is the name of the symbol we want to indirect
+-             to.  */
+-          inh = bfd_wrapped_link_hash_lookup (abfd, info, string, TRUE,
+-                                              copy, FALSE);
+-          if (inh == NULL)
++        if (inh->type == bfd_link_hash_indirect
++            && inh->u.i.link == h)
++          {
++            (*_bfd_error_handler)
++              (_("%B: indirect symbol `%s' to `%s' is a loop"),
++               abfd, name, string);
++            bfd_set_error (bfd_error_invalid_operation);
+             return FALSE;
+-          if (inh->type == bfd_link_hash_indirect
+-              && inh->u.i.link == h)
+-            {
+-              (*_bfd_error_handler)
+-                (_("%B: indirect symbol `%s' to `%s' is a loop"),
+-                 abfd, name, string);
+-              bfd_set_error (bfd_error_invalid_operation);
+-              return FALSE;
+-            }
+-          if (inh->type == bfd_link_hash_new)
+-            {
+-              inh->type = bfd_link_hash_undefined;
+-              inh->u.undef.abfd = abfd;
+-              bfd_link_add_undef (info->hash, inh);
+-            }
++          }
++        if (inh->type == bfd_link_hash_new)
++          {
++            inh->type = bfd_link_hash_undefined;
++            inh->u.undef.abfd = abfd;
++            bfd_link_add_undef (info->hash, inh);
++          }
+-          /* If the indirect symbol has been referenced, we need to
+-             push the reference down to the symbol we are
+-             referencing.  */
+-          if (h->type != bfd_link_hash_new)
+-            {
+-              row = UNDEF_ROW;
+-              cycle = TRUE;
+-            }
++        /* If the indirect symbol has been referenced, we need to
++           push the reference down to the symbol we are referencing.  */
++        if (h->type != bfd_link_hash_new)
++          {
++            /* ??? If inh->type == bfd_link_hash_undefweak this
++               converts inh to bfd_link_hash_undefined.  */
++            row = UNDEF_ROW;
++            cycle = TRUE;
++          }
+-          h->type = bfd_link_hash_indirect;
+-          h->u.i.link = inh;
+-        }
++        h->type = bfd_link_hash_indirect;
++        h->u.i.link = inh;
++        /* Not setting h = h->u.i.link here means that when cycle is
++           set above we'll always go to REFC, and then cycle again
++           to the indirected symbol.  This means that any successful
++           change of an existing symbol to indirect counts as a
++           reference.  ??? That may not be correct when the existing
++           symbol was defweak.  */
+         break;
+       case SET:
+diff --git a/include/bfdlink.h b/include/bfdlink.h
+index 58dba2a..125683d 100644
+--- a/include/bfdlink.h
++++ b/include/bfdlink.h
+@@ -640,15 +640,14 @@ struct bfd_link_callbacks
+     (struct bfd_link_info *, const char *name,
+      bfd *abfd, asection *section, bfd_vma address);
+   /* A function which is called when a symbol in notice_hash is
+-     defined or referenced.  H is the symbol.  ABFD, SECTION and
+-     ADDRESS are the (new) value of the symbol.  If SECTION is
+-     bfd_und_section, this is a reference.  FLAGS are the symbol
+-     BSF_* flags.  STRING is the name of the symbol to indirect to if
+-     the sym is indirect, or the warning string if a warning sym.  */
++     defined or referenced.  H is the symbol, INH the indirect symbol
++     if applicable.  ABFD, SECTION and ADDRESS are the (new) value of
++     the symbol.  If SECTION is bfd_und_section, this is a reference.
++     FLAGS are the symbol BSF_* flags.  */
+   bfd_boolean (*notice)
+     (struct bfd_link_info *, struct bfd_link_hash_entry *h,
+-     bfd *abfd, asection *section, bfd_vma address, flagword flags,
+-     const char *string);
++     struct bfd_link_hash_entry *inh,
++     bfd *abfd, asection *section, bfd_vma address, flagword flags);
+   /* Error or warning link info message.  */
+   void (*einfo)
+     (const char *fmt, ...);
+diff --git a/ld/ldmain.c b/ld/ldmain.c
+index ea25afe..77235d5 100644
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -137,7 +137,7 @@ static bfd_boolean unattached_reloc
+   (struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma);
+ static bfd_boolean notice
+   (struct bfd_link_info *, struct bfd_link_hash_entry *,
+-   bfd *, asection *, bfd_vma, flagword, const char *);
++   struct bfd_link_hash_entry *, bfd *, asection *, bfd_vma, flagword);
+ static struct bfd_link_callbacks link_callbacks =
+ {
+@@ -1461,11 +1461,11 @@ unattached_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ static bfd_boolean
+ notice (struct bfd_link_info *info,
+       struct bfd_link_hash_entry *h,
++      struct bfd_link_hash_entry *inh ATTRIBUTE_UNUSED,
+       bfd *abfd,
+       asection *section,
+       bfd_vma value,
+-      flagword flags ATTRIBUTE_UNUSED,
+-      const char *string ATTRIBUTE_UNUSED)
++      flagword flags ATTRIBUTE_UNUSED)
+ {
+   const char *name;
+diff --git a/ld/plugin.c b/ld/plugin.c
+index 8d6ae05..8cca7d0 100644
+--- a/ld/plugin.c
++++ b/ld/plugin.c
+@@ -127,8 +127,9 @@ static const size_t tv_header_size = ARRAY_SIZE (tv_header_tags);
+ /* Forward references.  */
+ static bfd_boolean plugin_notice (struct bfd_link_info *,
+-                                struct bfd_link_hash_entry *, bfd *,
+-                                asection *, bfd_vma, flagword, const char *);
++                                struct bfd_link_hash_entry *,
++                                struct bfd_link_hash_entry *,
++                                bfd *, asection *, bfd_vma, flagword);
+ #if !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H)
+@@ -962,16 +963,21 @@ plugin_call_cleanup (void)
+ static bfd_boolean
+ plugin_notice (struct bfd_link_info *info,
+              struct bfd_link_hash_entry *h,
++             struct bfd_link_hash_entry *inh,
+              bfd *abfd,
+              asection *section,
+              bfd_vma value,
+-             flagword flags,
+-             const char *string)
++             flagword flags)
+ {
++  struct bfd_link_hash_entry *orig_h = h;
++
+   if (h != NULL)
+     {
+       bfd *sym_bfd;
++      if (h->type == bfd_link_hash_warning)
++      h = h->u.i.link;
++
+       /* Nothing to do here if this def/ref is from an IR dummy BFD.  */
+       if (is_ir_dummy_bfd (abfd))
+       ;
+@@ -981,16 +987,15 @@ plugin_notice (struct bfd_link_info *info,
+       else if (bfd_is_ind_section (section)
+              || (flags & BSF_INDIRECT) != 0)
+       {
++        /* ??? Some of this is questionable.  See comments in
++           _bfd_generic_link_add_one_symbol for case IND.  */
+         if (h->type != bfd_link_hash_new)
+           {
+-            struct bfd_link_hash_entry *inh;
+-
+             h->non_ir_ref = TRUE;
+-            inh = bfd_wrapped_link_hash_lookup (abfd, info, string, FALSE,
+-                                                FALSE, FALSE);
+-            if (inh != NULL)
+-              inh->non_ir_ref = TRUE;
++            inh->non_ir_ref = TRUE;
+           }
++        else if (inh->type == bfd_link_hash_new)
++          inh->non_ir_ref = TRUE;
+       }
+       /* Nothing to do here for warning symbols.  */
+@@ -1031,13 +1036,13 @@ plugin_notice (struct bfd_link_info *info,
+     }
+   /* Continue with cref/nocrossref/trace-sym processing.  */
+-  if (h == NULL
++  if (orig_h == NULL
+       || orig_notice_all
+       || (info->notice_hash != NULL
+-        && bfd_hash_lookup (info->notice_hash, h->root.string,
++        && bfd_hash_lookup (info->notice_hash, orig_h->root.string,
+                             FALSE, FALSE) != NULL))
+-    return (*orig_callbacks->notice) (info, h,
+-                                    abfd, section, value, flags, string);
++    return (*orig_callbacks->notice) (info, orig_h, inh,
++                                    abfd, section, value, flags);
+   return TRUE;
+ }
+-- 
+1.9.3
+
index 9ee3f8a5a6a5b4c200b90074196dc4ae0e729be4..8d5d36f56a828d26d12b512b4b8ae715ebf88b3a 100644 (file)
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = ccache
-version    = 3.1.9
-release    = 3
+version    = 3.2.1
+release    = 1
 
 groups     = Development/Compilers
 url        = http://ccache.samba.org/
@@ -39,10 +39,13 @@ build
        prepare_cmds
                # Disable pch test that fails
                sed -e "s/^pch_suite.*/& return 0/" -i test.sh
+
+               # Remove shipped zlib
+               rm -rf zlib
        end
 
        test
-               make check
+               SHELL=/bin/bash make check
        end
 
        install_cmds
diff --git a/ccache/patches/ccache-3.1.9-gcc48-tests.patch b/ccache/patches/ccache-3.1.9-gcc48-tests.patch
deleted file mode 100644 (file)
index 0175e6b..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-diff -up ccache-3.1.9/test.sh~ ccache-3.1.9/test.sh
---- ccache-3.1.9/test.sh~      2013-01-06 18:57:59.000000000 +0200
-+++ ccache-3.1.9/test.sh       2013-03-31 21:37:24.647552458 +0300
-@@ -3,7 +3,7 @@
- # A simple test suite for ccache.
- #
- # Copyright (C) 2002-2007 Andrew Tridgell
--# Copyright (C) 2009-2012 Joel Rosdahl
-+# Copyright (C) 2009-2013 Joel Rosdahl
- #
- # 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
-@@ -562,6 +562,12 @@ int test3;
- EOF
-     backdate test1.h test2.h test3.h
-+    $COMPILER -c -Wp,-MD,expected.d test.c
-+    expected_d_content=`cat expected.d`
-+
-+    $COMPILER -c -Wp,-MMD,expected_mmd.d test.c
-+    expected_mmd_d_content=`cat expected_mmd.d`
-+
-     ##################################################################
-     # First compilation is a miss.
-     testname="first compilation"
-@@ -677,7 +683,7 @@ EOF
-     checkstat 'cache hit (direct)' 0
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_d_content"
-     rm -f other.d
-@@ -685,7 +691,7 @@ EOF
-     checkstat 'cache hit (direct)' 1
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_d_content"
-     rm -f other.d
-@@ -698,7 +704,7 @@ EOF
-     checkstat 'cache hit (direct)' 0
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_mmd_d_content"
-     rm -f other.d
-@@ -706,7 +712,7 @@ EOF
-     checkstat 'cache hit (direct)' 1
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_mmd_d_content"
-     rm -f other.d
-@@ -760,7 +766,7 @@ EOF
-     checkstat 'cache hit (direct)' 0
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile test.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile test.d "$expected_d_content"
-     rm -f test.d
-@@ -768,7 +774,7 @@ EOF
-     checkstat 'cache hit (direct)' 1
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile test.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile test.d "$expected_d_content"
-     ##################################################################
-     # Check the scenario of running a ccache with direct mode on a cache
-@@ -780,7 +786,7 @@ EOF
-     checkstat 'cache hit (direct)' 0
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile test.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile test.d "$expected_d_content"
-     rm -f test.d
-@@ -788,7 +794,7 @@ EOF
-     checkstat 'cache hit (direct)' 0
-     checkstat 'cache hit (preprocessed)' 1
-     checkstat 'cache miss' 1
--    checkfile test.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile test.d "$expected_d_content"
-     rm -f test.d
-@@ -796,7 +802,7 @@ EOF
-     checkstat 'cache hit (direct)' 0
-     checkstat 'cache hit (preprocessed)' 2
-     checkstat 'cache miss' 1
--    checkfile test.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile test.d "$expected_d_content"
-     rm -f test.d
-@@ -804,7 +810,7 @@ EOF
-     checkstat 'cache hit (direct)' 1
-     checkstat 'cache hit (preprocessed)' 2
-     checkstat 'cache miss' 1
--    checkfile test.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile test.d "$expected_d_content"
-     ##################################################################
-     # Check that -MF works.
-@@ -815,7 +821,7 @@ EOF
-     checkstat 'cache hit (direct)' 0
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_d_content"
-     rm -f other.d
-@@ -823,7 +829,7 @@ EOF
-     checkstat 'cache hit (direct)' 1
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_d_content"
-     ##################################################################
-     # Check that a missing .d file in the cache is handled correctly.
-@@ -835,13 +841,13 @@ EOF
-     checkstat 'cache hit (direct)' 0
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_d_content"
-     $CCACHE $COMPILER -c -MD test.c
-     checkstat 'cache hit (direct)' 1
-     checkstat 'cache hit (preprocessed)' 0
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_d_content"
-     find $CCACHE_DIR -name '*.d' -exec rm -f '{}' \;
-@@ -849,7 +855,7 @@ EOF
-     checkstat 'cache hit (direct)' 1
-     checkstat 'cache hit (preprocessed)' 1
-     checkstat 'cache miss' 1
--    checkfile other.d "test.o: test.c test1.h test3.h test2.h"
-+    checkfile other.d "$expected_d_content"
-     ##################################################################
-     # Check that stderr from both the preprocessor and the compiler is emitted
diff --git a/cloog/cloog.nm b/cloog/cloog.nm
new file mode 100644 (file)
index 0000000..ad1de92
--- /dev/null
@@ -0,0 +1,49 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = cloog
+version    = 0.18.1
+release    = 1
+
+groups     = System/Libraries
+url        = http://www.bastoul.net/cloog/
+license    = GPL
+summary    = Library that generates loops for scanning polyhedra
+
+description
+       CLooG is a software which generates loops for scanning Z-polyhedra.
+       That is, CLooG finds the code or pseudo-code where each integral point
+       of one or more parametrized polyhedron or parametrized polyhedra union
+       is reached. CLooG is designed to avoid control overhead and to produce
+       a very efficient code.
+end
+
+source_dl += http://www.bastoul.net/cloog/pages/download/
+
+build
+       requires
+               gmp-devel
+               isl-devel
+       end
+
+       configure_options += \
+               --with-isl=system
+
+       test
+               make check
+       end
+end
+
+packages
+       package %{name}
+
+       package %{name}-devel
+               template DEVEL
+       end
+
+       package %{name}-debuginfo
+               template DEBUGINFO
+       end
+end
index 222a9509a517d5c64c31196972d832ba166f15b7..f37e5ef4a1ad24b581bb336057fe5b559d4cfe04 100644 (file)
@@ -3,7 +3,7 @@
 #
 
 __cmake = /usr/bin/cmake
-if "${lib}" == "lib64"
+if "%{lib}" == "lib64"
        __cmake_lib_suffix = -DLIB_SUFFIX=64
 end
 
index c037f8737b00c28df7fcb3ec08126d4cf52f5f85..c2e139c7734bab61ed1064cc446449bcb07fc4cf 100644 (file)
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = cmake
-version    = 2.8.4
-release    = 2
+version    = 3.0.2
+release    = 1
 
 groups     = Development/Tools
 url        = http://www.cmake.org
@@ -25,6 +25,8 @@ description
        generation, code generation, and template instantiation.
 end
 
+source_dl  = http://www.cmake.org/files/v3.0/
+
 build
        requires
                expat-devel
diff --git a/cmake/patches/cmake-strict_aliasing.patch b/cmake/patches/cmake-strict_aliasing.patch
new file mode 100644 (file)
index 0000000..2bc1555
--- /dev/null
@@ -0,0 +1,19 @@
+diff -up cmake-2.8.11/Source/CMakeLists.txt\~ cmake-2.8.11/Source/CMakeLists.txt
+--- cmake-2.8.11/Source/CMakeLists.txt~        2013-05-15 19:38:13.000000000 +0200
++++ cmake-2.8.11/Source/CMakeLists.txt 2013-07-25 16:35:01.200389140 +0200
+@@ -308,6 +308,13 @@ if(APPLE)
+     cmLocalXCodeGenerator.h)
+ endif()
++# GCC shows strict aliasing warnings with cm_sha2.c.  Turn off the
++# corresponding optimizations.
++if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
++  set_source_files_properties(cm_sha2.c PROPERTIES
++                            COMPILE_FLAGS "-fno-strict-aliasing")
++endif()
++
+ if (WIN32)
+   set(SRCS ${SRCS}
+
+Diff finished.  Thu Jul 25 16:35:18 2013
similarity index 60%
rename from cloog-ppl/cloog-ppl.nm
rename to compat-cloog-ppl/compat-cloog-ppl.nm
index 9fed814a857bcc524bb6160ada62109a41fdda4f..42511e6d01e6d2d70b9f4459dc5e7147f7c74dd4 100644 (file)
@@ -3,21 +3,23 @@
 # Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
 ###############################################################################
 
-name       = cloog-ppl
+name       = compat-cloog-ppl
 version    = 0.15.11
 release    = 2
+thisapp    = cloog-ppl-%{version}
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
 groups     = System/Libraries
 url        = http://www.cloog.org
 license    = GPLv2+
-summary    = The Chunky Loop Generator.
+summary    = The Chunky Loop Generator
 
 description
-       CLooG is a software which generates loops for scanning Z-polyhedra. That is, \
-       CLooG finds the code or pseudo-code where each integral point of one or more \
-       parametrized polyhedron or parametrized polyhedra union is reached. CLooG is \
-       designed to avoid control overhead and to produce a very efficient code.
+       CLooG is a software which generates loops for scanning Z-polyhedra.
+       That is, CLooG finds the code or pseudo-code where each integral point
+       of one or more parametrized polyhedron or parametrized polyhedra union
+       is reached. CLooG is designed to avoid control overhead and to produce
+       a very efficient code.
 end
 
 source_dl += ftp://gcc.gnu.org/pub/gcc/infrastructure/
@@ -42,13 +44,23 @@ build
        test
                make check
        end
+
+       install
+               mkdir -pv %{BUILDROOT}%{libdir}
+               install -v -m 755 .libs/libcloog.so.0.0.0 %{BUILDROOT}%{libdir}
+               ln -svf libcloog.so.0.0.0 %{BUILDROOT}%{libdir}/libcloog.so.0
+       end
 end
 
 packages
        package %{name}
+               provides
+                       cloog-ppl = %{thisver}
+               end
 
-       package %{name}-devel
-               template DEVEL
+               obsoletes
+                       cloog-ppl <= %{thisver}
+               end
        end
 
        package %{name}-debuginfo
index f377aae606c333ca6dbf47bc6db6b68037ccf32f..af1dae7f920e7c952903ef15d620e95a88f12338 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = coreutils
-version    = 8.21
+version    = 8.23
 release    = 1
 
 groups     = System/Base
@@ -37,18 +37,18 @@ build
 
        CFLAGS += \
                -D_GNU_SOURCE=1 \
-               -fno-strict-aliasing
+               -fno-strict-aliasing \
+               -fpic
 
        configure_options += \
+               FORCE_UNSAFE_CONFIGURE=1 \
+               --enable-dependency-tracking \
                --libexecdir=%{libdir} \
-               --enable-selinux \
                --enable-largefile \
                --disable-rpath \
                --enable-install-program=arch \
                --enable-no-install-program=hostname,kill,uptime \
                --with-tty-group \
-               \
-               gl_cv_func_mknod_works=yes
 
        prepare_cmds
                autoreconf -vfi
index 0e25f49864e33d0d77612f84e93adb17ca678bcc..eda68eb2d2853e38d717aed0a30ca73331077553 100644 (file)
@@ -1,6 +1,26 @@
-diff -urNp coreutils-8.21-orig/lib/linebuffer.h coreutils-8.21/lib/linebuffer.h
---- coreutils-8.21-orig/lib/linebuffer.h       2013-01-02 13:34:46.000000000 +0100
-+++ coreutils-8.21/lib/linebuffer.h    2013-02-15 14:25:07.758469108 +0100
+Submitted by:            Matt Burgess (matthew_at_linuxfromscratch_dot_org)
+Date:                    2013-12-16
+Initial Package Version: 8.22 (Rebased for version 8.23 by bdubbs@linuxfromscratch.org))
+Upstream Status:         Rejected
+Origin:                  Based on Fedora's i18n patch at
+  http://pkgs.fedoraproject.org/cgit/coreutils.git/plain/coreutils-i18n.patch
+Description:             Fixes several i18n issues with various Coreutils programs
+
+
+diff -Naur coreutils-8.23.orig/Makefile.in coreutils-8.23/Makefile.in
+--- coreutils-8.23.orig/Makefile.in    2014-07-18 17:22:24.000000000 -0500
++++ coreutils-8.23/Makefile.in 2014-07-18 22:36:17.404066931 -0500
+@@ -5057,6 +5057,7 @@
+   tests/misc/chcon.sh                         \
+   tests/misc/chroot-credentials.sh            \
+   tests/misc/selinux.sh                               \
++  tests/misc/sort-mb-tests.sh                 \
+   tests/misc/truncate-owned-by-other.sh               \
+   tests/mkdir/writable-under-readonly.sh      \
+   tests/mkdir/smack-root.sh                   \
+diff -Naur coreutils-8.23.orig/lib/linebuffer.h coreutils-8.23/lib/linebuffer.h
+--- coreutils-8.23.orig/lib/linebuffer.h       2014-05-29 07:05:50.000000000 -0500
++++ coreutils-8.23/lib/linebuffer.h    2014-07-18 22:36:17.392067256 -0500
 @@ -21,6 +21,11 @@
  
  # include <stdio.h>
@@ -13,7 +33,7 @@ diff -urNp coreutils-8.21-orig/lib/linebuffer.h coreutils-8.21/lib/linebuffer.h
  /* A 'struct linebuffer' holds a line of text. */
  
  struct linebuffer
-@@ -28,6 +33,9 @@ struct linebuffer
+@@ -28,6 +33,9 @@
    size_t size;                  /* Allocated. */
    size_t length;                /* Used. */
    char *buffer;
@@ -23,9 +43,9 @@ diff -urNp coreutils-8.21-orig/lib/linebuffer.h coreutils-8.21/lib/linebuffer.h
  };
  
  /* Initialize linebuffer LINEBUFFER for use. */
-diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
---- coreutils-8.21-orig/src/cut.c      2013-02-05 00:40:31.000000000 +0100
-+++ coreutils-8.21/src/cut.c   2013-02-15 14:25:07.760467982 +0100
+diff -Naur coreutils-8.23.orig/src/cut.c coreutils-8.23/src/cut.c
+--- coreutils-8.23.orig/src/cut.c      2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/src/cut.c   2014-07-18 22:44:56.489482312 -0500
 @@ -28,6 +28,11 @@
  #include <assert.h>
  #include <getopt.h>
@@ -57,8 +77,8 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "cut"
  
-@@ -72,6 +89,52 @@
-     }                                                 \
+@@ -53,6 +70,52 @@
+     }                                                                 \
    while (0)
  
 +/* Refill the buffer BUF to get a multibyte character. */
@@ -75,7 +95,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +  while (0)
 +
 +/* Get wide character on BUFPOS. BUFPOS is not included after that.
-+   If byte sequence is not valid as a character, CONVFAIL is 1. Otherwise 0. */
++   If byte sequence is not valid as a character, CONVFAIL is true. Otherwise false. */
 +#define GET_NEXT_WC_FROM_BUFFER(WC, BUFPOS, BUFLEN, MBLENGTH, STATE, CONVFAIL) \
 +  do                                                                        \
 +    {                                                                        \
@@ -88,7 +108,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +        }                                                                \
 +                                                                        \
 +      /* Get a wide character. */                                        \
-+      CONVFAIL = 0;                                                        \
++      CONVFAIL = false;                                                        \
 +      state_bak = STATE;                                                \
 +      MBLENGTH = mbrtowc ((wchar_t *)&WC, BUFPOS, BUFLEN, &STATE);        \
 +                                                                        \
@@ -96,7 +116,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +        {                                                                \
 +        case (size_t)-1:                                                \
 +        case (size_t)-2:                                                \
-+          CONVFAIL++;                                                        \
++          CONVFAIL = true;                                                        \
 +          STATE = state_bak;                                                \
 +          /* Fall througn. */                                                \
 +                                                                        \
@@ -107,33 +127,19 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +    }                                                                        \
 +  while (0)
 +
  struct range_pair
    {
-     size_t lo;
-@@ -90,7 +153,7 @@ static char *field_1_buffer;
- /* The number of bytes allocated for FIELD_1_BUFFER.  */
- static size_t field_1_bufsize;
--/* The largest field or byte index used as an endpoint of a closed
-+/* The largest byte, character or field index used as an endpoint of a closed
-    or degenerate range specification;  this doesn't include the starting
-    index of right-open-ended ranges.  For example, with either range spec
-    '2-5,9-', '2-3,5,9-' this variable would be set to 5.  */
-@@ -102,10 +165,11 @@ static size_t eol_range_start;
- /* This is a bit vector.
-    In byte mode, which bytes to output.
-+   In character mode, which characters to output.
-    In field mode, which DELIM-separated fields to output.
--   Both bytes and fields are numbered starting with 1,
-+   Bytes, characters and fields are numbered starting with 1,
-    so the zeroth bit of this array is unused.
--   A field or byte K has been selected if
-+   A byte, character or field K has been selected if
-    (K <= MAX_RANGE_ENDPOINT and is_printable_field(K))
-     || (EOL_RANGE_START > 0 && K >= EOL_RANGE_START).  */
- static unsigned char *printable_field;
-@@ -114,15 +178,25 @@ enum operating_mode
+@@ -75,6 +138,8 @@
+ /* Number of `struct range_pair's allocated. */
+ static size_t n_rp_allocated;
++/* Length of the delimiter given as argument to -d.  */
++size_t delimlen;
+ /* Append LOW, HIGH to the list RP of range pairs, allocating additional
+    space if necessary.  Update global variable N_RP.  When allocating,
+@@ -106,15 +171,25 @@
    {
      undefined_mode,
  
@@ -144,7 +150,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +    /* Output characters that are at the given positions. */
 +    character_mode,
 +
-     /* Output the given delimeter-separated fields. */
+     /* Output the given delimiter-separated fields. */
      field_mode
    };
  
@@ -157,12 +163,12 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +   if this program runs on multibyte locale. */
 +static int force_singlebyte_mode;
 +
- /* If true do not output lines containing no delimeter characters.
+ /* If true do not output lines containing no delimiter characters.
     Otherwise, all such lines are printed.  This option is valid only
     with field mode.  */
-@@ -134,6 +208,9 @@ static bool complement;
+@@ -126,6 +201,9 @@
  
- /* The delimeter character for field mode. */
+ /* The delimiter character for field mode. */
  static unsigned char delim;
 +#if HAVE_WCHAR_H
 +static wchar_t wcdelim;
@@ -170,7 +176,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
  
  /* True if the --output-delimiter=STRING option was specified.  */
  static bool output_delimiter_specified;
-@@ -205,7 +282,7 @@ Print selected parts of lines from each 
+@@ -188,7 +266,7 @@
    -f, --fields=LIST       select only these fields;  also print any line\n\
                              that contains no delimiter character, unless\n\
                              the -s option is specified\n\
@@ -179,7 +185,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
  "), stdout);
        fputs (_("\
        --complement        complement the set of selected bytes, characters\n\
-@@ -480,6 +557,9 @@ set_fields (const char *fieldstr)
+@@ -381,6 +459,9 @@
                if (operating_mode == byte_mode)
                  error (0, 0,
                         _("byte offset %s is too large"), quote (bad_num));
@@ -189,7 +195,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
                else
                  error (0, 0,
                         _("field number %s is too large"), quote (bad_num));
-@@ -588,6 +668,77 @@ cut_bytes (FILE *stream)
+@@ -505,6 +586,82 @@
      }
  }
  
@@ -205,7 +211,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +static void
 +cut_characters_or_cut_bytes_no_split (FILE *stream)
 +{
-+  int idx;                /* number of bytes or characters in the line so far. */
++  size_t idx;                /* number of bytes or characters in the line so far. */
 +  char buf[MB_LEN_MAX + BUFSIZ];  /* For spooling a read byte sequence. */
 +  char *bufpos;                /* Next read position of BUF. */
 +  size_t buflen;        /* The length of the byte sequence in buf. */
@@ -213,7 +219,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +  size_t mblength;        /* The byte size of a multibyte character which shows
 +                           as same character as WC. */
 +  mbstate_t state;        /* State of the stream. */
-+  int convfail = 0;                /* 1, when conversion is failed. Otherwise 0. */
++  bool convfail = false;  /* true, when conversion failed. Otherwise false. */
 +  /* Whether to begin printing delimiters between ranges for the current line.
 +     Set after we've begun printing data corresponding to the first range.  */
 +  bool print_delimiter = false;
@@ -223,11 +229,14 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +  bufpos = buf;
 +  memset (&state, '\0', sizeof(mbstate_t));
 +
++  current_rp = rp;
++
 +  while (1)
 +    {
 +      REFILL_BUFFER (buf, bufpos, buflen, stream);
 +
 +      GET_NEXT_WC_FROM_BUFFER (wc, bufpos, buflen, mblength, state, convfail);
++      (void) convfail;  /* ignore unused */
 +
 +      if (wc == WEOF)
 +        {
@@ -240,20 +249,22 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +          putchar ('\n');
 +          idx = 0;
 +          print_delimiter = false;
++          current_rp = rp;
 +        }
 +      else
 +        {
-+          bool range_start;
-+          bool *rs = output_delimiter_specified ? &range_start : NULL;
-+          idx += (operating_mode == byte_mode) ? mblength : 1;
-+          if (print_kth (idx, rs))
++          next_item (&idx);
++          if (print_kth (idx))
 +            {
-+              if (rs && *rs && print_delimiter)
++              if (output_delimiter_specified)
 +                {
-+                  fwrite (output_delimiter_string, sizeof (char),
-+                         output_delimiter_length, stdout);
-+               }
-+              print_delimiter = true;
++                  if (print_delimiter && is_range_start_index (idx))
++                    {
++                      fwrite (output_delimiter_string, sizeof (char),
++                              output_delimiter_length, stdout);
++                    }
++                  print_delimiter = true;
++                }
 +              fwrite (bufpos, mblength, sizeof(char), stdout);
 +            }
 +        }
@@ -267,7 +278,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
  /* Read from stream STREAM, printing to standard output any selected fields.  */
  
  static void
-@@ -709,13 +860,195 @@ cut_fields (FILE *stream)
+@@ -649,13 +806,211 @@
      }
  }
  
@@ -276,7 +287,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +cut_fields_mb (FILE *stream)
 +{
 +  int c;
-+  unsigned int field_idx;
++  size_t field_idx;
 +  int found_any_selected_field;
 +  int buffer_first_field;
 +  int empty_input;
@@ -287,7 +298,9 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +  size_t mblength;        /* The byte size of a multibyte character which shows
 +                           as same character as WC. */
 +  mbstate_t state;        /* State of the stream. */
-+  int convfail = 0;                /* 1, when conversion is failed. Otherwise 0. */
++  bool convfail = false;  /* true, when conversion failed. Otherwise false. */
++
++  current_rp = rp;
 +
 +  found_any_selected_field = 0;
 +  field_idx = 1;
@@ -311,7 +324,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +     and the first field has been selected, or if non-delimited lines
 +     must be suppressed and the first field has *not* been selected.
 +     That is because a non-delimited line has exactly one field.  */
-+  buffer_first_field = (suppress_non_delimited ^ !print_kth (1, NULL));
++  buffer_first_field = (suppress_non_delimited ^ !print_kth (1));
 +
 +  while (1)
 +    {
@@ -361,18 +374,18 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +              continue;
 +            }
 +
-+          if (print_kth (1, NULL))
++          if (print_kth (1))
 +            {
 +              /* Print the field, but not the trailing delimiter.  */
 +              fwrite (field_1_buffer, sizeof (char), len - 1, stdout);
 +              found_any_selected_field = 1;
 +            }
-+          ++field_idx;
++          next_item (&field_idx);
 +        }
 +
 +      if (wc != WEOF)
 +        {
-+          if (print_kth (field_idx, NULL))
++          if (print_kth (field_idx))
 +            {
 +              if (found_any_selected_field)
 +                {
@@ -398,7 +411,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +                  break;
 +                }
 +
-+              if (print_kth (field_idx, NULL))
++              if (print_kth (field_idx))
 +                fwrite (bufpos, mblength, sizeof(char), stdout);
 +
 +              buflen -= mblength;
@@ -410,7 +423,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +        wc = WEOF;
 +
 +      if (!convfail && wc == wcdelim)
-+        ++field_idx;
++        next_item (&field_idx);
 +      else if (wc == WEOF || (!convfail && wc == L'\n'))
 +        {
 +          if (found_any_selected_field
@@ -419,6 +432,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +          if (wc == WEOF)
 +            break;
 +          field_idx = 1;
++          current_rp = rp;
 +          found_any_selected_field = 0;
 +        }
 +    }
@@ -447,6 +461,19 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +          break;
 +
 +        case field_mode:
++          if (delimlen == 1)
++            {
++              /* Check if we have utf8 multibyte locale, so we can use this
++                 optimization because of uniqueness of characters, which is
++                 not true for e.g. SJIS */
++              char * loc = setlocale(LC_CTYPE, NULL);
++              if (loc && (strstr (loc, "UTF-8") || strstr (loc, "utf-8") ||
++                  strstr (loc, "UTF8") || strstr (loc, "utf8")))
++                {
++                  cut_fields (stream);
++                  break;
++                }
++            }
 +          cut_fields_mb (stream);
 +          break;
 +
@@ -466,16 +493,15 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
  }
  
  /* Process file FILE to standard output.
-@@ -767,6 +1100,8 @@ main (int argc, char **argv)
+@@ -707,6 +1062,7 @@
    bool ok;
    bool delim_specified = false;
    char *spec_list_string IF_LINT ( = NULL);
 +  char mbdelim[MB_LEN_MAX + 1];
-+  size_t delimlen = 0;
  
    initialize_main (&argc, &argv);
    set_program_name (argv[0]);
-@@ -789,7 +1124,6 @@ main (int argc, char **argv)
+@@ -729,7 +1085,6 @@
        switch (optc)
          {
          case 'b':
@@ -483,7 +509,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
            /* Build the byte list. */
            if (operating_mode != undefined_mode)
              FATAL_ERROR (_("only one type of list may be specified"));
-@@ -797,6 +1131,14 @@ main (int argc, char **argv)
+@@ -737,6 +1092,14 @@
            spec_list_string = optarg;
            break;
  
@@ -498,7 +524,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
          case 'f':
            /* Build the field list. */
            if (operating_mode != undefined_mode)
-@@ -808,10 +1150,36 @@ main (int argc, char **argv)
+@@ -748,10 +1111,38 @@
          case 'd':
            /* New delimiter. */
            /* Interpret -d '' to mean 'use the NUL byte as the delimiter.'  */
@@ -524,6 +550,8 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
 +                        FATAL_ERROR (_("the delimiter must be a single character"));
 +                      memcpy (mbdelim, optarg, delimlen);
 +                      mbdelim[delimlen] = '\0';
++                      if (delimlen == 1)
++                        delim = *optarg;
 +                    }
 +                }
 +
@@ -539,7 +567,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
            break;
  
          case OUTPUT_DELIMITER_OPTION:
-@@ -824,6 +1191,7 @@ main (int argc, char **argv)
+@@ -764,6 +1155,7 @@
            break;
  
          case 'n':
@@ -547,7 +575,7 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
            break;
  
          case 's':
-@@ -873,15 +1241,34 @@ main (int argc, char **argv)
+@@ -803,15 +1195,34 @@
      }
  
    if (!delim_specified)
@@ -588,11 +616,10 @@ diff -urNp coreutils-8.21-orig/src/cut.c coreutils-8.21/src/cut.c
      }
  
    if (optind == argc)
-Binary files coreutils-8.21-orig/src/.cut.c.swp and coreutils-8.21/src/.cut.c.swp differ
-diff -urNp coreutils-8.21-orig/src/expand.c coreutils-8.21/src/expand.c
---- coreutils-8.21-orig/src/expand.c   2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/expand.c        2013-02-15 14:25:07.774467536 +0100
-@@ -37,12 +37,29 @@
+diff -Naur coreutils-8.23.orig/src/expand.c coreutils-8.23/src/expand.c
+--- coreutils-8.23.orig/src/expand.c   2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/src/expand.c        2014-07-18 22:36:17.394067191 -0500
+@@ -37,12 +37,34 @@
  #include <stdio.h>
  #include <getopt.h>
  #include <sys/types.h>
@@ -601,6 +628,11 @@ diff -urNp coreutils-8.21-orig/src/expand.c coreutils-8.21/src/expand.c
 +#if HAVE_WCHAR_H
 +# include <wchar.h>
 +#endif
++
++/* Get iswblank(). */
++#if HAVE_WCTYPE_H
++# include <wctype.h>
++#endif
 +
  #include "system.h"
  #include "error.h"
@@ -622,7 +654,7 @@ diff -urNp coreutils-8.21-orig/src/expand.c coreutils-8.21/src/expand.c
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "expand"
  
-@@ -357,6 +374,142 @@ expand (void)
+@@ -357,6 +379,142 @@
      }
  }
  
@@ -765,7 +797,7 @@ diff -urNp coreutils-8.21-orig/src/expand.c coreutils-8.21/src/expand.c
  int
  main (int argc, char **argv)
  {
-@@ -421,7 +574,12 @@ main (int argc, char **argv)
+@@ -421,7 +579,12 @@
  
    file_list = (optind < argc ? &argv[optind] : stdin_argv);
  
@@ -779,9 +811,9 @@ diff -urNp coreutils-8.21-orig/src/expand.c coreutils-8.21/src/expand.c
  
    if (have_read_stdin && fclose (stdin) != 0)
      error (EXIT_FAILURE, errno, "-");
-diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
---- coreutils-8.21-orig/src/fold.c     2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/fold.c  2013-02-15 14:25:07.789467891 +0100
+diff -Naur coreutils-8.23.orig/src/fold.c coreutils-8.23/src/fold.c
+--- coreutils-8.23.orig/src/fold.c     2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/src/fold.c  2014-07-18 22:36:17.394067191 -0500
 @@ -22,12 +22,34 @@
  #include <getopt.h>
  #include <sys/types.h>
@@ -863,7 +895,7 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
    {"spaces", no_argument, NULL, 's'},
    {"width", required_argument, NULL, 'w'},
    {GETOPT_HELP_OPTION_DECL},
-@@ -76,6 +119,7 @@ standard output.\n\
+@@ -76,6 +119,7 @@
  
        fputs (_("\
    -b, --bytes         count bytes rather than columns\n\
@@ -871,7 +903,7 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
    -s, --spaces        break at spaces\n\
    -w, --width=WIDTH   use WIDTH columns instead of 80\n\
  "), stdout);
-@@ -93,7 +137,7 @@ standard output.\n\
+@@ -93,7 +137,7 @@
  static size_t
  adjust_column (size_t column, char c)
  {
@@ -880,7 +912,7 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
      {
        if (c == '\b')
          {
-@@ -116,30 +160,14 @@ adjust_column (size_t column, char c)
+@@ -116,30 +160,14 @@
     to stdout, with maximum line length WIDTH.
     Return true if successful.  */
  
@@ -913,7 +945,7 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
  
    fadvise (istream, FADVISE_SEQUENTIAL);
  
-@@ -169,6 +197,15 @@ fold_file (char const *filename, size_t 
+@@ -169,6 +197,15 @@
                bool found_blank = false;
                size_t logical_end = offset_out;
  
@@ -929,16 +961,16 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
                /* Look for the last blank. */
                while (logical_end)
                  {
-@@ -215,11 +252,221 @@ fold_file (char const *filename, size_t 
+@@ -215,11 +252,221 @@
        line_out[offset_out++] = c;
      }
  
 -  saved_errno = errno;
 +  *saved_errno = errno;
-   if (offset_out)
-     fwrite (line_out, sizeof (char), (size_t) offset_out, stdout);
++
++  if (offset_out)
++    fwrite (line_out, sizeof (char), (size_t) offset_out, stdout);
++
 +}
 +
 +#if HAVE_MBRTOWC
@@ -1110,10 +1142,10 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
 +    }
 +
 +  *saved_errno = errno;
-+
-+  if (offset_out)
-+    fwrite (line_out, sizeof (char), (size_t) offset_out, stdout);
-+
+   if (offset_out)
+     fwrite (line_out, sizeof (char), (size_t) offset_out, stdout);
 +}
 +#endif
 +
@@ -1122,7 +1154,7 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
 +   Return 0 if successful, 1 if an error occurs. */
 +
 +static bool
-+fold_file (char *filename, size_t width)
++fold_file (char const *filename, size_t width)
 +{
 +  FILE *istream;
 +  int saved_errno;
@@ -1152,7 +1184,7 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
    if (ferror (istream))
      {
        error (0, saved_errno, "%s", filename);
-@@ -252,7 +499,8 @@ main (int argc, char **argv)
+@@ -252,7 +499,8 @@
  
    atexit (close_stdout);
  
@@ -1162,7 +1194,7 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
  
    while ((optc = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
      {
-@@ -261,7 +509,15 @@ main (int argc, char **argv)
+@@ -261,7 +509,15 @@
        switch (optc)
          {
          case 'b':             /* Count bytes rather than columns. */
@@ -1179,9 +1211,9 @@ diff -urNp coreutils-8.21-orig/src/fold.c coreutils-8.21/src/fold.c
            break;
  
          case 's':             /* Break at word boundaries. */
-diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
---- coreutils-8.21-orig/src/join.c     2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/join.c  2013-02-15 14:25:07.804467922 +0100
+diff -Naur coreutils-8.23.orig/src/join.c coreutils-8.23/src/join.c
+--- coreutils-8.23.orig/src/join.c     2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/src/join.c  2014-07-18 22:36:17.394067191 -0500
 @@ -22,18 +22,32 @@
  #include <sys/types.h>
  #include <getopt.h>
@@ -1216,7 +1248,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "join"
  
-@@ -135,10 +149,12 @@ static struct outlist outlist_head;
+@@ -135,10 +149,12 @@
  /* Last element in 'outlist', where a new element can be added.  */
  static struct outlist *outlist_end = &outlist_head;
  
@@ -1233,7 +1265,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
  
  /* If nonzero, check that the input is correctly ordered. */
  static enum
-@@ -262,13 +278,14 @@ xfields (struct line *line)
+@@ -269,13 +285,14 @@
    if (ptr == lim)
      return;
  
@@ -1251,7 +1283,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
      {
        /* Skip leading blanks before the first field.  */
        while (isblank (to_uchar (*ptr)))
-@@ -292,6 +309,148 @@ xfields (struct line *line)
+@@ -299,6 +316,147 @@
    extract_field (line, ptr, lim - ptr);
  }
  
@@ -1272,7 +1304,6 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
 +
 +  if (tab != NULL)
 +    {
-+      unsigned char t = tab[0];
 +      char *sep = ptr;
 +      for (; ptr < lim; ptr = sep + mblength)
 +      {
@@ -1400,7 +1431,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
  static void
  freeline (struct line *line)
  {
-@@ -313,56 +472,130 @@ keycmp (struct line const *line1, struct
+@@ -320,56 +478,133 @@
          size_t jf_1, size_t jf_2)
  {
    /* Start of field to compare in each file.  */
@@ -1472,6 +1503,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
 +          {
 +            mallocd = 1;
 +            copy[i] = xmalloc (len[i] + 1);
++            memset (copy[i], '\0',len[i] + 1);
 +
 +            for (j = 0; j < MIN (len[0], len[1]);)
 +              {
@@ -1494,9 +1526,11 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
 +                    if (uwc != wc)
 +                      {
 +                        mbstate_t state_wc;
++                        size_t mblen;
 +
 +                        memset (&state_wc, '\0', sizeof (mbstate_t));
-+                        wcrtomb (copy[i] + j, uwc, &state_wc);
++                        mblen = wcrtomb (copy[i] + j, uwc, &state_wc);
++                        assert (mblen != (size_t)-1);
 +                      }
 +                    else
 +                      memcpy (copy[i] + j, beg[i] + j, mblength);
@@ -1526,10 +1560,10 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
 -      if (hard_LC_COLLATE)
 -        return xmemcoll (beg1, len1, beg2, len2);
 -      diff = memcmp (beg1, beg2, MIN (len1, len2));
-+      copy[0] = (unsigned char *) beg[0];
-+      copy[1] = (unsigned char *) beg[1];
-     }
++      copy[0] = beg[0];
++      copy[1] = beg[1];
++    }
++
 +  if (hard_LC_COLLATE)
 +    {
 +      diff = xmemcoll ((char *) copy[0], len[0], (char *) copy[1], len[1]);
@@ -1539,14 +1573,14 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
 +          free (copy[i]);
 +
 +      return diff;
-+    }
+     }
 +  diff = memcmp (copy[0], copy[1], MIN (len[0], len[1]));
 +
 +  if (mallocd)
 +    for (i = 0; i < 2; i++)
 +      free (copy[i]);
 +
-+
    if (diff)
      return diff;
 -  return len1 < len2 ? -1 : len1 != len2;
@@ -1554,7 +1588,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
  }
  
  /* Check that successive input lines PREV and CURRENT from input file
-@@ -454,6 +687,11 @@ get_line (FILE *fp, struct line **linep,
+@@ -461,6 +696,11 @@
      }
    ++line_no[which - 1];
  
@@ -1566,7 +1600,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
    xfields (line);
  
    if (prevline[which - 1])
-@@ -553,21 +791,28 @@ prfield (size_t n, struct line const *li
+@@ -560,21 +800,28 @@
  
  /* Output all the fields in line, other than the join field.  */
  
@@ -1598,7 +1632,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
        prfield (i, line);
      }
  }
-@@ -578,7 +823,6 @@ static void
+@@ -585,7 +832,6 @@
  prjoin (struct line const *line1, struct line const *line2)
  {
    const struct outlist *outlist;
@@ -1606,16 +1640,16 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
    size_t field;
    struct line const *line;
  
-@@ -612,7 +856,7 @@ prjoin (struct line const *line1, struct
+@@ -619,7 +865,7 @@
            o = o->next;
            if (o == NULL)
              break;
 -          putchar (output_separator);
 +          PUT_TAB_CHAR;
          }
-       putchar ('\n');
+       putchar (eolchar);
      }
-@@ -1090,21 +1334,46 @@ main (int argc, char **argv)
+@@ -1097,21 +1343,46 @@
  
          case 't':
            {
@@ -1643,7 +1677,7 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
              if (! newtab)
 -              newtab = '\n'; /* '' => process the whole line.  */
 +            {
-+              newtab = "\n"; /* '' => process the whole line.  */
++              newtab = (char*)"\n"; /* '' => process the whole line.  */
 +            }
              else if (optarg[1])
                {
@@ -1671,11 +1705,11 @@ diff -urNp coreutils-8.21-orig/src/join.c coreutils-8.21/src/join.c
 +           }
            break;
  
-         case NOCHECK_ORDER_OPTION:
-diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
---- coreutils-8.21-orig/src/pr.c       2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/pr.c    2013-02-15 14:25:07.819467936 +0100
-@@ -312,6 +312,32 @@
+         case 'z':
+diff -Naur coreutils-8.23.orig/src/pr.c coreutils-8.23/src/pr.c
+--- coreutils-8.23.orig/src/pr.c       2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/src/pr.c    2014-07-18 22:36:17.395067159 -0500
+@@ -312,6 +312,24 @@
  
  #include <getopt.h>
  #include <sys/types.h>
@@ -1696,19 +1730,11 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
 +#if HAVE_WCHAR_H
 +# include <wchar.h>
 +#endif
-+
-+/* Get iswprint(). -- for wcwidth().  */
-+#if HAVE_WCTYPE_H
-+# include <wctype.h>
-+#endif
-+#if !defined iswprint && !HAVE_ISWPRINT
-+# define iswprint(wc) 1
-+#endif
 +
  #include "system.h"
  #include "error.h"
  #include "fadvise.h"
-@@ -323,6 +349,18 @@
+@@ -323,6 +341,18 @@
  #include "strftime.h"
  #include "xstrtol.h"
  
@@ -1727,7 +1753,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "pr"
  
-@@ -415,7 +453,20 @@ struct COLUMN
+@@ -415,7 +445,20 @@
  
  typedef struct COLUMN COLUMN;
  
@@ -1749,7 +1775,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  static bool read_line (COLUMN *p);
  static bool print_page (void);
  static bool print_stored (COLUMN *p);
-@@ -425,6 +476,7 @@ static void print_header (void);
+@@ -425,6 +468,7 @@
  static void pad_across_to (int position);
  static void add_line_number (COLUMN *p);
  static void getoptarg (char *arg, char switch_char, char *character,
@@ -1757,7 +1783,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
                         int *number);
  static void print_files (int number_of_files, char **av);
  static void init_parameters (int number_of_files);
-@@ -438,7 +490,6 @@ static void store_char (char c);
+@@ -438,7 +482,6 @@
  static void pad_down (int lines);
  static void read_rest_of_line (COLUMN *p);
  static void skip_read (COLUMN *p, int column_number);
@@ -1765,7 +1791,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  static void cleanup (void);
  static void print_sep_string (void);
  static void separator_string (const char *optarg_S);
-@@ -450,7 +501,7 @@ static COLUMN *column_vector;
+@@ -450,7 +493,7 @@
     we store the leftmost columns contiguously in buff.
     To print a line from buff, get the index of the first character
     from line_vector[i], and print up to line_vector[i + 1]. */
@@ -1774,7 +1800,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
  /* Index of the position in buff where the next character
     will be stored. */
-@@ -554,7 +605,7 @@ static int chars_per_column;
+@@ -554,7 +597,7 @@
  static bool untabify_input = false;
  
  /* (-e) The input tab character. */
@@ -1783,7 +1809,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
  /* (-e) Tabstops are at chars_per_tab, 2*chars_per_tab, 3*chars_per_tab, ...
     where the leftmost column is 1. */
-@@ -564,7 +615,10 @@ static int chars_per_input_tab = 8;
+@@ -564,7 +607,10 @@
  static bool tabify_output = false;
  
  /* (-i) The output tab character. */
@@ -1795,7 +1821,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
  /* (-i) The width of the output tab. */
  static int chars_per_output_tab = 8;
-@@ -634,7 +688,13 @@ static int line_number;
+@@ -634,7 +680,13 @@
  static bool numbered_lines = false;
  
  /* (-n) Character which follows each line number. */
@@ -1810,7 +1836,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
  /* (-n) line counting starts with 1st line of input file (not with 1st
     line of 1st page printed). */
-@@ -687,6 +747,7 @@ static bool use_col_separator = false;
+@@ -687,6 +739,7 @@
     -a|COLUMN|-m is a 'space' and with the -J option a 'tab'. */
  static char *col_sep_string = (char *) "";
  static int col_sep_length = 0;
@@ -1818,7 +1844,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  static char *column_separator = (char *) " ";
  static char *line_separator = (char *) "\t";
  
-@@ -843,6 +904,13 @@ separator_string (const char *optarg_S)
+@@ -843,6 +896,13 @@
    col_sep_length = (int) strlen (optarg_S);
    col_sep_string = xmalloc (col_sep_length + 1);
    strcpy (col_sep_string, optarg_S);
@@ -1832,7 +1858,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  }
  
  int
-@@ -867,6 +935,21 @@ main (int argc, char **argv)
+@@ -867,6 +927,21 @@
  
    atexit (close_stdout);
  
@@ -1854,7 +1880,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
    n_files = 0;
    file_names = (argc > 1
                  ? xmalloc ((argc - 1) * sizeof (char *))
-@@ -943,8 +1026,12 @@ main (int argc, char **argv)
+@@ -943,8 +1018,12 @@
            break;
          case 'e':
            if (optarg)
@@ -1869,7 +1895,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            /* Could check tab width > 0. */
            untabify_input = true;
            break;
-@@ -957,8 +1044,12 @@ main (int argc, char **argv)
+@@ -957,8 +1036,12 @@
            break;
          case 'i':
            if (optarg)
@@ -1884,7 +1910,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            /* Could check tab width > 0. */
            tabify_output = true;
            break;
-@@ -985,8 +1076,8 @@ main (int argc, char **argv)
+@@ -985,8 +1068,8 @@
          case 'n':
            numbered_lines = true;
            if (optarg)
@@ -1895,7 +1921,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            break;
          case 'N':
            skip_count = false;
-@@ -1025,7 +1116,7 @@ main (int argc, char **argv)
+@@ -1025,7 +1108,7 @@
            old_s = false;
            /* Reset an additional input of -s, -S dominates -s */
            col_sep_string = bad_cast ("");
@@ -1904,7 +1930,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            use_col_separator = true;
            if (optarg)
              separator_string (optarg);
-@@ -1182,10 +1273,45 @@ main (int argc, char **argv)
+@@ -1182,10 +1265,45 @@
     a number. */
  
  static void
@@ -1952,7 +1978,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
    if (*arg)
      {
        long int tmp_long;
-@@ -1207,6 +1333,11 @@ static void
+@@ -1207,6 +1325,11 @@
  init_parameters (int number_of_files)
  {
    int chars_used_by_number = 0;
@@ -1964,7 +1990,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
    lines_per_body = lines_per_page - lines_per_header - lines_per_footer;
    if (lines_per_body <= 0)
-@@ -1244,7 +1375,7 @@ init_parameters (int number_of_files)
+@@ -1244,7 +1367,7 @@
            else
              col_sep_string = column_separator;
  
@@ -1973,7 +1999,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            use_col_separator = true;
          }
        /* It's rather pointless to define a TAB separator with column
-@@ -1274,11 +1405,11 @@ init_parameters (int number_of_files)
+@@ -1274,11 +1397,11 @@
               + TAB_WIDTH (chars_per_input_tab, chars_per_number);   */
  
        /* Estimate chars_per_text without any margin and keep it constant. */
@@ -1987,7 +2013,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
        /* The number is part of the column width unless we are
           printing files in parallel. */
-@@ -1287,7 +1418,7 @@ init_parameters (int number_of_files)
+@@ -1287,7 +1410,7 @@
      }
  
    chars_per_column = (chars_per_line - chars_used_by_number
@@ -1996,7 +2022,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
    if (chars_per_column < 1)
      error (EXIT_FAILURE, 0, _("page width too narrow"));
-@@ -1305,7 +1436,7 @@ init_parameters (int number_of_files)
+@@ -1305,7 +1428,7 @@
       We've to use 8 as the lower limit, if we use chars_per_default_tab = 8
       to expand a tab which is not an input_tab-char. */
    free (clump_buff);
@@ -2005,7 +2031,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  }
  \f
  /* Open the necessary files,
-@@ -1413,7 +1544,7 @@ init_funcs (void)
+@@ -1413,7 +1536,7 @@
  
    /* Enlarge p->start_position of first column to use the same form of
       padding_not_printed with all columns. */
@@ -2014,7 +2040,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
    /* This loop takes care of all but the rightmost column. */
  
-@@ -1447,7 +1578,7 @@ init_funcs (void)
+@@ -1447,7 +1570,7 @@
          }
        else
          {
@@ -2023,7 +2049,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            h_next = h + chars_per_column;
          }
      }
-@@ -1738,9 +1869,9 @@ static void
+@@ -1738,9 +1861,9 @@
  align_column (COLUMN *p)
  {
    padding_not_printed = p->start_position;
@@ -2035,7 +2061,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
        padding_not_printed = ANYWHERE;
      }
  
-@@ -2011,13 +2142,13 @@ store_char (char c)
+@@ -2011,13 +2134,13 @@
        /* May be too generous. */
        buff = X2REALLOC (buff, &buff_allocated);
      }
@@ -2051,7 +2077,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
    char *s;
    int num_width;
  
-@@ -2034,22 +2165,24 @@ add_line_number (COLUMN *p)
+@@ -2034,22 +2157,24 @@
        /* Tabification is assumed for multiple columns, also for n-separators,
           but 'default n-separator = TAB' hasn't been given priority over
           equal column_width also specified by POSIX. */
@@ -2080,7 +2106,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
          output_position = POS_AFTER_TAB (chars_per_output_tab,
                            output_position);
      }
-@@ -2210,7 +2343,7 @@ print_white_space (void)
+@@ -2210,7 +2335,7 @@
    while (goal - h_old > 1
           && (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal)
      {
@@ -2089,7 +2115,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
        h_old = h_new;
      }
    while (++h_old <= goal)
-@@ -2230,6 +2363,7 @@ print_sep_string (void)
+@@ -2230,6 +2355,7 @@
  {
    char *s;
    int l = col_sep_length;
@@ -2097,7 +2123,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  
    s = col_sep_string;
  
-@@ -2243,6 +2377,7 @@ print_sep_string (void)
+@@ -2243,6 +2369,7 @@
      {
        for (; separators_not_printed > 0; --separators_not_printed)
          {
@@ -2105,7 +2131,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            while (l-- > 0)
              {
                /* 3 types of sep_strings: spaces only, spaces and chars,
-@@ -2256,12 +2391,15 @@ print_sep_string (void)
+@@ -2256,12 +2383,15 @@
                  }
                else
                  {
@@ -2122,7 +2148,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            /* sep_string ends with some spaces */
            if (spaces_not_printed > 0)
              print_white_space ();
-@@ -2289,7 +2427,7 @@ print_clump (COLUMN *p, int n, char *clu
+@@ -2289,7 +2419,7 @@
     required number of tabs and spaces. */
  
  static void
@@ -2131,7 +2157,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  {
    if (tabify_output)
      {
-@@ -2313,6 +2451,74 @@ print_char (char c)
+@@ -2313,6 +2443,74 @@
    putchar (c);
  }
  
@@ -2206,7 +2232,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  /* Skip to page PAGE before printing.
     PAGE may be larger than total number of pages. */
  
-@@ -2492,9 +2698,9 @@ read_line (COLUMN *p)
+@@ -2492,9 +2690,9 @@
            align_empty_cols = false;
          }
  
@@ -2218,7 +2244,25 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
            padding_not_printed = ANYWHERE;
          }
  
-@@ -2595,9 +2801,9 @@ print_stored (COLUMN *p)
+@@ -2564,7 +2762,7 @@
+   int i;
+   int line = p->current_line++;
+-  char *first = &buff[line_vector[line]];
++  unsigned char *first = &buff[line_vector[line]];
+   /* FIXME
+      UMR: Uninitialized memory read:
+      * This is occurring while in:
+@@ -2576,7 +2774,7 @@
+      xmalloc        [xmalloc.c:94]
+      init_store_cols [pr.c:1648]
+      */
+-  char *last = &buff[line_vector[line + 1]];
++  unsigned char *last = &buff[line_vector[line + 1]];
+   pad_vertically = true;
+@@ -2595,9 +2793,9 @@
          }
      }
  
@@ -2230,7 +2274,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
        padding_not_printed = ANYWHERE;
      }
  
-@@ -2610,8 +2816,8 @@ print_stored (COLUMN *p)
+@@ -2610,8 +2808,8 @@
    if (spaces_not_printed == 0)
      {
        output_position = p->start_position + end_vector[line];
@@ -2241,7 +2285,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
      }
  
    return true;
-@@ -2630,7 +2836,7 @@ print_stored (COLUMN *p)
+@@ -2630,7 +2828,7 @@
     number of characters is 1.) */
  
  static int
@@ -2250,7 +2294,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  {
    unsigned char uc = c;
    char *s = clump_buff;
-@@ -2640,10 +2846,10 @@ char_to_clump (char c)
+@@ -2640,10 +2838,10 @@
    int chars;
    int chars_per_c = 8;
  
@@ -2263,7 +2307,7 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
      {
        width = TAB_WIDTH (chars_per_c, input_position);
  
-@@ -2724,6 +2930,154 @@ char_to_clump (char c)
+@@ -2724,6 +2922,164 @@
    return chars;
  }
  
@@ -2410,7 +2454,17 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
 +      mbc_pos -= mblength;
 +    }
 +
-+  input_position += width;
++  /* Too many backspaces must put us in position 0 -- never negative. */
++  if (width < 0 && input_position == 0)
++    {
++      chars = 0;
++      input_position = 0;
++    }
++  else if (width < 0 && input_position <= -width)
++    input_position = 0;
++  else
++   input_position += width;
++
 +  return chars;
 +}
 +#endif
@@ -2418,9 +2472,9 @@ diff -urNp coreutils-8.21-orig/src/pr.c coreutils-8.21/src/pr.c
  /* We've just printed some files and need to clean up things before
     looking for more options and printing the next batch of files.
  
-diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
---- coreutils-8.21-orig/src/sort.c     2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/sort.c  2013-02-15 14:25:07.828467769 +0100
+diff -Naur coreutils-8.23.orig/src/sort.c coreutils-8.23/src/sort.c
+--- coreutils-8.23.orig/src/sort.c     2014-07-13 17:09:52.000000000 -0500
++++ coreutils-8.23/src/sort.c  2014-07-18 22:36:17.397067101 -0500
 @@ -29,6 +29,14 @@
  #include <sys/wait.h>
  #include <signal.h>
@@ -2436,8 +2490,13 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  #include "system.h"
  #include "argmatch.h"
  #include "error.h"
-@@ -166,12 +174,34 @@ static int thousands_sep;
+@@ -164,14 +172,39 @@
+ /* Thousands separator; if -1, then there isn't one.  */
+ static int thousands_sep;
  
++/* True if -f is specified.  */
++static bool folding;
++
  /* Nonzero if the corresponding locales are hard.  */
  static bool hard_LC_COLLATE;
 -#if HAVE_NL_LANGINFO
@@ -2472,7 +2531,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  /* The kind of blanks for '-b' to skip in various options. */
  enum blanktype { bl_start, bl_end, bl_both };
  
-@@ -345,13 +375,11 @@ static bool reverse;
+@@ -345,13 +378,11 @@
     they were read if all keys compare equal.  */
  static bool stable;
  
@@ -2489,7 +2548,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  
  /* Flag to remove consecutive duplicate lines from the output.
     Only the last of a sequence of equal lines will be output. */
-@@ -783,6 +811,46 @@ reap_all (void)
+@@ -811,6 +842,46 @@
      reap (-1);
  }
  
@@ -2536,7 +2595,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  /* Clean up any remaining temporary files.  */
  
  static void
-@@ -1223,7 +1291,7 @@ zaptemp (char const *name)
+@@ -1255,7 +1326,7 @@
    free (node);
  }
  
@@ -2545,7 +2604,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  
  static int
  struct_month_cmp (void const *m1, void const *m2)
-@@ -1238,7 +1306,7 @@ struct_month_cmp (void const *m1, void c
+@@ -1270,7 +1341,7 @@
  /* Initialize the character class tables. */
  
  static void
@@ -2554,7 +2613,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  {
    size_t i;
  
-@@ -1250,7 +1318,7 @@ inittables (void)
+@@ -1282,7 +1353,7 @@
        fold_toupper[i] = toupper (i);
      }
  
@@ -2563,7 +2622,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
    /* If we're not in the "C" locale, read different names for months.  */
    if (hard_LC_TIME)
      {
-@@ -1332,6 +1400,84 @@ specify_nmerge (int oi, char c, char con
+@@ -1364,6 +1435,84 @@
      xstrtol_fatal (e, oi, c, long_options, s);
  }
  
@@ -2648,7 +2707,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  /* Specify the amount of main memory to use when sorting.  */
  static void
  specify_sort_size (int oi, char c, char const *s)
-@@ -1564,7 +1710,7 @@ buffer_linelim (struct buffer const *buf
+@@ -1597,7 +1746,7 @@
     by KEY in LINE. */
  
  static char *
@@ -2657,7 +2716,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  {
    char *ptr = line->text, *lim = ptr + line->length - 1;
    size_t sword = key->sword;
-@@ -1573,10 +1719,10 @@ begfield (struct line const *line, struc
+@@ -1606,10 +1755,10 @@
    /* The leading field separator itself is included in a field when -t
       is absent.  */
  
@@ -2670,7 +2729,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
            ++ptr;
          if (ptr < lim)
            ++ptr;
-@@ -1602,11 +1748,70 @@ begfield (struct line const *line, struc
+@@ -1635,11 +1784,70 @@
    return ptr;
  }
  
@@ -2742,7 +2801,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  {
    char *ptr = line->text, *lim = ptr + line->length - 1;
    size_t eword = key->eword, echar = key->echar;
-@@ -1621,10 +1826,10 @@ limfield (struct line const *line, struc
+@@ -1654,10 +1862,10 @@
       'beginning' is the first character following the delimiting TAB.
       Otherwise, leave PTR pointing at the first 'blank' character after
       the preceding field.  */
@@ -2755,7 +2814,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
            ++ptr;
          if (ptr < lim && (eword || echar))
            ++ptr;
-@@ -1670,10 +1875,10 @@ limfield (struct line const *line, struc
+@@ -1703,10 +1911,10 @@
       */
  
    /* Make LIM point to the end of (one byte past) the current field.  */
@@ -2768,7 +2827,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
        if (newlim)
          lim = newlim;
      }
-@@ -1704,6 +1909,130 @@ limfield (struct line const *line, struc
+@@ -1737,6 +1945,130 @@
    return ptr;
  }
  
@@ -2857,7 +2916,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
 +  {
 +    /* If we're skipping leading blanks, don't start counting characters
 +     *      until after skipping past any leading blanks.  */
-+    if (key->skipsblanks)
++    if (key->skipeblanks)
 +      while (ptr < lim && ismbblank (ptr, lim - ptr, &mblength))
 +        ptr += mblength;
 +
@@ -2899,7 +2958,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  /* Fill BUF reading from FP, moving buf->left bytes from the end
     of buf->buf to the beginning first.  If EOF is reached and the
     file wasn't terminated by a newline, supply one.  Set up BUF's line
-@@ -1790,8 +2119,22 @@ fillbuf (struct buffer *buf, FILE *fp, c
+@@ -1823,8 +2155,22 @@
                    else
                      {
                        if (key->skipsblanks)
@@ -2924,7 +2983,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
                        line->keybeg = line_start;
                      }
                  }
-@@ -1912,7 +2255,7 @@ human_numcompare (char const *a, char co
+@@ -1945,7 +2291,7 @@
     hideously fast. */
  
  static int
@@ -2933,7 +2992,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  {
    while (blanks[to_uchar (*a)])
      a++;
-@@ -1922,6 +2265,25 @@ numcompare (char const *a, char const *b
+@@ -1955,6 +2301,25 @@
    return strnumcmp (a, b, decimal_point, thousands_sep);
  }
  
@@ -2959,7 +3018,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  /* Work around a problem whereby the long double value returned by glibc's
     strtold ("NaN", ...) contains uninitialized bits: clear all bytes of
     A and B before calling strtold.  FIXME: remove this function once
-@@ -1972,7 +2334,7 @@ general_numcompare (char const *sa, char
+@@ -2005,7 +2370,7 @@
     Return 0 if the name in S is not recognized.  */
  
  static int
@@ -2968,7 +3027,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  {
    size_t lo = 0;
    size_t hi = MONTHS_PER_YEAR;
-@@ -2247,15 +2609,14 @@ debug_key (struct line const *line, stru
+@@ -2280,15 +2645,14 @@
            char saved = *lim;
            *lim = '\0';
  
@@ -2986,7 +3045,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
            else if (key->general_numeric)
              ignore_value (strtold (beg, &tighter_lim));
            else if (key->numeric || key->human_numeric)
-@@ -2399,7 +2760,7 @@ key_warnings (struct keyfield const *gke
+@@ -2432,7 +2796,7 @@
        bool maybe_space_aligned = !hard_LC_COLLATE && default_key_compare (key)
                                   && !(key->schar || key->echar);
        bool line_offset = key->eword == 0 && key->echar != 0; /* -k1.x,1.y  */
@@ -2995,7 +3054,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
            && ((!key->skipsblanks && !(implicit_skip || maybe_space_aligned))
                || (!key->skipsblanks && key->schar)
                || (!key->skipeblanks && key->echar)))
-@@ -2457,11 +2818,87 @@ key_warnings (struct keyfield const *gke
+@@ -2490,11 +2854,87 @@
      error (0, 0, _("option '-r' only applies to last-resort comparison"));
  }
  
@@ -3065,7 +3124,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
 +      ? monthtab[lo].val : 0);
 +
 +  if (ea && result)
-+     *ea = s + strlen (monthtab[lo].name);
++     *ea = (char*) s + strlen (monthtab[lo].name);
 +
 +  free (month);
 +  free (tmp);
@@ -3084,7 +3143,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
  {
    struct keyfield *key = keylist;
  
-@@ -2546,7 +2983,7 @@ keycompare (struct line const *a, struct
+@@ -2579,7 +3019,7 @@
            else if (key->human_numeric)
              diff = human_numcompare (ta, tb);
            else if (key->month)
@@ -3093,7 +3152,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
            else if (key->random)
              diff = compare_random (ta, tlena, tb, tlenb);
            else if (key->version)
-@@ -2662,6 +3099,181 @@ keycompare (struct line const *a, struct
+@@ -2695,6 +3135,191 @@
    return key->reverse ? -diff : diff;
  }
  
@@ -3114,45 +3173,14 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
 +  wchar_t wc_a, wc_b;
 +  mbstate_t state_a, state_b;
 +
-+  int diff;
++  int diff = 0;
 +
 +  memset (&state_a, '\0', sizeof(mbstate_t));
 +  memset (&state_b, '\0', sizeof(mbstate_t));
++  /* Ignore keys with start after end.  */
++  if (a->keybeg - a->keylim > 0)
++    return 0;
 +
-+  for (;;)
-+    {
-+      char const *translate = key->translate;
-+      bool const *ignore = key->ignore;
-+
-+      /* Find the lengths. */
-+      size_t lena = lima <= texta ? 0 : lima - texta;
-+      size_t lenb = limb <= textb ? 0 : limb - textb;
-+
-+      /* Actually compare the fields. */
-+      if (key->random)
-+        diff = compare_random (texta, lena, textb, lenb);
-+      else if (key->numeric | key->general_numeric | key->human_numeric)
-+        {
-+          char savea = *lima, saveb = *limb;
-+
-+          *lima = *limb = '\0';
-+          diff = (key->numeric ? numcompare (texta, textb)
-+                  : key->general_numeric ? general_numcompare (texta, textb)
-+                  : human_numcompare (texta, textb));
-+          *lima = savea, *limb = saveb;
-+        }
-+      else if (key->version)
-+        diff = filevercmp (texta, textb);
-+      else if (key->month)
-+        diff = getmonth (texta, lena, NULL) - getmonth (textb, lenb, NULL);
-+      else
-+        {
-+          if (ignore || translate)
-+            {
-+              char *copy_a = (char *) xmalloc (lena + 1 + lenb + 1);
-+              char *copy_b = copy_a + lena + 1;
-+              size_t new_len_a, new_len_b;
-+              size_t i, j;
 +
 +              /* Ignore and/or translate chars before comparing.  */
 +# define IGNORE_CHARS(NEW_LEN, LEN, TEXT, COPY, WC, MBLENGTH, STATE)        \
@@ -3220,21 +3248,63 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
 +      COPY[NEW_LEN] = '\0';                                                \
 +    }                                                                        \
 +  while (0)
-+              IGNORE_CHARS (new_len_a, lena, texta, copy_a,
-+                            wc_a, mblength_a, state_a);
-+              IGNORE_CHARS (new_len_b, lenb, textb, copy_b,
-+                            wc_b, mblength_b, state_b);
-+              diff = xmemcoll (copy_a, new_len_a, copy_b, new_len_b);
-+              free(copy_a);
-+            }
-+          else if (lena == 0)
-+            diff = - NONZERO (lenb);
-+          else if (lenb == 0)
-+            goto greater;
-+          else
-+            diff = xmemcoll (texta, lena, textb, lenb);
++
++      /* Actually compare the fields. */
++
++  for (;;)
++    {
++      /* Find the lengths. */
++      size_t lena = lima <= texta ? 0 : lima - texta;
++      size_t lenb = limb <= textb ? 0 : limb - textb;
++
++      char const *translate = key->translate;
++      bool const *ignore = key->ignore;
++
++      if (ignore || translate)
++        {
++          char *copy_a = (char *) xmalloc (lena + 1 + lenb + 1);
++          char *copy_b = copy_a + lena + 1;
++          size_t new_len_a, new_len_b;
++          size_t i, j;
++
++          IGNORE_CHARS (new_len_a, lena, texta, copy_a,
++                        wc_a, mblength_a, state_a);
++          IGNORE_CHARS (new_len_b, lenb, textb, copy_b,
++                        wc_b, mblength_b, state_b);
++          texta = copy_a; textb = copy_b;
++          lena = new_len_a; lenb = new_len_b;
 +        }
 +
++      if (key->random)
++        diff = compare_random (texta, lena, textb, lenb);
++      else if (key->numeric | key->general_numeric | key->human_numeric)
++        {
++          char savea = *lima, saveb = *limb;
++
++          *lima = *limb = '\0';
++          diff = (key->numeric ? numcompare (texta, textb)
++                  : key->general_numeric ? general_numcompare (texta, textb)
++                  : human_numcompare (texta, textb));
++          *lima = savea, *limb = saveb;
++        }
++      else if (key->version)
++        diff = filevercmp (texta, textb);
++      else if (key->month)
++        diff = getmonth (texta, lena, NULL) - getmonth (textb, lenb, NULL);
++      else if (lena == 0)
++        diff = - NONZERO (lenb);
++      else if (lenb == 0)
++        diff = 1;
++      else if (hard_LC_COLLATE && !folding)
++        {
++          diff = xmemcoll0 (texta, lena, textb, lenb);
++        }
++      else
++        diff = memcmp (texta, textb, MIN (lena + 1,lenb + 1));
++
++      if (ignore || translate)
++        free (texta);
++
 +      if (diff)
 +        goto not_equal;
 +
@@ -3263,19 +3333,35 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
 +        }
 +    }
 +
-+  return 0;
-+
-+greater:
-+  diff = 1;
 +not_equal:
-+  return key->reverse ? -diff : diff;
++  if (key && key->reverse)
++    return -diff;
++  else
++    return diff;
 +}
 +#endif
 +
  /* Compare two lines A and B, returning negative, zero, or positive
     depending on whether A compares less than, equal to, or greater than B. */
  
-@@ -4157,7 +4769,7 @@ main (int argc, char **argv)
+@@ -2722,7 +3347,7 @@
+     diff = - NONZERO (blen);
+   else if (blen == 0)
+     diff = 1;
+-  else if (hard_LC_COLLATE)
++  else if (hard_LC_COLLATE && !folding)
+     {
+       /* Note xmemcoll0 is a performance enhancement as
+          it will not unconditionally write '\0' after the
+@@ -4121,6 +4746,7 @@
+           break;
+         case 'f':
+           key->translate = fold_toupper;
++          folding = true;
+           break;
+         case 'g':
+           key->general_numeric = true;
+@@ -4198,7 +4824,7 @@
    initialize_exit_failure (SORT_FAILURE);
  
    hard_LC_COLLATE = hard_locale (LC_COLLATE);
@@ -3284,7 +3370,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
    hard_LC_TIME = hard_locale (LC_TIME);
  #endif
  
-@@ -4178,6 +4790,29 @@ main (int argc, char **argv)
+@@ -4219,6 +4845,29 @@
        thousands_sep = -1;
    }
  
@@ -3314,7 +3400,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
    have_read_stdin = false;
    inittables ();
  
-@@ -4452,13 +5087,34 @@ main (int argc, char **argv)
+@@ -4493,13 +5142,34 @@
  
          case 't':
            {
@@ -3353,7 +3439,7 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
                  else
                    {
                      /* Provoke with 'sort -txx'.  Complain about
-@@ -4469,9 +5125,12 @@ main (int argc, char **argv)
+@@ -4510,9 +5180,12 @@
                             quote (optarg));
                    }
                }
@@ -3368,9 +3454,9 @@ diff -urNp coreutils-8.21-orig/src/sort.c coreutils-8.21/src/sort.c
            }
            break;
  
-diff -urNp coreutils-8.21-orig/src/unexpand.c coreutils-8.21/src/unexpand.c
---- coreutils-8.21-orig/src/unexpand.c 2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/unexpand.c      2013-02-15 14:25:07.834467715 +0100
+diff -Naur coreutils-8.23.orig/src/unexpand.c coreutils-8.23/src/unexpand.c
+--- coreutils-8.23.orig/src/unexpand.c 2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/src/unexpand.c      2014-07-18 22:36:17.397067101 -0500
 @@ -38,12 +38,29 @@
  #include <stdio.h>
  #include <getopt.h>
@@ -3401,7 +3487,7 @@ diff -urNp coreutils-8.21-orig/src/unexpand.c coreutils-8.21/src/unexpand.c
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "unexpand"
  
-@@ -103,6 +120,210 @@ static struct option const longopts[] =
+@@ -103,6 +120,210 @@
    {NULL, 0, NULL, 0}
  };
  
@@ -3612,7 +3698,7 @@ diff -urNp coreutils-8.21-orig/src/unexpand.c coreutils-8.21/src/unexpand.c
  void
  usage (int status)
  {
-@@ -523,7 +742,12 @@ main (int argc, char **argv)
+@@ -523,7 +744,12 @@
  
    file_list = (optind < argc ? &argv[optind] : stdin_argv);
  
@@ -3626,10 +3712,10 @@ diff -urNp coreutils-8.21-orig/src/unexpand.c coreutils-8.21/src/unexpand.c
  
    if (have_read_stdin && fclose (stdin) != 0)
      error (EXIT_FAILURE, errno, "-");
-diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
---- coreutils-8.21-orig/src/uniq.c     2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/uniq.c  2013-02-15 14:25:07.839467991 +0100
-@@ -21,6 +21,16 @@
+diff -Naur coreutils-8.23.orig/src/uniq.c coreutils-8.23/src/uniq.c
+--- coreutils-8.23.orig/src/uniq.c     2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/src/uniq.c  2014-07-18 22:36:17.398067074 -0500
+@@ -21,6 +21,17 @@
  #include <getopt.h>
  #include <sys/types.h>
  
@@ -3642,11 +3728,12 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
 +#if HAVE_WCTYPE_H
 +# include <wctype.h>
 +#endif
++#include <assert.h>
 +
  #include "system.h"
  #include "argmatch.h"
  #include "linebuffer.h"
-@@ -32,7 +42,19 @@
+@@ -32,7 +43,19 @@
  #include "stdio--.h"
  #include "xmemcoll.h"
  #include "xstrtol.h"
@@ -3667,9 +3754,9 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
  
  /* The official name of this program (e.g., no 'g' prefix).  */
  #define PROGRAM_NAME "uniq"
-@@ -108,6 +130,10 @@ static enum delimit_method const delimit
- /* Select whether/how to delimit groups of duplicate lines.  */
static enum delimit_method delimit_groups;
+@@ -143,6 +166,10 @@
+   GROUP_OPTION = CHAR_MAX + 1
};
  
 +/* Function pointers. */
 +static char *
@@ -3678,7 +3765,7 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
  static struct option const longopts[] =
  {
    {"count", no_argument, NULL, 'c'},
-@@ -205,7 +231,7 @@ size_opt (char const *opt, char const *m
+@@ -251,7 +278,7 @@
     return a pointer to the beginning of the line's field to be compared. */
  
  static char * _GL_ATTRIBUTE_PURE
@@ -3687,7 +3774,7 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
  {
    size_t count;
    char const *lp = line->buffer;
-@@ -225,6 +251,83 @@ find_field (struct linebuffer const *lin
+@@ -271,6 +298,83 @@
    return line->buffer + i;
  }
  
@@ -3771,7 +3858,7 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
  /* Return false if two strings OLD and NEW match, true if not.
     OLD and NEW point not to the beginnings of the lines
     but rather to the beginnings of the fields to compare.
-@@ -233,6 +336,8 @@ find_field (struct linebuffer const *lin
+@@ -279,6 +383,8 @@
  static bool
  different (char *old, char *new, size_t oldlen, size_t newlen)
  {
@@ -3780,7 +3867,7 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
    if (check_chars < oldlen)
      oldlen = check_chars;
    if (check_chars < newlen)
-@@ -240,14 +345,100 @@ different (char *old, char *new, size_t 
+@@ -286,15 +392,104 @@
  
    if (ignore_case)
      {
@@ -3812,8 +3899,8 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
 +
 +  return xmemcoll (copy_old, oldlen, copy_new, newlen);
 +
-+}
-+
+ }
 +#if HAVE_MBRTOWC
 +static int
 +different_multi (const char *old, const char *new, size_t oldlen, size_t newlen, mbstate_t oldstate, mbstate_t newstate)
@@ -3837,6 +3924,7 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
 +  for (i = 0; i < 2; i++)
 +    {
 +      copy[i] = xmalloc (len[i] + 1);
++      memset (copy[i], '\0', len[i] + 1);
 +
 +      for (j = 0, chars = 0; j < len[i] && chars < check_chars; chars++)
 +        {
@@ -3861,9 +3949,11 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
 +                  if (uwc != wc)
 +                    {
 +                      mbstate_t state_wc;
++                      size_t mblen;
 +
 +                      memset (&state_wc, '\0', sizeof(mbstate_t));
-+                      wcrtomb (copy[i] + j, uwc, &state_wc);
++                      mblen = wcrtomb (copy[i] + j, uwc, &state_wc);
++                      assert (mblen != (size_t)-1);
 +                    }
 +                  else
 +                    memcpy (copy[i] + j, str[i] + j, mblength);
@@ -3881,15 +3971,16 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
 +  free (copy[1]);
 +  return rc;
 +
- }
++}
 +#endif
++
  /* Output the line in linebuffer LINE to standard output
     provided that the switches say it should be output.
-@@ -303,15 +494,43 @@ check_file (const char *infile, const ch
-     {
+    MATCH is true if the line matches the previous line.
+@@ -358,19 +553,38 @@
        char *prevfield IF_LINT ( = NULL);
        size_t prevlen IF_LINT ( = 0);
+       bool first_group_printed = false;
 +#if HAVE_MBRTOWC
 +      mbstate_t prevstate;
 +
@@ -3900,37 +3991,43 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
          {
            char *thisfield;
            size_t thislen;
+           bool new_group;
 +#if HAVE_MBRTOWC
 +          mbstate_t thisstate;
 +#endif
-+
            if (readlinebuffer_delim (thisline, stdin, delimiter) == 0)
              break;
            thisfield = find_field (thisline);
            thislen = thisline->length - 1 - (thisfield - thisline->buffer);
 +#if HAVE_MBRTOWC
 +          if (MB_CUR_MAX > 1)
 +            {
-+            thisstate = thisline->state;
-+
-+            if (prevline->length == 0 || different_multi
-+              (thisfield, prevfield, thislen, prevlen, thisstate, prevstate))
-+              {
-+                fwrite (thisline->buffer, sizeof (char),
-+                        thisline->length, stdout);
-+
-+                SWAP_LINES (prevline, thisline);
-+                prevfield = thisfield;
-+                prevlen = thislen;
++              thisstate = thisline->state;
++              new_group = (prevline->length == 0
++                           || different_multi (thisfield, prevfield,
++                                               thislen, prevlen,
++                                               thisstate, prevstate));
++            }
++          else
++#endif
+           new_group = (prevline->length == 0
+                        || different (thisfield, prevfield, thislen, prevlen));
+@@ -388,6 +602,10 @@
+               SWAP_LINES (prevline, thisline);
+               prevfield = thisfield;
+               prevlen = thislen;
++#if HAVE_MBRTOWC
++              if (MB_CUR_MAX > 1)
 +                prevstate = thisstate;
-+              }
-+          }
-+        else
 +#endif
-           if (prevline->length == 0
-               || different (thisfield, prevfield, thislen, prevlen))
-             {
-@@ -330,17 +549,26 @@ check_file (const char *infile, const ch
+               first_group_printed = true;
+             }
+         }
+@@ -400,17 +618,26 @@
        size_t prevlen;
        uintmax_t match_count = 0;
        bool first_delimiter = true;
@@ -3957,7 +4054,7 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
            if (readlinebuffer_delim (thisline, stdin, delimiter) == 0)
              {
                if (ferror (stdin))
-@@ -349,6 +577,14 @@ check_file (const char *infile, const ch
+@@ -419,6 +646,14 @@
              }
            thisfield = find_field (thisline);
            thislen = thisline->length - 1 - (thisfield - thisline->buffer);
@@ -3972,7 +4069,7 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
            match = !different (thisfield, prevfield, thislen, prevlen);
            match_count += match;
  
-@@ -381,6 +617,9 @@ check_file (const char *infile, const ch
+@@ -451,6 +686,9 @@
                SWAP_LINES (prevline, thisline);
                prevfield = thisfield;
                prevlen = thislen;
@@ -3982,7 +4079,7 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
                if (!match)
                  match_count = 0;
              }
-@@ -426,6 +665,19 @@ main (int argc, char **argv)
+@@ -497,6 +735,19 @@
  
    atexit (close_stdout);
  
@@ -4002,10 +4099,10 @@ diff -urNp coreutils-8.21-orig/src/uniq.c coreutils-8.21/src/uniq.c
    skip_chars = 0;
    skip_fields = 0;
    check_chars = SIZE_MAX;
-diff -urNp coreutils-8.21-orig/tests/local.mk coreutils-8.21/tests/local.mk
---- coreutils-8.21-orig/tests/local.mk 2013-02-15 14:24:32.645654553 +0100
-+++ coreutils-8.21/tests/local.mk      2013-02-15 14:25:07.873467648 +0100
-@@ -325,6 +325,7 @@ all_tests =                                        \
+diff -Naur coreutils-8.23.orig/tests/local.mk coreutils-8.23/tests/local.mk
+--- coreutils-8.23.orig/tests/local.mk 2014-07-13 17:09:52.000000000 -0500
++++ coreutils-8.23/tests/local.mk      2014-07-18 22:36:17.398067074 -0500
+@@ -331,6 +331,7 @@
    tests/misc/sort-discrim.sh                  \
    tests/misc/sort-files0-from.pl              \
    tests/misc/sort-float.sh                    \
@@ -4013,31 +4110,39 @@ diff -urNp coreutils-8.21-orig/tests/local.mk coreutils-8.21/tests/local.mk
    tests/misc/sort-merge.pl                    \
    tests/misc/sort-merge-fdlimit.sh            \
    tests/misc/sort-month.sh                    \
-diff -urNp coreutils-8.21-orig/tests/misc/cut.pl coreutils-8.21/tests/misc/cut.pl
---- coreutils-8.21-orig/tests/misc/cut.pl      2013-02-05 00:40:31.000000000 +0100
-+++ coreutils-8.21/tests/misc/cut.pl   2013-02-15 14:27:18.974468564 +0100
-@@ -23,9 +23,10 @@ use strict;
+diff -Naur coreutils-8.23.orig/tests/misc/cut.pl coreutils-8.23/tests/misc/cut.pl
+--- coreutils-8.23.orig/tests/misc/cut.pl      2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/misc/cut.pl   2014-07-18 22:36:17.398067074 -0500
+@@ -23,9 +23,11 @@
  # Turn off localization of executable's output.
  @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
  
 -my $mb_locale = $ENV{LOCALE_FR_UTF8};
--! defined $mb_locale || $mb_locale eq 'none'
++my $mb_locale;
++# uncommented enable multibyte paths
++$mb_locale = $ENV{LOCALE_FR_UTF8};
+ ! defined $mb_locale || $mb_locale eq 'none'
 -  and $mb_locale = 'C';
-+#my $mb_locale = $ENV{LOCALE_FR_UTF8};
-+#! defined $mb_locale || $mb_locale eq 'none'
-+#  and $mb_locale = 'C';
-+my $mb_locale = 'C';
++ and $mb_locale = 'C';
  
  my $prog = 'cut';
  my $try = "Try '$prog --help' for more information.\n";
-diff -urNp coreutils-8.21-orig/tests/misc/expand.pl coreutils-8.21/tests/misc/expand.pl
---- coreutils-8.21-orig/tests/misc/expand.pl   2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/tests/misc/expand.pl        2013-02-15 14:25:07.891468472 +0100
-@@ -23,6 +23,15 @@ use strict;
+@@ -227,6 +229,7 @@
+         my @new_t = @$t;
+         my $test_name = shift @new_t;
++        next if ($test_name =~ "newline-[12][0-9]");
+         push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
+       }
+     push @Tests, @new;
+diff -Naur coreutils-8.23.orig/tests/misc/expand.pl coreutils-8.23/tests/misc/expand.pl
+--- coreutils-8.23.orig/tests/misc/expand.pl   2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/misc/expand.pl        2014-07-18 22:36:17.399067050 -0500
+@@ -23,6 +23,15 @@
  # Turn off localization of executable's output.
  @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
  
-+# uncommented according to upstream commit enabling multibyte paths
++#comment out next line to disable multibyte tests
 +my $mb_locale = $ENV{LOCALE_FR_UTF8};
 +! defined $mb_locale || $mb_locale eq 'none'
 + and $mb_locale = 'C';
@@ -4049,7 +4154,7 @@ diff -urNp coreutils-8.21-orig/tests/misc/expand.pl coreutils-8.21/tests/misc/ex
  my @Tests =
    (
     ['t1', '--tabs=3',     {IN=>"a\tb"}, {OUT=>"a  b"}],
-@@ -31,6 +40,37 @@ my @Tests =
+@@ -31,6 +40,37 @@
     ['i2', '--tabs=3 -i', {IN=>" \ta\tb"}, {OUT=>"   a\tb"}],
    );
  
@@ -4087,41 +4192,150 @@ diff -urNp coreutils-8.21-orig/tests/misc/expand.pl coreutils-8.21/tests/misc/ex
  my $save_temps = $ENV{DEBUG};
  my $verbose = $ENV{VERBOSE};
  
-diff -urNp coreutils-8.21-orig/tests/misc/mb1.I coreutils-8.21/tests/misc/mb1.I
---- coreutils-8.21-orig/tests/misc/mb1.I       1970-01-01 01:00:00.000000000 +0100
-+++ coreutils-8.21/tests/misc/mb1.I    2013-02-15 14:25:07.902467891 +0100
-@@ -0,0 +1,4 @@
-+Apple@10
-+Banana@5
-+Citrus@20
-+Cherry@30
-diff -urNp coreutils-8.21-orig/tests/misc/mb1.X coreutils-8.21/tests/misc/mb1.X
---- coreutils-8.21-orig/tests/misc/mb1.X       1970-01-01 01:00:00.000000000 +0100
-+++ coreutils-8.21/tests/misc/mb1.X    2013-02-15 14:25:07.917467426 +0100
-@@ -0,0 +1,4 @@
-+Banana@5
-+Apple@10
-+Citrus@20
-+Cherry@30
-diff -urNp coreutils-8.21-orig/tests/misc/mb2.I coreutils-8.21/tests/misc/mb2.I
---- coreutils-8.21-orig/tests/misc/mb2.I       1970-01-01 01:00:00.000000000 +0100
-+++ coreutils-8.21/tests/misc/mb2.I    2013-02-15 14:25:07.933467390 +0100
-@@ -0,0 +1,4 @@
-+Apple@AA10@@20
-+Banana@AA5@@30
-+Citrus@AA20@@5
-+Cherry@AA30@@10
-diff -urNp coreutils-8.21-orig/tests/misc/mb2.X coreutils-8.21/tests/misc/mb2.X
---- coreutils-8.21-orig/tests/misc/mb2.X       1970-01-01 01:00:00.000000000 +0100
-+++ coreutils-8.21/tests/misc/mb2.X    2013-02-15 14:25:08.002467808 +0100
-@@ -0,0 +1,4 @@
-+Citrus@AA20@@5
-+Cherry@AA30@@10
-+Apple@AA10@@20
-+Banana@AA5@@30
-diff -urNp coreutils-8.21-orig/tests/misc/sort-mb-tests.sh coreutils-8.21/tests/misc/sort-mb-tests.sh
---- coreutils-8.21-orig/tests/misc/sort-mb-tests.sh    1970-01-01 01:00:00.000000000 +0100
-+++ coreutils-8.21/tests/misc/sort-mb-tests.sh 2013-02-18 17:44:03.852275681 +0100
+diff -Naur coreutils-8.23.orig/tests/misc/fold.pl coreutils-8.23/tests/misc/fold.pl
+--- coreutils-8.23.orig/tests/misc/fold.pl     2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/misc/fold.pl  2014-07-18 22:36:17.399067050 -0500
+@@ -20,9 +20,18 @@
+ (my $program_name = $0) =~ s|.*/||;
++my $prog = 'fold';
++my $try = "Try \`$prog --help' for more information.\n";
++my $inval = "$prog: invalid byte, character or field list\n$try";
++
+ # Turn off localization of executable's output.
+ @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
++# uncommented to enable multibyte paths
++my $mb_locale = $ENV{LOCALE_FR_UTF8};
++! defined $mb_locale || $mb_locale eq 'none'
++ and $mb_locale = 'C';
++
+ my @Tests =
+   (
+    ['s1', '-w2 -s', {IN=>"a\t"}, {OUT=>"a\n\t"}],
+@@ -31,9 +40,48 @@
+    ['s4', '-w4 -s', {IN=>"abc ef\n"}, {OUT=>"abc \nef\n"}],
+   );
++# Add _POSIX2_VERSION=199209 to the environment of each test
++# that uses an old-style option like +1.
++if ($mb_locale ne 'C')
++  {
++    # Duplicate each test vector, appending "-mb" to the test name and
++    # inserting {ENV => "LC_ALL=$mb_locale"} in the copy, so that we
++    # provide coverage for the distro-added multi-byte code paths.
++    my @new;
++    foreach my $t (@Tests)
++      {
++        my @new_t = @$t;
++        my $test_name = shift @new_t;
++
++        # Depending on whether fold is multi-byte-patched,
++        # it emits different diagnostics:
++        #   non-MB: invalid byte or field list
++        #   MB:     invalid byte, character or field list
++        # Adjust the expected error output accordingly.
++        if (grep {ref $_ eq 'HASH' && exists $_->{ERR} && $_->{ERR} eq $inval}
++            (@new_t))
++          {
++            my $sub = {ERR_SUBST => 's/, character//'};
++            push @new_t, $sub;
++            push @$t, $sub;
++          }
++        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
++      }
++    push @Tests, @new;
++  }
++
++@Tests = triple_test \@Tests;
++
++# Remember that triple_test creates from each test with exactly one "IN"
++# file two more tests (.p and .r suffix on name) corresponding to reading
++# input from a file and from a pipe.  The pipe-reading test would fail
++# due to a race condition about 1 in 20 times.
++# Remove the IN_PIPE version of the "output-is-input" test above.
++# The others aren't susceptible because they have three inputs each.
++@Tests = grep {$_->[0] ne 'output-is-input.p'} @Tests;
++
+ my $save_temps = $ENV{DEBUG};
+ my $verbose = $ENV{VERBOSE};
+-my $prog = 'fold';
+ my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+ exit $fail;
+diff -Naur coreutils-8.23.orig/tests/misc/join.pl coreutils-8.23/tests/misc/join.pl
+--- coreutils-8.23.orig/tests/misc/join.pl     2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/misc/join.pl  2014-07-18 22:36:17.399067050 -0500
+@@ -25,6 +25,15 @@
+ my $prog = 'join';
++my $try = "Try \`$prog --help' for more information.\n";
++my $inval = "$prog: invalid byte, character or field list\n$try";
++
++my $mb_locale;
++#Comment out next line to disable multibyte tests
++$mb_locale = $ENV{LOCALE_FR_UTF8};
++! defined $mb_locale || $mb_locale eq 'none'
++  and $mb_locale = 'C';
++
+ my $delim = chr 0247;
+ sub t_subst ($)
+ {
+@@ -326,8 +335,49 @@
+     push @Tests, $new_ent;
+   }
++# Add _POSIX2_VERSION=199209 to the environment of each test
++# that uses an old-style option like +1.
++if ($mb_locale ne 'C')
++  {
++    # Duplicate each test vector, appending "-mb" to the test name and
++    # inserting {ENV => "LC_ALL=$mb_locale"} in the copy, so that we
++    # provide coverage for the distro-added multi-byte code paths.
++    my @new;
++    foreach my $t (@Tests)
++      {
++        my @new_t = @$t;
++        my $test_name = shift @new_t;
++
++        # Depending on whether join is multi-byte-patched,
++        # it emits different diagnostics:
++        #   non-MB: invalid byte or field list
++        #   MB:     invalid byte, character or field list
++        # Adjust the expected error output accordingly.
++        if (grep {ref $_ eq 'HASH' && exists $_->{ERR} && $_->{ERR} eq $inval}
++            (@new_t))
++          {
++            my $sub = {ERR_SUBST => 's/, character//'};
++            push @new_t, $sub;
++            push @$t, $sub;
++          }
++        #Adjust the output some error messages including test_name for mb
++        if (grep {ref $_ eq 'HASH' && exists $_->{ERR}}
++             (@new_t))
++          {
++            my $sub2 = {ERR_SUBST => "s/$test_name-mb/$test_name/"};
++            push @new_t, $sub2;
++            push @$t, $sub2;
++          }
++        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
++      }
++    push @Tests, @new;
++  }
++
+ @Tests = triple_test \@Tests;
++#skip invalid-j-mb test, it is failing because of the format
++@Tests = grep {$_->[0] ne 'invalid-j-mb'} @Tests;
++
+ my $save_temps = $ENV{DEBUG};
+ my $verbose = $ENV{VERBOSE};
+diff -Naur coreutils-8.23.orig/tests/misc/sort-mb-tests.sh coreutils-8.23/tests/misc/sort-mb-tests.sh
+--- coreutils-8.23.orig/tests/misc/sort-mb-tests.sh    1969-12-31 18:00:00.000000000 -0600
++++ coreutils-8.23/tests/misc/sort-mb-tests.sh 2014-07-18 22:36:17.399067050 -0500
 @@ -0,0 +1,45 @@
 +#!/bin/sh
 +# Verify sort's multi-byte support.
@@ -4168,3 +4382,327 @@ diff -urNp coreutils-8.21-orig/tests/misc/sort-mb-tests.sh coreutils-8.21/tests/
 +compare exp out || { fail=1; cat out; }
 +
 +Exit $fail
+diff -Naur coreutils-8.23.orig/tests/misc/sort-merge.pl coreutils-8.23/tests/misc/sort-merge.pl
+--- coreutils-8.23.orig/tests/misc/sort-merge.pl       2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/misc/sort-merge.pl    2014-07-18 22:36:17.399067050 -0500
+@@ -26,6 +26,15 @@
+ # Turn off localization of executable's output.
+ @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
++my $mb_locale;
++# uncommented according to upstream commit enabling multibyte paths
++$mb_locale = $ENV{LOCALE_FR_UTF8};
++! defined $mb_locale || $mb_locale eq 'none'
++ and $mb_locale = 'C';
++
++my $try = "Try \`$prog --help' for more information.\n";
++my $inval = "$prog: invalid byte, character or field list\n$try";
++
+ # three empty files and one that says 'foo'
+ my @inputs = (+(map{{IN=> {"empty$_"=> ''}}}1..3), {IN=> {foo=> "foo\n"}});
+@@ -77,6 +86,39 @@
+         {OUT=>$big_input}],
+     );
++# Add _POSIX2_VERSION=199209 to the environment of each test
++# that uses an old-style option like +1.
++if ($mb_locale ne 'C')
++  {
++    # Duplicate each test vector, appending "-mb" to the test name and
++    # inserting {ENV => "LC_ALL=$mb_locale"} in the copy, so that we
++    # provide coverage for the distro-added multi-byte code paths.
++    my @new;
++    foreach my $t (@Tests)
++      {
++        my @new_t = @$t;
++        my $test_name = shift @new_t;
++
++        # Depending on whether sort is multi-byte-patched,
++        # it emits different diagnostics:
++        #   non-MB: invalid byte or field list
++        #   MB:     invalid byte, character or field list
++        # Adjust the expected error output accordingly.
++        if (grep {ref $_ eq 'HASH' && exists $_->{ERR} && $_->{ERR} eq $inval}
++            (@new_t))
++          {
++            my $sub = {ERR_SUBST => 's/, character//'};
++            push @new_t, $sub;
++            push @$t, $sub;
++          }
++        next if ($test_name =~ "nmerge-.");
++        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
++      }
++    push @Tests, @new;
++  }
++
++@Tests = triple_test \@Tests;
++
+ my $save_temps = $ENV{DEBUG};
+ my $verbose = $ENV{VERBOSE};
+diff -Naur coreutils-8.23.orig/tests/misc/sort.pl coreutils-8.23/tests/misc/sort.pl
+--- coreutils-8.23.orig/tests/misc/sort.pl     2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/misc/sort.pl  2014-07-18 22:36:17.400067026 -0500
+@@ -24,10 +24,15 @@
+ # Turn off localization of executable's output.
+ @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+-my $mb_locale = $ENV{LOCALE_FR_UTF8};
++my $mb_locale;
++#Comment out next line to disable multibyte tests
++$mb_locale = $ENV{LOCALE_FR_UTF8};
+ ! defined $mb_locale || $mb_locale eq 'none'
+   and $mb_locale = 'C';
++my $try = "Try \`$prog --help' for more information.\n";
++my $inval = "$prog: invalid byte, character or field list\n$try";
++
+ # Since each test is run with a file name and with redirected stdin,
+ # the name in the diagnostic is either the file name or "-".
+ # Normalize each diagnostic to use '-'.
+@@ -415,6 +420,37 @@
+       }
+   }
++if ($mb_locale ne 'C')
++   {
++    # Duplicate each test vector, appending "-mb" to the test name and
++    # inserting {ENV => "LC_ALL=$mb_locale"} in the copy, so that we
++    # provide coverage for the distro-added multi-byte code paths.
++    my @new;
++    foreach my $t (@Tests)
++       {
++        my @new_t = @$t;
++        my $test_name = shift @new_t;
++
++        # Depending on whether sort is multi-byte-patched,
++        # it emits different diagnostics:
++        #   non-MB: invalid byte or field list
++        #   MB:     invalid byte, character or field list
++        # Adjust the expected error output accordingly.
++        if (grep {ref $_ eq 'HASH' && exists $_->{ERR} && $_->{ERR} eq $inval}
++            (@new_t))
++          {
++            my $sub = {ERR_SUBST => 's/, character//'};
++            push @new_t, $sub;
++            push @$t, $sub;
++          }
++        #disable several failing tests until investigation, disable all tests with envvars set
++        next if (grep {ref $_ eq 'HASH' && exists $_->{ENV}} (@new_t));
++        next if ($test_name =~ "18g" or $test_name =~ "sort-numeric" or $test_name =~ "08[ab]" or $test_name =~ "03[def]" or $test_name =~ "h4" or $test_name =~ "n1" or $test_name =~ "2[01]a");
++        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
++       }
++    push @Tests, @new;
++   }
++
+ @Tests = triple_test \@Tests;
+ # Remember that triple_test creates from each test with exactly one "IN"
+@@ -424,6 +460,7 @@
+ # Remove the IN_PIPE version of the "output-is-input" test above.
+ # The others aren't susceptible because they have three inputs each.
+ @Tests = grep {$_->[0] ne 'output-is-input.p'} @Tests;
++@Tests = grep {$_->[0] ne 'output-is-input-mb.p'} @Tests;
+ my $save_temps = $ENV{DEBUG};
+ my $verbose = $ENV{VERBOSE};
+diff -Naur coreutils-8.23.orig/tests/misc/unexpand.pl coreutils-8.23/tests/misc/unexpand.pl
+--- coreutils-8.23.orig/tests/misc/unexpand.pl 2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/misc/unexpand.pl      2014-07-18 22:36:17.400067026 -0500
+@@ -27,6 +27,14 @@
+ my $prog = 'unexpand';
++# comment out next line to disable multibyte tests
++my $mb_locale = $ENV{LOCALE_FR_UTF8};
++! defined $mb_locale || $mb_locale eq 'none'
++ and $mb_locale = 'C';
++
++my $try = "Try \`$prog --help' for more information.\n";
++my $inval = "$prog: invalid byte, character or field list\n$try";
++
+ my @Tests =
+     (
+      ['a1', {IN=> ' 'x 1 ."y\n"}, {OUT=> ' 'x 1 ."y\n"}],
+@@ -92,6 +100,37 @@
+       {EXIT => 1}, {ERR => "$prog: tab stop value is too large\n"}],
+     );
++if ($mb_locale ne 'C')
++  {
++    # Duplicate each test vector, appending "-mb" to the test name and
++    # inserting {ENV => "LC_ALL=$mb_locale"} in the copy, so that we
++    # provide coverage for the distro-added multi-byte code paths.
++    my @new;
++    foreach my $t (@Tests)
++      {
++        my @new_t = @$t;
++        my $test_name = shift @new_t;
++
++        # Depending on whether unexpand is multi-byte-patched,
++        # it emits different diagnostics:
++        #   non-MB: invalid byte or field list
++        #   MB:     invalid byte, character or field list
++        # Adjust the expected error output accordingly.
++        if (grep {ref $_ eq 'HASH' && exists $_->{ERR} && $_->{ERR} eq $inval}
++            (@new_t))
++          {
++            my $sub = {ERR_SUBST => 's/, character//'};
++            push @new_t, $sub;
++            push @$t, $sub;
++          }
++        next if ($test_name =~ 'b-1');
++        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
++      }
++    push @Tests, @new;
++  }
++
++@Tests = triple_test \@Tests;
++
+ my $save_temps = $ENV{DEBUG};
+ my $verbose = $ENV{VERBOSE};
+diff -Naur coreutils-8.23.orig/tests/misc/uniq.pl coreutils-8.23/tests/misc/uniq.pl
+--- coreutils-8.23.orig/tests/misc/uniq.pl     2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/misc/uniq.pl  2014-07-18 22:36:17.400067026 -0500
+@@ -23,9 +23,17 @@
+ my $prog = 'uniq';
+ my $try = "Try '$prog --help' for more information.\n";
++my $inval = "$prog: invalid byte, character or field list\n$try";
++
+ # Turn off localization of executable's output.
+ @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
++my $mb_locale;
++#Comment out next line to disable multibyte tests
++$mb_locale = $ENV{LOCALE_FR_UTF8};
++! defined $mb_locale || $mb_locale eq 'none'
++  and $mb_locale = 'C';
++
+ # When possible, create a "-z"-testing variant of each test.
+ sub add_z_variants($)
+ {
+@@ -261,6 +269,53 @@
+       and push @$t, {ENV=>'_POSIX2_VERSION=199209'};
+   }
++if ($mb_locale ne 'C')
++  {
++    # Duplicate each test vector, appending "-mb" to the test name and
++    # inserting {ENV => "LC_ALL=$mb_locale"} in the copy, so that we
++    # provide coverage for the distro-added multi-byte code paths.
++    my @new;
++    foreach my $t (@Tests)
++      {
++        my @new_t = @$t;
++        my $test_name = shift @new_t;
++
++        # Depending on whether uniq is multi-byte-patched,
++        # it emits different diagnostics:
++        #   non-MB: invalid byte or field list
++        #   MB:     invalid byte, character or field list
++        # Adjust the expected error output accordingly.
++        if (grep {ref $_ eq 'HASH' && exists $_->{ERR} && $_->{ERR} eq $inval}
++            (@new_t))
++          {
++            my $sub = {ERR_SUBST => 's/, character//'};
++            push @new_t, $sub;
++            push @$t, $sub;
++          }
++        # In test #145, replace the each ‘...’ by '...'.
++        if ($test_name =~ "145")
++          {
++            my $sub = { ERR_SUBST => "s/‘([^’]+)’/'\$1'/g"};
++            push @new_t, $sub;
++            push @$t, $sub;
++          }
++        next if (   $test_name =~ "schar"
++                 or $test_name =~ "^obs-plus"
++                 or $test_name =~ "119");
++        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
++      }
++    push @Tests, @new;
++   }
++
++# Remember that triple_test creates from each test with exactly one "IN"
++# file two more tests (.p and .r suffix on name) corresponding to reading
++# input from a file and from a pipe.  The pipe-reading test would fail
++# due to a race condition about 1 in 20 times.
++# Remove the IN_PIPE version of the "output-is-input" test above.
++# The others aren't susceptible because they have three inputs each.
++
++@Tests = grep {$_->[0] ne 'output-is-input.p'} @Tests;
++
+ @Tests = add_z_variants \@Tests;
+ @Tests = triple_test \@Tests;
+diff -Naur coreutils-8.23.orig/tests/pr/pr-tests.pl coreutils-8.23/tests/pr/pr-tests.pl
+--- coreutils-8.23.orig/tests/pr/pr-tests.pl   2014-07-11 06:00:07.000000000 -0500
++++ coreutils-8.23/tests/pr/pr-tests.pl        2014-07-18 22:36:17.401067000 -0500
+@@ -23,6 +23,15 @@
+ my $prog = 'pr';
++my $mb_locale;
++#Uncomment the following line to enable multibyte tests
++$mb_locale = $ENV{LOCALE_FR_UTF8};
++! defined $mb_locale || $mb_locale eq 'none'
++  and $mb_locale = 'C';
++
++my $try = "Try \`$prog --help' for more information.\n";
++my $inval = "$prog: invalid byte, character or field list\n$try";
++
+ my @tv = (
+ # -b option is no longer an official option. But it's still working to
+@@ -466,8 +475,48 @@
+     {IN=>{3=>"x\ty\tz\n"}},
+      {OUT=>join("\t", qw(a b c m n o x y z)) . "\n"} ];
++# Add _POSIX2_VERSION=199209 to the environment of each test
++# that uses an old-style option like +1.
++if ($mb_locale ne 'C')
++  {
++    # Duplicate each test vector, appending "-mb" to the test name and
++    # inserting {ENV => "LC_ALL=$mb_locale"} in the copy, so that we
++    # provide coverage for the distro-added multi-byte code paths.
++    my @new;
++    foreach my $t (@Tests)
++      {
++        my @new_t = @$t;
++        my $test_name = shift @new_t;
++
++        # Depending on whether pr is multi-byte-patched,
++        # it emits different diagnostics:
++        #   non-MB: invalid byte or field list
++        #   MB:     invalid byte, character or field list
++        # Adjust the expected error output accordingly.
++        if (grep {ref $_ eq 'HASH' && exists $_->{ERR} && $_->{ERR} eq $inval}
++            (@new_t))
++          {
++            my $sub = {ERR_SUBST => 's/, character//'};
++            push @new_t, $sub;
++            push @$t, $sub;
++          }
++        #temporarily skip some failing tests
++        next if ($test_name =~ "col-0" or $test_name =~ "col-inval");
++        push @new, ["$test_name-mb", @new_t, {ENV => "LC_ALL=$mb_locale"}];
++      }
++    push @Tests, @new;
++  }
++
+ @Tests = triple_test \@Tests;
++# Remember that triple_test creates from each test with exactly one "IN"
++# file two more tests (.p and .r suffix on name) corresponding to reading
++# input from a file and from a pipe.  The pipe-reading test would fail
++# due to a race condition about 1 in 20 times.
++# Remove the IN_PIPE version of the "output-is-input" test above.
++# The others aren't susceptible because they have three inputs each.
++@Tests = grep {$_->[0] ne 'output-is-input.p'} @Tests;
++
+ my $save_temps = $ENV{DEBUG};
+ my $verbose = $ENV{VERBOSE};
index d77afb3d9db70807c09e5bb2059bf91e08516d6b..648e6e3487fcbbaf2f1e319b9712a4ad8ea14b66 100644 (file)
@@ -1,53 +1,7 @@
-diff -Nur b/gnulib-tests/gnulib.mk a/gnulib-tests/gnulib.mk
---- b/gnulib-tests/gnulib.mk   2013-02-07 17:58:44.000000000 +0100
-+++ a/gnulib-tests/gnulib.mk   2013-04-01 20:59:40.550543124 +0200
-@@ -524,10 +524,10 @@
- ## begin gnulib module fdutimensat-tests
--TESTS += test-fdutimensat
--check_PROGRAMS += test-fdutimensat
--test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
--EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-fdutimensat.c macros.h
-+#TESTS += test-fdutimensat
-+#check_PROGRAMS += test-fdutimensat
-+#test_fdutimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
-+#EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-fdutimensat.c macros.h
- ## end   gnulib module fdutimensat-tests
-@@ -2438,19 +2438,19 @@
- ## begin gnulib module utimens-tests
--TESTS += test-utimens
--check_PROGRAMS += test-utimens
--test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
--EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimens.c macros.h
-+#TESTS += test-utimens
-+#check_PROGRAMS += test-utimens
-+#test_utimens_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
-+#EXTRA_DIST += nap.h test-futimens.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimens.c macros.h
- ## end   gnulib module utimens-tests
- ## begin gnulib module utimensat-tests
--TESTS += test-utimensat
--check_PROGRAMS += test-utimensat
--test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
--EXTRA_DIST += nap.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimensat.c signature.h macros.h
-+#TESTS += test-utimensat
-+#check_PROGRAMS += test-utimensat
-+#test_utimensat_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) @LIBINTL@
-+#EXTRA_DIST += nap.h test-lutimens.h test-utimens.h test-utimens-common.h test-utimensat.c signature.h macros.h
- ## end   gnulib module utimensat-tests
-diff -Nur b/tests/local.mk a/tests/local.mk
---- b/tests/local.mk   2013-02-11 11:30:12.000000000 +0100
-+++ a/tests/local.mk   2013-04-01 19:42:42.212419701 +0200
-@@ -108,7 +108,6 @@
+diff -Nur coreutils-8.23-orig/tests/local.mk coreutils-8.23/tests/local.mk
+--- coreutils-8.23-orig/tests/local.mk 2014-07-14 00:09:52.000000000 +0200
++++ coreutils-8.23/tests/local.mk      2015-01-23 21:44:03.355661943 +0100
+@@ -107,7 +107,6 @@
  
  all_root_tests =                              \
    tests/chown/basic.sh                                \
@@ -55,28 +9,25 @@ diff -Nur b/tests/local.mk a/tests/local.mk
    tests/cp/preserve-gid.sh                    \
    tests/cp/special-bits.sh                    \
    tests/cp/cp-mv-enotsup-xattr.sh             \
-@@ -274,7 +273,6 @@
-   tests/misc/groups-version.sh                        \
-   tests/misc/head-c.sh                                \
-   tests/misc/head-pos.sh                      \
--  tests/misc/id-context.sh                    \
-   tests/misc/id-groups.sh                     \
-   tests/misc/id-setgid.sh                     \
-   tests/misc/md5sum.pl                                \
-@@ -328,7 +326,6 @@
-   tests/misc/sort-merge.pl                    \
-   tests/misc/sort-merge-fdlimit.sh            \
-   tests/misc/sort-month.sh                    \
--  tests/misc/sort-exit-early.sh                       \
-   tests/misc/sort-rand.sh                     \
-   tests/misc/sort-spinlock-abuse.sh           \
-   tests/misc/sort-stale-thread-mem.sh         \
-@@ -503,12 +500,10 @@
+@@ -121,8 +120,6 @@
+   tests/install/install-C-root.sh             \
+   tests/ls/capability.sh                      \
+   tests/ls/nameless-uid.sh                    \
+-  tests/misc/chcon.sh                         \
+-  tests/misc/chroot-credentials.sh            \
+   tests/misc/selinux.sh                               \
+   tests/misc/truncate-owned-by-other.sh               \
+   tests/mkdir/writable-under-readonly.sh      \
+@@ -517,8 +514,6 @@
    tests/du/trailing-slash.sh                  \
    tests/du/two-args.sh                                \
    tests/id/gnu-zero-uids.sh                   \
 -  tests/id/no-context.sh                      \
-   tests/install/basic-1.sh                    \
+-  tests/id/context.sh                         \
+   tests/id/uid.sh                             \
+   tests/id/setgid.sh                          \
+   tests/id/zero.sh                            \
+@@ -527,7 +522,6 @@
    tests/install/create-leading.sh             \
    tests/install/d-slashdot.sh                 \
    tests/install/install-C.sh                  \
@@ -84,3 +35,11 @@ diff -Nur b/tests/local.mk a/tests/local.mk
    tests/install/strip-program.sh              \
    tests/install/trap.sh                               \
    tests/ln/backup-1.sh                                \
+@@ -579,7 +573,6 @@
+   tests/mkdir/parents.sh                      \
+   tests/mkdir/perm.sh                         \
+   tests/mkdir/selinux.sh                      \
+-  tests/mkdir/restorecon.sh                   \
+   tests/mkdir/special-1.sh                    \
+   tests/mkdir/t-slash.sh                      \
+   tests/mkdir/smack-no-root.sh                        \
diff --git a/coreutils/patches/coreutils-selinux.patch b/coreutils/patches/coreutils-selinux.patch
deleted file mode 100644 (file)
index a151acb..0000000
+++ /dev/null
@@ -1,656 +0,0 @@
-diff -urNp coreutils-8.21-orig/configure.ac coreutils-8.21/configure.ac
---- coreutils-8.21-orig/configure.ac   2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/configure.ac        2013-02-15 14:31:58.937482694 +0100
-@@ -204,6 +204,13 @@ if test "$gl_gcc_warnings" = yes; then
-   AC_SUBST([GNULIB_TEST_WARN_CFLAGS])
- fi
-+dnl Give the chance to enable SELINUX
-+AC_ARG_ENABLE(selinux, dnl
-+[  --enable-selinux              Enable use of the SELINUX libraries],
-+[AC_DEFINE(WITH_SELINUX, 1, [Define if you want to use SELINUX])
-+LIB_SELINUX="-lselinux"
-+AC_SUBST(LIB_SELINUX)])
-+
- AC_FUNC_FORK
- optional_bin_progs=
-diff -urNp coreutils-8.21-orig/init.cfg coreutils-8.21/init.cfg
---- coreutils-8.21-orig/init.cfg       2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/init.cfg    2013-02-15 14:31:58.957469955 +0100
-@@ -308,8 +308,8 @@ require_selinux_()
-   # Independent of whether SELinux is enabled system-wide,
-   # the current file system may lack SELinux support.
--  case $(ls -Zd .) in
--    '? .'|'unlabeled .')
-+  case $(ls -Zd . | cut -f4 -d" ") in
-+    '?'|'unlabeled')
-       skip_ "this system (or maybe just" \
-         "the current file system) lacks SELinux support"
-     ;;
-diff -urNp coreutils-8.21-orig/man/chcon.x coreutils-8.21/man/chcon.x
---- coreutils-8.21-orig/man/chcon.x    2011-08-23 15:44:01.000000000 +0200
-+++ coreutils-8.21/man/chcon.x 2013-02-15 14:31:58.937482694 +0100
-@@ -1,4 +1,4 @@
- [NAME]
--chcon \- change file security context
-+chcon \- change file SELinux security context
- [DESCRIPTION]
- .\" Add any additional description here
-diff -urNp coreutils-8.21-orig/man/runcon.x coreutils-8.21/man/runcon.x
---- coreutils-8.21-orig/man/runcon.x   2011-08-23 15:44:01.000000000 +0200
-+++ coreutils-8.21/man/runcon.x        2013-02-15 14:31:58.938486496 +0100
-@@ -1,5 +1,5 @@
- [NAME]
--runcon \- run command with specified security context
-+runcon \- run command with specified SELinux security context
- [DESCRIPTION]
- Run COMMAND with completely-specified CONTEXT, or with current or
- transitioned security context modified by one or more of LEVEL,
-diff -urNp coreutils-8.21-orig/src/chcon.c coreutils-8.21/src/chcon.c
---- coreutils-8.21-orig/src/chcon.c    2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/chcon.c 2013-02-15 14:31:58.939469828 +0100
-@@ -355,7 +355,7 @@ Usage: %s [OPTION]... CONTEXT FILE...\n\
- "),
-         program_name, program_name, program_name);
-       fputs (_("\
--Change the security context of each FILE to CONTEXT.\n\
-+Change the SELinux security context of each FILE to CONTEXT.\n\
- With --reference, change the security context of each FILE to that of RFILE.\n\
- "), stdout);
-diff -urNp coreutils-8.21-orig/src/copy.c coreutils-8.21/src/copy.c
---- coreutils-8.21-orig/src/copy.c     2013-02-07 10:37:05.000000000 +0100
-+++ coreutils-8.21/src/copy.c  2013-02-15 14:31:58.941467872 +0100
-@@ -2315,6 +2315,8 @@ copy_internal (char const *src_name, cha
-         {
-           /* Here, we are crossing a file system boundary and cp's -x option
-              is in effect: so don't copy the contents of this directory. */
-+        if (x->preserve_security_context)
-+           restore_default_fscreatecon_or_die ();
-         }
-       else
-         {
-diff -urNp coreutils-8.21-orig/src/copy.h coreutils-8.21/src/copy.h
---- coreutils-8.21-orig/src/copy.h     2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/copy.h  2013-02-15 14:31:58.943470982 +0100
-@@ -159,6 +159,9 @@ struct cp_options
-   bool preserve_timestamps;
-   bool explicit_no_preserve_mode;
-+  /* If true, attempt to set specified security context */
-+  bool set_security_context;
-+
-   /* Enabled for mv, and for cp by the --preserve=links option.
-      If true, attempt to preserve in the destination files any
-      logical hard links between the source files.  If used with cp's
-diff -urNp coreutils-8.21-orig/src/cp.c coreutils-8.21/src/cp.c
---- coreutils-8.21-orig/src/cp.c       2013-02-07 10:37:05.000000000 +0100
-+++ coreutils-8.21/src/cp.c    2013-02-15 14:31:58.945468929 +0100
-@@ -141,6 +141,7 @@ static struct option const long_opts[] =
-   {"target-directory", required_argument, NULL, 't'},
-   {"update", no_argument, NULL, 'u'},
-   {"verbose", no_argument, NULL, 'v'},
-+  {"context", required_argument, NULL, 'Z'},
-   {GETOPT_HELP_OPTION_DECL},
-   {GETOPT_VERSION_OPTION_DECL},
-   {NULL, 0, NULL, 0}
-@@ -201,6 +202,9 @@ Copy SOURCE to DEST, or multiple SOURCE(
-                                  all\n\
- "), stdout);
-       fputs (_("\
-+  -c                           same as --preserve=context\n\
-+"), stdout);
-+      fputs (_("\
-       --no-preserve=ATTR_LIST  don't preserve the specified attributes\n\
-       --parents                use full source file name under DIRECTORY\n\
- "), stdout);
-@@ -227,6 +231,7 @@ Copy SOURCE to DEST, or multiple SOURCE(
-                                  destination file is missing\n\
-   -v, --verbose                explain what is being done\n\
-   -x, --one-file-system        stay on this file system\n\
-+  -Z, --context=CONTEXT        set security context of copy to CONTEXT\n\
- "), stdout);
-       fputs (HELP_OPTION_DESCRIPTION, stdout);
-       fputs (VERSION_OPTION_DESCRIPTION, stdout);
-@@ -784,6 +789,7 @@ cp_option_init (struct cp_options *x)
-   x->explicit_no_preserve_mode = false;
-   x->preserve_security_context = false;
-   x->require_preserve_context = false;
-+  x->set_security_context = false;
-   x->preserve_xattr = false;
-   x->reduce_diagnostics = false;
-   x->require_preserve_xattr = false;
-@@ -933,7 +939,7 @@ main (int argc, char **argv)
-      we'll actually use backup_suffix_string.  */
-   backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
--  while ((c = getopt_long (argc, argv, "abdfHilLnprst:uvxPRS:T",
-+  while ((c = getopt_long (argc, argv, "abcdfHilLnprst:uvxPRS:TZ:",
-                            long_opts, NULL))
-          != -1)
-     {
-@@ -981,6 +987,16 @@ main (int argc, char **argv)
-           copy_contents = true;
-           break;
-+        case 'c':
-+          if ( x.set_security_context ) { 
-+              (void) fprintf(stderr, "%s: cannot force target context and preserve it\n", argv[0]);
-+             exit( 1 );
-+           }
-+           else if (selinux_enabled) {
-+              x.preserve_security_context = true;
-+              x.require_preserve_context = true;
-+           }
-+          break;
-         case 'd':
-           x.preserve_links = true;
-           x.dereference = DEREF_NEVER;
-@@ -1091,6 +1107,27 @@ main (int argc, char **argv)
-           x.one_file_system = true;
-           break;
-+
-+        case 'Z':
-+          /* politely decline if we're not on a selinux-enabled kernel. */
-+          if( !selinux_enabled ) {
-+             fprintf( stderr, "Warning:  ignoring --context (-Z). "
-+                              "It requires a SELinux enabled kernel.\n" );
-+             break;
-+         }
-+         if ( x.preserve_security_context ) {
-+            (void) fprintf(stderr, "%s: cannot force target context to '%s' and preserve it\n", argv[0], optarg);
-+            exit( 1 );
-+         }
-+         x.set_security_context = true;
-+         /* if there's a security_context given set new path 
-+            components to that context, too */
-+         if ( setfscreatecon(optarg) < 0 ) {
-+            (void) fprintf(stderr, _("cannot set default security context %s\n"), optarg);
-+            exit( 1 );
-+         }
-+         break;
-+
-         case 'S':
-           make_backups = true;
-           backup_suffix_string = optarg;
-diff -urNp coreutils-8.21-orig/src/id.c coreutils-8.21/src/id.c
---- coreutils-8.21-orig/src/id.c       2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/id.c    2013-02-15 14:31:58.946469154 +0100
-@@ -106,7 +106,7 @@ int
- main (int argc, char **argv)
- {
-   int optc;
--  int selinux_enabled = (is_selinux_enabled () > 0);
-+  bool selinux_enabled = (is_selinux_enabled () > 0);
-   /* If true, output the list of all group IDs. -G */
-   bool just_group_list = false;
-diff -urNp coreutils-8.21-orig/src/install.c coreutils-8.21/src/install.c
---- coreutils-8.21-orig/src/install.c  2013-02-07 10:37:05.000000000 +0100
-+++ coreutils-8.21/src/install.c       2013-02-15 14:31:58.948469440 +0100
-@@ -280,6 +280,7 @@ cp_option_init (struct cp_options *x)
-   x->data_copy_required = true;
-   x->require_preserve = false;
-   x->require_preserve_context = false;
-+  x->set_security_context = false;
-   x->require_preserve_xattr = false;
-   x->recursive = false;
-   x->sparse_mode = SPARSE_AUTO;
-@@ -639,7 +640,7 @@ In the 4th form, create all components o
-   -v, --verbose       print the name of each directory as it is created\n\
- "), stdout);
-       fputs (_("\
--      --preserve-context  preserve SELinux security context\n\
-+  -P, --preserve-context  preserve SELinux security context\n\
-   -Z, --context=CONTEXT  set SELinux security context of files and directories\
- \n\
- "), stdout);
-@@ -782,7 +783,7 @@ main (int argc, char **argv)
-      we'll actually use backup_suffix_string.  */
-   backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
--  while ((optc = getopt_long (argc, argv, "bcCsDdg:m:o:pt:TvS:Z:", long_options,
-+  while ((optc = getopt_long (argc, argv, "bcCsDdg:m:o:pPt:TvS:Z:", long_options,
-                               NULL)) != -1)
-     {
-       switch (optc)
-@@ -853,6 +854,7 @@ main (int argc, char **argv)
-           no_target_directory = true;
-           break;
-+        case 'P':
-         case PRESERVE_CONTEXT_OPTION:
-           if ( ! selinux_enabled)
-             {
-@@ -860,6 +862,10 @@ main (int argc, char **argv)
-                              "this kernel is not SELinux-enabled"));
-               break;
-             }
-+          if ( x.set_security_context ) {
-+             (void) fprintf(stderr, "%s: cannot force target context and preserve it\n", argv[0]);
-+             exit( 1 );
-+          }
-           x.preserve_security_context = true;
-           use_default_selinux_context = false;
-           break;
-@@ -871,6 +877,7 @@ main (int argc, char **argv)
-               break;
-             }
-           scontext = optarg;
-+          x.set_security_context = true;
-           use_default_selinux_context = false;
-           break;
-         case_GETOPT_HELP_CHAR;
-diff -urNp coreutils-8.21-orig/src/ls.c coreutils-8.21/src/ls.c
---- coreutils-8.21-orig/src/ls.c       2013-02-03 04:24:02.000000000 +0100
-+++ coreutils-8.21/src/ls.c    2013-02-15 14:31:58.953469008 +0100
-@@ -165,7 +165,8 @@ enum filetype
-     symbolic_link,
-     sock,
-     whiteout,
--    arg_directory
-+    arg_directory,
-+    command_line
-   };
- /* Display letters and indicators for each filetype.
-@@ -281,6 +282,7 @@ static void queue_directory (char const 
-                              bool command_line_arg);
- static void sort_files (void);
- static void parse_ls_color (void);
-+static void print_scontext_format (const struct fileinfo *f);
- /* Initial size of hash table.
-    Most hierarchies are likely to be shallower than this.  */
-@@ -350,7 +352,7 @@ static struct pending *pending_dirs;
- static struct timespec current_time;
--static bool print_scontext;
-+static int print_scontext = 0;
- static char UNKNOWN_SECURITY_CONTEXT[] = "?";
- /* Whether any of the files has an ACL.  This affects the width of the
-@@ -390,7 +392,9 @@ enum format
-     one_per_line,             /* -1 */
-     many_per_line,            /* -C */
-     horizontal,                       /* -x */
--    with_commas                       /* -m */
-+    with_commas,                      /* -m */
-+    security_format, /* -Z */
-+    invalid_format
-   };
- static enum format format;
-@@ -793,6 +797,9 @@ enum
-   SHOW_CONTROL_CHARS_OPTION,
-   SI_OPTION,
-   SORT_OPTION,
-+  CONTEXT_OPTION,
-+  LCONTEXT_OPTION,
-+  SCONTEXT_OPTION,
-   TIME_OPTION,
-   TIME_STYLE_OPTION
- };
-@@ -839,7 +846,9 @@ static struct option const long_options[
-   {"time-style", required_argument, NULL, TIME_STYLE_OPTION},
-   {"color", optional_argument, NULL, COLOR_OPTION},
-   {"block-size", required_argument, NULL, BLOCK_SIZE_OPTION},
--  {"context", no_argument, 0, 'Z'},
-+  {"context", no_argument, 0, CONTEXT_OPTION},
-+  {"lcontext", no_argument, 0, LCONTEXT_OPTION},
-+  {"scontext", no_argument, 0, SCONTEXT_OPTION},
-   {"author", no_argument, NULL, AUTHOR_OPTION},
-   {GETOPT_HELP_OPTION_DECL},
-   {GETOPT_VERSION_OPTION_DECL},
-@@ -849,12 +858,12 @@ static struct option const long_options[
- static char const *const format_args[] =
- {
-   "verbose", "long", "commas", "horizontal", "across",
--  "vertical", "single-column", NULL
-+  "vertical", "single-column", "context", NULL
- };
- static enum format const format_types[] =
- {
-   long_format, long_format, with_commas, horizontal, horizontal,
--  many_per_line, one_per_line
-+  many_per_line, one_per_line, security_format
- };
- ARGMATCH_VERIFY (format_args, format_types);
-@@ -1296,7 +1305,8 @@ main (int argc, char **argv)
-       /* Avoid following symbolic links when possible.  */
-       if (is_colored (C_ORPHAN)
-           || (is_colored (C_EXEC) && color_symlink_as_referent)
--          || (is_colored (C_MISSING) && format == long_format))
-+          || (is_colored (C_MISSING) && (format == long_format
-+              || format == security_format)))
-         check_symlink_color = true;
-       /* If the standard output is a controlling terminal, watch out
-@@ -1343,7 +1353,7 @@ main (int argc, char **argv)
-   if (dereference == DEREF_UNDEFINED)
-     dereference = ((immediate_dirs
-                     || indicator_style == classify
--                    || format == long_format)
-+                    || format == long_format || format == security_format)
-                    ? DEREF_NEVER
-                    : DEREF_COMMAND_LINE_SYMLINK_TO_DIR);
-@@ -1363,7 +1373,7 @@ main (int argc, char **argv)
-   format_needs_stat = sort_type == sort_time || sort_type == sort_size
-     || format == long_format
--    || print_scontext
-+    || format == security_format || print_scontext
-     || print_block_size;
-   format_needs_type = (! format_needs_stat
-                        && (recursive
-@@ -1394,7 +1404,7 @@ main (int argc, char **argv)
-     }
-   else
-     do
--      gobble_file (argv[i++], unknown, NOT_AN_INODE_NUMBER, true, "");
-+      gobble_file (argv[i++], command_line, NOT_AN_INODE_NUMBER, true, "");
-     while (i < argc);
-   if (cwd_n_used)
-@@ -1565,7 +1575,7 @@ decode_switches (int argc, char **argv)
-   ignore_mode = IGNORE_DEFAULT;
-   ignore_patterns = NULL;
-   hide_patterns = NULL;
--  print_scontext = false;
-+  print_scontext = 0;
-   /* FIXME: put this in a function.  */
-   {
-@@ -1941,13 +1951,27 @@ decode_switches (int argc, char **argv)
-           break;
-         case 'Z':
--          print_scontext = true;
-+          print_scontext = 1;
-+    format = security_format;
-           break;
-         case_GETOPT_HELP_CHAR;
-         case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
-+  case CONTEXT_OPTION: /* default security context format */
-+                print_scontext = 1;
-+                format = security_format;
-+                break;
-+        case LCONTEXT_OPTION: /* long format plus security context */
-+                print_scontext = 1;
-+                format = long_format;
-+                break;
-+        case SCONTEXT_OPTION: /* short form of new security format */
-+                print_scontext = 0;
-+                format = security_format;
-+                break;
-+
-         default:
-           usage (LS_FAILURE);
-         }
-@@ -2883,6 +2907,7 @@ gobble_file (char const *name, enum file
-   memset (f, '\0', sizeof *f);
-   f->stat.st_ino = inode;
-   f->filetype = type;
-+  f->scontext = NULL;
-   if (command_line_arg
-       || format_needs_stat
-@@ -2995,7 +3020,7 @@ gobble_file (char const *name, enum file
-           && print_with_color && is_colored (C_CAP))
-         f->has_capability = has_capability_cache (absolute_name, f);
--      if (format == long_format || print_scontext)
-+      if (format == long_format || format == security_format || print_scontext)
-         {
-           bool have_selinux = false;
-           bool have_acl = false;
-@@ -3016,7 +3041,7 @@ gobble_file (char const *name, enum file
-                 err = 0;
-             }
--          if (err == 0 && format == long_format)
-+          if (err == 0 && (format == long_format || format == security_format))
-             {
-               int n = file_has_acl_cache (absolute_name, f);
-               err = (n < 0);
-@@ -3035,7 +3060,8 @@ gobble_file (char const *name, enum file
-         }
-       if (S_ISLNK (f->stat.st_mode)
--          && (format == long_format || check_symlink_color))
-+          && (format == long_format || format == security_format
-+              || check_symlink_color))
-         {
-           struct stat linkstats;
-@@ -3054,6 +3080,7 @@ gobble_file (char const *name, enum file
-                  command line are automatically traced if not being
-                  listed as files.  */
-               if (!command_line_arg || format == long_format
-+                  || format == security_format
-                   || !S_ISDIR (linkstats.st_mode))
-                 {
-                   /* Get the linked-to file's mode for the filetype indicator
-@@ -3087,7 +3114,7 @@ gobble_file (char const *name, enum file
-             block_size_width = len;
-         }
--      if (format == long_format)
-+      if (format == long_format || format == security_format)
-         {
-           if (print_owner)
-             {
-@@ -3591,6 +3618,13 @@ print_current_files (void)
-           print_long_format (sorted_file[i]);
-           DIRED_PUTCHAR ('\n');
-         }
-+     break;
-+    case security_format:
-+      for (i = 0; i < cwd_n_used; i++)
-+      {
-+        print_scontext_format (sorted_file[i]);
-+        DIRED_PUTCHAR ('\n');
-+      }
-       break;
-     }
- }
-@@ -3753,6 +3787,67 @@ format_inode (char *buf, size_t buflen, 
-           : (char *) "?");
- }
-+/* Print info about f in scontext format */
-+static void
-+print_scontext_format (const struct fileinfo *f)
-+{
-+  char modebuf[12];
-+
-+  /* 7 fields that may require LONGEST_HUMAN_READABLE bytes,
-+     1 10-byte mode string,
-+     9 spaces, one following each of these fields, and
-+     1 trailing NUL byte.  */
-+
-+  char init_bigbuf[7 * LONGEST_HUMAN_READABLE + 10  + 9 + 1];
-+  char *buf = init_bigbuf;
-+  char *p;
-+
-+  p = buf;
-+
-+  if ( print_scontext ) { /* zero means terse listing */
-+    filemodestring (&f->stat, modebuf);
-+    if (! any_has_acl)
-+      modebuf[10] = '\0';
-+    else if (f->acl_type == ACL_T_SELINUX_ONLY)
-+      modebuf[10] = '.';
-+    else if (f->acl_type == ACL_T_YES)
-+      modebuf[10] = '+';
-+    modebuf[11] = '\0';
-+
-+    /* print mode */
-+
-+    (void) sprintf (p, "%s ", modebuf);
-+    p += strlen (p);
-+
-+    /* print standard user and group */
-+
-+    DIRED_FPUTS (buf, stdout, p - buf);
-+    format_user (f->stat.st_uid, owner_width, f->stat_ok);
-+    format_group (f->stat.st_gid, group_width, f->stat_ok);
-+    p = buf;
-+  }
-+
-+  (void) sprintf (p, "%-32s ", f->scontext ?: "");
-+  p += strlen (p);
-+
-+  DIRED_INDENT ();
-+  DIRED_FPUTS (buf, stdout, p - buf);
-+  size_t w = print_name_with_quoting (f, false, &dired_obstack, p - buf);
-+
-+  if (f->filetype == symbolic_link) {
-+      if (f->linkname) {
-+          DIRED_FPUTS_LITERAL (" -> ", stdout);
-+          print_name_with_quoting (f, true, NULL, (p - buf) + w + 4);
-+          if (indicator_style != none)
-+            print_type_indicator (f->stat_ok, f->linkmode, f->filetype);
-+      }
-+  }
-+  else {
-+    if (indicator_style != none)
-+      print_type_indicator (f->stat_ok, f->stat.st_mode, f->filetype);
-+  }
-+}
-+
- /* Print information about F in long format.  */
- static void
- print_long_format (const struct fileinfo *f)
-@@ -3844,9 +3939,15 @@ print_long_format (const struct fileinfo
-      The latter is wrong when nlink_width is zero.  */
-   p += strlen (p);
-+  if (print_scontext)
-+    {
-+      sprintf (p, "%-32s ", f->scontext ? f->scontext : "");
-+      p += strlen (p);
-+    }
-+
-   DIRED_INDENT ();
--  if (print_owner || print_group || print_author || print_scontext)
-+  if (print_owner || print_group || print_author)
-     {
-       DIRED_FPUTS (buf, stdout, p - buf);
-@@ -3859,9 +3960,6 @@ print_long_format (const struct fileinfo
-       if (print_author)
-         format_user (f->stat.st_author, author_width, f->stat_ok);
--      if (print_scontext)
--        format_user_or_group (f->scontext, 0, scontext_width);
--
-       p = buf;
-     }
-@@ -4207,9 +4305,6 @@ print_file_name_and_frills (const struct
-             : human_readable (ST_NBLOCKS (f->stat), buf, human_output_opts,
-                               ST_NBLOCKSIZE, output_block_size));
--  if (print_scontext)
--    printf ("%*s ", format == with_commas ? 0 : scontext_width, f->scontext);
--
-   size_t width = print_name_with_quoting (f, false, NULL, start_col);
-   if (indicator_style != none)
-@@ -4417,9 +4512,6 @@ length_of_file_name_and_frills (const st
-                                             output_block_size))
-                 : block_size_width);
--  if (print_scontext)
--    len += 1 + (format == with_commas ? strlen (f->scontext) : scontext_width);
--
-   quote_name (NULL, f->name, filename_quoting_options, &name_width);
-   len += name_width;
-@@ -4856,9 +4948,16 @@ Sort entries alphabetically if none of -
-   -w, --width=COLS           assume screen width instead of current value\n\
-   -x                         list entries by lines instead of by columns\n\
-   -X                         sort alphabetically by entry extension\n\
--  -Z, --context              print any SELinux security context of each file\n\
-   -1                         list one file per line\n\
- "), stdout);
-+      fputs(_("\nSELinux options:\n\n\
-+  --lcontext                 Display security context.   Enable -l. Lines\n\
-+                             will probably be too wide for most displays.\n\
-+  -Z, --context              Display security context so it fits on most\n\
-+                             displays.  Displays only mode, user, group,\n\
-+                             security context and file name.\n\
-+  --scontext                 Display only security context and file name.\n\
-+"), stdout);
-       fputs (HELP_OPTION_DESCRIPTION, stdout);
-       fputs (VERSION_OPTION_DESCRIPTION, stdout);
-       emit_size_note ();
-diff -urNp coreutils-8.21-orig/src/mkdir.c coreutils-8.21/src/mkdir.c
---- coreutils-8.21-orig/src/mkdir.c    2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/mkdir.c 2013-02-15 14:31:58.954469576 +0100
-@@ -38,6 +38,7 @@
- static struct option const longopts[] =
- {
-   {GETOPT_SELINUX_CONTEXT_OPTION_DECL},
-+  {"context", required_argument, NULL, 'Z'},
-   {"mode", required_argument, NULL, 'm'},
-   {"parents", no_argument, NULL, 'p'},
-   {"verbose", no_argument, NULL, 'v'},
-diff -urNp coreutils-8.21-orig/src/mknod.c coreutils-8.21/src/mknod.c
---- coreutils-8.21-orig/src/mknod.c    2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/mknod.c 2013-02-15 14:31:58.955470548 +0100
-@@ -35,7 +35,7 @@
- static struct option const longopts[] =
- {
--  {GETOPT_SELINUX_CONTEXT_OPTION_DECL},
-+  {GETOPT_SELINUX_CONTEXT_OPTION_DECL}, 
-   {"mode", required_argument, NULL, 'm'},
-   {GETOPT_HELP_OPTION_DECL},
-   {GETOPT_VERSION_OPTION_DECL},
-diff -urNp coreutils-8.21-orig/src/mv.c coreutils-8.21/src/mv.c
---- coreutils-8.21-orig/src/mv.c       2013-02-07 10:37:05.000000000 +0100
-+++ coreutils-8.21/src/mv.c    2013-02-15 14:31:58.956469593 +0100
-@@ -120,6 +120,7 @@ cp_option_init (struct cp_options *x)
-   x->preserve_timestamps = true;
-   x->explicit_no_preserve_mode= false;
-   x->preserve_security_context = selinux_enabled;
-+  x->set_security_context = false;
-   x->reduce_diagnostics = false;
-   x->data_copy_required = true;
-   x->require_preserve = false;  /* FIXME: maybe make this an option */
-diff -urNp coreutils-8.21-orig/src/runcon.c coreutils-8.21/src/runcon.c
---- coreutils-8.21-orig/src/runcon.c   2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/src/runcon.c        2013-02-15 14:31:58.956469593 +0100
-@@ -85,7 +85,7 @@ Usage: %s CONTEXT COMMAND [args]\n\
-   or:  %s [ -c ] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [args]\n\
- "), program_name, program_name);
-       fputs (_("\
--Run a program in a different security context.\n\
-+Run a program in a different SELinux security context.\n\
- With neither CONTEXT nor COMMAND, print the current security context.\n\
- "), stdout);
-diff -urNp coreutils-8.21-orig/tests/misc/selinux.sh coreutils-8.21/tests/misc/selinux.sh
---- coreutils-8.21-orig/tests/misc/selinux.sh  2013-01-31 01:46:24.000000000 +0100
-+++ coreutils-8.21/tests/misc/selinux.sh       2013-02-15 14:31:58.957469955 +0100
-@@ -37,7 +37,7 @@ chcon $ctx f d p ||
- # inspect that context with both ls -Z and stat.
- for i in d f p; do
--  c=$(ls -dogZ $i|cut -d' ' -f3); test x$c = x$ctx || fail=1
-+  c=$(ls -dogZ $i|cut -d' ' -f4); test x$c = x$ctx || fail=1
-   c=$(stat --printf %C $i); test x$c = x$ctx || fail=1
- done
diff --git a/coreutils/patches/coreutils-selinuxmanpages.patch b/coreutils/patches/coreutils-selinuxmanpages.patch
deleted file mode 100644 (file)
index 9cbc166..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -urNp coreutils-6.10-orig/doc/coreutils.texi coreutils-6.10/doc/coreutils.texi
---- coreutils-6.10-orig/doc/coreutils.texi     2008-04-07 17:52:11.000000000 +0200
-+++ coreutils-6.10/doc/coreutils.texi  2008-04-07 18:01:43.000000000 +0200
-@@ -6981,6 +6981,11 @@ for i; do
- done
- @end example
-+@item -c
-+@cindex SELinux security context information, preserving
-+Preserve SELinux security context of the original files if possible.
-+Some file systems don't support storing of SELinux security context.
-+
- @item --copy-contents
- @cindex directories, copying recursively
- @cindex copying directories recursively
diff --git a/ddns/ddns.nm b/ddns/ddns.nm
new file mode 100644 (file)
index 0000000..cf5f94f
--- /dev/null
@@ -0,0 +1,57 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = ddns
+version    = 005
+release    = 1
+arch       = noarch
+
+groups     = System/Tools
+url        = http://www.ipfire.org
+license    = GPLv3
+summary    = A python based dynamic DNS updater.
+
+description
+       ddns is a simple, extensible, cross-distribution, cross-platform dynamic DNS updater
+       written in Python.
+end
+
+source_dl = http://source.ipfire.org/releases/ddns/
+sources = %{thisapp}.tar.xz
+
+build
+       requires
+               autoconf
+               automake
+               gettext-devel
+               intltool
+               m4
+       end
+
+       configure_options += \
+               --prefix=%{prefix} \
+               --sysconfdir=%{sysconfdir}
+
+       prepare_cmds
+               ./autogen.sh
+       end
+
+       install_cmds
+               # Ship an empty configuration file.
+               touch %{BUILDROOT}%{sysconfdir}/%{name}/ddns.conf
+       end
+end
+
+packages
+       package %{name}
+               recommends
+                       %{bindir}/nsupdate
+               end
+
+               configfiles
+                       %{sysconfdir}/%{name}/ddns.conf
+               end
+       end
+end
index 7df057c5a180927869e4eda9eb03c22ce5b9797e..ceba070c9dc8945537cbcd1336e7848a7a01c6c9 100644 (file)
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = dracut
-version    = 024
-release    = 4
+version    = 040
+release    = 1
 
 groups     = System/Boot
 url        = http://sourceforge.net/apps/trac/dracut/wiki
diff --git a/ez-ipupdate/patches/ez-ipupdate-3.0.11b8-10.patch b/ez-ipupdate/patches/ez-ipupdate-3.0.11b8-10.patch
deleted file mode 100644 (file)
index fd19e11..0000000
+++ /dev/null
@@ -1,8024 +0,0 @@
---- ez-ipupdate-3.0.11b8.orig/Makefile.in
-+++ ez-ipupdate-3.0.11b8/Makefile.in
-@@ -1,6 +1,6 @@
--# Makefile.in generated automatically by automake 1.3 from Makefile.am
-+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
--# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
- # This Makefile.in is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -11,7 +11,7 @@
- # PARTICULAR PURPOSE.
--SHELL = /bin/sh
-+SHELL = @SHELL@
- srcdir = @srcdir@
- top_srcdir = @top_srcdir@
-@@ -32,7 +32,7 @@
- includedir = @includedir@
- oldincludedir = /usr/include
--DISTDIR =
-+DESTDIR =
- pkgdatadir = $(datadir)/@PACKAGE@
- pkglibdir = $(libdir)/@PACKAGE@
-@@ -46,7 +46,7 @@
- AUTOHEADER = @AUTOHEADER@
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
- INSTALL_DATA = @INSTALL_DATA@
- INSTALL_SCRIPT = @INSTALL_SCRIPT@
- transform = @program_transform_name@
-@@ -73,7 +73,7 @@
- EXTRA_DIST = getpass.c ez-ipupdate.lsm example.conf example-pgpow.conf example-dhs.conf example-dyndns.conf example-ods.conf example-tzo.conf example-gnudip.conf example-easydns.conf example-justlinux.conf example-dyns.conf CHANGELOG mkbinary example-heipv6tb.conf
--AUTOMAKE_OPTIONS=foreign
-+AUTOMAKE_OPTIONS = foreign
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
- CONFIG_HEADER = config.h
-@@ -90,50 +90,59 @@
- ez_ipupdate_DEPENDENCIES = 
- ez_ipupdate_LDFLAGS = 
- CFLAGS = @CFLAGS@
--COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
--LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
--DIST_COMMON =  README COPYING INSTALL Makefile.am Makefile.in acconfig.h \
--aclocal.m4 config.guess config.h.in config.sub configure configure.in \
--install-sh missing mkinstalldirs stamp-h.in
-+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-+CCLD = $(CC)
-+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-+DIST_COMMON =  README ./stamp-h.in COPYING INSTALL Makefile.am \
-+Makefile.in acconfig.h aclocal.m4 config.guess config.h.in config.sub \
-+configure configure.in install-sh missing mkinstalldirs
- DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
- TAR = tar
--GZIP = --best
-+GZIP_ENV = --best
-+DEP_FILES =  .deps/cache_file.P .deps/conf_file.P .deps/ez-ipupdate.P \
-+.deps/md5.P .deps/pid_file.P
- SOURCES = $(ez_ipupdate_SOURCES)
- OBJECTS = $(ez_ipupdate_OBJECTS)
--all: Makefile $(PROGRAMS) config.h
--
-+all: all-redirect
- .SUFFIXES:
- .SUFFIXES: .S .c .o .s
--$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
--      cd $(top_srcdir) && $(AUTOMAKE) --foreign --include-deps Makefile
-+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
-+      cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile
--Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
-+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(BUILT_SOURCES)
-       cd $(top_builddir) \
-         && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
- $(ACLOCAL_M4):  configure.in 
-       cd $(srcdir) && $(ACLOCAL)
--config.status: $(srcdir)/configure
-+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       $(SHELL) ./config.status --recheck
- $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
-       cd $(srcdir) && $(AUTOCONF)
- config.h: stamp-h
--      @:
-+      @if test ! -f $@; then \
-+              rm -f stamp-h; \
-+              $(MAKE) stamp-h; \
-+      else :; fi
- stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
-       cd $(top_builddir) \
-         && CONFIG_FILES= CONFIG_HEADERS=config.h \
-            $(SHELL) ./config.status
--      @echo timestamp > stamp-h
-+      @echo timestamp > stamp-h 2> /dev/null
- $(srcdir)/config.h.in: $(srcdir)/stamp-h.in
-+      @if test ! -f $@; then \
-+              rm -f $(srcdir)/stamp-h.in; \
-+              $(MAKE) $(srcdir)/stamp-h.in; \
-+      else :; fi
- $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
-       cd $(top_srcdir) && $(AUTOHEADER)
--      @echo timestamp > $(srcdir)/stamp-h.in
-+      @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
- mostlyclean-hdr:
-@@ -158,20 +167,17 @@
-       $(mkinstalldirs) $(DESTDIR)$(bindir)
-       @list='$(bin_PROGRAMS)'; for p in $$list; do \
-         if test -f $$p; then \
--          echo "  $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
--           $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
-+          echo "  $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
-+           $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-         else :; fi; \
-       done
- uninstall-binPROGRAMS:
-       @$(NORMAL_UNINSTALL)
-       list='$(bin_PROGRAMS)'; for p in $$list; do \
--        rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
-+        rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
-       done
--.c.o:
--      $(COMPILE) -c $<
--
- .s.o:
-       $(COMPILE) -c $<
-@@ -195,8 +201,12 @@
- tags: TAGS
- ID: $(HEADERS) $(SOURCES) $(LISP)
-+      list='$(SOURCES) $(HEADERS)'; \
-+      unique=`for i in $$list; do echo $$i; done | \
-+        awk '    { files[$$0] = 1; } \
-+             END { for (i in files) print i; }'`; \
-       here=`pwd` && cd $(srcdir) \
--        && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
-+        && mkid -f$$here/ID $$unique $(LISP)
- TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
-       tags=; \
-@@ -206,7 +216,7 @@
-         awk '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
--        || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
-+        || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP))
- mostlyclean-tags:
-@@ -225,99 +235,148 @@
- # tarfile.
- distcheck: dist
-       -rm -rf $(distdir)
--      GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz
-+      GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
-       mkdir $(distdir)/=build
-       mkdir $(distdir)/=inst
-       dc_install_base=`cd $(distdir)/=inst && pwd`; \
-       cd $(distdir)/=build \
-         && ../configure --srcdir=.. --prefix=$$dc_install_base \
--        && $(MAKE) \
--        && $(MAKE) dvi \
--        && $(MAKE) check \
--        && $(MAKE) install \
--        && $(MAKE) installcheck \
--        && $(MAKE) dist
-+        && $(MAKE) $(AM_MAKEFLAGS) \
-+        && $(MAKE) $(AM_MAKEFLAGS) dvi \
-+        && $(MAKE) $(AM_MAKEFLAGS) check \
-+        && $(MAKE) $(AM_MAKEFLAGS) install \
-+        && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-+        && $(MAKE) $(AM_MAKEFLAGS) dist
-       -rm -rf $(distdir)
--      @echo "========================"; \
--      echo "$(distdir).tar.gz is ready for distribution"; \
--      echo "========================"
-+      @banner="$(distdir).tar.gz is ready for distribution"; \
-+      dashes=`echo "$$banner" | sed s/./=/g`; \
-+      echo "$$dashes"; \
-+      echo "$$banner"; \
-+      echo "$$dashes"
- dist: distdir
-       -chmod -R a+r $(distdir)
--      GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
-+      GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-       -rm -rf $(distdir)
- dist-all: distdir
-       -chmod -R a+r $(distdir)
--      GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
-+      GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-       -rm -rf $(distdir)
- distdir: $(DISTFILES)
-       -rm -rf $(distdir)
-       mkdir $(distdir)
-       -chmod 777 $(distdir)
-+      here=`cd $(top_builddir) && pwd`; \
-+      top_distdir=`cd $(distdir) && pwd`; \
-+      distdir=`cd $(distdir) && pwd`; \
-+      cd $(top_srcdir) \
-+        && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign Makefile
-       @for file in $(DISTFILES); do \
-         d=$(srcdir); \
--        test -f $(distdir)/$$file \
--        || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
--        || cp -p $$d/$$file $(distdir)/$$file; \
-+        if test -d $$d/$$file; then \
-+          cp -pr $$d/$$file $(distdir)/$$file; \
-+        else \
-+          test -f $(distdir)/$$file \
-+          || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
-+          || cp -p $$d/$$file $(distdir)/$$file || :; \
-+        fi; \
-       done
--cache_file.o: cache_file.c config.h cache_file.h
--conf_file.o: conf_file.c config.h conf_file.h
--ez-ipupdate.o: ez-ipupdate.c config.h error.h md5.h dprintf.h \
--      conf_file.h cache_file.h pid_file.h
--md5.o: md5.c config.h md5.h
--pid_file.o: pid_file.c config.h error.h dprintf.h
--
--info:
--dvi:
--check: all
--      $(MAKE)
--installcheck:
--install-exec: install-binPROGRAMS
--      @$(NORMAL_INSTALL)
--install-data: 
--      @$(NORMAL_INSTALL)
-+DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
--install: install-exec install-data all
--      @:
-+-include $(DEP_FILES)
--uninstall: uninstall-binPROGRAMS
-+mostlyclean-depend:
-+clean-depend:
-+
-+distclean-depend:
-+      -rm -rf .deps
-+
-+maintainer-clean-depend:
-+
-+%.o: %.c
-+      @echo '$(COMPILE) -c $<'; \
-+      $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+      @-cp .deps/$(*F).pp .deps/$(*F).P; \
-+      tr ' ' '\012' < .deps/$(*F).pp \
-+        | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+          >> .deps/$(*F).P; \
-+      rm .deps/$(*F).pp
-+
-+%.lo: %.c
-+      @echo '$(LTCOMPILE) -c $<'; \
-+      $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
-+      @-sed -e 's/^\([^:]*\)\.o[      ]*:/\1.lo \1.o :/' \
-+        < .deps/$(*F).pp > .deps/$(*F).P; \
-+      tr ' ' '\012' < .deps/$(*F).pp \
-+        | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
-+          >> .deps/$(*F).P; \
-+      rm -f .deps/$(*F).pp
-+info-am:
-+info: info-am
-+dvi-am:
-+dvi: dvi-am
-+check-am: all-am
-+check: check-am
-+installcheck-am:
-+installcheck: installcheck-am
-+all-recursive-am: config.h
-+      $(MAKE) $(AM_MAKEFLAGS) all-recursive
-+
-+install-exec-am: install-binPROGRAMS
-+install-exec: install-exec-am
-+
-+install-data-am:
-+install-data: install-data-am
-+
-+install-am: all-am
-+      @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-+install: install-am
-+uninstall-am: uninstall-binPROGRAMS
-+uninstall: uninstall-am
-+all-am: Makefile $(PROGRAMS) config.h
-+all-redirect: all-am
- install-strip:
--      $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
-+      $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
- installdirs:
--      $(mkinstalldirs)  $(DATADIR)$(bindir)
-+      $(mkinstalldirs)  $(DESTDIR)$(bindir)
- mostlyclean-generic:
--      -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
- clean-generic:
--      -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
- distclean-generic:
--      -rm -f Makefile $(DISTCLEANFILES)
-+      -rm -f Makefile $(CONFIG_CLEAN_FILES)
-       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
--      -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- maintainer-clean-generic:
--      -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
--      -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
--mostlyclean:  mostlyclean-hdr mostlyclean-binPROGRAMS \
--              mostlyclean-compile mostlyclean-tags \
-+mostlyclean-am:  mostlyclean-hdr mostlyclean-binPROGRAMS \
-+              mostlyclean-compile mostlyclean-tags mostlyclean-depend \
-               mostlyclean-generic
--clean:  clean-hdr clean-binPROGRAMS clean-compile clean-tags \
--              clean-generic mostlyclean
-+mostlyclean: mostlyclean-am
-+
-+clean-am:  clean-hdr clean-binPROGRAMS clean-compile clean-tags \
-+              clean-depend clean-generic mostlyclean-am
--distclean:  distclean-hdr distclean-binPROGRAMS distclean-compile \
--              distclean-tags distclean-generic clean
-+clean: clean-am
-+
-+distclean-am:  distclean-hdr distclean-binPROGRAMS distclean-compile \
-+              distclean-tags distclean-depend distclean-generic \
-+              clean-am
-+
-+distclean: distclean-am
-       -rm -f config.status
--maintainer-clean:  maintainer-clean-hdr maintainer-clean-binPROGRAMS \
-+maintainer-clean-am:  maintainer-clean-hdr maintainer-clean-binPROGRAMS \
-               maintainer-clean-compile maintainer-clean-tags \
--              maintainer-clean-generic distclean
-+              maintainer-clean-depend maintainer-clean-generic \
-+              distclean-am
-       @echo "This command is intended for maintainers to use;"
-       @echo "it deletes files that may require special tools to rebuild."
-+
-+maintainer-clean: maintainer-clean-am
-       -rm -f config.status
- .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
-@@ -325,8 +384,11 @@
- maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
- mostlyclean-compile distclean-compile clean-compile \
- maintainer-clean-compile tags mostlyclean-tags distclean-tags \
--clean-tags maintainer-clean-tags distdir info dvi installcheck \
--install-exec install-data install uninstall all installdirs \
-+clean-tags maintainer-clean-tags distdir mostlyclean-depend \
-+distclean-depend clean-depend maintainer-clean-depend info-am info \
-+dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
-+install-exec-am install-exec install-data-am install-data install-am \
-+install uninstall-am uninstall all-redirect all-am all installdirs \
- mostlyclean-generic distclean-generic clean-generic \
- maintainer-clean-generic clean mostlyclean distclean maintainer-clean
---- ez-ipupdate-3.0.11b8.orig/aclocal.m4
-+++ ez-ipupdate-3.0.11b8/aclocal.m4
-@@ -1,7 +1,7 @@
--dnl aclocal.m4 generated automatically by aclocal 1.3
-+dnl aclocal.m4 generated automatically by aclocal 1.4-p6
--dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
--dnl This Makefile.in is free software; the Free Software Foundation
-+dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
-@@ -12,7 +12,7 @@
- # Like AC_CONFIG_HEADER, but automatically create stamp file.
--AC_DEFUN(AM_CONFIG_HEADER,
-+AC_DEFUN([AM_CONFIG_HEADER],
- [AC_PREREQ([2.12])
- AC_CONFIG_HEADER([$1])
- dnl When config.status generates a header, we must update the stamp-h file.
-@@ -42,8 +42,9 @@
- dnl Usage:
- dnl AM_INIT_AUTOMAKE(package,version, [no-define])
--AC_DEFUN(AM_INIT_AUTOMAKE,
--[AC_REQUIRE([AM_PROG_INSTALL])
-+AC_DEFUN([AM_INIT_AUTOMAKE],
-+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-+AC_REQUIRE([AC_PROG_INSTALL])
- PACKAGE=[$1]
- AC_SUBST(PACKAGE)
- VERSION=[$2]
-@@ -53,33 +54,53 @@
-   AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
- fi
- ifelse([$3],,
--AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
--AC_DEFINE_UNQUOTED(VERSION, "$VERSION"))
-+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
-+AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
- AC_REQUIRE([AM_SANITY_CHECK])
- AC_REQUIRE([AC_ARG_PROGRAM])
- dnl FIXME This is truly gross.
- missing_dir=`cd $ac_aux_dir && pwd`
--AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
-+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
- AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
--AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
-+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
- AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
- AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
- AC_REQUIRE([AC_PROG_MAKE_SET])])
-+# Copyright 2002  Free Software Foundation, Inc.
--# serial 1
--
--AC_DEFUN(AM_PROG_INSTALL,
--[AC_REQUIRE([AC_PROG_INSTALL])
--test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
--AC_SUBST(INSTALL_SCRIPT)dnl
--])
-+# 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 2, 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
-+
-+# AM_AUTOMAKE_VERSION(VERSION)
-+# ----------------------------
-+# Automake X.Y traces this macro to ensure aclocal.m4 has been
-+# generated from the m4 files accompanying Automake X.Y.
-+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
-+
-+# AM_SET_CURRENT_AUTOMAKE_VERSION
-+# -------------------------------
-+# Call AM_AUTOMAKE_VERSION so it can be traced.
-+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
-+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-+       [AM_AUTOMAKE_VERSION([1.4-p6])])
- #
- # Check to make sure that the build environment is sane.
- #
--AC_DEFUN(AM_SANITY_CHECK,
-+AC_DEFUN([AM_SANITY_CHECK],
- [AC_MSG_CHECKING([whether build environment is sane])
- # Just in case
- sleep 1
-@@ -120,7 +141,7 @@
- dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
- dnl The program must properly implement --version.
--AC_DEFUN(AM_MISSING_PROG,
-+AC_DEFUN([AM_MISSING_PROG],
- [AC_MSG_CHECKING(for working $2)
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
---- ez-ipupdate-3.0.11b8.orig/config.guess
-+++ ez-ipupdate-3.0.11b8/config.guess
-@@ -1,7 +1,10 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
--#   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
--#
-+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+
-+timestamp='2003-01-10'
-+
- # This file 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
-@@ -21,36 +24,220 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
--# Written by Per Bothner <bothner@cygnus.com>.
--# The master version of this file is at the FSF in /home/gd/gnu/lib.
-+# Originally written by Per Bothner <per@bothner.com>.
-+# Please send patches to <config-patches@gnu.org>.  Submit a context
-+# diff and a properly formatted ChangeLog entry.
- #
- # This script attempts to guess a canonical system name similar to
- # config.sub.  If it succeeds, it prints the system name on stdout, and
- # exits with 0.  Otherwise, it exits with 1.
- #
- # The plan is that this can be called by configure scripts if you
--# don't specify an explicit system type (host/target name).
--#
--# Only a few systems have been added to this list; please add others
--# (but try to keep the structure clean).
--#
-+# don't specify an explicit build system type.
-+
-+me=`echo "$0" | sed -e 's,.*/,,'`
-+
-+usage="\
-+Usage: $0 [OPTION]
-+
-+Output the configuration name of the system \`$me' is run on.
-+
-+Operation modes:
-+  -h, --help         print this help, then exit
-+  -t, --time-stamp   print date of last modification, then exit
-+  -v, --version      print version number, then exit
-+
-+Report bugs and patches to <config-patches@gnu.org>."
-+
-+version="\
-+GNU config.guess ($timestamp)
-+
-+Originally written by Per Bothner.
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-+Free Software Foundation, Inc.
-+
-+This is free software; see the source for copying conditions.  There is NO
-+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-+
-+help="
-+Try \`$me --help' for more information."
-+
-+# Parse command line
-+while test $# -gt 0 ; do
-+  case $1 in
-+    --time-stamp | --time* | -t )
-+       echo "$timestamp" ; exit 0 ;;
-+    --version | -v )
-+       echo "$version" ; exit 0 ;;
-+    --help | --h* | -h )
-+       echo "$usage"; exit 0 ;;
-+    -- )     # Stop option processing
-+       shift; break ;;
-+    - )       # Use stdin as input.
-+       break ;;
-+    -* )
-+       echo "$me: invalid option $1$help" >&2
-+       exit 1 ;;
-+    * )
-+       break ;;
-+  esac
-+done
-+
-+if test $# != 0; then
-+  echo "$me: too many arguments$help" >&2
-+  exit 1
-+fi
-+
-+trap 'exit 1' 1 2 15
-+
-+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-+# compiler to aid in system detection is discouraged as it requires
-+# temporary files to be created and, as you can see below, it is a
-+# headache to deal with in a portable fashion.
-+
-+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-+# use `HOST_CC' if defined, but it is deprecated.
-+
-+# Portable tmp directory creation inspired by the Autoconf team.
-+
-+set_cc_for_build='
-+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-+: ${TMPDIR=/tmp} ;
-+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
-+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-+dummy=$tmp/dummy ;
-+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-+case $CC_FOR_BUILD,$HOST_CC,$CC in
-+ ,,)    echo "int x;" > $dummy.c ;
-+      for c in cc gcc c89 c99 ; do
-+        if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-+           CC_FOR_BUILD="$c"; break ;
-+        fi ;
-+      done ;
-+      if test x"$CC_FOR_BUILD" = x ; then
-+        CC_FOR_BUILD=no_compiler_found ;
-+      fi
-+      ;;
-+ ,,*)   CC_FOR_BUILD=$CC ;;
-+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-+esac ;'
- # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
--# (ghazi@noc.rutgers.edu 8/24/94.)
-+# (ghazi@noc.rutgers.edu 1994-08-24)
- if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-       PATH=$PATH:/.attbin ; export PATH
- fi
- UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
- UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
--UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
- UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
--trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
--
- # Note: order is significant - the case branches are not exclusive.
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-+    *:NetBSD:*:*)
-+      # NetBSD (nbsd) targets should (where applicable) match one or
-+      # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-+      # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-+      # switched to ELF, *-*-netbsd* would select the old
-+      # object file format.  This provides both forward
-+      # compatibility and a consistent mechanism for selecting the
-+      # object file format.
-+      #
-+      # Note: NetBSD doesn't particularly care about the vendor
-+      # portion of the name.  We always set it to "unknown".
-+      sysctl="sysctl -n hw.machine_arch"
-+      UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-+          /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-+      case "${UNAME_MACHINE_ARCH}" in
-+          armeb) machine=armeb-unknown ;;
-+          arm*) machine=arm-unknown ;;
-+          sh3el) machine=shl-unknown ;;
-+          sh3eb) machine=sh-unknown ;;
-+          *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-+      esac
-+      # The Operating System including object format, if it has switched
-+      # to ELF recently, or will in the future.
-+      case "${UNAME_MACHINE_ARCH}" in
-+          arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-+              eval $set_cc_for_build
-+              if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-+                      | grep __ELF__ >/dev/null
-+              then
-+                  # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-+                  # Return netbsd for either.  FIX?
-+                  os=netbsd
-+              else
-+                  os=netbsdelf
-+              fi
-+              ;;
-+          *)
-+              os=netbsd
-+              ;;
-+      esac
-+      # The OS release
-+      # Debian GNU/NetBSD machines have a different userland, and
-+      # thus, need a distinct triplet. However, they do not need
-+      # kernel version information, so it can be replaced with a
-+      # suitable tag, in the style of linux-gnu.
-+      case "${UNAME_VERSION}" in
-+          Debian*)
-+              release='-gnu'
-+              ;;
-+          *)
-+              release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+              ;;
-+      esac
-+      # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-+      # contains redundant information, the shorter form:
-+      # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-+      echo "${machine}-${os}${release}"
-+      exit 0 ;;
-+    amiga:OpenBSD:*:*)
-+      echo m68k-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    arc:OpenBSD:*:*)
-+      echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    hp300:OpenBSD:*:*)
-+      echo m68k-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    mac68k:OpenBSD:*:*)
-+      echo m68k-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    macppc:OpenBSD:*:*)
-+      echo powerpc-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    mvme68k:OpenBSD:*:*)
-+      echo m68k-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    mvme88k:OpenBSD:*:*)
-+      echo m88k-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    mvmeppc:OpenBSD:*:*)
-+      echo powerpc-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    pmax:OpenBSD:*:*)
-+      echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    sgi:OpenBSD:*:*)
-+      echo mipseb-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    sun3:OpenBSD:*:*)
-+      echo m68k-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    wgrisc:OpenBSD:*:*)
-+      echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    *:OpenBSD:*:*)
-+      echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
-+      exit 0 ;;
-+    *:MicroBSD:*:*)
-+      echo ${UNAME_MACHINE}-unknown-microbsd${UNAME_RELEASE}
-+      exit 0 ;;
-     alpha:OSF1:*:*)
-       if test $UNAME_RELEASE = "V4.0"; then
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-@@ -59,87 +246,91 @@
-       # A Tn.n version is a released field test version.
-       # A Xn.n version is an unreleased experimental baselevel.
-       # 1.2 uses "1.2" for uname -r.
--      cat <<EOF >dummy.s
-+      eval $set_cc_for_build
-+      cat <<EOF >$dummy.s
-+      .data
-+\$Lformat:
-+      .byte 37,100,45,37,120,10,0     # "%d-%x\n"
-+
-+      .text
-       .globl main
-+      .align 4
-       .ent main
- main:
--      .frame \$30,0,\$26,0
--      .prologue 0
--      .long 0x47e03d80 # implver $0
--      lda \$2,259
--      .long 0x47e20c21 # amask $2,$1
--      srl \$1,8,\$2
--      sll \$2,2,\$2
--      sll \$0,3,\$0
--      addl \$1,\$0,\$0
--      addl \$2,\$0,\$0
--      ret \$31,(\$26),1
-+      .frame \$30,16,\$26,0
-+      ldgp \$29,0(\$27)
-+      .prologue 1
-+      .long 0x47e03d80 # implver \$0
-+      lda \$2,-1
-+      .long 0x47e20c21 # amask \$2,\$1
-+      lda \$16,\$Lformat
-+      mov \$0,\$17
-+      not \$1,\$18
-+      jsr \$26,printf
-+      ldgp \$29,0(\$26)
-+      mov 0,\$16
-+      jsr \$26,exit
-       .end main
- EOF
--      ${CC-cc} dummy.s -o dummy 2>/dev/null
-+      $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null
-       if test "$?" = 0 ; then
--              ./dummy
--              case "$?" in
--                      7)
-+              case `$dummy` in
-+                      0-0)
-                               UNAME_MACHINE="alpha"
-                               ;;
--                      15)
-+                      1-0)
-                               UNAME_MACHINE="alphaev5"
-                               ;;
--                      14)
-+                      1-1)
-                               UNAME_MACHINE="alphaev56"
-                               ;;
--                      10)
-+                      1-101)
-                               UNAME_MACHINE="alphapca56"
-                               ;;
--                      16)
-+                      2-303)
-                               UNAME_MACHINE="alphaev6"
-                               ;;
-+                      2-307)
-+                              UNAME_MACHINE="alphaev67"
-+                              ;;
-+                      2-1307)
-+                              UNAME_MACHINE="alphaev68"
-+                              ;;
-+                      3-1307)
-+                              UNAME_MACHINE="alphaev7"
-+                              ;;
-               esac
-       fi
--      rm -f dummy.s dummy
--      echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
-+      echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-+      exit 0 ;;
-+    Alpha\ *:Windows_NT*:*)
-+      # How do we know it's Interix rather than the generic POSIX subsystem?
-+      # Should we change UNAME_MACHINE based on the output of uname instead
-+      # of the specific Alpha model?
-+      echo alpha-pc-interix
-       exit 0 ;;
-     21064:Windows_NT:50:3)
-       echo alpha-dec-winnt3.5
-       exit 0 ;;
-     Amiga*:UNIX_System_V:4.0:*)
--      echo m68k-cbm-sysv4
-+      echo m68k-unknown-sysv4
-       exit 0;;
--    amiga:NetBSD:*:*)
--      echo m68k-cbm-netbsd${UNAME_RELEASE}
--      exit 0 ;;
--    amiga:OpenBSD:*:*)
--      echo m68k-unknown-openbsd${UNAME_RELEASE}
--      exit 0 ;;
--    arc64:OpenBSD:*:*)
--      echo mips64el-unknown-openbsd${UNAME_RELEASE}
-+    *:[Aa]miga[Oo][Ss]:*:*)
-+      echo ${UNAME_MACHINE}-unknown-amigaos
-       exit 0 ;;
--    arc:OpenBSD:*:*)
--      echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+    *:[Mm]orph[Oo][Ss]:*:*)
-+      echo ${UNAME_MACHINE}-unknown-morphos
-       exit 0 ;;
--    hkmips:OpenBSD:*:*)
--      echo mips-unknown-openbsd${UNAME_RELEASE}
--      exit 0 ;;
--    pmax:OpenBSD:*:*)
--      echo mipsel-unknown-openbsd${UNAME_RELEASE}
--      exit 0 ;;
--    sgi:OpenBSD:*:*)
--      echo mips-unknown-openbsd${UNAME_RELEASE}
--      exit 0 ;;
--    wgrisc:OpenBSD:*:*)
--      echo mipsel-unknown-openbsd${UNAME_RELEASE}
-+    *:OS/390:*:*)
-+      echo i370-ibm-openedition
-       exit 0 ;;
-     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix${UNAME_RELEASE}
-       exit 0;;
--    arm32:NetBSD:*:*)
--      echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
--      exit 0 ;;
--    SR2?01:HI-UX/MPP:*:*)
-+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit 0;;
--    Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
-+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-@@ -147,9 +338,16 @@
-               echo pyramid-pyramid-bsd
-       fi
-       exit 0 ;;
--    NILE:*:*:dcosx)
-+    NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit 0 ;;
-+    DRS?6000:UNIX_SV:4.2*:7*)
-+      case `/usr/bin/uname -p` in
-+          sparc) echo sparc-icl-nx7 && exit 0 ;;
-+      esac ;;
-+    sun4H:SunOS:5.*:*)
-+      echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-+      exit 0 ;;
-     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit 0 ;;
-@@ -175,7 +373,7 @@
-       echo m68k-sun-sunos${UNAME_RELEASE}
-       exit 0 ;;
-     sun*:*:4.2BSD:*)
--      UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-+      UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-       case "`/bin/arch`" in
-           sun3)
-@@ -189,30 +387,32 @@
-     aushp:SunOS:*:*)
-       echo sparc-auspex-sunos${UNAME_RELEASE}
-       exit 0 ;;
--    atari*:NetBSD:*:*)
--      echo m68k-atari-netbsd${UNAME_RELEASE}
--      exit 0 ;;
--    atari*:OpenBSD:*:*)
--      echo m68k-unknown-openbsd${UNAME_RELEASE}
--      exit 0 ;;
--    sun3*:NetBSD:*:*)
--      echo m68k-sun-netbsd${UNAME_RELEASE}
--      exit 0 ;;
--    sun3*:OpenBSD:*:*)
--      echo m68k-unknown-openbsd${UNAME_RELEASE}
--      exit 0 ;;
--    mac68k:NetBSD:*:*)
--      echo m68k-apple-netbsd${UNAME_RELEASE}
-+    # The situation for MiNT is a little confusing.  The machine name
-+    # can be virtually everything (everything which is not
-+    # "atarist" or "atariste" at least should have a processor
-+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-+    # to the lowercase version "mint" (or "freemint").  Finally
-+    # the system name "TOS" denotes a system which is actually not
-+    # MiNT.  But MiNT is downward compatible to TOS, so this should
-+    # be no problem.
-+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-+        echo m68k-atari-mint${UNAME_RELEASE}
-       exit 0 ;;
--    mac68k:OpenBSD:*:*)
--      echo m68k-unknown-openbsd${UNAME_RELEASE}
--      exit 0 ;;
--    mvme68k:OpenBSD:*:*)
--      echo m68k-unknown-openbsd${UNAME_RELEASE}
--      exit 0 ;;
--    mvme88k:OpenBSD:*:*)
--      echo m88k-unknown-openbsd${UNAME_RELEASE}
-+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-+      echo m68k-atari-mint${UNAME_RELEASE}
-+        exit 0 ;;
-+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-+        echo m68k-atari-mint${UNAME_RELEASE}
-       exit 0 ;;
-+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-+        echo m68k-milan-mint${UNAME_RELEASE}
-+        exit 0 ;;
-+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-+        echo m68k-hades-mint${UNAME_RELEASE}
-+        exit 0 ;;
-+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-+        echo m68k-unknown-mint${UNAME_RELEASE}
-+        exit 0 ;;
-     powerpc:machten:*:*)
-       echo powerpc-apple-machten${UNAME_RELEASE}
-       exit 0 ;;
-@@ -225,12 +425,18 @@
-     VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix${UNAME_RELEASE}
-       exit 0 ;;
--    2020:CLIX:*:*)
-+    2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix${UNAME_RELEASE}
-       exit 0 ;;
-     mips:*:*:UMIPS | mips:*:*:RISCos)
--      sed 's/^        //' << EOF >dummy.c
--      int main (argc, argv) int argc; char **argv; {
-+      eval $set_cc_for_build
-+      sed 's/^        //' << EOF >$dummy.c
-+#ifdef __cplusplus
-+#include <stdio.h>  /* for printf() prototype */
-+      int main (int argc, char *argv[]) {
-+#else
-+      int main (argc, argv) int argc; char *argv[]; {
-+#endif
-       #if defined (host_mips) && defined (MIPSEB)
-       #if defined (SYSTYPE_SYSV)
-         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-@@ -245,12 +451,20 @@
-         exit (-1);
-       }
- EOF
--      ${CC-cc} dummy.c -o dummy \
--        && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
--        && rm dummy.c dummy && exit 0
--      rm -f dummy.c dummy
-+      $CC_FOR_BUILD -o $dummy $dummy.c \
-+        && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-+        && exit 0
-       echo mips-mips-riscos${UNAME_RELEASE}
-       exit 0 ;;
-+    Motorola:PowerMAX_OS:*:*)
-+      echo powerpc-motorola-powermax
-+      exit 0 ;;
-+    Motorola:*:4.3:PL8-*)
-+      echo powerpc-harris-powermax
-+      exit 0 ;;
-+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-+      echo powerpc-harris-powermax
-+      exit 0 ;;
-     Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit 0 ;;
-@@ -266,15 +480,18 @@
-     AViiON:dgux:*:*)
-         # DG/UX returns AViiON for all architectures
-         UNAME_PROCESSOR=`/usr/bin/uname -p`
--        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
--      if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
--           -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
-+      if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-+      then
-+          if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-+             [ ${TARGET_BINARY_INTERFACE}x = x ]
-+          then
-               echo m88k-dg-dgux${UNAME_RELEASE}
--      else
-+          else
-               echo m88k-dg-dguxbcs${UNAME_RELEASE}
-+          fi
-+      else
-+          echo i586-dg-dgux${UNAME_RELEASE}
-       fi
--        else echo i586-dg-dgux${UNAME_RELEASE}
--        fi
-       exit 0 ;;
-     M88*:DolphinOS:*:*)       # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-@@ -295,12 +512,21 @@
-     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
-       exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
--    i?86:AIX:*:*)
-+    i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit 0 ;;
-+    ia64:AIX:*:*)
-+      if [ -x /usr/bin/oslevel ] ; then
-+              IBM_REV=`/usr/bin/oslevel`
-+      else
-+              IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-+      fi
-+      echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-+      exit 0 ;;
-     *:AIX:2:3)
-       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
--              sed 's/^                //' << EOF >dummy.c
-+              eval $set_cc_for_build
-+              sed 's/^                //' << EOF >$dummy.c
-               #include <sys/systemcfg.h>
-               main()
-@@ -311,8 +537,7 @@
-                       exit(0);
-                       }
- EOF
--              ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
--              rm -f dummy.c dummy
-+              $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
-               echo rs6000-ibm-aix3.2.5
-       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
-@@ -320,8 +545,9 @@
-               echo rs6000-ibm-aix3.2
-       fi
-       exit 0 ;;
--    *:AIX:*:4)
--      if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
-+    *:AIX:*:[45])
-+      IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-+      if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-               IBM_ARCH=rs6000
-       else
-               IBM_ARCH=powerpc
-@@ -329,7 +555,7 @@
-       if [ -x /usr/bin/oslevel ] ; then
-               IBM_REV=`/usr/bin/oslevel`
-       else
--              IBM_REV=4.${UNAME_RELEASE}
-+              IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-       fi
-       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-       exit 0 ;;
-@@ -339,7 +565,7 @@
-     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-       echo romp-ibm-bsd4.4
-       exit 0 ;;
--    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
-+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-       exit 0 ;;                           # report: romp-ibm BSD 4.3
-     *:BOSX:*:*)
-@@ -354,18 +580,85 @@
-     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit 0 ;;
--    9000/[3478]??:HP-UX:*:*)
-+    9000/[34678]??:HP-UX:*:*)
-+      HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-       case "${UNAME_MACHINE}" in
-           9000/31? )            HP_ARCH=m68000 ;;
-           9000/[34]?? )         HP_ARCH=m68k ;;
--          9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
--          9000/8?? )            HP_ARCH=hppa1.0 ;;
-+          9000/[678][0-9][0-9])
-+              if [ -x /usr/bin/getconf ]; then
-+                  sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-+                    case "${sc_cpu_version}" in
-+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-+                      532)                      # CPU_PA_RISC2_0
-+                        case "${sc_kernel_bits}" in
-+                          32) HP_ARCH="hppa2.0n" ;;
-+                          64) HP_ARCH="hppa2.0w" ;;
-+                        '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-+                        esac ;;
-+                    esac
-+              fi
-+              if [ "${HP_ARCH}" = "" ]; then
-+                  eval $set_cc_for_build
-+                  sed 's/^              //' << EOF >$dummy.c
-+
-+              #define _HPUX_SOURCE
-+              #include <stdlib.h>
-+              #include <unistd.h>
-+
-+              int main ()
-+              {
-+              #if defined(_SC_KERNEL_BITS)
-+                  long bits = sysconf(_SC_KERNEL_BITS);
-+              #endif
-+                  long cpu  = sysconf (_SC_CPU_VERSION);
-+
-+                  switch (cpu)
-+                      {
-+                      case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-+                      case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-+                      case CPU_PA_RISC2_0:
-+              #if defined(_SC_KERNEL_BITS)
-+                          switch (bits)
-+                              {
-+                              case 64: puts ("hppa2.0w"); break;
-+                              case 32: puts ("hppa2.0n"); break;
-+                              default: puts ("hppa2.0"); break;
-+                              } break;
-+              #else  /* !defined(_SC_KERNEL_BITS) */
-+                          puts ("hppa2.0"); break;
-+              #endif
-+                      default: puts ("hppa1.0"); break;
-+                      }
-+                  exit (0);
-+              }
-+EOF
-+                  (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-+                  test -z "$HP_ARCH" && HP_ARCH=hppa
-+              fi ;;
-       esac
--      HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-+      if [ ${HP_ARCH} = "hppa2.0w" ]
-+      then
-+          # avoid double evaluation of $set_cc_for_build
-+          test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
-+          if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
-+          then
-+              HP_ARCH="hppa2.0w"
-+          else
-+              HP_ARCH="hppa64"
-+          fi
-+      fi
-       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-       exit 0 ;;
-+    ia64:HP-UX:*:*)
-+      HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-+      echo ia64-hp-hpux${HPUX_REV}
-+      exit 0 ;;
-     3050*:HI-UX:*:*)
--      sed 's/^        //' << EOF >dummy.c
-+      eval $set_cc_for_build
-+      sed 's/^        //' << EOF >$dummy.c
-       #include <unistd.h>
-       int
-       main ()
-@@ -390,8 +683,7 @@
-         exit (0);
-       }
- EOF
--      ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
--      rm -f dummy.c dummy
-+      $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
-       echo unknown-hitachi-hiuxwe2
-       exit 0 ;;
-     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-@@ -400,13 +692,16 @@
-     9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit 0 ;;
-+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-+      echo hppa1.0-hp-mpeix
-+      exit 0 ;;
-     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-       echo hppa1.1-hp-osf
-       exit 0 ;;
-     hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit 0 ;;
--    i?86:OSF1:*:*)
-+    i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo ${UNAME_MACHINE}-unknown-osf1mk
-       else
-@@ -434,57 +729,82 @@
-     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-         exit 0 ;;
--    CRAY*X-MP:*:*:*)
--      echo xmp-cray-unicos
--        exit 0 ;;
-     CRAY*Y-MP:*:*:*)
--      echo ymp-cray-unicos${UNAME_RELEASE}
-+      echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit 0 ;;
-     CRAY*[A-Z]90:*:*:*)
-       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
--            -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
-+            -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-+            -e 's/\.[^.]*$/.X/'
-       exit 0 ;;
-     CRAY*TS:*:*:*)
--      echo t90-cray-unicos${UNAME_RELEASE}
-+      echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit 0 ;;
--    CRAY-2:*:*:*)
--      echo cray2-cray-unicos
--        exit 0 ;;
--    F300:UNIX_System_V:*:*)
--        FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
--        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
--        echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
--        exit 0 ;;
--    F301:UNIX_System_V:*:*)
--       echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
--       exit 0 ;;
--    hp3[0-9][05]:NetBSD:*:*)
--      echo m68k-hp-netbsd${UNAME_RELEASE}
-+    CRAY*T3E:*:*:*)
-+      echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit 0 ;;
--    hp300:OpenBSD:*:*)
--      echo m68k-unknown-openbsd${UNAME_RELEASE}
-+    CRAY*SV1:*:*:*)
-+      echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit 0 ;;
--    i?86:BSD/386:*:* | *:BSD/OS:*:*)
-+    *:UNICOS/mp:*:*)
-+      echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 
-+      exit 0 ;;
-+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-+      FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+        exit 0 ;;
-+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-       exit 0 ;;
--    *:FreeBSD:*:*)
--      echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-+    sparc*:BSD/OS:*:*)
-+      echo sparc-unknown-bsdi${UNAME_RELEASE}
-       exit 0 ;;
--    *:NetBSD:*:*)
--      echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+    *:BSD/OS:*:*)
-+      echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-       exit 0 ;;
--    *:OpenBSD:*:*)
--      echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-+    *:FreeBSD:*:*)
-+      # Determine whether the default compiler uses glibc.
-+      eval $set_cc_for_build
-+      sed 's/^        //' << EOF >$dummy.c
-+      #include <features.h>
-+      #if __GLIBC__ >= 2
-+      LIBC=gnu
-+      #else
-+      LIBC=
-+      #endif
-+EOF
-+      eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-+      echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
-       exit 0 ;;
-     i*:CYGWIN*:*)
--      echo ${UNAME_MACHINE}-pc-cygwin32
-+      echo ${UNAME_MACHINE}-pc-cygwin
-       exit 0 ;;
-     i*:MINGW*:*)
-       echo ${UNAME_MACHINE}-pc-mingw32
-       exit 0 ;;
-+    i*:PW*:*)
-+      echo ${UNAME_MACHINE}-pc-pw32
-+      exit 0 ;;
-+    x86:Interix*:3*)
-+      echo i586-pc-interix3
-+      exit 0 ;;
-+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-+      echo i${UNAME_MACHINE}-pc-mks
-+      exit 0 ;;
-+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-+      # How do we know it's Interix rather than the generic POSIX subsystem?
-+      # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-+      # UNAME_MACHINE based on the output of uname instead of i386?
-+      echo i586-pc-interix
-+      exit 0 ;;
-+    i*:UWIN*:*)
-+      echo ${UNAME_MACHINE}-pc-uwin
-+      exit 0 ;;
-     p*:CYGWIN*:*)
--      echo powerpcle-unknown-cygwin32
-+      echo powerpcle-unknown-cygwin
-       exit 0 ;;
-     prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-@@ -492,145 +812,159 @@
-     *:GNU:*:*)
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-       exit 0 ;;
--    *:Linux:*:*)
--      # uname on the ARM produces all sorts of strangeness, and we need to
--      # filter it out.
--      case "$UNAME_MACHINE" in
--        arm* | sa110*)              UNAME_MACHINE="arm" ;;
-+    i*86:Minix:*:*)
-+      echo ${UNAME_MACHINE}-pc-minix
-+      exit 0 ;;
-+    arm*:Linux:*:*)
-+      echo ${UNAME_MACHINE}-unknown-linux-gnu
-+      exit 0 ;;
-+    ia64:Linux:*:*)
-+      echo ${UNAME_MACHINE}-unknown-linux-gnu
-+      exit 0 ;;
-+    m68*:Linux:*:*)
-+      echo ${UNAME_MACHINE}-unknown-linux-gnu
-+      exit 0 ;;
-+    mips:Linux:*:*)
-+      eval $set_cc_for_build
-+      sed 's/^        //' << EOF >$dummy.c
-+      #undef CPU
-+      #undef mips
-+      #undef mipsel
-+      #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+      CPU=mipsel
-+      #else
-+      #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+      CPU=mips
-+      #else
-+      CPU=
-+      #endif
-+      #endif
-+EOF
-+      eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+      test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+      ;;
-+    mips64:Linux:*:*)
-+      eval $set_cc_for_build
-+      sed 's/^        //' << EOF >$dummy.c
-+      #undef CPU
-+      #undef mips64
-+      #undef mips64el
-+      #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-+      CPU=mips64el
-+      #else
-+      #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-+      CPU=mips64
-+      #else
-+      CPU=
-+      #endif
-+      #endif
-+EOF
-+      eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-+      test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+      ;;
-+    ppc:Linux:*:*)
-+      echo powerpc-unknown-linux-gnu
-+      exit 0 ;;
-+    ppc64:Linux:*:*)
-+      echo powerpc64-unknown-linux-gnu
-+      exit 0 ;;
-+    alpha:Linux:*:*)
-+      case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-+        EV5)   UNAME_MACHINE=alphaev5 ;;
-+        EV56)  UNAME_MACHINE=alphaev56 ;;
-+        PCA56) UNAME_MACHINE=alphapca56 ;;
-+        PCA57) UNAME_MACHINE=alphapca56 ;;
-+        EV6)   UNAME_MACHINE=alphaev6 ;;
-+        EV67)  UNAME_MACHINE=alphaev67 ;;
-+        EV68*) UNAME_MACHINE=alphaev68 ;;
-+        esac
-+      objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-+      if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-+      echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+      exit 0 ;;
-+    parisc:Linux:*:* | hppa:Linux:*:*)
-+      # Look for CPU level
-+      case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-+        PA7*) echo hppa1.1-unknown-linux-gnu ;;
-+        PA8*) echo hppa2.0-unknown-linux-gnu ;;
-+        *)    echo hppa-unknown-linux-gnu ;;
-       esac
--
-+      exit 0 ;;
-+    parisc64:Linux:*:* | hppa64:Linux:*:*)
-+      echo hppa64-unknown-linux-gnu
-+      exit 0 ;;
-+    s390:Linux:*:* | s390x:Linux:*:*)
-+      echo ${UNAME_MACHINE}-ibm-linux
-+      exit 0 ;;
-+    sh*:Linux:*:*)
-+      echo ${UNAME_MACHINE}-unknown-linux-gnu
-+      exit 0 ;;
-+    sparc:Linux:*:* | sparc64:Linux:*:*)
-+      echo ${UNAME_MACHINE}-unknown-linux-gnu
-+      exit 0 ;;
-+    x86_64:Linux:*:*)
-+      echo x86_64-unknown-linux-gnu
-+      exit 0 ;;
-+    i*86:Linux:*:*)
-       # The BFD linker knows what the default object file format is, so
--      # first see if it will tell us.
--      ld_help_string=`ld --help 2>&1`
--      ld_supported_emulations=`echo $ld_help_string \
--                       | sed -ne '/supported emulations:/!d
-+      # first see if it will tell us. cd to the root directory to prevent
-+      # problems with other programs or directories called `ld' in the path.
-+      # Set LC_ALL=C to ensure ld outputs messages in English.
-+      ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-+                       | sed -ne '/supported targets:/!d
-                                   s/[         ][      ]*/ /g
--                                  s/.*supported emulations: *//
-+                                  s/.*supported targets: *//
-                                   s/ .*//
-                                   p'`
--        case "$ld_supported_emulations" in
--        i?86linux)  echo "${UNAME_MACHINE}-pc-linux-gnuaout"      ; exit 0 ;;
--        i?86coff)   echo "${UNAME_MACHINE}-pc-linux-gnucoff"      ; exit 0 ;;
--        sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
--        armlinux)   echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
--        m68klinux)  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
--        elf32ppc)   echo "powerpc-unknown-linux-gnu"              ; exit 0 ;;
-+        case "$ld_supported_targets" in
-+        elf32-i386)
-+              TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-+              ;;
-+        a.out-i386-linux)
-+              echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-+              exit 0 ;;
-+        coff-i386)
-+              echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-+              exit 0 ;;
-+        "")
-+              # Either a pre-BFD a.out linker (linux-gnuoldld) or
-+              # one that does not give us useful --help.
-+              echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-+              exit 0 ;;
-       esac
--
--      if test "${UNAME_MACHINE}" = "alpha" ; then
--              sed 's/^        //'  <<EOF >dummy.s
--              .globl main
--              .ent main
--      main:
--              .frame \$30,0,\$26,0
--              .prologue 0
--              .long 0x47e03d80 # implver $0
--              lda \$2,259
--              .long 0x47e20c21 # amask $2,$1
--              srl \$1,8,\$2
--              sll \$2,2,\$2
--              sll \$0,3,\$0
--              addl \$1,\$0,\$0
--              addl \$2,\$0,\$0
--              ret \$31,(\$26),1
--              .end main
--EOF
--              LIBC=""
--              ${CC-cc} dummy.s -o dummy 2>/dev/null
--              if test "$?" = 0 ; then
--                      ./dummy
--                      case "$?" in
--                      7)
--                              UNAME_MACHINE="alpha"
--                              ;;
--                      15)
--                              UNAME_MACHINE="alphaev5"
--                              ;;
--                      14)
--                              UNAME_MACHINE="alphaev56"
--                              ;;
--                      10)
--                              UNAME_MACHINE="alphapca56"
--                              ;;
--                      16)
--                              UNAME_MACHINE="alphaev6"
--                              ;;
--                      esac    
--
--                      objdump --private-headers dummy | \
--                        grep ld.so.1 > /dev/null
--                      if test "$?" = 0 ; then
--                              LIBC="libc1"
--                      fi
--              fi      
--              rm -f dummy.s dummy
--              echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
--      elif test "${UNAME_MACHINE}" = "mips" ; then
--        cat >dummy.c <<EOF
--main(argc, argv)
--     int argc;
--     char *argv[];
--{
--#ifdef __MIPSEB__
--  printf ("%s-unknown-linux-gnu\n", argv[1]);
--#endif
--#ifdef __MIPSEL__
--  printf ("%sel-unknown-linux-gnu\n", argv[1]);
--#endif
--  return 0;
--}
--EOF
--        ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
--        rm -f dummy.c dummy
--      else
--        # Either a pre-BFD a.out linker (linux-gnuoldld)
--        # or one that does not give us useful --help.
--        # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
--        # If ld does not provide *any* "supported emulations:"
--        # that means it is gnuoldld.
--        echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
--        test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
--
--        case "${UNAME_MACHINE}" in
--        i?86)
--          VENDOR=pc;
--          ;;
--        *)
--          VENDOR=unknown;
--          ;;
--        esac
--        # Determine whether the default compiler is a.out or elf
--        cat >dummy.c <<EOF
--#include <features.h>
--main(argc, argv)
--     int argc;
--     char *argv[];
--{
--#ifdef __ELF__
--# ifdef __GLIBC__
--#  if __GLIBC__ >= 2
--    printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
--#  else
--    printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
--#  endif
--# else
--   printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
--# endif
--#else
--  printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
--#endif
--  return 0;
--}
-+      # Determine whether the default compiler is a.out or elf
-+      eval $set_cc_for_build
-+      sed 's/^        //' << EOF >$dummy.c
-+      #include <features.h>
-+      #ifdef __ELF__
-+      # ifdef __GLIBC__
-+      #  if __GLIBC__ >= 2
-+      LIBC=gnu
-+      #  else
-+      LIBC=gnulibc1
-+      #  endif
-+      # else
-+      LIBC=gnulibc1
-+      # endif
-+      #else
-+      #ifdef __INTEL_COMPILER
-+      LIBC=gnu
-+      #else
-+      LIBC=gnuaout
-+      #endif
-+      #endif
- EOF
--        ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
--        rm -f dummy.c dummy
--      fi ;;
--# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
--# are messed up and put the nodename in both sysname and nodename.
--    i?86:DYNIX/ptx:4*:*)
-+      eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-+      test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
-+      test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
-+      ;;
-+    i*86:DYNIX/ptx:4*:*)
-+      # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-+      # earlier versions are messed up and put the nodename in both
-+      # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit 0 ;;
--    i?86:UNIX_SV:4.2MP:2.*)
-+    i*86:UNIX_SV:4.2MP:2.*)
-         # Unixware is an offshoot of SVR4, but it has its own version
-         # number series starting with 2...
-         # I am not positive that other SVR4 systems won't match this,
-@@ -638,28 +972,59 @@
-         # Use sysv4.2uw... so that sysv4* matches it.
-       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-       exit 0 ;;
--    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
-+    i*86:OS/2:*:*)
-+      # If we were able to find `uname', then EMX Unix compatibility
-+      # is probably installed.
-+      echo ${UNAME_MACHINE}-pc-os2-emx
-+      exit 0 ;;
-+    i*86:XTS-300:*:STOP)
-+      echo ${UNAME_MACHINE}-unknown-stop
-+      exit 0 ;;
-+    i*86:atheos:*:*)
-+      echo ${UNAME_MACHINE}-unknown-atheos
-+      exit 0 ;;
-+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-+      echo i386-unknown-lynxos${UNAME_RELEASE}
-+      exit 0 ;;
-+    i*86:*DOS:*:*)
-+      echo ${UNAME_MACHINE}-pc-msdosdjgpp
-+      exit 0 ;;
-+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-+      UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
--              echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
-+              echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-       else
--              echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
-+              echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-       fi
-       exit 0 ;;
--    i?86:*:3.2:*)
-+    i*86:*:5:[78]*)
-+      case `/bin/uname -X | grep "^Machine"` in
-+          *486*)           UNAME_MACHINE=i486 ;;
-+          *Pentium)        UNAME_MACHINE=i586 ;;
-+          *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-+      esac
-+      echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-+      exit 0 ;;
-+    i*86:*:3.2:*)
-       if test -f /usr/options/cb.name; then
-               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-       elif /bin/uname -X 2>/dev/null >/dev/null ; then
--              UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
--              (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
--              (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
-+              UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-+              (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-+              (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-                       && UNAME_MACHINE=i586
-+              (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-+                      && UNAME_MACHINE=i686
-+              (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-+                      && UNAME_MACHINE=i686
-               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-       else
-               echo ${UNAME_MACHINE}-pc-sysv32
-       fi
-       exit 0 ;;
-     pc:*:*:*)
-+      # Left here for compatibility:
-         # uname -m prints for DJGPP always 'pc', but it prints nothing about
-         # the processor, so we play safe by assuming i386.
-       echo i386-pc-msdosdjgpp
-@@ -681,9 +1046,15 @@
-       # "miniframe"
-       echo m68010-convergent-sysv
-       exit 0 ;;
-+    mc68k:UNIX:SYSTEM5:3.51m)
-+      echo m68k-convergent-sysv
-+      exit 0 ;;
-+    M680?0:D-NIX:5.3:*)
-+      echo m68k-diab-dnix
-+      exit 0 ;;
-     M68*:*:R3V[567]*:*)
-       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
--    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
-+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0)
-       OS_REL=''
-       test -r /etc/.relid \
-       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-@@ -694,24 +1065,27 @@
-     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && echo i486-ncr-sysv4 && exit 0 ;;
--    m68*:LynxOS:2.*:*)
-+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-     mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit 0 ;;
--    i?86:LynxOS:2.*:*)
--      echo i386-unknown-lynxos${UNAME_RELEASE}
--      exit 0 ;;
-     TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos${UNAME_RELEASE}
-       exit 0 ;;
--    rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
-+    rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
-+      echo powerpc-unknown-lynxos${UNAME_RELEASE}
-+      exit 0 ;;
-     SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv${UNAME_RELEASE}
-       exit 0 ;;
-+    RM*:ReliantUNIX-*:*:*)
-+      echo mips-sni-sysv4
-+      exit 0 ;;
-     RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit 0 ;;
-@@ -723,8 +1097,8 @@
-               echo ns32k-sni-sysv
-       fi
-       exit 0 ;;
--    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
--                           # says <Richard.M.Bartel@ccMail.Census.GOV>
-+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
-         echo i586-unisys-sysv4
-         exit 0 ;;
-     *:UNIX_System_V:4*:FTX*)
-@@ -736,25 +1110,113 @@
-       # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit 0 ;;
-+    *:VOS:*:*)
-+      # From Paul.Green@stratus.com.
-+      echo hppa1.1-stratus-vos
-+      exit 0 ;;
-     mc68*:A/UX:*:*)
-       echo m68k-apple-aux${UNAME_RELEASE}
-       exit 0 ;;
--    news*:NEWS-OS:*:6*)
-+    news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit 0 ;;
--    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
-+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv${UNAME_RELEASE}
-       else
-               echo mips-unknown-sysv${UNAME_RELEASE}
-       fi
-         exit 0 ;;
-+    BeBox:BeOS:*:*)   # BeOS running on hardware made by Be, PPC only.
-+      echo powerpc-be-beos
-+      exit 0 ;;
-+    BeMac:BeOS:*:*)   # BeOS running on Mac or Mac clone, PPC only.
-+      echo powerpc-apple-beos
-+      exit 0 ;;
-+    BePC:BeOS:*:*)    # BeOS running on Intel PC compatible.
-+      echo i586-pc-beos
-+      exit 0 ;;
-+    SX-4:SUPER-UX:*:*)
-+      echo sx4-nec-superux${UNAME_RELEASE}
-+      exit 0 ;;
-+    SX-5:SUPER-UX:*:*)
-+      echo sx5-nec-superux${UNAME_RELEASE}
-+      exit 0 ;;
-+    SX-6:SUPER-UX:*:*)
-+      echo sx6-nec-superux${UNAME_RELEASE}
-+      exit 0 ;;
-+    Power*:Rhapsody:*:*)
-+      echo powerpc-apple-rhapsody${UNAME_RELEASE}
-+      exit 0 ;;
-+    *:Rhapsody:*:*)
-+      echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-+      exit 0 ;;
-+    *:Darwin:*:*)
-+      case `uname -p` in
-+          *86) UNAME_PROCESSOR=i686 ;;
-+          powerpc) UNAME_PROCESSOR=powerpc ;;
-+      esac
-+      echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-+      exit 0 ;;
-+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-+      UNAME_PROCESSOR=`uname -p`
-+      if test "$UNAME_PROCESSOR" = "x86"; then
-+              UNAME_PROCESSOR=i386
-+              UNAME_MACHINE=pc
-+      fi
-+      echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-+      exit 0 ;;
-+    *:QNX:*:4*)
-+      echo i386-pc-qnx
-+      exit 0 ;;
-+    NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
-+      echo nsr-tandem-nsk${UNAME_RELEASE}
-+      exit 0 ;;
-+    *:NonStop-UX:*:*)
-+      echo mips-compaq-nonstopux
-+      exit 0 ;;
-+    BS2000:POSIX*:*:*)
-+      echo bs2000-siemens-sysv
-+      exit 0 ;;
-+    DS/*:UNIX_System_V:*:*)
-+      echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-+      exit 0 ;;
-+    *:Plan9:*:*)
-+      # "uname -m" is not consistent, so use $cputype instead. 386
-+      # is converted to i386 for consistency with other x86
-+      # operating systems.
-+      if test "$cputype" = "386"; then
-+          UNAME_MACHINE=i386
-+      else
-+          UNAME_MACHINE="$cputype"
-+      fi
-+      echo ${UNAME_MACHINE}-unknown-plan9
-+      exit 0 ;;
-+    *:TOPS-10:*:*)
-+      echo pdp10-unknown-tops10
-+      exit 0 ;;
-+    *:TENEX:*:*)
-+      echo pdp10-unknown-tenex
-+      exit 0 ;;
-+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-+      echo pdp10-dec-tops20
-+      exit 0 ;;
-+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-+      echo pdp10-xkl-tops20
-+      exit 0 ;;
-+    *:TOPS-20:*:*)
-+      echo pdp10-unknown-tops20
-+      exit 0 ;;
-+    *:ITS:*:*)
-+      echo pdp10-unknown-its
-+      exit 0 ;;
- esac
- #echo '(No uname command or uname output not recognized.)' 1>&2
- #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
--cat >dummy.c <<EOF
-+eval $set_cc_for_build
-+cat >$dummy.c <<EOF
- #ifdef _SEQUENT_
- # include <sys/types.h>
- # include <sys/utsname.h>
-@@ -792,7 +1254,10 @@
- #endif
-   int version;
-   version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
--  printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-+  if (version < 4)
-+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-+  else
-+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-   exit (0);
- #endif
-@@ -837,11 +1302,24 @@
- #endif
- #if defined (vax)
--#if !defined (ultrix)
--  printf ("vax-dec-bsd\n"); exit (0);
--#else
--  printf ("vax-dec-ultrix\n"); exit (0);
--#endif
-+# if !defined (ultrix)
-+#  include <sys/param.h>
-+#  if defined (BSD)
-+#   if BSD == 43
-+      printf ("vax-dec-bsd4.3\n"); exit (0);
-+#   else
-+#    if BSD == 199006
-+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-+#    else
-+      printf ("vax-dec-bsd\n"); exit (0);
-+#    endif
-+#   endif
-+#  else
-+    printf ("vax-dec-bsd\n"); exit (0);
-+#  endif
-+# else
-+    printf ("vax-dec-ultrix\n"); exit (0);
-+# endif
- #endif
- #if defined (alliant) && defined (i860)
-@@ -852,8 +1330,7 @@
- }
- EOF
--${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
--rm -f dummy.c dummy
-+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
- # Apollos put the system type in the environment.
-@@ -885,6 +1362,48 @@
-     esac
- fi
--#echo '(Unable to guess system type)' 1>&2
-+cat >&2 <<EOF
-+$0: unable to guess system type
-+
-+This script, last modified $timestamp, has failed to recognize
-+the operating system you are using. It is advised that you
-+download the most up to date version of the config scripts from
-+
-+    ftp://ftp.gnu.org/pub/gnu/config/
-+
-+If the version you run ($0) is already up to date, please
-+send the following data and any information you think might be
-+pertinent to <config-patches@gnu.org> in order to provide the needed
-+information to handle your system.
-+
-+config.guess timestamp = $timestamp
-+
-+uname -m = `(uname -m) 2>/dev/null || echo unknown`
-+uname -r = `(uname -r) 2>/dev/null || echo unknown`
-+uname -s = `(uname -s) 2>/dev/null || echo unknown`
-+uname -v = `(uname -v) 2>/dev/null || echo unknown`
-+
-+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-+
-+hostinfo               = `(hostinfo) 2>/dev/null`
-+/bin/universe          = `(/bin/universe) 2>/dev/null`
-+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-+/bin/arch              = `(/bin/arch) 2>/dev/null`
-+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-+
-+UNAME_MACHINE = ${UNAME_MACHINE}
-+UNAME_RELEASE = ${UNAME_RELEASE}
-+UNAME_SYSTEM  = ${UNAME_SYSTEM}
-+UNAME_VERSION = ${UNAME_VERSION}
-+EOF
- exit 1
-+
-+# Local variables:
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "timestamp='"
-+# time-stamp-format: "%:y-%02m-%02d"
-+# time-stamp-end: "'"
-+# End:
---- ez-ipupdate-3.0.11b8.orig/config.h.in
-+++ ez-ipupdate-3.0.11b8/config.h.in
-@@ -1,4 +1,4 @@
--/* config.h.in.  Generated automatically from configure.in by autoheader.  */
-+/* config.h.in.  Generated automatically from configure.in by autoheader 2.13.  */
- /* Define as the return type of signal handlers (int or void).  */
- #undef RETSIGTYPE
-@@ -132,6 +132,9 @@
- /* Define if you have the <stdarg.h> header file.  */
- #undef HAVE_STDARG_H
-+/* Define if you have the <string.h> header file.  */
-+#undef HAVE_STRING_H
-+
- /* Define if you have the <sys/socket.h> header file.  */
- #undef HAVE_SYS_SOCKET_H
-@@ -153,6 +156,9 @@
- /* Define if you have the <syslog.h> header file.  */
- #undef HAVE_SYSLOG_H
-+/* Define if you have the <time.h> header file.  */
-+#undef HAVE_TIME_H
-+
- /* Define if you have the <unistd.h> header file.  */
- #undef HAVE_UNISTD_H
-@@ -161,3 +167,10 @@
- /* Define if you have the socket library (-lsocket).  */
- #undef HAVE_LIBSOCKET
-+
-+/* Name of package */
-+#undef PACKAGE
-+
-+/* Version number of package */
-+#undef VERSION
-+
---- ez-ipupdate-3.0.11b8.orig/config.sub
-+++ ez-ipupdate-3.0.11b8/config.sub
-@@ -1,6 +1,10 @@
- #! /bin/sh
--# Configuration validation subroutine script, version 1.1.
--#   Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
-+# Configuration validation subroutine script.
-+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+
-+timestamp='2003-01-03'
-+
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
- # can handle that machine.  It does not imply ALL GNU software can.
-@@ -25,6 +29,9 @@
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
-+# Please send patches to <config-patches@gnu.org>.  Submit a context
-+# diff and a properly formatted ChangeLog entry.
-+#
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
- # If it is invalid, we print an error message on stderr and exit with code 1.
-@@ -45,30 +52,73 @@
- #     CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # It is wrong to echo any other type of specification.
--if [ x$1 = x ]
--then
--      echo Configuration name missing. 1>&2
--      echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
--      echo "or     $0 ALIAS" 1>&2
--      echo where ALIAS is a recognized configuration type. 1>&2
--      exit 1
--fi
-+me=`echo "$0" | sed -e 's,.*/,,'`
--# First pass through any local machine types.
--case $1 in
--      *local*)
--              echo $1
--              exit 0
--              ;;
--      *)
--      ;;
-+usage="\
-+Usage: $0 [OPTION] CPU-MFR-OPSYS
-+       $0 [OPTION] ALIAS
-+
-+Canonicalize a configuration name.
-+
-+Operation modes:
-+  -h, --help         print this help, then exit
-+  -t, --time-stamp   print date of last modification, then exit
-+  -v, --version      print version number, then exit
-+
-+Report bugs and patches to <config-patches@gnu.org>."
-+
-+version="\
-+GNU config.sub ($timestamp)
-+
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-+Free Software Foundation, Inc.
-+
-+This is free software; see the source for copying conditions.  There is NO
-+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-+
-+help="
-+Try \`$me --help' for more information."
-+
-+# Parse command line
-+while test $# -gt 0 ; do
-+  case $1 in
-+    --time-stamp | --time* | -t )
-+       echo "$timestamp" ; exit 0 ;;
-+    --version | -v )
-+       echo "$version" ; exit 0 ;;
-+    --help | --h* | -h )
-+       echo "$usage"; exit 0 ;;
-+    -- )     # Stop option processing
-+       shift; break ;;
-+    - )       # Use stdin as input.
-+       break ;;
-+    -* )
-+       echo "$me: invalid option $1$help"
-+       exit 1 ;;
-+
-+    *local*)
-+       # First pass through any local machine types.
-+       echo $1
-+       exit 0;;
-+
-+    * )
-+       break ;;
-+  esac
-+done
-+
-+case $# in
-+ 0) echo "$me: missing argument$help" >&2
-+    exit 1;;
-+ 1) ;;
-+ *) echo "$me: too many arguments$help" >&2
-+    exit 1;;
- esac
- # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
- # Here we must recognize all the valid KERNEL-OS combinations.
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
--  linux-gnu*)
-+  nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
-     os=-$maybe_os
-     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-     ;;
-@@ -94,15 +144,33 @@
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
--      -apple)
-+      -apple | -axis)
-               os=
-               basic_machine=$1
-               ;;
-+      -sim | -cisco | -oki | -wec | -winbond)
-+              os=
-+              basic_machine=$1
-+              ;;
-+      -scout)
-+              ;;
-+      -wrs)
-+              os=-vxworks
-+              basic_machine=$1
-+              ;;
-+      -chorusos*)
-+              os=-chorusos
-+              basic_machine=$1
-+              ;;
-+      -chorusrdb)
-+              os=-chorusrdb
-+              basic_machine=$1
-+              ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco5)
--              os=sco3.2v5
-+              os=-sco3.2v5
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-@@ -121,6 +189,9 @@
-               os=-sco3.2v2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-               ;;
-+      -udk*)
-+              basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-+              ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-@@ -143,26 +214,72 @@
-       -psos*)
-               os=-psos
-               ;;
-+      -mint | -mint[0-9]*)
-+              basic_machine=m68k-atari
-+              os=-mint
-+              ;;
- esac
- # Decode aliases for certain CPU-COMPANY combinations.
- case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
--      tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
--              | arme[lb] | pyramid | mn10200 | mn10300 \
--              | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
--              | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
--              | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
--              | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
--              | mipstx39 | mipstx39el \
--              | sparc | sparclet | sparclite | sparc64 | v850)
-+      1750a | 580 \
-+      | a29k \
-+      | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-+      | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-+      | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-+      | clipper \
-+      | d10v | d30v | dlx | dsp16xx \
-+      | fr30 | frv \
-+      | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-+      | i370 | i860 | i960 | ia64 \
-+      | ip2k \
-+      | m32r | m68000 | m68k | m88k | mcore \
-+      | mips | mipsbe | mipseb | mipsel | mipsle \
-+      | mips16 \
-+      | mips64 | mips64el \
-+      | mips64vr | mips64vrel \
-+      | mips64orion | mips64orionel \
-+      | mips64vr4100 | mips64vr4100el \
-+      | mips64vr4300 | mips64vr4300el \
-+      | mips64vr5000 | mips64vr5000el \
-+      | mipsisa32 | mipsisa32el \
-+      | mipsisa32r2 | mipsisa32r2el \
-+      | mipsisa64 | mipsisa64el \
-+      | mipsisa64sb1 | mipsisa64sb1el \
-+      | mipsisa64sr71k | mipsisa64sr71kel \
-+      | mipstx39 | mipstx39el \
-+      | mn10200 | mn10300 \
-+      | msp430 \
-+      | ns16k | ns32k \
-+      | openrisc | or32 \
-+      | pdp10 | pdp11 | pj | pjl \
-+      | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-+      | pyramid \
-+      | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
-+      | sh64 | sh64le \
-+      | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
-+      | strongarm \
-+      | tahoe | thumb | tic80 | tron \
-+      | v850 | v850e \
-+      | we32k \
-+      | x86 | xscale | xstormy16 | xtensa \
-+      | z8k)
-+              basic_machine=$basic_machine-unknown
-+              ;;
-+      m6811 | m68hc11 | m6812 | m68hc12)
-+              # Motorola 68HC11/12.
-               basic_machine=$basic_machine-unknown
-+              os=-none
-+              ;;
-+      m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-               ;;
-+
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
--      i[34567]86)
-+      i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-@@ -171,27 +288,79 @@
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
--      vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
--            | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
--            | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
--            | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
--            | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \
--            | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
--            | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
--            | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
--            | sparc64-* | mips64-* | mipsel-* \
--            | mips64el-* | mips64orion-* | mips64orionel-*  \
--            | mipstx39-* | mipstx39el-* \
--            | f301-*)
-+      580-* \
-+      | a29k-* \
-+      | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-+      | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-+      | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-+      | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-+      | avr-* \
-+      | bs2000-* \
-+      | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
-+      | clipper-* | cydra-* \
-+      | d10v-* | d30v-* | dlx-* \
-+      | elxsi-* \
-+      | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
-+      | h8300-* | h8500-* \
-+      | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-+      | i*86-* | i860-* | i960-* | ia64-* \
-+      | ip2k-* \
-+      | m32r-* \
-+      | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-+      | m88110-* | m88k-* | mcore-* \
-+      | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-+      | mips16-* \
-+      | mips64-* | mips64el-* \
-+      | mips64vr-* | mips64vrel-* \
-+      | mips64orion-* | mips64orionel-* \
-+      | mips64vr4100-* | mips64vr4100el-* \
-+      | mips64vr4300-* | mips64vr4300el-* \
-+      | mips64vr5000-* | mips64vr5000el-* \
-+      | mipsisa32-* | mipsisa32el-* \
-+      | mipsisa32r2-* | mipsisa32r2el-* \
-+      | mipsisa64-* | mipsisa64el-* \
-+      | mipsisa64sb1-* | mipsisa64sb1el-* \
-+      | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-+      | mipstx39-* | mipstx39el-* \
-+      | msp430-* \
-+      | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
-+      | orion-* \
-+      | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-+      | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-+      | pyramid-* \
-+      | romp-* | rs6000-* \
-+      | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
-+      | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-+      | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
-+      | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
-+      | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
-+      | v850-* | v850e-* | vax-* \
-+      | we32k-* \
-+      | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
-+      | xtensa-* \
-+      | ymp-* \
-+      | z8k-*)
-               ;;
-       # Recognize the various machine names and aliases which stand
-       # for a CPU type and a company and sometimes even an OS.
-+      386bsd)
-+              basic_machine=i386-unknown
-+              os=-bsd
-+              ;;
-       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
-               ;;
-       3b*)
-               basic_machine=we32k-att
-               ;;
-+      a29khif)
-+              basic_machine=a29k-amd
-+              os=-udi
-+              ;;
-+      adobe68k)
-+              basic_machine=m68010-adobe
-+              os=-scout
-+              ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-@@ -207,20 +376,24 @@
-               os=-sysv
-               ;;
-       amiga | amiga-*)
--              basic_machine=m68k-cbm
-+              basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
--              basic_machine=m68k-cbm
-+              basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
--              basic_machine=m68k-cbm
-+              basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-+      apollo68bsd)
-+              basic_machine=m68k-apollo
-+              os=-bsd
-+              ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-@@ -229,6 +402,10 @@
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-+      c90)
-+              basic_machine=c90-cray
-+              os=-unicos
-+              ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-@@ -249,27 +426,30 @@
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
--      cray | ymp)
--              basic_machine=ymp-cray
--              os=-unicos
--              ;;
--      cray2)
--              basic_machine=cray2-cray
--              os=-unicos
--              ;;
--      [ctj]90-cray)
--              basic_machine=c90-cray
-+      cray | j90)
-+              basic_machine=j90-cray
-               os=-unicos
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-+      cris | cris-* | etrax*)
-+              basic_machine=cris-axis
-+              ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
-               ;;
-+      decsystem10* | dec10*)
-+              basic_machine=pdp10-dec
-+              os=-tops10
-+              ;;
-+      decsystem20* | dec20*)
-+              basic_machine=pdp10-dec
-+              os=-tops20
-+              ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-@@ -297,6 +477,10 @@
-       encore | umax | mmax)
-               basic_machine=ns32k-encore
-               ;;
-+      es1800 | OSE68k | ose68k | ose | OSE)
-+              basic_machine=m68k-ericsson
-+              os=-ose
-+              ;;
-       fx2800)
-               basic_machine=i860-alliant
-               ;;
-@@ -307,6 +491,10 @@
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-+      go32)
-+              basic_machine=i386-pc
-+              os=-go32
-+              ;;
-       h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-@@ -315,6 +503,14 @@
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-+      h8300xray)
-+              basic_machine=h8300-hitachi
-+              os=-xray
-+              ;;
-+      h8500hms)
-+              basic_machine=h8500-hitachi
-+              os=-hms
-+              ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-@@ -330,13 +526,30 @@
-               basic_machine=m68k-hp
-               os=-hpux
-               ;;
-+      hp3k9[0-9][0-9] | hp9[0-9][0-9])
-+              basic_machine=hppa1.0-hp
-+              ;;
-       hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
-               ;;
-       hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
-               ;;
--      hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
-+      hp9k6[0-9][0-9] | hp6[0-9][0-9])
-+              basic_machine=hppa1.0-hp
-+              ;;
-+      hp9k7[0-79][0-9] | hp7[0-79][0-9])
-+              basic_machine=hppa1.1-hp
-+              ;;
-+      hp9k78[0-9] | hp78[0-9])
-+              # FIXME: really hppa2.0-hp
-+              basic_machine=hppa1.1-hp
-+              ;;
-+      hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-+              # FIXME: really hppa2.0-hp
-+              basic_machine=hppa1.1-hp
-+              ;;
-+      hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
-               ;;
-       hp9k8[0-9][0-9] | hp8[0-9][0-9])
-@@ -345,27 +558,42 @@
-       hppa-next)
-               os=-nextstep3
-               ;;
-+      hppaosf)
-+              basic_machine=hppa1.1-hp
-+              os=-osf
-+              ;;
-+      hppro)
-+              basic_machine=hppa1.1-hp
-+              os=-proelf
-+              ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
--              os=-mvs
-               ;;
- # I'm not sure what "Sysv32" means.  Should this be sysv3.2?
--      i[34567]86v32)
-+      i*86v32)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
-               ;;
--      i[34567]86v4*)
-+      i*86v4*)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
-               ;;
--      i[34567]86v)
-+      i*86v)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-sysv
-               ;;
--      i[34567]86sol2)
-+      i*86sol2)
-               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-+      i386mach)
-+              basic_machine=i386-mach
-+              os=-mach
-+              ;;
-+      i386-vsta | vsta)
-+              basic_machine=i386-unknown
-+              os=-vsta
-+              ;;
-       iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-@@ -391,16 +619,16 @@
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-+      mingw32)
-+              basic_machine=i386-pc
-+              os=-mingw32
-+              ;;
-       miniframe)
-               basic_machine=m68000-convergent
-               ;;
--      mipsel*-linux*)
--              basic_machine=mipsel-unknown
--              os=-linux-gnu
--              ;;
--      mips*-linux*)
--              basic_machine=mips-unknown
--              os=-linux-gnu
-+      *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-+              basic_machine=m68k-atari
-+              os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-@@ -408,10 +636,38 @@
-       mips3*)
-               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-+      mmix*)
-+              basic_machine=mmix-knuth
-+              os=-mmixware
-+              ;;
-+      monitor)
-+              basic_machine=m68k-rom68k
-+              os=-coff
-+              ;;
-+      morphos)
-+              basic_machine=powerpc-unknown
-+              os=-morphos
-+              ;;
-+      msdos)
-+              basic_machine=i386-pc
-+              os=-msdos
-+              ;;
-+      mvs)
-+              basic_machine=i370-ibm
-+              os=-mvs
-+              ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-+      netbsd386)
-+              basic_machine=i386-unknown
-+              os=-netbsd
-+              ;;
-+      netwinder)
-+              basic_machine=armv4l-rebel
-+              os=-linux
-+              ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-@@ -424,6 +680,10 @@
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-+      necv70)
-+              basic_machine=v70-nec
-+              os=-sysv
-+              ;;
-       next | m*-next )
-               basic_machine=m68k-next
-               case $os in
-@@ -449,9 +709,40 @@
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-+      mon960)
-+              basic_machine=i960-intel
-+              os=-mon960
-+              ;;
-+      nonstopux)
-+              basic_machine=mips-compaq
-+              os=-nonstopux
-+              ;;
-       np1)
-               basic_machine=np1-gould
-               ;;
-+      nv1)
-+              basic_machine=nv1-cray
-+              os=-unicosmp
-+              ;;
-+      nsr-tandem)
-+              basic_machine=nsr-tandem
-+              ;;
-+      op50n-* | op60c-*)
-+              basic_machine=hppa1.1-oki
-+              os=-proelf
-+              ;;
-+      or32 | or32-*)
-+              basic_machine=or32-unknown
-+              os=-coff
-+              ;;
-+      OSE68000 | ose68000)
-+              basic_machine=m68000-ericsson
-+              os=-ose
-+              ;;
-+      os68k)
-+              basic_machine=m68k-none
-+              os=-os68k
-+              ;;
-       pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-@@ -466,51 +757,85 @@
-       pbb)
-               basic_machine=m68k-tti
-               ;;
--        pc532 | pc532-*)
-+      pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
--      pentium | p5 | k5 | nexen)
-+      pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
--      pentiumpro | p6 | k6 | 6x86)
-+      pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2)
--              basic_machine=i786-pc
-+              basic_machine=i686-pc
-               ;;
--      pentium-* | p5-* | k5-* | nexen-*)
-+      pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
--      pentiumpro-* | p6-* | k6-* | 6x86-*)
-+      pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-*)
--              basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-+              basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       pn)
-               basic_machine=pn-gould
-               ;;
--      power)  basic_machine=rs6000-ibm
-+      power)  basic_machine=power-ibm
-               ;;
-       ppc)    basic_machine=powerpc-unknown
--              ;;
-+              ;;
-       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle | ppc-le | powerpc-little)
-               basic_machine=powerpcle-unknown
--              ;;
-+              ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-+      ppc64)  basic_machine=powerpc64-unknown
-+              ;;
-+      ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-+              ;;
-+      ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-+              basic_machine=powerpc64le-unknown
-+              ;;
-+      ppc64le-* | powerpc64little-*)
-+              basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-+              ;;
-       ps2)
-               basic_machine=i386-ibm
-               ;;
-+      pw32)
-+              basic_machine=i586-unknown
-+              os=-pw32
-+              ;;
-+      rom68k)
-+              basic_machine=m68k-rom68k
-+              os=-coff
-+              ;;
-       rm[46]00)
-               basic_machine=mips-siemens
-               ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
-               ;;
-+      s390 | s390-*)
-+              basic_machine=s390-ibm
-+              ;;
-+      s390x | s390x-*)
-+              basic_machine=s390x-ibm
-+              ;;
-+      sa29200)
-+              basic_machine=a29k-amd
-+              os=-udi
-+              ;;
-+      sb1)
-+              basic_machine=mipsisa64sb1-unknown
-+              ;;
-+      sb1el)
-+              basic_machine=mipsisa64sb1el-unknown
-+              ;;
-       sequent)
-               basic_machine=i386-sequent
-               ;;
-@@ -518,6 +843,10 @@
-               basic_machine=sh-hitachi
-               os=-hms
-               ;;
-+      sparclite-wrs | simso-wrs)
-+              basic_machine=sparclite-wrs
-+              os=-vxworks
-+              ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
-@@ -525,6 +854,13 @@
-       spur)
-               basic_machine=spur-unknown
-               ;;
-+      st2000)
-+              basic_machine=m68k-tandem
-+              ;;
-+      stratus)
-+              basic_machine=i860-stratus
-+              os=-sysv4
-+              ;;
-       sun2)
-               basic_machine=m68000-sun
-               ;;
-@@ -565,16 +901,40 @@
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
-               ;;
-+      sv1)
-+              basic_machine=sv1-cray
-+              os=-unicos
-+              ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
-               ;;
-+      t3e)
-+              basic_machine=alphaev5-cray
-+              os=-unicos
-+              ;;
-+      t90)
-+              basic_machine=t90-cray
-+              os=-unicos
-+              ;;
-+        tic4x | c4x*)
-+              basic_machine=tic4x-unknown
-+              os=-coff
-+              ;;
-+      tic54x | c54x*)
-+              basic_machine=tic54x-unknown
-+              os=-coff
-+              ;;
-       tx39)
-               basic_machine=mipstx39-unknown
-               ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
-               ;;
-+      toad1)
-+              basic_machine=pdp10-xkl
-+              os=-tops20
-+              ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
-               ;;
-@@ -586,6 +946,10 @@
-               basic_machine=a29k-nyu
-               os=-sym1
-               ;;
-+      v810 | necv810)
-+              basic_machine=v810-nec
-+              os=-none
-+              ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
-@@ -595,8 +959,8 @@
-               os=-vms
-               ;;
-       vpp*|vx|vx-*)
--               basic_machine=f301-fujitsu
--               ;;
-+              basic_machine=f301-fujitsu
-+              ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
-@@ -609,13 +973,25 @@
-               basic_machine=a29k-wrs
-               os=-vxworks
-               ;;
--      xmp)
--              basic_machine=xmp-cray
--              os=-unicos
-+      w65*)
-+              basic_machine=w65-wdc
-+              os=-none
-+              ;;
-+      w89k-*)
-+              basic_machine=hppa1.1-winbond
-+              os=-proelf
-               ;;
--        xps | xps100)
-+      xps | xps100)
-               basic_machine=xps100-honeywell
-               ;;
-+      ymp)
-+              basic_machine=ymp-cray
-+              os=-unicos
-+              ;;
-+      z8k-*-coff)
-+              basic_machine=z8k-unknown
-+              os=-sim
-+              ;;
-       none)
-               basic_machine=none-none
-               os=-none
-@@ -623,12 +999,14 @@
- # Here we handle the default manufacturer of certain CPU types.  It is in
- # some cases the only manufacturer, in others, it is the most popular.
--      mips)
--              if [ x$os = x-linux-gnu ]; then
--                      basic_machine=mips-unknown
--              else
--                      basic_machine=mips-mips
--              fi
-+      w89k)
-+              basic_machine=hppa1.1-winbond
-+              ;;
-+      op50n)
-+              basic_machine=hppa1.1-oki
-+              ;;
-+      op60c)
-+              basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-@@ -639,16 +1017,26 @@
-       vax)
-               basic_machine=vax-dec
-               ;;
-+      pdp10)
-+              # there are many clones, so DEC is not a safe bet
-+              basic_machine=pdp10-unknown
-+              ;;
-       pdp11)
-               basic_machine=pdp11-dec
-               ;;
-       we32k)
-               basic_machine=we32k-att
-               ;;
--      sparc)
-+      sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
-+              basic_machine=sh-unknown
-+              ;;
-+      sh64)
-+              basic_machine=sh64-unknown
-+              ;;
-+      sparc | sparcv9 | sparcv9b)
-               basic_machine=sparc-sun
-               ;;
--        cydra)
-+      cydra)
-               basic_machine=cydra-cydrome
-               ;;
-       orion)
-@@ -657,6 +1045,15 @@
-       orion105)
-               basic_machine=clipper-highlevel
-               ;;
-+      mac | mpw | mac-mpw)
-+              basic_machine=m68k-apple
-+              ;;
-+      pmac | pmac-mpw)
-+              basic_machine=powerpc-apple
-+              ;;
-+      *-unknown)
-+              # Make sure to match an already-canonicalized machine name.
-+              ;;
-       *)
-               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-               exit 1
-@@ -710,13 +1107,41 @@
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
--            | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
-+            | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
--            | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
--            | -mingw32* | -linux-gnu* | -uxpv*)
-+            | -chorusos* | -chorusrdb* \
-+            | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-+            | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
-+            | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-+            | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-+            | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-+            | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-+            | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-+            | -powermax* | -dnix* | -microbsd*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-+      -qnx*)
-+              case $basic_machine in
-+                  x86-* | i*86-*)
-+                      ;;
-+                  *)
-+                      os=-nto$os
-+                      ;;
-+              esac
-+              ;;
-+      -nto-qnx*)
-+              ;;
-+      -nto*)
-+              os=`echo $os | sed -e 's|nto|nto-qnx|'`
-+              ;;
-+      -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-+            | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
-+            | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-+              ;;
-+      -mac*)
-+              os=`echo $os | sed -e 's|mac|macos|'`
-+              ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-@@ -726,6 +1151,12 @@
-       -sunos6*)
-               os=`echo $os | sed -e 's|sunos6|solaris3|'`
-               ;;
-+      -opened*)
-+              os=-openedition
-+              ;;
-+      -wince*)
-+              os=-wince
-+              ;;
-       -osfrose*)
-               os=-osfrose
-               ;;
-@@ -741,11 +1172,23 @@
-       -acis*)
-               os=-aos
-               ;;
-+      -atheos*)
-+              os=-atheos
-+              ;;
-+      -386bsd)
-+              os=-bsd
-+              ;;
-       -ctix* | -uts*)
-               os=-sysv
-               ;;
-+      -nova*)
-+              os=-rtmk-nova
-+              ;;
-       -ns2 )
--              os=-nextstep2
-+              os=-nextstep2
-+              ;;
-+      -nsk*)
-+              os=-nsk
-               ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-@@ -772,9 +1215,18 @@
-       # This must come after -sysvr4.
-       -sysv*)
-               ;;
-+      -ose*)
-+              os=-ose
-+              ;;
-+      -es1800*)
-+              os=-ose
-+              ;;
-       -xenix)
-               os=-xenix
-               ;;
-+      -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-+              os=-mint
-+              ;;
-       -none)
-               ;;
-       *)
-@@ -800,10 +1252,17 @@
-       *-acorn)
-               os=-riscix1.2
-               ;;
-+      arm*-rebel)
-+              os=-linux
-+              ;;
-       arm*-semi)
-               os=-aout
-               ;;
--        pdp11-*)
-+      # This must come before the *-dec entry.
-+      pdp10-*)
-+              os=-tops20
-+              ;;
-+      pdp11-*)
-               os=-none
-               ;;
-       *-dec | vax-*)
-@@ -821,15 +1280,39 @@
-               # default.
-               # os=-sunos4
-               ;;
-+      m68*-cisco)
-+              os=-aout
-+              ;;
-+      mips*-cisco)
-+              os=-elf
-+              ;;
-+      mips*-*)
-+              os=-elf
-+              ;;
-+      or32-*)
-+              os=-coff
-+              ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
-               ;;
-       sparc-* | *-sun)
-               os=-sunos4.1.1
-               ;;
-+      *-be)
-+              os=-beos
-+              ;;
-       *-ibm)
-               os=-aix
-               ;;
-+      *-wec)
-+              os=-proelf
-+              ;;
-+      *-winbond)
-+              os=-proelf
-+              ;;
-+      *-oki)
-+              os=-proelf
-+              ;;
-       *-hp)
-               os=-hpux
-               ;;
-@@ -872,27 +1355,39 @@
-       *-next)
-               os=-nextstep3
-               ;;
--        *-gould)
-+      *-gould)
-               os=-sysv
-               ;;
--        *-highlevel)
-+      *-highlevel)
-               os=-bsd
-               ;;
-       *-encore)
-               os=-bsd
-               ;;
--        *-sgi)
-+      *-sgi)
-               os=-irix
-               ;;
--        *-siemens)
-+      *-siemens)
-               os=-sysv4
-               ;;
-       *-masscomp)
-               os=-rtu
-               ;;
--      f301-fujitsu)
-+      f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
-               ;;
-+      *-rom68k)
-+              os=-coff
-+              ;;
-+      *-*bug)
-+              os=-coff
-+              ;;
-+      *-apple)
-+              os=-macos
-+              ;;
-+      *-atari*)
-+              os=-mint
-+              ;;
-       *)
-               os=-none
-               ;;
-@@ -914,9 +1409,15 @@
-                       -aix*)
-                               vendor=ibm
-                               ;;
-+                      -beos*)
-+                              vendor=be
-+                              ;;
-                       -hpux*)
-                               vendor=hp
-                               ;;
-+                      -mpeix*)
-+                              vendor=hp
-+                              ;;
-                       -hiux*)
-                               vendor=hitachi
-                               ;;
-@@ -932,21 +1433,41 @@
-                       -genix*)
-                               vendor=ns
-                               ;;
--                      -mvs*)
-+                      -mvs* | -opened*)
-                               vendor=ibm
-                               ;;
-                       -ptx*)
-                               vendor=sequent
-                               ;;
--                      -vxsim* | -vxworks*)
-+                      -vxsim* | -vxworks* | -windiss*)
-                               vendor=wrs
-                               ;;
-                       -aux*)
-                               vendor=apple
-                               ;;
-+                      -hms*)
-+                              vendor=hitachi
-+                              ;;
-+                      -mpw* | -macos*)
-+                              vendor=apple
-+                              ;;
-+                      -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-+                              vendor=atari
-+                              ;;
-+                      -vos*)
-+                              vendor=stratus
-+                              ;;
-               esac
-               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-               ;;
- esac
- echo $basic_machine$os
-+exit 0
-+
-+# Local variables:
-+# eval: (add-hook 'write-file-hooks 'time-stamp)
-+# time-stamp-start: "timestamp='"
-+# time-stamp-format: "%:y-%02m-%02d"
-+# time-stamp-end: "'"
-+# End:
---- ez-ipupdate-3.0.11b8.orig/configure
-+++ ez-ipupdate-3.0.11b8/configure
-@@ -1,7 +1,7 @@
- #! /bin/sh
- # Guess values for system-dependent variables and create Makefiles.
--# Generated automatically using autoconf version 2.12 
-+# Generated automatically using autoconf version 2.13 
- # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
- #
- # This configure script is free software; the Free Software Foundation
-@@ -58,6 +58,7 @@
- # Initialize some other variables.
- subdirs=
- MFLAGS= MAKEFLAGS=
-+SHELL=${CONFIG_SHELL-/bin/sh}
- # Maximum number of lines to put in a shell here document.
- ac_max_here_lines=12
-@@ -341,7 +342,7 @@
-     verbose=yes ;;
-   -version | --version | --versio | --versi | --vers)
--    echo "configure generated by autoconf version 2.12"
-+    echo "configure generated by autoconf version 2.13"
-     exit 0 ;;
-   -with-* | --with-*)
-@@ -511,9 +512,11 @@
- # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
- cross_compiling=$ac_cv_prog_cc_cross
-+ac_exeext=
-+ac_objext=o
- if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-   # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-   if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-@@ -549,6 +552,7 @@
- ac_config_sub=$ac_aux_dir/config.sub
- ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-+am__api_version="1.4"
- # Find a good install program.  We prefer a C program (faster),
- # so one script is as good as another.  But avoid the broken or
- # incompatible versions:
-@@ -556,28 +560,30 @@
- # SunOS /usr/etc/install
- # IRIX /sbin/install
- # AIX /bin/install
-+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
- # AFS /usr/afsws/bin/install, which mishandles nonexistent args
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # ./install, which can be erroneously created by make from ./install.sh.
- echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
--echo "configure:564: checking for a BSD compatible install" >&5
-+echo "configure:569: checking for a BSD compatible install" >&5
- if test -z "$INSTALL"; then
- if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
--    IFS="${IFS=       }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
-+    IFS="${IFS=       }"; ac_save_IFS="$IFS"; IFS=":"
-   for ac_dir in $PATH; do
-     # Account for people who put trailing slashes in PATH elements.
-     case "$ac_dir/" in
-     /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-     *)
-       # OSF1 and SCO ODT 3.0 have their own names for install.
--      for ac_prog in ginstall installbsd scoinst install; do
-+      # Don't use installbsd from OSF since it installs stuff as root
-+      # by default.
-+      for ac_prog in ginstall scoinst install; do
-         if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-             grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
--          # OSF/1 installbsd also uses dspmsg, but is usable.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-@@ -607,13 +613,12 @@
- # It thinks the first close brace ends the variable substitution.
- test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
--test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
--
--
- test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-+
- echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
--echo "configure:617: checking whether build environment is sane" >&5
-+echo "configure:622: checking whether build environment is sane" >&5
- # Just in case
- sleep 1
- echo timestamp > conftestfile
-@@ -670,7 +675,7 @@
- test "$program_transform_name" = "" && program_transform_name="s,x,x,"
- echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
--echo "configure:674: checking whether ${MAKE-make} sets \${MAKE}" >&5
-+echo "configure:679: checking whether ${MAKE-make} sets \${MAKE}" >&5
- set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
-@@ -715,21 +720,21 @@
- missing_dir=`cd $ac_aux_dir && pwd`
--echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
--echo "configure:720: checking for working aclocal" >&5
-+echo $ac_n "checking for working aclocal-${am__api_version}""... $ac_c" 1>&6
-+echo "configure:725: checking for working aclocal-${am__api_version}" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf.  Sigh.
--if (aclocal --version) < /dev/null > /dev/null 2>&1; then
--   ACLOCAL=aclocal
-+if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
-+   ACLOCAL=aclocal-${am__api_version}
-    echo "$ac_t""found" 1>&6
- else
--   ACLOCAL="$missing_dir/missing aclocal"
-+   ACLOCAL="$missing_dir/missing aclocal-${am__api_version}"
-    echo "$ac_t""missing" 1>&6
- fi
- echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
--echo "configure:733: checking for working autoconf" >&5
-+echo "configure:738: checking for working autoconf" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf.  Sigh.
-@@ -741,21 +746,21 @@
-    echo "$ac_t""missing" 1>&6
- fi
--echo $ac_n "checking for working automake""... $ac_c" 1>&6
--echo "configure:746: checking for working automake" >&5
-+echo $ac_n "checking for working automake-${am__api_version}""... $ac_c" 1>&6
-+echo "configure:751: checking for working automake-${am__api_version}" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf.  Sigh.
--if (automake --version) < /dev/null > /dev/null 2>&1; then
--   AUTOMAKE=automake
-+if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
-+   AUTOMAKE=automake-${am__api_version}
-    echo "$ac_t""found" 1>&6
- else
--   AUTOMAKE="$missing_dir/missing automake"
-+   AUTOMAKE="$missing_dir/missing automake-${am__api_version}"
-    echo "$ac_t""missing" 1>&6
- fi
- echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
--echo "configure:759: checking for working autoheader" >&5
-+echo "configure:764: checking for working autoheader" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf.  Sigh.
-@@ -768,7 +773,7 @@
- fi
- echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
--echo "configure:772: checking for working makeinfo" >&5
-+echo "configure:777: checking for working makeinfo" >&5
- # Run test in a subshell; some versions of sh will print an error if
- # an executable is not found, even if stderr is redirected.
- # Redirect stdin to placate older versions of autoconf.  Sigh.
-@@ -806,15 +811,16 @@
- # Extract the first word of "gcc", so it can be a program name with args.
- set dummy gcc; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:810: checking for $ac_word" >&5
-+echo "configure:815: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   if test -n "$CC"; then
-   ac_cv_prog_CC="$CC" # Let the user override the test.
- else
--  IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
--  for ac_dir in $PATH; do
-+  IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS=":"
-+  ac_dummy="$PATH"
-+  for ac_dir in $ac_dummy; do
-     test -z "$ac_dir" && ac_dir=.
-     if test -f $ac_dir/$ac_word; then
-       ac_cv_prog_CC="gcc"
-@@ -835,16 +841,17 @@
-   # Extract the first word of "cc", so it can be a program name with args.
- set dummy cc; ac_word=$2
- echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
--echo "configure:839: checking for $ac_word" >&5
-+echo "configure:845: checking for $ac_word" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   if test -n "$CC"; then
-   ac_cv_prog_CC="$CC" # Let the user override the test.
- else
--  IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-+  IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS=":"
-   ac_prog_rejected=no
--  for ac_dir in $PATH; do
-+  ac_dummy="$PATH"
-+  for ac_dir in $ac_dummy; do
-     test -z "$ac_dir" && ac_dir=.
-     if test -f $ac_dir/$ac_word; then
-       if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-@@ -879,25 +886,61 @@
-   echo "$ac_t""no" 1>&6
- fi
-+  if test -z "$CC"; then
-+    case "`uname -s`" in
-+    *win32* | *WIN32*)
-+      # Extract the first word of "cl", so it can be a program name with args.
-+set dummy cl; ac_word=$2
-+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-+echo "configure:896: checking for $ac_word" >&5
-+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-+  echo $ac_n "(cached) $ac_c" 1>&6
-+else
-+  if test -n "$CC"; then
-+  ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+  IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS=":"
-+  ac_dummy="$PATH"
-+  for ac_dir in $ac_dummy; do
-+    test -z "$ac_dir" && ac_dir=.
-+    if test -f $ac_dir/$ac_word; then
-+      ac_cv_prog_CC="cl"
-+      break
-+    fi
-+  done
-+  IFS="$ac_save_ifs"
-+fi
-+fi
-+CC="$ac_cv_prog_CC"
-+if test -n "$CC"; then
-+  echo "$ac_t""$CC" 1>&6
-+else
-+  echo "$ac_t""no" 1>&6
-+fi
-+ ;;
-+    esac
-+  fi
-   test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
- fi
- echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
--echo "configure:887: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-+echo "configure:928: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
- ac_ext=c
- # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
- cross_compiling=$ac_cv_prog_cc_cross
--cat > conftest.$ac_ext <<EOF
--#line 897 "configure"
-+cat > conftest.$ac_ext << EOF
-+
-+#line 939 "configure"
- #include "confdefs.h"
-+
- main(){return(0);}
- EOF
--if { (eval echo configure:901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   ac_cv_prog_cc_works=yes
-   # If we can't run a trivial program, we are probably using a cross compiler.
-   if (./conftest; exit) 2>/dev/null; then
-@@ -911,18 +954,24 @@
-   ac_cv_prog_cc_works=no
- fi
- rm -fr conftest*
-+ac_ext=c
-+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-+cross_compiling=$ac_cv_prog_cc_cross
- echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
- if test $ac_cv_prog_cc_works = no; then
-   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
- fi
- echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
--echo "configure:921: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-+echo "configure:970: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
- echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
- cross_compiling=$ac_cv_prog_cc_cross
- echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
--echo "configure:926: checking whether we are using GNU C" >&5
-+echo "configure:975: checking whether we are using GNU C" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -931,7 +980,7 @@
-   yes;
- #endif
- EOF
--if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-   ac_cv_prog_gcc=yes
- else
-   ac_cv_prog_gcc=no
-@@ -942,11 +991,15 @@
- if test $ac_cv_prog_gcc = yes; then
-   GCC=yes
--  ac_test_CFLAGS="${CFLAGS+set}"
--  ac_save_CFLAGS="$CFLAGS"
--  CFLAGS=
--  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
--echo "configure:950: checking whether ${CC-cc} accepts -g" >&5
-+else
-+  GCC=
-+fi
-+
-+ac_test_CFLAGS="${CFLAGS+set}"
-+ac_save_CFLAGS="$CFLAGS"
-+CFLAGS=
-+echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-+echo "configure:1003: checking whether ${CC-cc} accepts -g" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-@@ -961,20 +1014,24 @@
- fi
- echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
--  if test "$ac_test_CFLAGS" = set; then
--    CFLAGS="$ac_save_CFLAGS"
--  elif test $ac_cv_prog_cc_g = yes; then
-+if test "$ac_test_CFLAGS" = set; then
-+  CFLAGS="$ac_save_CFLAGS"
-+elif test $ac_cv_prog_cc_g = yes; then
-+  if test "$GCC" = yes; then
-     CFLAGS="-g -O2"
-   else
--    CFLAGS="-O2"
-+    CFLAGS="-g"
-   fi
- else
--  GCC=
--  test "${CFLAGS+set}" = set || CFLAGS="-g"
-+  if test "$GCC" = yes; then
-+    CFLAGS="-O2"
-+  else
-+    CFLAGS=
-+  fi
- fi
- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
--echo "configure:978: checking how to run the C preprocessor" >&5
-+echo "configure:1035: checking how to run the C preprocessor" >&5
- # On Suns, sometimes $CPP names a directory.
- if test -n "$CPP" && test -d "$CPP"; then
-   CPP=
-@@ -989,14 +1046,14 @@
-   # On the NeXT, cc -E runs the code through the compiler's parser,
-   # not just through cpp.
-   cat > conftest.$ac_ext <<EOF
--#line 993 "configure"
-+#line 1050 "configure"
- #include "confdefs.h"
- #include <assert.h>
- Syntax Error
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:999: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out`
-+{ (eval echo configure:1056: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
-   :
- else
-@@ -1006,14 +1063,31 @@
-   rm -rf conftest*
-   CPP="${CC-cc} -E -traditional-cpp"
-   cat > conftest.$ac_ext <<EOF
--#line 1010 "configure"
-+#line 1067 "configure"
- #include "confdefs.h"
- #include <assert.h>
- Syntax Error
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1016: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out`
-+{ (eval echo configure:1073: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-+if test -z "$ac_err"; then
-+  :
-+else
-+  echo "$ac_err" >&5
-+  echo "configure: failed program was:" >&5
-+  cat conftest.$ac_ext >&5
-+  rm -rf conftest*
-+  CPP="${CC-cc} -nologo -E"
-+  cat > conftest.$ac_ext <<EOF
-+#line 1084 "configure"
-+#include "confdefs.h"
-+#include <assert.h>
-+Syntax Error
-+EOF
-+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+{ (eval echo configure:1090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
-   :
- else
-@@ -1026,6 +1100,8 @@
- rm -f conftest*
- fi
- rm -f conftest*
-+fi
-+rm -f conftest*
-   ac_cv_prog_CPP="$CPP"
- fi
-   CPP="$ac_cv_prog_CPP"
-@@ -1041,28 +1117,30 @@
- # SunOS /usr/etc/install
- # IRIX /sbin/install
- # AIX /bin/install
-+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
- # AFS /usr/afsws/bin/install, which mishandles nonexistent args
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # ./install, which can be erroneously created by make from ./install.sh.
- echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
--echo "configure:1049: checking for a BSD compatible install" >&5
-+echo "configure:1126: checking for a BSD compatible install" >&5
- if test -z "$INSTALL"; then
- if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
--    IFS="${IFS=       }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
-+    IFS="${IFS=       }"; ac_save_IFS="$IFS"; IFS=":"
-   for ac_dir in $PATH; do
-     # Account for people who put trailing slashes in PATH elements.
-     case "$ac_dir/" in
-     /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-     *)
-       # OSF1 and SCO ODT 3.0 have their own names for install.
--      for ac_prog in ginstall installbsd scoinst install; do
-+      # Don't use installbsd from OSF since it installs stuff as root
-+      # by default.
-+      for ac_prog in ginstall scoinst install; do
-         if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-             grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
--          # OSF/1 installbsd also uses dspmsg, but is usable.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-@@ -1092,16 +1170,18 @@
- # It thinks the first close brace ends the variable substitution.
- test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-+
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
- echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
--echo "configure:1100: checking return type of signal handlers" >&5
-+echo "configure:1180: checking return type of signal handlers" >&5
- if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   cat > conftest.$ac_ext <<EOF
--#line 1105 "configure"
-+#line 1185 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <signal.h>
-@@ -1118,7 +1198,7 @@
- int i;
- ; return 0; }
- EOF
--if { (eval echo configure:1122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-+if { (eval echo configure:1202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-   rm -rf conftest*
-   ac_cv_type_signal=void
- else
-@@ -1139,12 +1219,12 @@
- echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
--echo "configure:1143: checking for gethostbyname" >&5
-+echo "configure:1223: checking for gethostbyname" >&5
- if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   cat > conftest.$ac_ext <<EOF
--#line 1148 "configure"
-+#line 1228 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
-     which can conflict with char gethostbyname(); below.  */
-@@ -1167,7 +1247,7 @@
- ; return 0; }
- EOF
--if { (eval echo configure:1171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:1251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   rm -rf conftest*
-   eval "ac_cv_func_gethostbyname=yes"
- else
-@@ -1188,7 +1268,7 @@
- if test $ac_cv_func_gethostbyname = no; then
-     echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
--echo "configure:1192: checking for gethostbyname in -lnsl" >&5
-+echo "configure:1272: checking for gethostbyname in -lnsl" >&5
- ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
-@@ -1196,7 +1276,7 @@
-   ac_save_LIBS="$LIBS"
- LIBS="-lnsl  $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 1200 "configure"
-+#line 1280 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error.  */
- /* We use char because int might match the return type of a gcc2
-@@ -1207,7 +1287,7 @@
- gethostbyname()
- ; return 0; }
- EOF
--if { (eval echo configure:1211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:1291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   rm -rf conftest*
-   eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -1236,12 +1316,12 @@
- fi
- echo $ac_n "checking for connect""... $ac_c" 1>&6
--echo "configure:1240: checking for connect" >&5
-+echo "configure:1320: checking for connect" >&5
- if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   cat > conftest.$ac_ext <<EOF
--#line 1245 "configure"
-+#line 1325 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
-     which can conflict with char connect(); below.  */
-@@ -1264,7 +1344,7 @@
- ; return 0; }
- EOF
--if { (eval echo configure:1268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:1348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   rm -rf conftest*
-   eval "ac_cv_func_connect=yes"
- else
-@@ -1285,7 +1365,7 @@
- if test $ac_cv_func_connect = no; then
-     echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
--echo "configure:1289: checking for connect in -lsocket" >&5
-+echo "configure:1369: checking for connect in -lsocket" >&5
- ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
-@@ -1293,7 +1373,7 @@
-   ac_save_LIBS="$LIBS"
- LIBS="-lsocket  $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 1297 "configure"
-+#line 1377 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error.  */
- /* We use char because int might match the return type of a gcc2
-@@ -1304,7 +1384,7 @@
- connect()
- ; return 0; }
- EOF
--if { (eval echo configure:1308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:1388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   rm -rf conftest*
-   eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -1364,12 +1444,12 @@
-               herror 
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:1368: checking for $ac_func" >&5
-+echo "configure:1448: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   cat > conftest.$ac_ext <<EOF
--#line 1373 "configure"
-+#line 1453 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
-     which can conflict with char $ac_func(); below.  */
-@@ -1392,7 +1472,7 @@
- ; return 0; }
- EOF
--if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:1476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   rm -rf conftest*
-   eval "ac_cv_func_$ac_func=yes"
- else
-@@ -1419,10 +1499,12 @@
- for ac_hdr in arpa/inet.h \
-                 sys/types.h \
-+                time.h \
-                 sys/time.h \
-                 sys/stat.h \
-                 fcntl.h \
-                 signal.h \
-+                string.h \
-                 syslog.h \
-                 pwd.h \
-                 stdarg.h \
-@@ -1434,18 +1516,18 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:1438: checking for $ac_hdr" >&5
-+echo "configure:1520: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   cat > conftest.$ac_ext <<EOF
--#line 1443 "configure"
-+#line 1525 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1448: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out`
-+{ (eval echo configure:1530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
-   rm -rf conftest*
-   eval "ac_cv_header_$ac_safe=yes"
-@@ -1478,18 +1560,18 @@
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "configure:1482: checking for $ac_hdr" >&5
-+echo "configure:1564: checking for $ac_hdr" >&5
- if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   cat > conftest.$ac_ext <<EOF
--#line 1487 "configure"
-+#line 1569 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
--{ (eval echo configure:1492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out`
-+{ (eval echo configure:1574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
- if test -z "$ac_err"; then
-   rm -rf conftest*
-   eval "ac_cv_header_$ac_safe=yes"
-@@ -1517,7 +1599,7 @@
- echo $ac_n "checking for sys_errlist in -lc""... $ac_c" 1>&6
--echo "configure:1521: checking for sys_errlist in -lc" >&5
-+echo "configure:1603: checking for sys_errlist in -lc" >&5
- ac_lib_var=`echo c'_'sys_errlist | sed 'y%./+-%__p_%'`
- if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
-@@ -1525,7 +1607,7 @@
-   ac_save_LIBS="$LIBS"
- LIBS="-lc  $LIBS"
- cat > conftest.$ac_ext <<EOF
--#line 1529 "configure"
-+#line 1611 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error.  */
- /* We use char because int might match the return type of a gcc2
-@@ -1536,7 +1618,7 @@
- sys_errlist()
- ; return 0; }
- EOF
--if { (eval echo configure:1540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:1622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   rm -rf conftest*
-   eval "ac_cv_lib_$ac_lib_var=yes"
- else
-@@ -1563,12 +1645,12 @@
- for ac_func in getopt
- do
- echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
--echo "configure:1567: checking for $ac_func" >&5
-+echo "configure:1649: checking for $ac_func" >&5
- if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   cat > conftest.$ac_ext <<EOF
--#line 1572 "configure"
-+#line 1654 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
-     which can conflict with char $ac_func(); below.  */
-@@ -1591,7 +1673,7 @@
- ; return 0; }
- EOF
--if { (eval echo configure:1595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:1677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   rm -rf conftest*
-   eval "ac_cv_func_$ac_func=yes"
- else
-@@ -1620,12 +1702,12 @@
- fi
- echo $ac_n "checking for getpass""... $ac_c" 1>&6
--echo "configure:1624: checking for getpass" >&5
-+echo "configure:1706: checking for getpass" >&5
- if eval "test \"`echo '$''{'ac_cv_func_getpass'+set}'`\" = set"; then
-   echo $ac_n "(cached) $ac_c" 1>&6
- else
-   cat > conftest.$ac_ext <<EOF
--#line 1629 "configure"
-+#line 1711 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
-     which can conflict with char getpass(); below.  */
-@@ -1648,7 +1730,7 @@
- ; return 0; }
- EOF
--if { (eval echo configure:1652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-+if { (eval echo configure:1734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-   rm -rf conftest*
-   eval "ac_cv_func_getpass=yes"
- else
-@@ -1675,26 +1757,26 @@
- # Make sure we can run config.sub.
--if $ac_config_sub sun4 >/dev/null 2>&1; then :
-+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
- else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
- fi
- echo $ac_n "checking host system type""... $ac_c" 1>&6
--echo "configure:1684: checking host system type" >&5
-+echo "configure:1766: checking host system type" >&5
- host_alias=$host
- case "$host_alias" in
- NONE)
-   case $nonopt in
-   NONE)
--    if host_alias=`$ac_config_guess`; then :
-+    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
-     else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
-     fi ;;
-   *) host_alias=$nonopt ;;
-   esac ;;
- esac
--host=`$ac_config_sub $host_alias`
-+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
- host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
- host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
- host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-@@ -1706,7 +1788,7 @@
- echo $ac_n "checking for user supplied default service""... $ac_c" 1>&6
--echo "configure:1710: checking for user supplied default service" >&5
-+echo "configure:1792: checking for user supplied default service" >&5
- # Check whether --enable-default-service or --disable-default-service was given.
- if test "${enable_default_service+set}" = set; then
-   enableval="$enable_default_service"
-@@ -1800,7 +1882,7 @@
- esac
- echo $ac_n "checking whether user wants debugging support""... $ac_c" 1>&6
--echo "configure:1804: checking whether user wants debugging support" >&5
-+echo "configure:1886: checking whether user wants debugging support" >&5
- # Check whether --enable-debug or --disable-debug was given.
- if test "${enable_debug+set}" = set; then
-   enableval="$enable_debug"
-@@ -1815,7 +1897,7 @@
- echo $ac_n "checking whether user wants to dissable MD5 support""... $ac_c" 1>&6
--echo "configure:1819: checking whether user wants to dissable MD5 support" >&5
-+echo "configure:1901: checking whether user wants to dissable MD5 support" >&5
- # Check whether --enable-md5 or --disable-md5 was given.
- if test "${enable_md5+set}" = set; then
-   enableval="$enable_md5"
-@@ -1855,7 +1937,7 @@
- # Ultrix sh set writes to stderr and can't be redirected directly,
- # and sets the high bit in the cache file unless we assign to the vars.
- (set) 2>&1 |
--  case `(ac_space=' '; set) 2>&1` in
-+  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-   *ac_space=\ *)
-     # `set' does not quote correctly, so add quotes (double-quote substitution
-     # turns \\\\ into \\, and sed turns \\ into \).
-@@ -1922,7 +2004,7 @@
-     echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-     exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-   -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
--    echo "$CONFIG_STATUS generated by autoconf version 2.12"
-+    echo "$CONFIG_STATUS generated by autoconf version 2.13"
-     exit 0 ;;
-   -help | --help | --hel | --he | --h)
-     echo "\$ac_cs_usage"; exit 0 ;;
-@@ -1942,9 +2024,11 @@
-  s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
- $ac_vpsub
- $extrasub
-+s%@SHELL@%$SHELL%g
- s%@CFLAGS@%$CFLAGS%g
- s%@CPPFLAGS@%$CPPFLAGS%g
- s%@CXXFLAGS@%$CXXFLAGS%g
-+s%@FFLAGS@%$FFLAGS%g
- s%@DEFS@%$DEFS%g
- s%@LDFLAGS@%$LDFLAGS%g
- s%@LIBS@%$LIBS%g
-@@ -1964,8 +2048,8 @@
- s%@infodir@%$infodir%g
- s%@mandir@%$mandir%g
- s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
--s%@INSTALL_DATA@%$INSTALL_DATA%g
- s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-+s%@INSTALL_DATA@%$INSTALL_DATA%g
- s%@PACKAGE@%$PACKAGE%g
- s%@VERSION@%$VERSION%g
- s%@ACLOCAL@%$ACLOCAL%g
---- ez-ipupdate-3.0.11b8.orig/configure.in
-+++ ez-ipupdate-3.0.11b8/configure.in
-@@ -58,10 +58,12 @@
- dnl Checks for header files.
- AC_CHECK_HEADERS( arpa/inet.h \
-                 sys/types.h \
-+                time.h \
-                 sys/time.h \
-                 sys/stat.h \
-                 fcntl.h \
-                 signal.h \
-+                string.h \
-                 syslog.h \
-                 pwd.h \
-                 stdarg.h \
---- ez-ipupdate-3.0.11b8.orig/install-sh
-+++ ez-ipupdate-3.0.11b8/install-sh
-@@ -118,6 +118,7 @@
-       
-       if [ -d $dst ]; then
-               instcmd=:
-+              chmodcmd=""
-       else
-               instcmd=mkdir
-       fi
-@@ -162,7 +163,7 @@
- # Skip lots of stat calls in the usual case.
- if [ ! -d "$dstdir" ]; then
--defaultIFS='  
-+defaultIFS='  
- '
- IFS="${IFS-${defaultIFS}}"
---- ez-ipupdate-3.0.11b8.orig/missing
-+++ ez-ipupdate-3.0.11b8/missing
-@@ -1 +1,198 @@
--#autoconf complains if this is not here
-+#! /bin/sh
-+# Common stub for a few missing GNU programs while installing.
-+# Copyright (C) 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
-+# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996.
-+
-+# 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 2, 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.
-+
-+if test $# -eq 0; then
-+  echo 1>&2 "Try \`$0 --help' for more information"
-+  exit 1
-+fi
-+
-+# In the cases where this matters, `missing' is being run in the
-+# srcdir already.
-+if test -f configure.in; then
-+  configure_ac=configure.ac
-+else
-+  configure_ac=configure.in
-+fi
-+
-+case "$1" in
-+
-+  -h|--h|--he|--hel|--help)
-+    echo "\
-+$0 [OPTION]... PROGRAM [ARGUMENT]...
-+
-+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-+error status if there is no known handling for PROGRAM.
-+
-+Options:
-+  -h, --help      display this help and exit
-+  -v, --version   output version information and exit
-+
-+Supported PROGRAM values:
-+  aclocal      touch file \`aclocal.m4'
-+  autoconf     touch file \`configure'
-+  autoheader   touch file \`config.h.in'
-+  automake     touch all \`Makefile.in' files
-+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-+  flex         create \`lex.yy.c', if possible, from existing .c
-+  lex          create \`lex.yy.c', if possible, from existing .c
-+  makeinfo     touch the output file
-+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
-+    ;;
-+
-+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-+    echo "missing - GNU libit 0.0"
-+    ;;
-+
-+  -*)
-+    echo 1>&2 "$0: Unknown \`$1' option"
-+    echo 1>&2 "Try \`$0 --help' for more information"
-+    exit 1
-+    ;;
-+
-+  aclocal*)
-+    echo 1>&2 "\
-+WARNING: \`$1' is missing on your system.  You should only need it if
-+         you modified \`acinclude.m4' or \`$configure_ac'.  You might want
-+         to install the \`Automake' and \`Perl' packages.  Grab them from
-+         any GNU archive site."
-+    touch aclocal.m4
-+    ;;
-+
-+  autoconf)
-+    echo 1>&2 "\
-+WARNING: \`$1' is missing on your system.  You should only need it if
-+         you modified \`$configure_ac'.  You might want to install the
-+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-+         archive site."
-+    touch configure
-+    ;;
-+
-+  autoheader)
-+    echo 1>&2 "\
-+WARNING: \`$1' is missing on your system.  You should only need it if
-+         you modified \`acconfig.h' or \`$configure_ac'.  You might want
-+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-+         from any GNU archive site."
-+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' $configure_ac`
-+    test -z "$files" && files="config.h"
-+    touch_files=
-+    for f in $files; do
-+      case "$f" in
-+      *:*) touch_files="$touch_files "`echo "$f" |
-+                                     sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-+      *) touch_files="$touch_files $f.in";;
-+      esac
-+    done
-+    touch $touch_files
-+    ;;
-+
-+  automake*)
-+    echo 1>&2 "\
-+WARNING: \`$1' is missing on your system.  You should only need it if
-+         you modified \`Makefile.am', \`acinclude.m4' or \`$configure_ac'.
-+         You might want to install the \`Automake' and \`Perl' packages.
-+         Grab them from any GNU archive site."
-+    find . -type f -name Makefile.am -print |
-+         sed 's/\.am$/.in/' |
-+         while read f; do touch "$f"; done
-+    ;;
-+
-+  bison|yacc)
-+    echo 1>&2 "\
-+WARNING: \`$1' is missing on your system.  You should only need it if
-+         you modified a \`.y' file.  You may need the \`Bison' package
-+         in order for those modifications to take effect.  You can get
-+         \`Bison' from any GNU archive site."
-+    rm -f y.tab.c y.tab.h
-+    if [ $# -ne 1 ]; then
-+        eval LASTARG="\${$#}"
-+      case "$LASTARG" in
-+      *.y)
-+          SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-+          if [ -f "$SRCFILE" ]; then
-+               cp "$SRCFILE" y.tab.c
-+          fi
-+          SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-+          if [ -f "$SRCFILE" ]; then
-+               cp "$SRCFILE" y.tab.h
-+          fi
-+        ;;
-+      esac
-+    fi
-+    if [ ! -f y.tab.h ]; then
-+      echo >y.tab.h
-+    fi
-+    if [ ! -f y.tab.c ]; then
-+      echo 'main() { return 0; }' >y.tab.c
-+    fi
-+    ;;
-+
-+  lex|flex)
-+    echo 1>&2 "\
-+WARNING: \`$1' is missing on your system.  You should only need it if
-+         you modified a \`.l' file.  You may need the \`Flex' package
-+         in order for those modifications to take effect.  You can get
-+         \`Flex' from any GNU archive site."
-+    rm -f lex.yy.c
-+    if [ $# -ne 1 ]; then
-+        eval LASTARG="\${$#}"
-+      case "$LASTARG" in
-+      *.l)
-+          SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-+          if [ -f "$SRCFILE" ]; then
-+               cp "$SRCFILE" lex.yy.c
-+          fi
-+        ;;
-+      esac
-+    fi
-+    if [ ! -f lex.yy.c ]; then
-+      echo 'main() { return 0; }' >lex.yy.c
-+    fi
-+    ;;
-+
-+  makeinfo)
-+    echo 1>&2 "\
-+WARNING: \`$1' is missing on your system.  You should only need it if
-+         you modified a \`.texi' or \`.texinfo' file, or any other file
-+         indirectly affecting the aspect of the manual.  The spurious
-+         call might also be the consequence of using a buggy \`make' (AIX,
-+         DU, IRIX).  You might want to install the \`Texinfo' package or
-+         the \`GNU make' package.  Grab either from any GNU archive site."
-+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-+    if test -z "$file"; then
-+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
-+    fi
-+    touch $file
-+    ;;
-+
-+  *)
-+    echo 1>&2 "\
-+WARNING: \`$1' is needed, and you do not seem to have it handy on your
-+         system.  You might have modified some files without having the
-+         proper tools for further handling them.  Check the \`README' file,
-+         it often tells you about the needed prerequirements for installing
-+         this package.  You may also peek at any GNU archive site, in case
-+         some other package would contain this missing \`$1' program."
-+    exit 1
-+    ;;
-+esac
-+
-+exit 0
---- ez-ipupdate-3.0.11b8.orig/mkinstalldirs
-+++ ez-ipupdate-3.0.11b8/mkinstalldirs
-@@ -4,7 +4,7 @@
- # Created: 1993-05-16
- # Public domain
--# $Id: mkinstalldirs,v 1.1.1.1 1999/04/19 00:34:59 amackay Exp $
-+# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $
- errstatus=0
-@@ -22,7 +22,7 @@
-      esac
-      if test ! -d "$pathcomp"; then
--        echo "mkdir $pathcomp" 1>&2
-+        echo "mkdir $pathcomp"
-         mkdir "$pathcomp" || lasterr=$?
---- ez-ipupdate-3.0.11b8.orig/ez-ipupdate.c
-+++ ez-ipupdate-3.0.11b8/ez-ipupdate.c
-@@ -139,6 +139,9 @@
- #if HAVE_SIGNAL_H
- #  include <signal.h>
- #endif
-+#if HAVE_TIME_H
-+#  include <time.h>
-+#endif
- #if HAVE_SYS_TIME_H
- #  include <sys/time.h>
- #endif
-@@ -165,7 +168,7 @@
- #endif
--#if __linux__ || __SVR4 || __OpenBSD__ || __FreeBSD__ || __NetBSD__
-+#if __GLIBC__ || __SVR4 || __OpenBSD__ || __FreeBSD__ || __NetBSD__
- #  define IF_LOOKUP 1
- #  include <sys/ioctl.h>
- #  include <net/if.h>
-@@ -640,7 +643,7 @@
-   fprintf(stdout, "  -q, --quiet \t\t\tbe quiet\n");
-   fprintf(stdout, "  -r, --retrys <num>\t\tnumber of trys (default: 1)\n");
-   fprintf(stdout, "  -R, --run-as-user <user>\tchange to <user> for running, be ware\n\t\t\t\tthat this can cause problems with handeling\n\t\t\t\tSIGHUP properly if that user can't read the\n\t\t\t\tconfig file. also it can't write it's pid file \n\t\t\t\tto a root directory\n");
--  fprintf(stdout, "  -Q, --run-as-euser <user>\tchange to effective <user> for running, \n\t\t\t\tthis is NOT secure but it does solve the \n\t\t\t\tproblems with run-as-user and config files and \n\t\t\t\tpid files.\n");
-+  fprintf(stdout, "  -Q, --run-as-euser <user>\tchange to effective <user> for running, \n\t\t\t\tthis is NOT secure but it does solve the \n\t\t\t\tproblems with run-as-user and config files and \n\t\t\t\tpid files\n");
-   fprintf(stdout, "  -s, --server <server[:port]>\tthe server to connect to\n");
-   fprintf(stdout, "  -S, --service-type <server>\tthe type of service that you are using\n");
-   width = fprintf(stdout, "\t\t\t\ttry one of: ") + 4*7;
-@@ -682,7 +685,7 @@
- void print_signalhelp( void )
- {
--  fprintf(stdout, "\nsignals are only really used when in daemon mode.\n\n");
-+  fprintf(stdout, "\nsignals are only really used when in daemon mode\n\n");
-   fprintf(stdout, "signals: \n");
-   fprintf(stdout, "  HUP\t\tcauses it to re-read its config file\n");
-   fprintf(stdout, "  TERM\t\twake up and possibly perform an update\n");
-@@ -693,7 +696,7 @@
- #if HAVE_SIGNAL_H
- RETSIGTYPE sigint_handler(int sig)
- {
--  char message[] = "interupted.\n";
-+  char message[] = "interrupted\n";
-   close(client_sockfd);
-   write(2, message, sizeof(message)-1);
-@@ -704,6 +707,10 @@
-   }
- #endif
-+#if HAVE_SYSLOG_H
-+  closelog();
-+#endif
-+
-   exit(1);
- }
- RETSIGTYPE generic_sig_handler(int sig)
-@@ -798,7 +805,7 @@
-     sprintf(buf, "message incomplete because your OS sucks: %s\n", fmt);
- #endif
--    syslog(LOG_NOTICE, buf);
-+    syslog(LOG_NOTICE, "%s", buf);
-   }
-   else
-   {
-@@ -1439,7 +1446,7 @@
-   if(!(options & OPT_QUIET))
-   {
-     fprintf(stderr,
--        "connected to %s (%s) on port %d.\n",
-+        "connected to %s (%s) on port %d\n",
-         host,
-         inet_ntoa(address.sin_addr),
-         ntohs(address.sin_port));
-@@ -1683,7 +1690,7 @@
-       close(client_sockfd);
-       return(-1);
-     }
--    if(strstr(buf, "\r\n") > 0)
-+    if(strstr(buf, "\n") != NULL)
-     {
-       break;
-     }
-@@ -1702,8 +1709,8 @@
-   if(options & OPT_DAEMON)
-   {
--    fprintf(stderr, "no compile time default service was set therefor you must "
--        "specify a service type.\n");
-+    fprintf(stderr, "no compile time default service was set, you must "
-+        "specify a service type\n");
-     return(-1);
-   }
-@@ -2039,7 +2046,7 @@
-         }
-         else if(strstr(buf, "\nnumhost") != NULL)
-         {
--          show_message("Too many or too few hosts found\n");
-+          show_message("too many or too few hosts found\n");
-           retval = UPDATERES_SHUTDOWN;
-         }
-         else if(strstr(buf, "\ndnserr") != NULL)
-@@ -2051,17 +2058,17 @@
-         }
-         else if(strstr(buf, "\n911") != NULL)
-         {
--          show_message("Ahhhh! call 911!\n");
-+          show_message("ahhhh! call 911!\n");
-           retval = UPDATERES_SHUTDOWN;
-         }
-         else if(strstr(buf, "\n999") != NULL)
-         {
--          show_message("Ahhhh! call 999!\n");
-+          show_message("ahhhh! call 999!\n");
-           retval = UPDATERES_SHUTDOWN;
-         }
-         else if(strstr(buf, "\n!donator") != NULL)
-         {
--          show_message("a feature requested is only available to donators, please donate.\n", host);
-+          show_message("a feature requested is only available to donators, please donate\n", host);
-           retval = UPDATERES_OK;
-         }
-         // this one should be last as it is a stupid string to signify waits
-@@ -2095,9 +2102,9 @@
-             sprintf(reason, "problem parsing reason for wait response");
-           }
--          show_message("Wait response received, waiting for %s before next update.\n",
-+          show_message("wait response received, waiting for %s before next update\n",
-               format_time(howlong));
--          show_message("Wait response reason: %d\n", N_STR(reason));
-+          show_message("wait response reason: %d\n", N_STR(reason));
-           sleep(howlong);
-           retval = UPDATERES_ERROR;
-         }
-@@ -3370,7 +3377,7 @@
-   {
-     if(!(options & OPT_QUIET))
-     {
--      fprintf(stderr, "warning: for GNUDIP the \"address\" parpameter is only used if set to \"0.0.0.0\" thus making an offline request.\n");
-+      fprintf(stderr, "warning: for GNUDIP the \"address\" parameter is only used if set to \"0.0.0.0\" thus making an offline request\n");
-     }
-   }
-@@ -3392,7 +3399,7 @@
-   // send an offline request if address 0.0.0.0 is used
-   // otherwise, we ignore the address and send an update request
--  gnudip_request[0] = strcmp(address, "0.0.0.0") == 0 ? '1' : '0';
-+  gnudip_request[0] = address && strcmp(address, "0.0.0.0") == 0 ? '1' : '0';
-   gnudip_request[1] = '\0';
-   // find domainname
-@@ -3943,22 +3950,22 @@
-           break;
-         case 201:
--          show_message("Last update was less than %d seconds ago.\n", 300);
-+          show_message("last update was less than %d seconds ago\n", 300);
-           return(UPDATERES_ERROR);
-           break;
-         case 202:
--          show_message("Server error.\n");
-+          show_message("server error\n");
-           return(UPDATERES_ERROR);
-           break;
-         case 203:
--          show_message("Failure because account is frozen (by admin).\n");
-+          show_message("failure because account is frozen (by admin)\n");
-           return(UPDATERES_SHUTDOWN);
-           break;
-         case 204:
--          show_message("Failure because account is locked (by user).\n");
-+          show_message("failure because account is locked (by user)\n");
-           return(UPDATERES_SHUTDOWN);
-           break;
-@@ -4215,8 +4222,6 @@
-   switch(ret)
-   {
--    char *p;
--
-     case -1:
-       if(!(options & OPT_QUIET))
-       {
-@@ -4349,7 +4354,7 @@
-     case SIGHUP:
-       if(config_file)
-       {
--        show_message("SIGHUP recieved, re-reading config file\n");
-+        show_message("SIGHUP received, re-reading config file\n");
-         if(parse_conf_file(config_file, conf_commands) != 0)
-         {
-           show_message("error parsing config file \"%s\"\n", config_file);
-@@ -4384,6 +4389,7 @@
- int main(int argc, char **argv)
- {
-+  char *tmp;
-   int ifresolve_warned = 0;
-   int i;
-   int retval = 1;
-@@ -4395,9 +4401,10 @@
-   mcheck(NULL);
- #endif
--  dprintf((stderr, "staring...\n"));
-+  dprintf((stderr, "starting...\n"));
--  program_name = argv[0];
-+  tmp = strrchr(argv[0], '/');
-+  program_name = tmp ? tmp + 1 : argv[0];
-   options = 0;
-   *user = '\0';
-   timeout.tv_sec = DEFAULT_TIMEOUT;
-@@ -4417,7 +4424,7 @@
-   if(!(options & OPT_QUIET) && !(options & OPT_DAEMON))
-   {
--    fprintf(stderr, "ez-ipupdate Version %s\nCopyright (C) 1998-2001 Angus Mackay.\n", VERSION);
-+    fprintf(stderr, "%s Version %s\nCopyright (C) 1998-2001 Angus Mackay\n", program_name, VERSION);
-   }
-   dprintf((stderr, "options: 0x%04X\n", options));
-@@ -4434,7 +4441,7 @@
-   {
-     if(service->check_info() != 0)
-     {
--      fprintf(stderr, "invalid data to perform requested action.\n");
-+      fprintf(stderr, "invalid data to perform requested action\n");
-       exit(1);
-     }
-   }
-@@ -4456,13 +4463,13 @@
-     dprintf((stderr, "user_name: %s\n", user_name));
-     dprintf((stderr, "password: %s\n", password));
-   }
--  if(*user_name == '\0')
-+  if(*user_name == '\0' && !(options & OPT_DAEMON))
-   {
-     printf("user name: ");
-     fgets(user_name, sizeof(user_name), stdin);
-     chomp(user_name);
-   }
--  if(*password == '\0')
-+  if(*password == '\0' && !(options & OPT_DAEMON))
-   {
-     strncpy(password, getpass("password: "), sizeof(password));
-   }
-@@ -4480,7 +4487,7 @@
-   if(service->check_info() != 0)
-   {
--    fprintf(stderr, "invalid data to perform requested action.\n");
-+    fprintf(stderr, "invalid data to perform requested action\n");
-     exit(1);
-   }
-@@ -4503,7 +4510,7 @@
-     if(interface == NULL) 
-     { 
--      fprintf(stderr, "invalid data to perform requested action.\n");
-+      fprintf(stderr, "invalid data to perform requested action\n");
-       fprintf(stderr, "you must provide an interface for daemon mode");
-       exit(1);
-     }
-@@ -4519,23 +4526,25 @@
-       if(fork() > 0) { exit(0); } /* parent */
-     }
-+#  if HAVE_SYSLOG_H
-+    openlog(program_name, LOG_PID, LOG_DAEMON );
-+    //options |= OPT_QUIET;
-+#  endif
-+    show_message("version %s, interface %s, host %s, server %s, service %s\n",
-+        VERSION, N_STR(interface), N_STR(host), server, service->title);
-+
- #if HAVE_GETPID
-     if(pid_file && pid_file_create(pid_file) != 0)
-     {
--      fprintf(stderr, "exiting...\n");
-+      show_message("could not create pid file %s (%s), exiting\n",
-+                   pid_file, strerror(errno));
-+#if HAVE_SYSLOG_H
-+      closelog();
-+#endif
-       exit(1);
-     }
- #endif
--#  if HAVE_SYSLOG_H
--    openlog(program_name, LOG_PID, LOG_USER );
--    options |= OPT_QUIET;
--#  endif
--    show_message("ez-ipupdate Version %s, Copyright (C) 1998-2001 Angus Mackay.\n", 
--        VERSION);
--    show_message("%s started for interface %s host %s using server %s and service %s\n",
--        program_name, N_STR(interface), N_STR(host), server, service->title);
--
-     memset(&sin, 0, sizeof(sin));
-     if(cache_file)
-@@ -4560,7 +4569,7 @@
-           strftime(timebuf, sizeof(timebuf), "%Y/%m/%d %H:%M", ts);
-           show_message("got last update %s on %s from cache file\n", ipstr, timebuf);
-         }
--        else
-+        else if(ipstr||ipdate)
-         {
-           show_message("malformed cache file: %s\n", cache_file);
-         }
-@@ -4647,7 +4656,7 @@
-           }
-           else
-           {
--            show_message("failure to update %s->%s (%s)\n",
-+            show_message("failed to update %s->%s (%s)\n",
-                 interface, inet_ntoa(sin.sin_addr), N_STR(host));
-             memset(&sin, 0, sizeof(sin));
-@@ -4671,7 +4680,7 @@
-             dprintf((stderr, "updateres: %d\n", updateres));
-             if(updateres == UPDATERES_SHUTDOWN)
-             {
--              show_message("shuting down updater for %s due to fatal error\n", 
-+              show_message("shutting down updater for %s due to fatal error\n",
-                   N_STR(host));
-               if(notify_email && *notify_email != '\0')
-@@ -4711,7 +4720,7 @@
- #endif
- #else
--    fprintf(stderr, "sorry, this mode is only available on platforms that the ");
-+    fprintf(stderr, "sorry, this mode is only available on platforms where the ");
-     fprintf(stderr, "IP address \ncan be determined. feel free to hack the code");
-     fprintf(stderr, " though.\n");
-     exit(1);
-@@ -4799,7 +4808,7 @@
-         }
-         else
-         {
--          show_message("could not resolve ip address for %s.\n", interface);
-+          show_message("could not resolve ip address for %s\n", interface);
-           exit(1);
-         }
-         close(sock);
-@@ -4840,7 +4849,7 @@
-       {
-         char ipbuf[64];
--        if(address == NULL || *address == '\0')
-+        if((address == NULL || *address == '\0') && interface != NULL)
-         {
- #ifdef IF_LOOKUP
-           struct sockaddr_in sin;
---- ez-ipupdate-3.0.11b8.orig/example.conf
-+++ ez-ipupdate-3.0.11b8/example.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
---- ez-ipupdate-3.0.11b8.orig/example-pgpow.conf
-+++ ez-ipupdate-3.0.11b8/example-pgpow.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.penguinpowered.com
- interface=eth1
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-dhs.conf
-+++ ez-ipupdate-3.0.11b8/example-dhs.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.whatever.com
- interface=eth1
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-dyndns.conf
-+++ ez-ipupdate-3.0.11b8/example-dyndns.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -12,14 +12,9 @@
- interface=eth1
- max-interval=2073600
--# please create this file and ensure that the user that ez-ipupdate is running
--# as has write permissions to it then uncomment this line, if you don't your
--# dyndns account will probably get banned. if you run ez-ipupdate as root (bad
--# idea, use "run-as-user") then you can just uncomment this line.
--#cache-file=/etc/ez-ipupdate.cache.eth1
--
--# for the mean time we'll just use a cache file in the temp directory
--cache-file=/tmp/ez-ipupdate.cache
-+# if you don't use a cache file your dyndns account will probably get banned.
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-ods.conf
-+++ ez-ipupdate-3.0.11b8/example-ods.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.ods.org
- interface=eth1
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-tzo.conf
-+++ ez-ipupdate-3.0.11b8/example-tzo.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -14,8 +14,8 @@
- max-interval=2073600
- interface=eth1
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-gnudip.conf
-+++ ez-ipupdate-3.0.11b8/example-gnudip.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -14,8 +14,8 @@
- # any other value is ignored
- #address=0.0.0.0
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-easydns.conf
-+++ ez-ipupdate-3.0.11b8/example-easydns.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.whatever.com
- interface=eth1
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-justlinux.conf
-+++ ez-ipupdate-3.0.11b8/example-justlinux.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=mydomain.penguinpowered.com
- interface=eth1
--# if you use run-as ensure the user has permission to write this file
--cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/example-dyns.conf
-+++ ez-ipupdate-3.0.11b8/example-dyns.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -10,8 +10,8 @@
- host=myhost
- #interface=eth1
--# if you use run-as ensure the user has permission to write this file
--#cache-file=/tmp/ez-ipupdate.cache
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/CHANGELOG
-+++ ez-ipupdate-3.0.11b8/CHANGELOG
-@@ -1,3 +1,86 @@
-+Changelog for ez-ipupdate:
-+
-+version 3.0.11b7 is a bug fix for the new ODS server update (it was
-+ez-ipupdate's bug).
-+
-+version 3.0.11b6 has a small fix for dyns.cx changing their protocol by
-+accident (lower case Host now).
-+
-+version 3.0.7 -> 3.0.11x I can't remember, check the changelog.
-+
-+version 3.0.7 gives us a default max-interval for dyndns and allows specifying
-+intervals in days/weeks/months as well as support for another service
-+zoneedit.
-+
-+version 3.0.3 brings a fix for hn.org that was causing it to ignore the
-+supplied IP address and always use the one that you were connecting from.
-+
-+version 3.0.1 brings supoprt for hn.org and the option of using a pid file.
-+
-+version 3.0.0 brings new symantics, now you MUST specify an interface and
-+service-type for daemon mode. it also brings many fixes, it seems that there
-+have been some serious bugs introduced some time after version 2.9.1 and this
-+should fix those and bring some new features like self throttling. All users
-+are strongly encoraged to upgrade to version 3.x.x.
-+
-+version 2.9.3 brings long awaited support for a cache file. this was needed in
-+a big way for use with the dyndns.org service.
-+
-+version 2.9.2 brings support for justlinux.com's new version 2.0 service, now
-+"justlinux" is for the justlinux v2.0 service and "pgpow" is for the justlinux
-+v1.0 service. now that penguinpowered has switched to their v2.0 update method
-+I don't know which one I like the best, probably dyndns.org.
-+
-+version 2.9.0 adds support for EasyDNS. Their service is nice, very good web .
-+site design, it is commercial though thanks to Mark Jeftovic for the code to .
-+support EasyDNS                                                              .
-+
-+version 2.8.0 adds support for GNUDip and TZO as well as a new feature to run.
-+a command after every successful update. There are probably some bug fixes in.
-+there too thanks to Jeremy Bopp for the code to support GNUDip and TZO       .
-+
-+version 2.6.0 adds support for ODS and a couple minor fixups.
-+
-+version 2.4.2 adds support for dyndns and some other cleanups. the service
-+that dyndns offers looks good, I still think I like justlinux better though.
-+
-+version 2.2.2 gives us support for updating the MX record for dhs.org. I
-+have to say that the implementation of dhs.org's service is laughable. I
-+strongly advise people not to use it, it is just that bad. If you are updating
-+a dhs.org acount with an MX record then there is 60 second sleep() call (or
-+the length of the timeout, whichever is shorter) to get around problems with
-+dhs' service.
-+
-+version 2.2.1 brings support for our friends at dhs.org and fixes a socket
-+leak in the dhs code and the penguinpowered code. I have to say though that I
-+am not impressed with the dhs.org service, penguinpowered.com gets my vote for
-+best implementation. (although they wont even acknowledge my client or put a
-+link to it on thier site)
-+
-+If you are getting errors connecting to the server for a justlinux.com service
-+please ensure that you either specify "-S pgpow" or "--service penguinpowered"
-+on either the command line or in the config file(in the config file the syntax
-+is "service=penguinpowered"). The default for this tool is to think it is
-+connecting to an ez-ip.net service.
-+
-+Version 2.0.0 brings support for other services than just ez-ip.net and
-+contains some bug fixes.
-+
-+Version 1.0.1 brings some new features such the useage of config files,
-+timeouts on I/O, set user id and many more.
-+
-+Version 0.9.0 fixes a problem with a leaky file descriptor and some other
-+litte things wrong. It also moves the version number up quite a bit as I have
-+been running it in daemon mode for over 60 days without any problems.
-+
-+Version 0.0.3 fixes a bug in the user/password code and a bunch of issues with
-+the packaging (I copied another project to start this one and forgot to update
-+some stuff). I Also added the system type to the User-Agent string.
-+
-+Version 0.0.2 adds some nice features for those of use who use Linux. It
-+now can run in daemon mode periodicly check the IP address of the specified
-+interface and only update it if it has changed. It also adds the feature to
-+turn your password in to '***' for the proccess listing.
- RCS file: /home/amackay/src/cvsroot/ez-ipupdate/ez-ipupdate.c,v
- Working file: ez-ipupdate.c
---- ez-ipupdate-3.0.11b8.orig/example-heipv6tb.conf
-+++ ez-ipupdate-3.0.11b8/example-heipv6tb.conf
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ez-ipupdate -c
-+#!/usr/sbin/ez-ipupdate -c
- #
- # example config file for ez-ipupdate
- #
-@@ -11,14 +11,9 @@
- interface=eth1
- max-interval=2073600
--# please create this file and ensure that the user that ez-ipupdate is running
--# as has write permissions to it then uncomment this line, if you don't your
--# dyndns account will probably get banned. if you run ez-ipupdate as root (bad
--# idea, use "run-as-user") then you can just uncomment this line.
--#cache-file=/etc/ez-ipupdate.cache.eth1
--
--# for the mean time we'll just use a cache file in the temp directory
--cache-file=/tmp/ez-ipupdate.cache
-+# if you don't use a cache file your account will probably get banned.
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
- # uncomment this once you have everything working how you want and you are
- # ready to have ez-ipupdate running in the background all the time. to stop it
---- ez-ipupdate-3.0.11b8.orig/debian/control
-+++ ez-ipupdate-3.0.11b8/debian/control
-@@ -0,0 +1,25 @@
-+Source: ez-ipupdate
-+Section: net
-+Priority: optional
-+Maintainer: Sam Hocevar (Debian packages) <sam+deb@zoy.org>
-+Build-Depends: debhelper (>= 4.1.68)
-+Standards-Version: 3.6.2.1
-+
-+Package: ez-ipupdate
-+Section: net
-+Architecture: any
-+Depends: ${shlibs:Depends}, ${misc:Depends}, adduser, debconf (>= 1.2.0)
-+Provides: dyndns-client
-+Description: client for most dynamic DNS services
-+ ez-ipupdate is a quite complete client for the dynamic DNS service offered
-+ by http://www.ez-ip.net/ and many more.
-+ .
-+ Currently supported are: ez-ip (http://www.EZ-IP.Net/), Penguinpowered
-+ (http://www.penguinpowered.com/), DHS (http://members.dhs.org/),
-+ dynDNS (http://members.dyndns.org/), ODS (http://www.ods.org/),
-+ TZO (http://www.tzo.com/), EasyDNS (http://members.easydns.com/),
-+ Justlinux (http://www.justlinux.com), Dyns (http://www.dyns.cx),
-+ HN (http://dup.hn.org/), ZoneEdit (http://www.zoneedit.com/) and
-+ Hurricane Electric's IPv6 Tunnel Broker (http://ipv6tb.he.net/).
-+ .
-+ All services using GNUDip are also supported.
---- ez-ipupdate-3.0.11b8.orig/debian/po/POTFILES.in
-+++ ez-ipupdate-3.0.11b8/debian/po/POTFILES.in
-@@ -0,0 +1 @@
-+[type: gettext/rfc822deb] templates
---- ez-ipupdate-3.0.11b8.orig/debian/po/templates.pot
-+++ ez-ipupdate-3.0.11b8/debian/po/templates.pot
-@@ -0,0 +1,252 @@
-+# SOME DESCRIPTIVE TITLE.
-+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-+# This file is distributed under the same license as the PACKAGE package.
-+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-+#
-+#, fuzzy
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: PACKAGE VERSION\n"
-+"Report-Msgid-Bugs-To: sam+deb@zoy.org\n"
-+"POT-Creation-Date: 2005-11-14 20:17+0100\n"
-+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-+"Language-Team: LANGUAGE <LL@li.org>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=CHARSET\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "configure manually"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "zoneedit"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ez-ip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "pgpow"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dhs"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-static"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-custom"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ods"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "tzo"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns-partner"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "gnudip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "justlinux"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "hn"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "heipv6tb"
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid "Dynamic DNS provider to use:"
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid ""
-+"There are many Dynamic DNS providers supported by ez-ipupdate. If you want "
-+"your default configuration to be created automatically, you must select the "
-+"provider that you wish to use here. You must configure an account on your "
-+"chosen provider's service yourself."
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid ""
-+"If you prefer your default ez-ipupdate configuration not to be managed for "
-+"you, you may choose \"configure manually\"."
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid ""
-+"Whatever your decision, you can later put as many additional configuration "
-+"files in /etc/ez-ipupdate/ as you need."
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid "Does this system use dialup PPP to connect to the internet?"
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid ""
-+"If you use dialup PPP to connect to the internet, then ez-ipupdate can be "
-+"run to notify providers of your new address when ppp connects to the "
-+"network. Otherwise it will run in the background, and scan for changes to "
-+"your address while you are online."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid "Address for your Dynamic DNS server:"
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid ""
-+"The service type you selected requires a server address to connect to. You "
-+"may specify either a full hostname or an IP address."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:33
-+msgid "Username for your Dynamic DNS account:"
-+msgstr ""
-+
-+#. Type: password
-+#. Description
-+#: ../templates:37
-+msgid "Password for your Dynamic DNS account:"
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid "Network interface to monitor:"
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid ""
-+"ez-ipupdate will monitor the chosen network interface for changes of IP "
-+"address. It is not possible to automatically detect which interface should "
-+"be monitored, so you must name the interface here."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:49
-+msgid "Dynamic DNS hostname to keep updated:"
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+msgid "Enable DNS wildcards for your Dynamic DNS hostname?"
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting \"wildcard\" DNS "
-+"lookups. This means that for yourdomain, a lookup for anything.yourdomain "
-+"will return an answer that points to yourdomain."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid "MX record to add:"
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting MX records. If you want "
-+"an MX record enabled for your domain, specify the content of that MX record "
-+"here. If you do not want an MX record, leave it blank."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"For further information on MX records, what they do, and how they are used, "
-+"see your Dynamic DNS provider."
-+msgstr ""
---- ez-ipupdate-3.0.11b8.orig/debian/po/cs.po
-+++ ez-ipupdate-3.0.11b8/debian/po/cs.po
-@@ -0,0 +1,315 @@
-+#
-+#    Translators, if you are not familiar with the PO format, gettext
-+#    documentation is worth reading, especially sections dedicated to
-+#    this format, e.g. by running:
-+#         info -n '(gettext)PO Files'
-+#         info -n '(gettext)Header Entry'
-+#
-+#    Some information specific to po-debconf are available at
-+#            /usr/share/doc/po-debconf/README-trans
-+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
-+#
-+#    Developers do not need to manually edit POT or PO files.
-+#
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: ez-ipupdate\n"
-+"Report-Msgid-Bugs-To: sam+deb@zoy.org\n"
-+"POT-Creation-Date: 2005-11-14 20:17+0100\n"
-+"PO-Revision-Date: 2005-03-17 08:23+0100\n"
-+"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
-+"Language-Team: Czech <debian-l10n-czech@debian.org>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=ISO-8859-2\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "configure manually"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "zoneedit"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ez-ip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "pgpow"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dhs"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-static"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-custom"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ods"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "tzo"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns-partner"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "gnudip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "justlinux"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "hn"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "heipv6tb"
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid "Dynamic DNS provider to use:"
-+msgstr "Poskytovatel dynamického DNS:"
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"There are many Dynamic DNS providers supported by ez-ipupdate. If you want "
-+"your default configuration to be created automatically, you must select the "
-+"provider that you wish to use here. You must configure an account on your "
-+"chosen provider's service yourself."
-+msgstr ""
-+"ez-ipupdate podporuje mnoho poskytovatelù dynamického DNS. Vyberte zde, "
-+"kterého poskytovatele pou¾íváte. Konkrétní úèet u daného poskytovatele si "
-+"v¹ak musíte nastavit sami."
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid ""
-+"If you prefer your default ez-ipupdate configuration not to be managed for "
-+"you, you may choose \"configure manually\"."
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"Whatever your decision, you can later put as many additional configuration "
-+"files in /etc/ez-ipupdate/ as you need."
-+msgstr ""
-+"Poznamenejme, ¾e do adresáøe /etc/ez-ipupdate/ mù¾ete pøidat libovolný poèet "
-+"dal¹ích konfigurací. Tyto dodateèné konfigurace nebude ez-ipupdate nijak "
-+"mìnit."
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid "Does this system use dialup PPP to connect to the internet?"
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid ""
-+"If you use dialup PPP to connect to the internet, then ez-ipupdate can be "
-+"run to notify providers of your new address when ppp connects to the "
-+"network. Otherwise it will run in the background, and scan for changes to "
-+"your address while you are online."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid "Address for your Dynamic DNS server:"
-+msgstr "Adresa serveru dynamického DNS:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid ""
-+"The service type you selected requires a server address to connect to. You "
-+"may specify either a full hostname or an IP address."
-+msgstr ""
-+"Slu¾ba, kterou jste vybrali, vy¾aduje adresu serveru, ke kterému se má "
-+"pøipojit. Mù¾ete zadat buï celé jméno serveru nebo jeho IP adresu."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:33
-+msgid "Username for your Dynamic DNS account:"
-+msgstr "U¾ivatelské jméno pro úèet dynamického DNS:"
-+
-+#. Type: password
-+#. Description
-+#: ../templates:37
-+msgid "Password for your Dynamic DNS account:"
-+msgstr "Heslo pro úèet dynamického DNS:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid "Network interface to monitor:"
-+msgstr "Sledovat sí»ové rozhraní:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid ""
-+"ez-ipupdate will monitor the chosen network interface for changes of IP "
-+"address. It is not possible to automatically detect which interface should "
-+"be monitored, so you must name the interface here."
-+msgstr ""
-+"ez-ipupdate bude na daném sí»ovém rozhraní sledovat zmìny IP adresy. Program "
-+"neumí odhadnout, které rozhraní má sledovat a proto zde musíte uvést pøesný "
-+"název rozhraní."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:49
-+msgid "Dynamic DNS hostname to keep updated:"
-+msgstr "Dynamické DNS jméno poèítaèe, je¾ se má udr¾ovat aktuální:"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+msgid "Enable DNS wildcards for your Dynamic DNS hostname?"
-+msgstr "Povolit zástupné znaky DNS pro dynamické DNS jméno poèítaèe?"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+#, fuzzy
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting \"wildcard\" DNS "
-+"lookups. This means that for yourdomain, a lookup for anything.yourdomain "
-+"will return an answer that points to yourdomain."
-+msgstr ""
-+"Mnoho poskytovatelù dynamického DNS podporuje DNS dotazy se zástupnými "
-+"znaky. To znamená, ¾e pro vasedomena vrátí dotaz na cokoliv.vasedomena "
-+"odpovìï ukazující na vasedomena. Chcete-li tuto mo¾nost povolit, odpovìzte "
-+"zde kladnì."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid "MX record to add:"
-+msgstr "MX záznam:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting MX records. If you want "
-+"an MX record enabled for your domain, specify the content of that MX record "
-+"here. If you do not want an MX record, leave it blank."
-+msgstr ""
-+"Mnoho poskytovatelù dynamického DNS podporuje MX záznamy. Chcete-li pro svou "
-+"doménu povolit MX záznam, zadejte zde jeho obsah. V opaèném pøípadì ponechte "
-+"pole prázdné."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"For further information on MX records, what they do, and how they are used, "
-+"see your Dynamic DNS provider."
-+msgstr ""
-+"Dal¹í informace o MX záznamech (co dìlají, jak se pou¾ívají) naleznete u "
-+"svého poskytovatele dynamického DNS."
-+
-+#~ msgid "Manage your default configuration with debconf?"
-+#~ msgstr "Spravovat nastavení pomocí debconfu?"
-+
-+#~ msgid ""
-+#~ "ez-ipupdate can manage your default configuration automatically using "
-+#~ "debconf. If you do not want your default configuration managed "
-+#~ "automatically, decline this option."
-+#~ msgstr ""
-+#~ "Buï mù¾ete spravovat výchozí konfiguraci ez-ipupdate automaticky pomocí "
-+#~ "debconfu, nebo ruènì úpravou konfiguraèního souboru."
-+
-+#~ msgid "Run as a daemon?"
-+#~ msgstr "Spou¹tìt jako daemon?"
-+
-+#~ msgid ""
-+#~ "By default ez-ipupdate will run as a daemon to manage the configuration. "
-+#~ "Refuse here if you do not want this. Instead, ez-ipupdate will install a "
-+#~ "script in /etc/ppp/ip-up.d that will run all non-daemon configurations "
-+#~ "when the ppp interface is brought up. See the /usr/share/doc/ez-ipupdate/"
-+#~ "README.Debian file for more information."
-+#~ msgstr ""
-+#~ "Implicitnì se ez-ipupdate spou¹tí jako daemon. Pokud tomu tak nechcete, "
-+#~ "zamítnìte zde a ez-ipupdate místo toho nainstaluje do adresáøe /etc/ppp/"
-+#~ "ip-up.d skript, který se bude spou¹tìt pøi ka¾dém nahození ppp rozhraní. "
-+#~ "Podrobnosti naleznete v /usr/share/doc/ez-ipupdate/README.Debian."
-+
-+#~ msgid ""
-+#~ "If none of these automated behaviors suit you, you should probably not "
-+#~ "manage your default configuration using debconf."
-+#~ msgstr ""
-+#~ "Pokud vám ¾ádné z automatických chování nevyhovuje, pravdìpodobnì "
-+#~ "nechcete, aby se výchozí konfigurace spravovala pomocí debconfu."
---- ez-ipupdate-3.0.11b8.orig/debian/po/fr.po
-+++ ez-ipupdate-3.0.11b8/debian/po/fr.po
-@@ -0,0 +1,318 @@
-+# translation of fr.po to French
-+#
-+#    Translators, if you are not familiar with the PO format, gettext
-+#    documentation is worth reading, especially sections dedicated to
-+#    this format, e.g. by running:
-+#         info -n '(gettext)PO Files'
-+#         info -n '(gettext)Header Entry'
-+#    Some information specific to po-debconf are available at
-+#            /usr/share/doc/po-debconf/README-trans
-+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans#
-+#    Developers do not need to manually edit POT or PO files.
-+#
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: ez-ipupdate\n"
-+"Report-Msgid-Bugs-To: sam+deb@zoy.org\n"
-+"POT-Creation-Date: 2005-11-14 20:17+0100\n"
-+"PO-Revision-Date: 2005-03-17 08:39+0100\n"
-+"Last-Translator: Christian perrier <bubulle@debian.org>\n"
-+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=ISO-8859-15\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+"X-Generator: KBabel 1.9.1\n"
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "configure manually"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "zoneedit"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ez-ip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "pgpow"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dhs"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-static"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-custom"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ods"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "tzo"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns-partner"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "gnudip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "justlinux"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "hn"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "heipv6tb"
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid "Dynamic DNS provider to use:"
-+msgstr "Fournisseur de service de nom dynamique à utiliser :"
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"There are many Dynamic DNS providers supported by ez-ipupdate. If you want "
-+"your default configuration to be created automatically, you must select the "
-+"provider that you wish to use here. You must configure an account on your "
-+"chosen provider's service yourself."
-+msgstr ""
-+"De nombreux fournisseurs de service de nom dynamique sont gérés par ez-"
-+"ipupdate. Veuillez choisir le vôtre. La configuration de votre compte chez "
-+"ce fournisseur doit être effectuée à part."
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid ""
-+"If you prefer your default ez-ipupdate configuration not to be managed for "
-+"you, you may choose \"configure manually\"."
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"Whatever your decision, you can later put as many additional configuration "
-+"files in /etc/ez-ipupdate/ as you need."
-+msgstr ""
-+"Veuillez noter que si vous ajoutez des configurations supplémentaires dans /"
-+"etc/ez-ipupdate/, elles ne seront ultérieurement pas modifiées."
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid "Does this system use dialup PPP to connect to the internet?"
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid ""
-+"If you use dialup PPP to connect to the internet, then ez-ipupdate can be "
-+"run to notify providers of your new address when ppp connects to the "
-+"network. Otherwise it will run in the background, and scan for changes to "
-+"your address while you are online."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid "Address for your Dynamic DNS server:"
-+msgstr "Adresse de votre serveur de nom dynamique :"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid ""
-+"The service type you selected requires a server address to connect to. You "
-+"may specify either a full hostname or an IP address."
-+msgstr ""
-+"Le type de service que vous avez choisi a besoin de l'adresse d'un serveur. "
-+"Vous pouvez indiquer un nom d'hôte complètement qualifié ou une adresse IP."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:33
-+msgid "Username for your Dynamic DNS account:"
-+msgstr "Identifiant de votre compte de service de nom dynamique :"
-+
-+#. Type: password
-+#. Description
-+#: ../templates:37
-+msgid "Password for your Dynamic DNS account:"
-+msgstr "Mot de passe de votre compte de service de nom dynamique :"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid "Network interface to monitor:"
-+msgstr "Interface réseau à surveiller :"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid ""
-+"ez-ipupdate will monitor the chosen network interface for changes of IP "
-+"address. It is not possible to automatically detect which interface should "
-+"be monitored, so you must name the interface here."
-+msgstr ""
-+"Ez-ipupdate surveille les changements d'adresse IP sur une interface réseau. "
-+"Cette interface ne peut pas être détectée automatiquement et vous devez donc "
-+"l'indiquer ici."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:49
-+msgid "Dynamic DNS hostname to keep updated:"
-+msgstr "Nom d'hôte dynamique à tenir à jour :"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+msgid "Enable DNS wildcards for your Dynamic DNS hostname?"
-+msgstr ""
-+"Faut-il activer les requêtes DNS génériques pour votre nom d'hôte dynamique ?"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+#, fuzzy
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting \"wildcard\" DNS "
-+"lookups. This means that for yourdomain, a lookup for anything.yourdomain "
-+"will return an answer that points to yourdomain."
-+msgstr ""
-+"De nombreux fournisseurs de services de nom dynamique gèrent les requêtes "
-+"DNS génériques (« wildcard DNS »). Cela signifie qu'une requête pour "
-+"« adresse.votre.domaine » sera résolue vers « votre.domaine »."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid "MX record to add:"
-+msgstr "Enregistrement MX à ajouter :"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting MX records. If you want "
-+"an MX record enabled for your domain, specify the content of that MX record "
-+"here. If you do not want an MX record, leave it blank."
-+msgstr ""
-+"De nombreux fournisseurs de services de nom dynamique gèrent les "
-+"enregistrements MX. Si vous souhaitez en activer un pour votre domaine, "
-+"veuillez en indiquer le contenu ici. Si vous laissez ce champ vide, aucun "
-+"enregistrement MX ne sera ajouté."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"For further information on MX records, what they do, and how they are used, "
-+"see your Dynamic DNS provider."
-+msgstr ""
-+"Pour plus d'informations sur les enregistrements MX et leur utilisation, "
-+"veuillez consulter votre fournisseur de service de nom dynamique."
-+
-+#~ msgid "Manage your default configuration with debconf?"
-+#~ msgstr "Voulez-vous gérer la configuration par défaut avec debconf ?"
-+
-+#~ msgid ""
-+#~ "ez-ipupdate can manage your default configuration automatically using "
-+#~ "debconf. If you do not want your default configuration managed "
-+#~ "automatically, decline this option."
-+#~ msgstr ""
-+#~ "Ez-ipupdate peut gérer votre configuration par défaut automatiquement "
-+#~ "avec l'outil de configuration debconf. Vous pouvez choisir de ne pas "
-+#~ "utiliser cette option."
-+
-+#~ msgid "Run as a daemon?"
-+#~ msgstr "Faut-il utiliser ez-ipudate comme un démon ?"
-+
-+#~ msgid ""
-+#~ "By default ez-ipupdate will run as a daemon to manage the configuration. "
-+#~ "Refuse here if you do not want this. Instead, ez-ipupdate will install a "
-+#~ "script in /etc/ppp/ip-up.d that will run all non-daemon configurations "
-+#~ "when the ppp interface is brought up. See the /usr/share/doc/ez-ipupdate/"
-+#~ "README.Debian file for more information."
-+#~ msgstr ""
-+#~ "Par défaut, ez-ipupdate fonctionne comme un démon pour gérer la "
-+#~ "configuration. Vous pouvez choisir de ne pas utiliser cette option. Dans "
-+#~ "ce cas, ez-ipupdate installera un script dans /etc/ppp/ip-up.d qui "
-+#~ "exécutera toutes les configurations qui ne sont pas gérées par un démon, "
-+#~ "lorsque l'interface PPP sera activée. Veuillez consulter le fichier /usr/"
-+#~ "share/doc/ez-ipupdate/README.Debian pour plus d'informations."
-+
-+#~ msgid ""
-+#~ "If none of these automated behaviors suit you, you should probably not "
-+#~ "manage your default configuration using debconf."
-+#~ msgstr ""
-+#~ "Si aucun de ces fonctionnements automatisés ne vous convient, vous "
-+#~ "devriez éviter de gérer la configuration par défaut avec debconf."
---- ez-ipupdate-3.0.11b8.orig/debian/po/de.po
-+++ ez-ipupdate-3.0.11b8/debian/po/de.po
-@@ -0,0 +1,324 @@
-+# translation of de-new.po to German
-+# translation of de.po to German
-+#
-+#    Translators, if you are not familiar with the PO format, gettext
-+#    documentation is worth reading, especially sections dedicated to
-+#    this format, e.g. by running:
-+#         info -n '(gettext)PO Files'
-+#         info -n '(gettext)Header Entry'
-+#    Some information specific to po-debconf are available at
-+#            /usr/share/doc/po-debconf/README-trans
-+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans#
-+#    Developers do not need to manually edit POT or PO files.
-+# Jens Nachtigall <nachtigall@web.de>, 2005.
-+#
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: de-new\n"
-+"Report-Msgid-Bugs-To: sam+deb@zoy.org\n"
-+"POT-Creation-Date: 2005-11-14 20:17+0100\n"
-+"PO-Revision-Date: 2005-03-21 21:43+0100\n"
-+"Last-Translator: Jens Nachtigall <nachtigall@web.de>\n"
-+"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=UTF-8\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+"X-Generator: KBabel 1.9.1\n"
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "configure manually"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "zoneedit"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ez-ip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "pgpow"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dhs"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-static"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-custom"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ods"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "tzo"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns-partner"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "gnudip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "justlinux"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "hn"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "heipv6tb"
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid "Dynamic DNS provider to use:"
-+msgstr "Zu benutzender Dynamischer DNS-Provider:"
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"There are many Dynamic DNS providers supported by ez-ipupdate. If you want "
-+"your default configuration to be created automatically, you must select the "
-+"provider that you wish to use here. You must configure an account on your "
-+"chosen provider's service yourself."
-+msgstr ""
-+"ez-ipupdate unterstützt viele Dynamische DNS-Provider. Wählen Sie hier den "
-+"Provider aus, den Sie benutzen möchten. Das Benutzerkonto müssen Sie beim "
-+"Provider Ihrer Wahl selbst einrichten."
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid ""
-+"If you prefer your default ez-ipupdate configuration not to be managed for "
-+"you, you may choose \"configure manually\"."
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"Whatever your decision, you can later put as many additional configuration "
-+"files in /etc/ez-ipupdate/ as you need."
-+msgstr ""
-+"Beachten Sie, dass Sie unter /etc/ez-ipupdate/ so viele zusätzliche "
-+"Konfigurationen haben können, wie Sie wollen. ez-ipupdate wird diese nicht "
-+"verändern."
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid "Does this system use dialup PPP to connect to the internet?"
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid ""
-+"If you use dialup PPP to connect to the internet, then ez-ipupdate can be "
-+"run to notify providers of your new address when ppp connects to the "
-+"network. Otherwise it will run in the background, and scan for changes to "
-+"your address while you are online."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid "Address for your Dynamic DNS server:"
-+msgstr "Adresse für Ihren Dynamischen DNS-Server:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid ""
-+"The service type you selected requires a server address to connect to. You "
-+"may specify either a full hostname or an IP address."
-+msgstr ""
-+"Für den ausgewählten Service wird eine Server-Adresse benötigt, zu der eine "
-+"Verbindung aufgebaut wird. Sie können entweder einen vollständigen Host-"
-+"Namen oder eine IP-Adresse angeben."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:33
-+msgid "Username for your Dynamic DNS account:"
-+msgstr "Benutzername für Ihr Dynamisches DNS-Konto:"
-+
-+#. Type: password
-+#. Description
-+#: ../templates:37
-+msgid "Password for your Dynamic DNS account:"
-+msgstr "Passwort für Ihr Dynamisches DNS-Konto:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid "Network interface to monitor:"
-+msgstr "Zu verwaltende Netzwerk-Schnittstelle:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid ""
-+"ez-ipupdate will monitor the chosen network interface for changes of IP "
-+"address. It is not possible to automatically detect which interface should "
-+"be monitored, so you must name the interface here."
-+msgstr ""
-+"ez-ipupdate wird die ausgewählte Netzwerk-Schnittstelle auf Veränderungen "
-+"der IP-Adresse beobachten. Es ist nicht möglich automatisch festzustellen, "
-+"welche Schnittstelle beobachtet werden soll. Deshalb müssen Sie hier den "
-+"Namen der Schnittstelle selbst angeben."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:49
-+msgid "Dynamic DNS hostname to keep updated:"
-+msgstr "Zu aktualisierender Dynamischer DNS-Hostname:"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+msgid "Enable DNS wildcards for your Dynamic DNS hostname?"
-+msgstr "DNS-Wildcards für Ihren Dynamischen DNS-Hostnamen aktivieren?"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+#, fuzzy
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting \"wildcard\" DNS "
-+"lookups. This means that for yourdomain, a lookup for anything.yourdomain "
-+"will return an answer that points to yourdomain."
-+msgstr ""
-+"Viele Dynamische DNS-Provider unterstützen DNS-Lookups mit Platzhaltern "
-+"(»wildcards«). Das bedeutet: Haben Sie eine Domain namens »ihredomain«, dann "
-+"werden Anfragen nach »irgendetwas.ihredomain« mit einer Antwort erwidert, "
-+"die auf »ihredomain« verweist. Soll diese Fähigkeit aktiviert sein, dann "
-+"stimmen Sie hier zu."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid "MX record to add:"
-+msgstr "Hinzuzufügender MX-Record:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting MX records. If you want "
-+"an MX record enabled for your domain, specify the content of that MX record "
-+"here. If you do not want an MX record, leave it blank."
-+msgstr ""
-+"Viele Dynamische DNS-Provider unterstützen MX-Records. Wollen Sie für Ihre "
-+"Domain einen MX-Record hinzufügen, dann geben Sie hier bitte den Inhalt des "
-+"MX-Records an. Wollen Sie keinen MX-Record, dann lassen Sie das Feld frei."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"For further information on MX records, what they do, and how they are used, "
-+"see your Dynamic DNS provider."
-+msgstr ""
-+"Weitere Informationen über MX-Records, wofür sie gut sind, und wie sie "
-+"verwendet werden, erfahren Sie von Ihrem Dynamischen DNS-Provider."
-+
-+#~ msgid "Manage your default configuration with debconf?"
-+#~ msgstr "Standard-Konfiguration mit debconf verwalten?"
-+
-+#~ msgid ""
-+#~ "ez-ipupdate can manage your default configuration automatically using "
-+#~ "debconf. If you do not want your default configuration managed "
-+#~ "automatically, decline this option."
-+#~ msgstr ""
-+#~ "ez-ipupdate kann Ihre Standard-Konfiguration automatisch mittels debconf "
-+#~ "verwalten. Wenn Sie nicht wollen, dass Ihre Standard-Konfiguration "
-+#~ "automatisch verwaltet wird, dann lehnen Sie diese Option ab."
-+
-+#~ msgid "Run as a daemon?"
-+#~ msgstr "Als Daemon laufen?"
-+
-+#~ msgid ""
-+#~ "By default ez-ipupdate will run as a daemon to manage the configuration. "
-+#~ "Refuse here if you do not want this. Instead, ez-ipupdate will install a "
-+#~ "script in /etc/ppp/ip-up.d that will run all non-daemon configurations "
-+#~ "when the ppp interface is brought up. See the /usr/share/doc/ez-ipupdate/"
-+#~ "README.Debian file for more information."
-+#~ msgstr ""
-+#~ "Standardmäßig wird ez-ipupdate Ihre Konfiguration als Daemon verwalten. "
-+#~ "Lehnen Sie hier ab, wenn Sie das nicht wünschen. Stattdessen würde ez-"
-+#~ "ipupdate dann unter /etc/ppp/ip-up.d/ ein Skript installieren, welches "
-+#~ "sämtliche Nicht-Daemon-Konfigurationen ausführt, sobald die PPP-"
-+#~ "Schnittstelle hochgefahren wird. Lesen Sie die Datei /usr/share/doc/ez-"
-+#~ "ipupdate/README.Debian für weitere Informationen."
-+
-+#~ msgid ""
-+#~ "If none of these automated behaviors suit you, you should probably not "
-+#~ "manage your default configuration using debconf."
-+#~ msgstr ""
-+#~ "Sollte Ihnen keine dieser Automatismen zusagen, dann ist es "
-+#~ "wahrscheinlich besser, wenn Sie Ihre Standard-Konfiguration nicht mittels "
-+#~ "debconf verwalten."
---- ez-ipupdate-3.0.11b8.orig/debian/po/pt_BR.po
-+++ ez-ipupdate-3.0.11b8/debian/po/pt_BR.po
-@@ -0,0 +1,319 @@
-+# Translators, if you are not familiar with the PO format, gettext
-+# documentation is worth reading, especially sections dedicated to
-+# this format, e.g. by running:
-+# info -n '(gettext)PO Files'
-+# info -n '(gettext)Header Entry'
-+# Some information specific to po-debconf are available at
-+# /usr/share/doc/po-debconf/README-trans
-+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
-+# Developers do not need to manually edit POT or PO files.
-+# 
-+# 
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: ez-ipupdate 3.0.11\n"
-+"Report-Msgid-Bugs-To: sam+deb@zoy.org\n"
-+"POT-Creation-Date: 2005-11-14 20:17+0100\n"
-+"PO-Revision-Date: 2005-03-21 23:11-0300\n"
-+"Last-Translator: Felipe Augusto van de Wiel (faw) <felipe@cathedrallabs>\n"
-+"Language-Team: Portuguese/Brazil <debian-l10n-portuguese@lists.debian.org>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=UTF-8\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+"pt_BR\n"
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "configure manually"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "zoneedit"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ez-ip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "pgpow"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dhs"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-static"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-custom"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ods"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "tzo"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns-partner"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "gnudip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "justlinux"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "hn"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "heipv6tb"
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid "Dynamic DNS provider to use:"
-+msgstr "Provedor de DNS Dinâmico a ser usado:"
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"There are many Dynamic DNS providers supported by ez-ipupdate. If you want "
-+"your default configuration to be created automatically, you must select the "
-+"provider that you wish to use here. You must configure an account on your "
-+"chosen provider's service yourself."
-+msgstr ""
-+"Há vários provedores de DNS Dinâmico suportados pelo ez-ipupdate. Você deve "
-+"selecionar o provedor que você gostaria de usar aqui. Você mesmo deve "
-+"configurar uma conta no serviço do provedor que você escolheu."
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid ""
-+"If you prefer your default ez-ipupdate configuration not to be managed for "
-+"you, you may choose \"configure manually\"."
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"Whatever your decision, you can later put as many additional configuration "
-+"files in /etc/ez-ipupdate/ as you need."
-+msgstr ""
-+"Note que você pode colocar quantas configurações adicionais no /etc/ez-"
-+"ipupdate/ você quiser. ez-ipupdate não vai modificá-las."
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid "Does this system use dialup PPP to connect to the internet?"
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid ""
-+"If you use dialup PPP to connect to the internet, then ez-ipupdate can be "
-+"run to notify providers of your new address when ppp connects to the "
-+"network. Otherwise it will run in the background, and scan for changes to "
-+"your address while you are online."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid "Address for your Dynamic DNS server:"
-+msgstr "Endereço do seu servidor de DNS Dinâmico:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid ""
-+"The service type you selected requires a server address to connect to. You "
-+"may specify either a full hostname or an IP address."
-+msgstr ""
-+"O tipo do serviço que você selecionou requer um endereço de servidor para se "
-+"conectar. Você pode especificar um nome de máquina ou um endereço IP."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:33
-+msgid "Username for your Dynamic DNS account:"
-+msgstr "Nome do usuário para a sua conta de DNS Dinâmico:"
-+
-+#. Type: password
-+#. Description
-+#: ../templates:37
-+msgid "Password for your Dynamic DNS account:"
-+msgstr "Senha para a sua conta de DNS Dinâmico:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid "Network interface to monitor:"
-+msgstr "Interface de rede para monitorar:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid ""
-+"ez-ipupdate will monitor the chosen network interface for changes of IP "
-+"address. It is not possible to automatically detect which interface should "
-+"be monitored, so you must name the interface here."
-+msgstr ""
-+"ez-ipupdate irá monitorar mudanças do endereço IP na interface de rede "
-+"escolhida. Não é possível detectar automaticamente qual interface deve ser "
-+"monitorada, portanto você deve nomear a interface aqui."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:49
-+msgid "Dynamic DNS hostname to keep updated:"
-+msgstr "Nome de máquina do DNS Dinâmico para manter atualizado:"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+msgid "Enable DNS wildcards for your Dynamic DNS hostname?"
-+msgstr ""
-+"Habilitar máscaras (\"wildcards\") de DNS para o seu nome de máquina do DNS "
-+"Dinâmico?"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+#, fuzzy
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting \"wildcard\" DNS "
-+"lookups. This means that for yourdomain, a lookup for anything.yourdomain "
-+"will return an answer that points to yourdomain."
-+msgstr ""
-+"Vários provedores de DNS Dinâmico são capazes de suportar consultas para "
-+"\"máscaras\" (\"wildcards\") de DNS. Isso significa que para o seu domínio, "
-+"uma consulta para qualquercoisa.seudominio vai retornar uma resposta que "
-+"aponta para o seu domínio. Se você deseja que esse recurso seja ativado, "
-+"aceite aqui."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid "MX record to add:"
-+msgstr "Entrada MX a ser adicionada:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting MX records. If you want "
-+"an MX record enabled for your domain, specify the content of that MX record "
-+"here. If you do not want an MX record, leave it blank."
-+msgstr ""
-+"Vários provedores de DNS Dinâmico são capazes de suportar entradas MX. Se "
-+"você deseja que uma entrada MX seja habilitada para o seu domínio, "
-+"especifique aqui o conteúdo da sua entrada MX. Se você não quer uma entrada "
-+"MX, deixe em branco."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"For further information on MX records, what they do, and how they are used, "
-+"see your Dynamic DNS provider."
-+msgstr ""
-+"Para maiores informações sobre entradas MX, o que elas fazem, e como são "
-+"usadas, veja o seu provedor de DNS Dinâmico."
-+
-+#~ msgid "Manage your default configuration with debconf?"
-+#~ msgstr "Gerenciar suas configurações \"default\" com o debconf?"
-+
-+#~ msgid ""
-+#~ "ez-ipupdate can manage your default configuration automatically using "
-+#~ "debconf. If you do not want your default configuration managed "
-+#~ "automatically, decline this option."
-+#~ msgstr ""
-+#~ "ez-ipupdate pode gerenciar suas configurações \"default\" automaticamente "
-+#~ "usando o deconf. Se você não quer que suas configurações \"default\" "
-+#~ "sejam gerenciadas automaticamente, negue esta opção."
-+
-+#~ msgid "Run as a daemon?"
-+#~ msgstr "Executar como serviço?"
-+
-+#~ msgid ""
-+#~ "By default ez-ipupdate will run as a daemon to manage the configuration. "
-+#~ "Refuse here if you do not want this. Instead, ez-ipupdate will install a "
-+#~ "script in /etc/ppp/ip-up.d that will run all non-daemon configurations "
-+#~ "when the ppp interface is brought up. See the /usr/share/doc/ez-ipupdate/"
-+#~ "README.Debian file for more information."
-+#~ msgstr ""
-+#~ "Por \"default\" ez-ipupdate é executado como serviço para gerenciar a "
-+#~ "configuração. Recuse aqui se você não quiser isso. Ao invés disso, ez-"
-+#~ "ipupdate instalará um script em /etc/ppp/ip-up.d que executará todas as "
-+#~ "configurações quando a interface ppp for ativada. Veja o arquivo /usr/"
-+#~ "share/doc/ez-ipupdate/README.Debian para mais informações."
-+
-+#~ msgid ""
-+#~ "If none of these automated behaviors suit you, you should probably not "
-+#~ "manage your default configuration using debconf."
-+#~ msgstr ""
-+#~ "Se nenhum dos comportamentos automáticos atender você, você não deveria "
-+#~ "gerenciar suas configurações \"default\" usando o debconf."
---- ez-ipupdate-3.0.11b8.orig/debian/po/vi.po
-+++ ez-ipupdate-3.0.11b8/debian/po/vi.po
-@@ -0,0 +1,308 @@
-+# Vietnamese Translation for ez-ipupdate.
-+# Copyright © 2005 Free Software Foundation, Inc.
-+# Clytie Siddall <clytie@riverland.net.au>, 2005.
-+# 
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: ez-ipupdate 3.0.11b8-8.1\n"
-+"Report-Msgid-Bugs-To: sam+deb@zoy.org\n"
-+"POT-Creation-Date: 2005-11-14 20:17+0100\n"
-+"PO-Revision-Date: 2005-06-02 21:37+0930\n"
-+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
-+"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=utf-8\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+"Plural-Forms: nplurals=1; plural=0\n"
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "configure manually"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "zoneedit"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ez-ip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "pgpow"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dhs"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-static"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyndns-custom"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "ods"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "tzo"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "easydns-partner"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "gnudip"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "justlinux"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "dyns"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "hn"
-+msgstr ""
-+
-+#. Type: select
-+#. Choices
-+#: ../templates:3
-+msgid "heipv6tb"
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid "Dynamic DNS provider to use:"
-+msgstr "Nhà cung cấp DNS động cần dùng:"
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"There are many Dynamic DNS providers supported by ez-ipupdate. If you want "
-+"your default configuration to be created automatically, you must select the "
-+"provider that you wish to use here. You must configure an account on your "
-+"chosen provider's service yourself."
-+msgstr ""
-+"Trình ez-ipupdate có hỗ trợ nhiều nhà cung cấp DNS động. Ở đây thì bạn hãy "
-+"chọn nhà cung cấp nào bạn muốn dùng. Cần phải tự cấu hình một tài khoản trên "
-+"dịch vụ đã chọn."
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+msgid ""
-+"If you prefer your default ez-ipupdate configuration not to be managed for "
-+"you, you may choose \"configure manually\"."
-+msgstr ""
-+
-+#. Type: select
-+#. Description
-+#: ../templates:4
-+#, fuzzy
-+msgid ""
-+"Whatever your decision, you can later put as many additional configuration "
-+"files in /etc/ez-ipupdate/ as you need."
-+msgstr ""
-+"Hãy ghi chú rằng bạn có thể chèn càng nhiều cấu hình thêm vào /etc/ez-"
-+"ipupdate/ càng muốn, và trình ez-ipupdate sẽ không sửa đổi chúng."
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid "Does this system use dialup PPP to connect to the internet?"
-+msgstr ""
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:19
-+msgid ""
-+"If you use dialup PPP to connect to the internet, then ez-ipupdate can be "
-+"run to notify providers of your new address when ppp connects to the "
-+"network. Otherwise it will run in the background, and scan for changes to "
-+"your address while you are online."
-+msgstr ""
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid "Address for your Dynamic DNS server:"
-+msgstr "Địa chỉ cho máy phục vụ DNS động của bạn:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:27
-+msgid ""
-+"The service type you selected requires a server address to connect to. You "
-+"may specify either a full hostname or an IP address."
-+msgstr ""
-+"Bạn đã chọn loại dịch vụ cần thiết một địa chỉ máy phục vụ để kết nối đến "
-+"nó. Bạn có thể ghi rõ hoặc một tên máy đầy đủ hoặc một địa chỉ IP."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:33
-+msgid "Username for your Dynamic DNS account:"
-+msgstr "Tên người dùng cho tài khoản DNS động của bạn:"
-+
-+#. Type: password
-+#. Description
-+#: ../templates:37
-+msgid "Password for your Dynamic DNS account:"
-+msgstr "Mật khẩu cho tài khoản DNS động của bạn:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid "Network interface to monitor:"
-+msgstr "Giao diện mạng cần theo dõi:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:42
-+msgid ""
-+"ez-ipupdate will monitor the chosen network interface for changes of IP "
-+"address. It is not possible to automatically detect which interface should "
-+"be monitored, so you must name the interface here."
-+msgstr ""
-+"Trình ez-ipupdate sẽ theo dõi giao diện mạng đã chọn, để tìm lần thay đổi "
-+"địa chỉ IP nào. Không thể tự động phát hiện giao diện nào cần theo dõi, thì "
-+"bạn hãy gõ tên của giao diện ấy vào đây."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:49
-+msgid "Dynamic DNS hostname to keep updated:"
-+msgstr "Tên máy DNS động cần cập nhật suốt:"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+msgid "Enable DNS wildcards for your Dynamic DNS hostname?"
-+msgstr "Bật ký tự đại diện DNS cho tên máy DNS động không?"
-+
-+#. Type: boolean
-+#. Description
-+#: ../templates:54
-+#, fuzzy
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting \"wildcard\" DNS "
-+"lookups. This means that for yourdomain, a lookup for anything.yourdomain "
-+"will return an answer that points to yourdomain."
-+msgstr ""
-+"Nhiều nhà cung cấp dịch vụ DNS động có khả năng hỗ trợ việc tra cứu DNS loại "
-+"«đại diện». Có nghĩa là cho miền_tôi, khi tra cứu cáigì.miền_tôi sẽ gửi trả "
-+"một trả lời ngụ ý miền_tôi. Nếu bạn muốn bật tính năng này thì hãy đồng ý ở "
-+"đây."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid "MX record to add:"
-+msgstr "Mục ghi MX cần thêm:"
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"Many Dynamic DNS providers are capable of supporting MX records. If you want "
-+"an MX record enabled for your domain, specify the content of that MX record "
-+"here. If you do not want an MX record, leave it blank."
-+msgstr ""
-+"Nhiều nhà cung cấp dịch vụ DNS động có khả năng hỗ trợ mục ghi MX. Nếu bạn "
-+"muốn bật một mục ghi MX cho miền bạn, thì hãy ghi rõ nội dung của mục ghi MX "
-+"ấy vào đây. Nếu bạn không muốn điều ấy thì hãy bỏ rỗng."
-+
-+#. Type: string
-+#. Description
-+#: ../templates:61
-+msgid ""
-+"For further information on MX records, what they do, and how they are used, "
-+"see your Dynamic DNS provider."
-+msgstr ""
-+"Để tìm thông tin thêm về mục ghi MX, chức năng chúng và cách sử dụng chúng, "
-+"hãy xem nhà cung cấp dịch vụ DNS động của bạn."
-+
-+#~ msgid "Manage your default configuration with debconf?"
-+#~ msgstr "Quản lý cấu hình mặc định bạn dùng debconf không?"
-+
-+#~ msgid ""
-+#~ "ez-ipupdate can manage your default configuration automatically using "
-+#~ "debconf. If you do not want your default configuration managed "
-+#~ "automatically, decline this option."
-+#~ msgstr ""
-+#~ "Trình ez-ipupdate có thể tự động quản lý cấu hình bạn dùng debconf. Nếu "
-+#~ "bạn không muốn điều này thì hãy từ khối tùy chọn này."
-+
-+#~ msgid "Run as a daemon?"
-+#~ msgstr "Chạy trong nền không?"
-+
-+#~ msgid ""
-+#~ "By default ez-ipupdate will run as a daemon to manage the configuration. "
-+#~ "Refuse here if you do not want this. Instead, ez-ipupdate will install a "
-+#~ "script in /etc/ppp/ip-up.d that will run all non-daemon configurations "
-+#~ "when the ppp interface is brought up. See the /usr/share/doc/ez-ipupdate/"
-+#~ "README.Debian file for more information."
-+#~ msgstr ""
-+#~ "Mặc định là trình ez-ipupdate sẽ chạy trong nền (là dæmon) để quản lý "
-+#~ "tiến trình cấu hình. Hãy từ chối ở đây nếu bạn không muốn điều này. Thay "
-+#~ "vào đó, trình ez-ipupdate sẽ cài đặt một tập lệnh vào /etc/ppp/ip-up.d mà "
-+#~ "sẽ chạy mọi cấu hình không phải là trình nền khi giao diện ppp mới hoạt "
-+#~ "động. Hãy xem tập tin /usr/share/doc/ez-ipupdate/README.Debian để tìm "
-+#~ "thông tin thêm."
-+
-+#~ msgid ""
-+#~ "If none of these automated behaviors suit you, you should probably not "
-+#~ "manage your default configuration using debconf."
-+#~ msgstr ""
-+#~ "Nếu bạn không muốn dùng cách tự động nào thì rất có thể là bạn không nên "
-+#~ "quản lý cấu hình mặc định dùng debconf."
---- ez-ipupdate-3.0.11b8.orig/debian/changelog
-+++ ez-ipupdate-3.0.11b8/debian/changelog
-@@ -0,0 +1,208 @@
-+ez-ipupdate (3.0.11b8-10) unstable; urgency=low
-+
-+  * debian/templates:
-+    + Allow translation of the "configure manually" option (Closes: #339047).
-+  * debian/rules:
-+    + Use dh_install instead of cp.
-+    + Use dh_installexamples instead of cp.
-+
-+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  Mon, 14 Nov 2005 20:11:20 +0100
-+
-+ez-ipupdate (3.0.11b8-9) unstable; urgency=low
-+
-+  * Acknowledge NMU. Thanks to Lucas Wall (Closes: #237444, #300821).
-+  * debian/control:
-+    + Set policy to 3.6.2.1.
-+  * debian/rules:
-+    + Use dh_installman instead of dh_installmanpages.
-+  * debian/po/vi.po:
-+    + Vietnamese debconf template translation, thanks to Clytie Siddall
-+      (Closes: #311643).
-+  * debian/config debian/templates:
-+    + Merge the "manage the config file automatically?" and the "choose
-+      service type" questions and set the priority to high (Closes: #275600).
-+    + Put zoneedit higher in the list of services in debconf because it is
-+      easy to set up.
-+    + Do not ask for the interface in PPP mode.
-+    + Tuned the questions so that they do not refer to a particular debconf
-+      backend, and many other fixes suggested by Joey Hess (Closes: #275602).
-+    + Replaced ez-ipupdate/daemon with ez-ipupdate/ppp.
-+  * CHANGELOG:
-+    + Changelog information more recent than 2001/07/04 is not available; I
-+      added the NEWS information to this file instead (Closes: #306751).
-+  * ez-ipupdate.c:
-+    + Fixed a segfault thanks to Robert Jacobs (Closes: #323718).
-+
-+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  Sat, 12 Nov 2005 10:32:58 +0100
-+
-+ez-ipupdate (3.0.11b8-8.1) unstable; urgency=low
-+
-+  * Non-maintainer upload
-+  * Switched to po-debconf. (closes: #237444)
-+  * Added Czech debconf template translation.
-+  * Added French debconf template translation.
-+  * Added German debconf template translation.
-+  * Added Brazilian Portuguese debconf template translation. (closes: #300821)
-+
-+ -- Lucas Wall <lwall@debian.org>  Fri, 25 Mar 2005 17:34:15 -0300
-+
-+ez-ipupdate (3.0.11b8-8) unstable; urgency=critical
-+
-+  * ez-ipupdate.c:
-+    + Fixed the format string vulnerability in CAN-2004-0980 (Closes: #280822).
-+  * debian/control:
-+    + Set policy to 3.6.1.1.
-+
-+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  Sat, 13 Nov 2004 15:45:58 +0100
-+
-+ez-ipupdate (3.0.11b8-7) unstable; urgency=low
-+
-+  * debian/control:
-+    + Set policy to 3.6.1.0.
-+    + Set debhelper build-dependency to (>= 4.1.68) because of dh_installppp.
-+  * debian/rules:
-+    + Use dh_installppp instead of doing the work by hand (Closes: #212896).
-+
-+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  Mon, 27 Oct 2003 13:39:09 +0100
-+
-+ez-ipupdate (3.0.11b8-6) unstable; urgency=low
-+
-+  * debian/control:
-+    + Set policy to 3.6.0. No changes required.
-+    + Updated debhelper build-dependency to (>= 3.4.4) because we now
-+      use debian/compat.
-+    + Use ${misc:Depends}.
-+  * debian/config:
-+    + Fixed the wildcard/MX prompting, thanks to Sam Couter (Closes: #201720).
-+
-+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  Thu, 17 Jul 2003 14:44:06 +0200
-+
-+ez-ipupdate (3.0.11b8-5) unstable; urgency=low
-+
-+  * Do not prompt for a username or password in daemon mode (Closes: #198141).
-+  * debian/postinst:
-+    + Removed useless verbosity when installing the package for the first time.
-+
-+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  Fri, 20 Jun 2003 10:17:37 +0200
-+
-+ez-ipupdate (3.0.11b8-4) unstable; urgency=low
-+
-+  * Do not output the "invalid cache file" message if the reason is that the
-+    cache file is empty.
-+  * debian/postinst:
-+    + Removed a temporary file that was left behind.
-+  * Log to LOG_DAEMON instead of LOG_USER so that messages go to daemon.log.
-+  * Only show the executable name in syslog, not its full path.
-+  * Do not switch to OPT_QUIET in daemon mode, so that daemon.log shows
-+    useful information such as login failures (Closes: #179717).
-+  * Fixed a few spelling errors in the log messages.
-+  * Open syslog before creating the pid file so that errors regarding the
-+    pid file creation are logged as well.
-+
-+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  Thu, 19 Jun 2003 02:51:13 +0200
-+
-+ez-ipupdate (3.0.11b8-3) unstable; urgency=low
-+
-+  * Fixed a crash in the GNUDip code when no address is specified.
-+  * debian/control:
-+    + Set policy to 3.5.10.
-+    + Removed the leading "a" in the package description.
-+    + Added URLs for the various services in the long description.
-+  * debian/postinst:
-+    + Fixed default cache filename, thanks to Daniel Bonniot (Closes: #194004).
-+    + Added an invariant section to the default configuration file to preserve
-+      user changes (Closes: #191642).
-+    + No longer clear the password in debconf.
-+  * debian/config:
-+    + The GNUDip service needs a server address when run as a daemon; added a
-+      debconf prompt for this.
-+    + Added a debconf prompt to run ez-ipupdate as a daemon or through the
-+      PPP ip-up.d script (Closes: #85942).
-+  * debian/ppp:
-+    + Added this script for /etc/ppp/ip-up.d/.
-+
-+ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org>  Wed, 18 Jun 2003 15:08:00 +0200
-+
-+ez-ipupdate (3.0.11b8-2) unstable; urgency=low
-+
-+  * Re-ran "rm -f config.sub config.guess configure install-sh missing \
-+    mkinstalldirs && aclocal && automake --copy --add-missing && autoconf"
-+  * Updated policy to 3.5.9.0.
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Wed, 23 Apr 2003 05:29:22 +0200
-+
-+ez-ipupdate (3.0.11b8-1) unstable; urgency=low
-+
-+  * New upstream release.
-+  * The debconf-created file is now mode 700 to avoid password exposure
-+    (Closes: #190237).
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Wed, 23 Apr 2003 05:03:37 +0200
-+
-+ez-ipupdate (3.0.11b7-3) unstable; urgency=low
-+
-+  * The "faster than light" release.
-+  * Really fixed the timestamp skew in debian/rules (Closes: #180901).
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Fri, 14 Feb 2003 02:12:38 +0100
-+
-+ez-ipupdate (3.0.11b7-2) unstable; urgency=low
-+
-+  * The "bloody valentine" release.
-+  * Fixed another timestamp skew in debian/rules (Closes: #180901, #180904).
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Fri, 14 Feb 2003 01:06:02 +0100
-+
-+ez-ipupdate (3.0.11b7-1) unstable; urgency=low
-+
-+  * The "eternal hellfire for lazy maintainers" release.
-+  * New upstream package (Closes: #167038).
-+  * Removed dependency on debconf-tiny (Closes: #137029).
-+  * We now Provide: dyndns-client (Closes: #139082).
-+  * Updated authors list in debian/copyright (Closes: #177772).
-+  * Fixed -Wall warnings.
-+  * This release fixes a hang in ODS_read_response() (Closes: #169043).
-+  * Added various safety checks in the init.d script.
-+  * Fixed the reload rule in the init.d script (Closes: #144798).
-+  * The init.d script only looks for files ending with .conf (Closes: #139518).
-+  * Applied a patch to handle running ez-ipupdate as a user, courtesy of Sam
-+    Couter (Closes: #127913).
-+  * Applied a patch for debconf management of the default configuration,
-+    courtesy of Sam Couter again (Closes: #100327).
-+  * Prevented timestamp skews in debian/rules.
-+  * Wrote a short manpage (Closes: #168361).
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Thu, 13 Feb 2003 15:56:57 +0100
-+
-+ez-ipupdate (3.0.11b5-1) unstable; urgency=low
-+
-+  * New upstream package.
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Thu,  8 Nov 2001 19:43:21 +0100
-+
-+ez-ipupdate (3.0.10-2) unstable; urgency=low
-+
-+  * Now builds and runs properly on Hurd (Closes: #108058).
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Thu,  9 Aug 2001 15:31:23 +0200
-+
-+ez-ipupdate (3.0.10-1) unstable; urgency=low
-+
-+  * New upstream release.
-+  * Fixed typo in init.d (Closes: #97175).
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Fri, 11 May 2001 18:51:35 +0200
-+
-+ez-ipupdate (3.0.6-1) unstable; urgency=low
-+
-+  * New upstream release.
-+  * Fixed moronic errors in the init.d file (Closes: #85057, #85955, #85956).
-+  * Removed generic installation instructions from /usr/share/doc.
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Thu,  1 Mar 2001 11:44:35 +0100
-+
-+ez-ipupdate (3.0.4-1) unstable; urgency=low
-+
-+  * Initial Release (Closes: #78202).
-+
-+ -- Samuel Hocevar <sam@zoy.org>  Mon, 25 Dec 2000 05:48:01 +0100
---- ez-ipupdate-3.0.11b8.orig/debian/templates
-+++ ez-ipupdate-3.0.11b8/debian/templates
-@@ -0,0 +1,67 @@
-+Template: ez-ipupdate/service_type
-+Type: select
-+__Choices: configure manually, zoneedit, ez-ip, pgpow, dhs, dyndns, dyndns-static, dyndns-custom, ods, tzo, easydns, easydns-partner, gnudip, justlinux, dyns, hn, heipv6tb
-+_Description: Dynamic DNS provider to use:
-+ There are many Dynamic DNS providers supported by ez-ipupdate. If you want
-+ your default configuration to be created automatically, you must select the
-+ provider that you wish to use here. You must configure an account on your
-+ chosen provider's service yourself.
-+ .
-+ If you prefer your default ez-ipupdate configuration not to be managed for
-+ you, you may choose "configure manually".
-+ .
-+ Whatever your decision, you can later put as many additional configuration
-+ files in /etc/ez-ipupdate/ as you need.
-+
-+Template: ez-ipupdate/ppp
-+Type: boolean
-+Default: false
-+_Description: Does this system use dialup PPP to connect to the internet?
-+ If you use dialup PPP to connect to the internet, then ez-ipupdate can
-+ be run to notify providers of your new address when ppp connects to the
-+ network. Otherwise it will run in the background, and scan for changes
-+ to your address while you are online.
-+
-+Template: ez-ipupdate/server
-+Type: string
-+_Description: Address for your Dynamic DNS server:
-+ The service type you selected requires a server address to connect to. You
-+ may specify either a full hostname or an IP address.
-+
-+Template: ez-ipupdate/username
-+Type: string
-+_Description: Username for your Dynamic DNS account:
-+
-+Template: ez-ipupdate/password
-+Type: password
-+_Description: Password for your Dynamic DNS account:
-+
-+Template: ez-ipupdate/interface
-+Type: string
-+Default: eth0
-+_Description: Network interface to monitor:
-+ ez-ipupdate will monitor the chosen network interface for changes of IP
-+ address. It is not possible to automatically detect which interface should
-+ be monitored, so you must name the interface here.
-+
-+Template: ez-ipupdate/hostname
-+Type: string
-+_Description: Dynamic DNS hostname to keep updated:
-+
-+Template: ez-ipupdate/dns_wildcard
-+Type: boolean
-+Default: false
-+_Description: Enable DNS wildcards for your Dynamic DNS hostname?
-+ Many Dynamic DNS providers are capable of supporting "wildcard" DNS
-+ lookups. This means that for yourdomain, a lookup for anything.yourdomain
-+ will return an answer that points to yourdomain.
-+
-+Template: ez-ipupdate/dns_mx
-+Type: string
-+_Description: MX record to add:
-+ Many Dynamic DNS providers are capable of supporting MX records. If you
-+ want an MX record enabled for your domain, specify the content of that MX
-+ record here. If you do not want an MX record, leave it blank.
-+ .
-+ For further information on MX records, what they do, and how they are
-+ used, see your Dynamic DNS provider.
---- ez-ipupdate-3.0.11b8.orig/debian/copyright
-+++ ez-ipupdate-3.0.11b8/debian/copyright
-@@ -0,0 +1,16 @@
-+This package was debianized by Sam Hocevar <sam@zoy.org> on
-+Mon, 25 Dec 2000 05:48:01 +0100.
-+
-+It was downloaded from http://ez-ipupdate.com/
-+
-+Upstream Authors: Angus Mackay <amackay@gusnet.cx>
-+                  Jeremy Bopp <jbopp@mail.utexas.edu>
-+                  Mark Jeftovic <markjr@easydns.com>
-+                  Stefaan Ponnet <webmaster@dyns.cx>
-+                  Colin Viebrock <colin@easydns.com>
-+                  Tim Brown <timb@machine.org.uk>
-+
-+License: GNU General Public License.
-+
-+On Debian GNU/Linux systems, a copy of the GNU GPL can be found in
-+/usr/share/common-licenses/GPL.
---- ez-ipupdate-3.0.11b8.orig/debian/dirs
-+++ ez-ipupdate-3.0.11b8/debian/dirs
-@@ -0,0 +1,4 @@
-+etc/ez-ipupdate
-+etc/ppp/ip-up.d/
-+usr/sbin
-+usr/share/doc/ez-ipupdate/examples
---- ez-ipupdate-3.0.11b8.orig/debian/init
-+++ ez-ipupdate-3.0.11b8/debian/init
-@@ -0,0 +1,96 @@
-+#! /bin/sh
-+
-+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-+DAEMON=/usr/sbin/ez-ipupdate
-+NAME=ez-ipupdate
-+DESC="Dynamic DNS client"
-+
-+test -f "$DAEMON" || exit 0
-+
-+set -e
-+
-+case "$1" in
-+  start)
-+    echo -n "Starting $DESC:"
-+    configs=`find "/etc/$NAME/" -name '*.conf' | \
-+            sed -e 's,.*/\(.*\).conf,\1,'`
-+    if [ x"$configs" = x ]
-+    then
-+        echo " no .conf file in /etc/$NAME."
-+        exit 0
-+    fi
-+
-+    echo -n " $NAME"
-+    for config in `echo "$configs"`
-+    do
-+        # Don't run configurations that are not daemons
-+        if ! grep -q '^ *daemon' "/etc/$NAME/$config.conf"; then continue; fi
-+        # Don't run configurations that run in the foreground
-+        if grep -q '^ *foreground' "/etc/$NAME/$config.conf"; then continue; fi
-+        # Ok, launch an ez-ipupdate instance
-+        if start-stop-daemon --start --quiet \
-+            --pidfile "/var/run/$NAME/$config.pid" \
-+            --exec "$DAEMON" \
-+                -- -d -c "/etc/$NAME/$config.conf" \
-+                -F "/var/run/$NAME/$config.pid"
-+        then
-+            echo -n " $config"
-+        fi
-+    done
-+    echo "."
-+    ;;
-+  stop)
-+    echo -n "Stopping $DESC:"
-+    pidfiles=`find "/var/run/$NAME/" -name "*.pid" | \
-+            sed -e 's,.*/\(.*\).pid,\1,'`
-+    if [ x"$pidfiles" = x ]
-+    then
-+        echo " no $NAME running."
-+        exit 0
-+    fi
-+
-+    echo -n " $NAME"
-+    for pidfile in `echo "$pidfiles"`
-+    do
-+        if start-stop-daemon --stop --signal 3 --quiet \
-+            --pidfile "/var/run/$NAME/$pidfile.pid"
-+        then
-+            echo -n " $pidfile"
-+        fi
-+    done
-+    echo "."
-+    ;;
-+  reload)
-+    echo -n "Reloading $DESC configuration files:"
-+    pidfiles=`find "/var/run/$NAME" -name "*.pid" | \
-+            sed -e 's,.*/\(.*\).pid,\1,'`
-+    if [ x"$pidfiles" = x ]
-+    then
-+        echo " no $NAME running."
-+        exit 0
-+    fi
-+
-+    echo -n " $NAME"
-+    for pidfile in `echo "$pidfiles"`
-+    do
-+        if start-stop-daemon --stop --signal 1 --quiet \
-+            --pidfile "/var/run/$NAME/$pidfile.pid"
-+        then
-+            echo -n " $pidfile"
-+        fi
-+    done
-+    echo "."
-+    ;;
-+  restart|force-reload)
-+    $0 stop
-+    sleep 1
-+    $0 start
-+    ;;
-+  *)
-+    N="/etc/init.d/$NAME"
-+    echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
-+    exit 1
-+    ;;
-+esac
-+
-+exit 0
---- ez-ipupdate-3.0.11b8.orig/debian/README.Debian
-+++ ez-ipupdate-3.0.11b8/debian/README.Debian
-@@ -0,0 +1,37 @@
-+Notes for ez-ipupdate on Debian
-+===============================
-+
-+Configuration files
-+-------------------
-+  To configure this package, put your configuration files the /etc/ez-ipupdate/
-+directory.
-+
-+  To avoid password exposure, it is recommended you set the permission for all
-+configuration files in this directory to 700 (-rwx------). You will still be
-+able to use the run-as-user option because the file is opened before root
-+permissions are dropped.
-+
-+Automated behavior
-+------------------
-+  The init.d script will launch an ez-ipupdate daemon for each configuration
-+file in that directory that has the "daemon" option set and the "foreground"
-+option disabled.
-+
-+  The ppp script will launch ez-ipupdate once for each configuration file in
-+the /etc/ez-ipupdate/ directory that has the "daemon" and the "foreground"
-+options disabled.
-+
-+  If you do not want your configuration files to be automatically used, please
-+set the "foreground" option in them, or put them in an alternate directory.
-+
-+Cache files
-+-----------
-+  You may store cache files in /var/cache/ez-ipupdate/, as the daemon has write
-+permission to this directory.
-+
-+
-+ -- Sam Hocevar <sam@zoy.org> Mon, 25 Dec 2000 05:48:01 +0100
-+  updated on Thu, 13 Feb 2003 15:56:36 +0100 (cache files)
-+  updated on Wed, 23 Apr 2003 04:59:52 +0200 (file permissions)
-+  updated on Wed, 18 Jun 2003 20:08:44 +0200 (ppp ip-up.d)
-+
---- ez-ipupdate-3.0.11b8.orig/debian/rules
-+++ ez-ipupdate-3.0.11b8/debian/rules
-@@ -0,0 +1,87 @@
-+#!/usr/bin/make -f
-+# Sample debian/rules that uses debhelper.
-+# GNU copyright 1997 to 1999 by Joey Hess.
-+
-+# Uncomment this to turn on verbose mode.
-+#export DH_VERBOSE=1
-+
-+export DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-+export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-+
-+confflags = --prefix=/usr
-+confflags += --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
-+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
-+  confflags += --build $(DEB_HOST_GNU_TYPE)
-+else
-+  confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
-+endif
-+
-+configure: configure-stamp
-+configure-stamp:
-+      dh_testdir
-+      touch configure.in \
-+      && touch aclocal.m4 \
-+      && touch configure \
-+      && touch stamp-h.in \
-+      && touch config.h.in \
-+      && touch `find -name Makefile.in`
-+      CFLAGS=-Wall ./configure $(confflags)
-+      touch configure-stamp
-+
-+build: configure-stamp build-stamp
-+build-stamp:
-+      dh_testdir
-+      $(MAKE)
-+      touch build-stamp
-+
-+clean:
-+      dh_testdir
-+      dh_testroot
-+      rm -f build-stamp configure-stamp
-+      -$(MAKE) distclean
-+      chmod a-x ex*conf
-+      dh_clean
-+      debconf-updatepo
-+
-+install: build
-+      dh_testdir
-+      dh_testroot
-+      dh_clean -k
-+      dh_installdirs
-+      dh_install ez-ipupdate /usr/sbin/
-+      dh_installppp
-+
-+# Build architecture-independent files here.
-+binary-indep: build install
-+# We have nothing to do by default.
-+
-+# Build architecture-dependent files here.
-+binary-arch: build install
-+#     dh_testversion
-+      dh_testdir
-+      dh_testroot
-+      dh_installdebconf
-+      dh_installdocs
-+      dh_installexamples ex*conf
-+      dh_installmenu
-+#     dh_installemacsen
-+#     dh_installpam
-+      dh_installinit
-+      dh_installcron
-+      dh_installman ez-ipupdate.8
-+      dh_installinfo
-+      dh_installchangelogs CHANGELOG
-+      dh_link
-+      dh_strip
-+      dh_compress
-+      dh_fixperms
-+#     dh_makeshlibs
-+      dh_installdeb
-+#     dh_perl
-+      dh_shlibdeps
-+      dh_gencontrol
-+      dh_md5sums
-+      dh_builddeb
-+
-+binary: binary-indep binary-arch
-+.PHONY: build clean binary-indep binary-arch binary install configure
---- ez-ipupdate-3.0.11b8.orig/debian/docs
-+++ ez-ipupdate-3.0.11b8/debian/docs
-@@ -0,0 +1 @@
-+README
---- ez-ipupdate-3.0.11b8.orig/debian/postinst
-+++ ez-ipupdate-3.0.11b8/debian/postinst
-@@ -0,0 +1,139 @@
-+#! /bin/sh
-+# postinst script for ez-ipupdate
-+#
-+# see: dh_installdeb(1)
-+
-+set -e
-+
-+# Load the debconf library
-+. /usr/share/debconf/confmodule
-+
-+# summary of how this script can be called:
-+#        * <postinst> `configure' <most-recently-configured-version>
-+#        * <old-postinst> `abort-upgrade' <new version>
-+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-+#          <new-version>
-+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-+#          <failed-install-package> <version> `removing'
-+#          <conflicting-package> <version>
-+# for details, see http://www.debian.org/doc/debian-policy/ or
-+# the debian-policy package
-+#
-+# quoting from the policy:
-+#     Any necessary prompting should almost always be confined to the
-+#     post-installation script, and should be protected with a conditional
-+#     so that unnecessary prompting doesn't happen if a package's
-+#     installation fails and the `postinst' is called with `abort-upgrade',
-+#     `abort-remove' or `abort-deconfigure'.
-+
-+case "$1" in
-+  configure)
-+    # Create the user if it doesn't exist
-+    if ! id ez-ipupd 2>/dev/null 1>&2 ; then
-+        adduser --system --home /var/cache/ez-ipupdate \
-+            --shell /bin/false --gecos "Dynamic DNS client" \
-+            --disabled-password --disabled-login ez-ipupd
-+    fi
-+    # Create the default cache file
-+    touch /var/cache/ez-ipupdate/default-cache
-+    chown ez-ipupd /var/cache/ez-ipupdate/default-cache
-+    # Remove spurious cache file from the 3.0.11b8-2 broken package
-+    rm -f /var/cache/ez-ipupdate/cache-default
-+    # Create the directory where the PID file will be stored
-+    mkdir -p /var/run/ez-ipupdate
-+    chown -R ez-ipupd /var/run/ez-ipupdate
-+    # Create the default config file (maybe)
-+    db_get ez-ipupdate/service_type
-+    if [ "$RET" != "configure manually" ] ; then
-+        service="$RET"
-+        conf="/etc/ez-ipupdate/default.conf"
-+        newconf="$conf.dpkg-new"
-+        # Grab answers from debconf
-+        db_get ez-ipupdate/ppp
-+        ppp="$RET"
-+        db_get ez-ipupdate/username
-+        username="$RET"
-+        db_get ez-ipupdate/password
-+        password="$RET"
-+        db_get ez-ipupdate/hostname
-+        hostname="$RET"
-+        db_get ez-ipupdate/interface
-+        interface="$RET"
-+        echo "#!/usr/sbin/ez-ipupdate -c" > "$newconf"
-+        cat >> "$newconf" << EOF
-+###
-+###  Default ez-ipupdate configuration file - EDIT WITH CARE
-+###  Use \`dpkg-reconfigure ez-ipupdate' to update the debconf-generated lines.
-+###
-+
-+###  The following lines were generated by debconf
-+
-+service-type=$service
-+EOF
-+        db_get ez-ipupdate/server || RET=""
-+        if [ -n "$RET" ]; then
-+            echo "server=$RET" >> "$newconf"
-+        else
-+            echo "#server=(default)" >> "$newconf"
-+        fi
-+        cat >> "$newconf" << EOF
-+user=$username:$password
-+host=$hostname
-+interface=$interface
-+EOF
-+        db_get ez-ipupdate/dns_wildcard || RET="false"
-+        if [ "$RET" = "true" ]; then
-+            echo "wildcard" >> "$newconf"
-+        else
-+            echo "#wildcard" >> "$newconf"
-+        fi
-+        db_get ez-ipupdate/dns_mx || RET=""
-+        if [ -n "$RET" ]; then
-+            echo "mx=$RET" >> "$newconf"
-+        else
-+            echo "#mx=(none)" >> "$newconf"
-+        fi
-+        cat >> "$newconf" << EOF
-+run-as-user=ez-ipupd
-+cache-file=/var/cache/ez-ipupdate/default-cache
-+EOF
-+        if [ "$ppp" = "true" ]; then
-+            echo "#daemon" >> "$newconf"
-+        else
-+            echo "daemon" >> "$newconf"
-+        fi
-+        echo >> "$newconf"
-+        if grep -q '^###  Changes below this' "$conf" >/dev/null 2>&1; then
-+            sed -ne '/^###  Changes below this/,$p' < "$conf" >> "$newconf"
-+        else
-+            cat >> "$newconf" << EOF
-+###  Changes below this line will be preserved on upgrades.
-+
-+EOF
-+        fi
-+      # Fix the file permissions
-+      chmod 700 "$newconf"
-+        rm -f "$conf" && mv "$newconf" "$conf"
-+      # Remove that old file, from broken 3.0.11b8-3 package
-+      rm -f "$conf.new"
-+    fi
-+    ;;
-+
-+  abort-upgrade|abort-remove|abort-deconfigure)
-+    ;;
-+
-+  *)
-+    echo "postinst called with unknown argument \`$1'" >&2
-+    exit 1
-+    ;;
-+esac
-+
-+# dh_installdeb will replace this with shell code automatically
-+# generated by other debhelper scripts.
-+
-+#DEBHELPER#
-+
-+# ez-ipupdate is a bit misbehaved.
-+db_stop
-+
-+exit 0
---- ez-ipupdate-3.0.11b8.orig/debian/config
-+++ ez-ipupdate-3.0.11b8/debian/config
-@@ -0,0 +1,165 @@
-+#!/bin/sh
-+
-+set -e
-+
-+# Source debconf library
-+. /usr/share/debconf/confmodule
-+
-+service_supports_wildcards()
-+{
-+    service=$1
-+    ret=1
-+
-+    case "$service" in
-+        ez-ip|dhs|dyndns|dyndns-static|easydns|easydns-partner)
-+            ret=0
-+        ;;
-+    esac
-+
-+    return $ret
-+}
-+
-+service_supports_mx()
-+{
-+    service=$1
-+    ret=1
-+
-+    case "$service" in
-+        ez-ip|dhs|dyndns|dyndns-static|easydns|zoneedit)
-+            ret=0
-+        ;;
-+    esac
-+
-+    return $ret
-+}
-+
-+service_needs_server()
-+{
-+    service=$1
-+    ret=1
-+
-+    case "$service" in
-+        gnudip)
-+            ret=0
-+        ;;
-+    esac
-+
-+    return $ret
-+}
-+
-+# I no longer claim this question, migrate it.
-+if db_get ez-ipupdate/daemon; then
-+    case "$RET" in
-+        true) db_set ez-ipupdate/ppp "false" ;;
-+        false) db_set ez-ipupdate/ppp "true" ;;
-+    esac
-+    db_unregister ez-ipupdate/daemon
-+fi
-+
-+# I no longer claim this question either.
-+if db_get ez-ipupdate/manage_default_config_automatically; then
-+    case "$RET" in
-+        false) db_set ez-ipupdate/service_type "configure manually" ;;
-+    esac
-+    db_unregister ez-ipupdate/manage_default_config_automatically
-+fi
-+
-+# Name the configuration file
-+conf=/etc/ez-ipupdate/default.conf
-+
-+# Do you want debconf to manage the default configuration?
-+if [ -f "$conf" ]; then
-+    service="`sed -ne 's/^service-type *= *//p' < $conf`"
-+fi
-+if [ -n "$service" ]; then
-+    db_set ez-ipupdate/service_type "$service"
-+fi
-+db_input high ez-ipupdate/service_type || true
-+db_go
-+
-+db_get ez-ipupdate/service_type
-+if [ "$RET" != "configure manually" ]; then
-+    if [ -f "$conf" ]; then
-+        # Grab existing values from config file
-+        if grep "^daemon" $conf > /dev/null 2>&1; then
-+            ppp="false"
-+        fi
-+        service="`sed -ne 's/^service-type *= *//p' < $conf`"
-+        server="`sed -ne 's/^server *= *//p' < $conf`"
-+        username="`sed -ne 's/^user *= *\([^:]*\):.*/\1/p' < $conf`"
-+        password="`sed -ne 's/^user *= *[^:]*://p' < $conf`"
-+        hostname="`sed -ne 's/^host *= *//p' < $conf`"
-+        interface="`sed -ne 's/^interface *= *//p' < $conf`"
-+        if grep "^wildcard" $conf > /dev/null 2>&1; then
-+            wildcard="true"
-+        fi
-+        dns_mx="`sed -ne 's/^mx *= *//p' < $conf`"
-+        # Poke the values into debconf
-+        if [ -n "$ppp" ]; then
-+            db_set ez-ipupdate/ppp "$ppp"
-+        fi
-+        if [ -n "$service" ]; then
-+            db_set ez-ipupdate/service_type "$service"
-+        fi
-+        if [ -n "$server" ]; then
-+            db_set ez-ipupdate/server "$server"
-+        fi
-+        if [ -n "$username" ]; then
-+            db_set ez-ipupdate/username "$username"
-+        fi
-+        if [ -n "$password" ]; then
-+            db_set ez-ipupdate/password "$password"
-+        fi
-+        if [ -n "$hostname" ]; then
-+            db_set ez-ipupdate/hostname "$hostname"
-+        fi
-+        if [ -n "$interface" ]; then
-+            db_set ez-ipupdate/interface "$interface"
-+        fi
-+        if [ "$wildcard" = true ]; then
-+            db_set ez-ipupdate/dns_wildcard true
-+        fi
-+        if [ -n "$dns_mx" ]; then
-+            db_set ez-ipupdate/dns_mx "$dns_mx"
-+        fi
-+    fi
-+    # Ask for new answers
-+    db_beginblock
-+    db_input high ez-ipupdate/ppp || true
-+    db_input high ez-ipupdate/username || true
-+    db_input high ez-ipupdate/password || true
-+    db_input high ez-ipupdate/hostname || true
-+    db_endblock
-+    db_go
-+    # Need to determine whether wildcards and MX records are supported
-+    # by the chosen service
-+    db_beginblock
-+    db_get ez-ipupdate/service_type
-+    service_type="$RET"
-+    if service_needs_server "$service_type"; then
-+        db_input high ez-ipupdate/server || true
-+    else
-+        db_set ez-ipupdate/server ""
-+    fi
-+    if service_supports_wildcards "$service_type"; then
-+        db_input medium ez-ipupdate/dns_wildcard || true
-+    else
-+        db_set ez-ipupdate/dns_wildcard false
-+    fi
-+    if service_supports_mx "$service_type"; then
-+        db_input medium ez-ipupdate/dns_mx || true
-+    else
-+        db_set ez-ipupdate/dns_mx ""
-+    fi
-+    db_endblock
-+    db_go
-+    # Check whether we really need to know the listening interface
-+    db_beginblock
-+    db_get ez-ipupdate/ppp
-+    ppp="$RET"
-+    if [ "$ppp" = "false" ]; then
-+        db_input high ez-ipupdate/interface || true
-+    fi
-+    db_endblock
-+    db_go
-+fi
---- ez-ipupdate-3.0.11b8.orig/debian/postrm
-+++ ez-ipupdate-3.0.11b8/debian/postrm
-@@ -0,0 +1,54 @@
-+#! /bin/sh
-+# postrm script for ez-ipupdate
-+#
-+# see: dh_installdeb(1)
-+
-+set -e
-+
-+# summary of how this script can be called:
-+#        * <postrm> `remove'
-+#        * <postrm> `purge'
-+#        * <old-postrm> `upgrade' <new-version>
-+#        * <new-postrm> `failed-upgrade' <old-version>
-+#        * <new-postrm> `abort-install'
-+#        * <new-postrm> `abort-install' <old-version>
-+#        * <new-postrm> `abort-upgrade' <old-version>
-+#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
-+# for details, see http://www.debian.org/doc/debian-policy/ or
-+# the debian-policy package
-+
-+#DEBHELPER#
-+
-+remove_var_run() {
-+    # Delete the user account, if it exists
-+    if id ez-ipupd 2>/dev/null 1>&2 ; then
-+        deluser ez-ipupd
-+        # The --remove-home option to deluser requires
-+        # perl-modules? WTF?
-+        rm -Rf /var/cache/ez-ipupdate
-+    fi
-+    # And remove the directory where the PID files were stored
-+    rm -rf /var/run/ez-ipupdate
-+}
-+
-+case "$1" in
-+  purge)
-+    rm -f /etc/ez-ipupdate/default.conf
-+    remove_var_run
-+    ;;
-+
-+  remove)
-+    remove_var_run
-+    ;;
-+
-+  upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-+    ;;
-+
-+  *)
-+    echo "postrm called with unknown argument \`$1'" >&2
-+    exit 1
-+    ;;
-+
-+esac
-+
-+exit 0
---- ez-ipupdate-3.0.11b8.orig/debian/preinst
-+++ ez-ipupdate-3.0.11b8/debian/preinst
-@@ -0,0 +1,35 @@
-+#! /bin/sh
-+# preinst script for ez-ipupdate
-+#
-+# see: dh_installdeb(1)
-+
-+set -e
-+
-+# summary of how this script can be called:
-+#        * <new-preinst> `install'
-+#        * <new-preinst> `install' <old-version>
-+#        * <new-preinst> `upgrade' <old-version>
-+#        * <old-preinst> `abort-upgrade' <new-version>
-+#
-+# for details, see http://www.debian.org/doc/debian-policy/ or
-+# the debian-policy package
-+
-+case "$1" in
-+  install|upgrade)
-+      ;;
-+
-+  abort-upgrade)
-+      ;;
-+
-+  *)
-+      echo "preinst called with unknown argument \`$1'" >&2
-+      exit 1
-+      ;;
-+esac
-+
-+# dh_installdeb will replace this with shell code automatically
-+# generated by other debhelper scripts.
-+
-+#DEBHELPER#
-+
-+exit 0
---- ez-ipupdate-3.0.11b8.orig/debian/prerm
-+++ ez-ipupdate-3.0.11b8/debian/prerm
-@@ -0,0 +1,37 @@
-+#! /bin/sh
-+# prerm script for ez-ipupdate
-+#
-+# see: dh_installdeb(1)
-+
-+set -e
-+
-+# summary of how this script can be called:
-+#        * <prerm> `remove'
-+#        * <old-prerm> `upgrade' <new-version>
-+#        * <new-prerm> `failed-upgrade' <old-version>
-+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
-+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
-+#          <package-being-installed> <version> `removing'
-+#          <conflicting-package> <version>
-+# for details, see http://www.debian.org/doc/debian-policy/ or
-+# the debian-policy package
-+
-+case "$1" in
-+  remove|upgrade|deconfigure)
-+      ;;
-+
-+  failed-upgrade)
-+      ;;
-+
-+  *)
-+      echo "prerm called with unknown argument \`$1'" >&2
-+      exit 1
-+      ;;
-+esac
-+
-+# dh_installdeb will replace this with shell code automatically
-+# generated by other debhelper scripts.
-+
-+#DEBHELPER#
-+
-+exit 0
---- ez-ipupdate-3.0.11b8.orig/debian/compat
-+++ ez-ipupdate-3.0.11b8/debian/compat
-@@ -0,0 +1 @@
-+4
---- ez-ipupdate-3.0.11b8.orig/debian/ez-ipupdate.ppp.ip-up
-+++ ez-ipupdate-3.0.11b8/debian/ez-ipupdate.ppp.ip-up
-@@ -0,0 +1,25 @@
-+#!/bin/sh
-+#
-+# Default ez-ipupdate ip-up script
-+# /etc/ppp/ip-up.d/ez-ipupdate
-+#
-+
-+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-+DAEMON=/usr/sbin/ez-ipupdate
-+NAME=ez-ipupdate
-+
-+[ -x $DAEMON ] || exit 0
-+
-+configs=`find "/etc/$NAME/" -name '*.conf' | sed -e 's,.*/\(.*\).conf,\1,'`
-+[ x"$configs" = x ] && exit 0
-+
-+for config in `echo "$configs"`
-+do
-+    # Don't run daemon configurations
-+    if grep -q '^ *daemon' "/etc/$NAME/$config.conf"; then continue; fi
-+    # Don't run configurations that run in the foreground
-+    if grep -q '^ *foreground' "/etc/$NAME/$config.conf"; then continue; fi
-+    # Ok, launch an ez-ipupdate instance
-+    "$DAEMON" -c "/etc/$NAME/$config.conf"
-+done
-+
---- ez-ipupdate-3.0.11b8.orig/ez-ipupdate.8
-+++ ez-ipupdate-3.0.11b8/ez-ipupdate.8
-@@ -0,0 +1,140 @@
-+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.29.
-+.\" I DO WHATEVER I WANT YOU DUMBASS SCRIPT!  -- Sam
-+.TH EZ-IPUPDATE "8" "February 2003" "ez-ipupdate - 3.0.11b7" "Dynamic DNS client"
-+.SH NAME
-+ez-ipupdate \- dynamic DNS client
-+.SH SYNOPSIS
-+.B ez-ipupdate
-+.RI [ options ]
-+.SH DESCRIPTION
-+This manual page documents briefly the
-+.B ez-ipupdate
-+dynamic DNS client.
-+
-+.SH OPTIONS
-+.B ez-ipupdate
-+follows the usual GNU command line syntax, with long
-+options starting with two dashes (`-').
-+.TP
-+\fB\-a\fR, \fB\-\-address\fR <ip address>
-+string to send as your ip address
-+.TP
-+\fB\-b\fR, \fB\-\-cache\-file\fR <file>
-+file to use for caching the ipaddress
-+.TP
-+\fB\-c\fR, \fB\-\-config\-file\fR <file>
-+configuration file, almost all arguments can be
-+given with: <name>[=<value>]
-+to see a list of possible config commands
-+try "echo help | ez-ipupdate \fB\-c\fR -"
-+.TP
-+\fB\-d\fR, \fB\-\-daemon\fR
-+run as a daemon periodicly updating if
-+necessary
-+.TP
-+\fB\-e\fR, \fB\-\-execute\fR <command>
-+shell command to execute after a successful
-+update
-+.TP
-+\fB\-f\fR, \fB\-\-foreground\fR
-+when running as a daemon run in the foreground
-+.TP
-+\fB\-F\fR, \fB\-\-pidfile\fR <file>
-+use <file> as a pid file
-+.TP
-+\fB\-g\fR, \fB\-\-request\-uri\fR <uri>
-+URI to send updates to
-+.TP
-+\fB\-h\fR, \fB\-\-host\fR <host>
-+string to send as host parameter
-+.TP
-+\fB\-i\fR, \fB\-\-interface\fR <iface>
-+which interface to use
-+.TP
-+\fB\-L\fR, \fB\-\-cloak_title\fR <host>
-+some stupid thing for DHS only
-+.TP
-+\fB\-m\fR, \fB\-\-mx\fR <mail exchange>
-+string to send as your mail exchange
-+.HP
-+\fB\-M\fR, \fB\-\-max\-interval\fR <# of sec> max time in between updates
-+.TP
-+\fB\-N\fR, \fB\-\-notify\-email\fR <email>
-+address to send mail to if bad things happen
-+.TP
-+\fB\-o\fR, \fB\-\-offline\fR
-+set to off line mode
-+.TP
-+\fB\-p\fR, \fB\-\-resolv\-period\fR <sec>
-+period to check IP if it can't be resolved
-+.TP
-+\fB\-P\fR, \fB\-\-period\fR <# of sec>
-+period to check IP in daemon
-+mode (default: 1800 seconds)
-+.TP
-+\fB\-q\fR, \fB\-\-quiet\fR
-+be quiet
-+.TP
-+\fB\-r\fR, \fB\-\-retrys\fR <num>
-+number of trys (default: 1)
-+.TP
-+\fB\-R\fR, \fB\-\-run\-as\-user\fR <user>
-+change to <user> for running, be ware
-+that this can cause problems with handeling
-+SIGHUP properly if that user can't read the
-+config file. also it can't write it's pid file
-+to a root directory
-+.TP
-+\fB\-Q\fR, \fB\-\-run\-as\-euser\fR <user>
-+change to effective <user> for running,
-+this is NOT secure but it does solve the
-+problems with run-as-user and config files and
-+pid files.
-+.TP
-+\fB\-s\fR, \fB\-\-server\fR <server[:port]>
-+the server to connect to
-+.TP
-+\fB\-S\fR, \fB\-\-service\-type\fR <server>
-+the type of service that you are using
-+try one of: null ezip pgpow dhs
-+dyndns dyndns-static dyndns-custom
-+ods tzo easydns easydns-partner
-+gnudip justlinux dyns hn zoneedit
-+heipv6tb
-+.TP
-+\fB\-t\fR, \fB\-\-timeout\fR <sec.millisec>
-+the amount of time to wait on I/O
-+.TP
-+\fB\-T\fR, \fB\-\-connection\-type\fR <num>
-+number sent to TZO as your connection
-+type (default: 1)
-+.TP
-+\fB\-U\fR, \fB\-\-url\fR <url>
-+string to send as the url parameter
-+.TP
-+\fB\-u\fR, \fB\-\-user\fR <user[:passwd]>
-+user ID and password, if either is left blank
-+they will be prompted for
-+.TP
-+\fB\-w\fR, \fB\-\-wildcard\fR
-+set your domain to have a wildcard alias
-+.TP
-+\fB\-z\fR, \fB\-\-partner\fR <partner>
-+specify easyDNS partner (for easydns-partner
-+services)
-+.TP
-+\fB\-\-help\fR
-+display this help and exit
-+.TP
-+\fB\-\-version\fR
-+output version information and exit
-+.TP
-+\fB\-\-credits\fR
-+print the credits and exit
-+.TP
-+\fB\-\-signalhelp\fR
-+print help about signals
-+.br
-+.SH AUTHOR
-+This manual page was written by Sam Hocevar <sam@zoy.org> for the Debian
-+GNU/Linux system (but may be used by others).
diff --git a/ez-ipupdate/patches/ez-ipupdate-3.0.11b8-pidfile.patch b/ez-ipupdate/patches/ez-ipupdate-3.0.11b8-pidfile.patch
deleted file mode 100644 (file)
index 65d5ab2..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/ez-ipupdate.c    2003-05-27 17:48:26.000000000 +0300
-+++ b/ez-ipupdate.c    2003-05-27 19:28:38.000000000 +0300
-@@ -629,7 +629,7 @@
- #endif
-   fprintf(stdout, "  -e, --execute <command>\tshell command to execute after a successful\n\t\t\t\tupdate\n");
-   fprintf(stdout, "  -f, --foreground\t\twhen running as a daemon run in the foreground\n");
--  fprintf(stdout, "  -F, --pidfile <file>\t\tuse <file> as a pid file\n");
-+  fprintf(stdout, "  -F, --pid-file <file>\t\tuse <file> as a pid file\n");
-   fprintf(stdout, "  -g, --request-uri <uri>\tURI to send updates to\n");
-   fprintf(stdout, "  -h, --host <host>\t\tstring to send as host parameter\n");
-   fprintf(stdout, "  -i, --interface <iface>\twhich interface to use\n");
diff --git a/fastd/fastd.nm b/fastd/fastd.nm
new file mode 100644 (file)
index 0000000..23563cf
--- /dev/null
@@ -0,0 +1,53 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = fastd
+version    = 16
+release    = 1
+
+groups     = Networking/VPN
+url        = https://projects.universe-factory.net/projects/fastd/wiki
+license    = BSD
+summary    = Fast and Secure Tunnelling Daemon
+
+description
+       fastd is a fast and secure tunneling daemon that is designed
+       to run on embedded devices.
+end
+
+source_dl  =
+sources    = %{thisapp}.tar.xz
+
+build
+       requires
+               bison >= 2.5
+               cmake >= 3.0
+               json-c-devel
+               libcap-devel
+               libsodium-devel
+               libuecc-devel
+               openssl-devel
+       end
+
+       if "%{DISTRO_ARCH}" == "i686"
+               build_options = \
+                       -DWITH_CIPHER_SALSA2012_XMM=OFF \
+                       -DWITH_CIPHER_SALSA20_XMM=OFF \
+                       -DWITH_MAC_GHASH_PCLMULQDQ=OFF
+       end
+
+       build
+               %{cmake} %{build_options} .
+               make %{PARALLELISMFLAGS}
+       end
+end
+
+packages
+       package %{name}
+
+       package %{name}-debuginfo
+               template DEBUGINFO
+       end
+end
index 75b6970beaf6b40ab0d615779695cc3e0d7654e2..e3ac2a214423c818371ce14d335f0ade98f75906 100644 (file)
@@ -3,11 +3,11 @@
 # Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
 ###############################################################################
 
-# Configure build to compile with cloog and ppl.
-build_cloog_ppl = 1
+# Configure build to compile with cloog.
+build_cloog = 1
 
 name       = gcc
-version    = 4.8.1
+version    = 4.9.2
 release    = 1
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
@@ -22,15 +22,17 @@ description
 end
 
 # This is the at least required version of binutils.
-required_binutils_version = 2.21.51.0.8-1
+binutils_version = 2.24
+cloog_version    = 0.18.1
 
 source_dl  = http://ftp.gnu.org/gnu/gcc/%{thisapp}/
+source_dl += ftp://gcc.gnu.org/pub/gcc/infrastructure/
 sources    = %{thisapp}.tar.gz
 
 build
        requires
                autogen
-               binutils >= %{required_binutils_version}
+               binutils >= %{binutils_version}
                dejagnu
                elfutils-devel
                expect
@@ -47,17 +49,23 @@ build
        end
 
        # If cloog support is enabled, we require the devel packages for build.
-       if "%{build_cloog_ppl}" == "1"
-               requires += cloog-ppl-devel >= 0.15.11-2
-               requires += ppl-devel >= 1.0
+       if "%{build_cloog}" == "1"
+               requires += cloog-devel >= %{cloog_version}
+               requires += isl-devel
        end
 
        # Build libquadmath (only on x86).
        build_libquadmath = 0
 
+       # Build liblsan (only on x86_64).
+       build_liblsan = 0
+
        # Build libtasn (only on x86_64).
        build_libtsan = 0
 
+       # Build libcilkrts (only x86)
+       build_libcilkrts = 0
+
        # A couple of configure arguments depending on the architecture and
        # configuration.
        configure_options =
@@ -68,13 +76,16 @@ build
                configure_options = --disable-multilib
 
                build_libquadmath = 1
+               build_liblsan = 1
                build_libtsan = 1
+               build_libcilkrts = 1
        end
 
        if "%{DISTRO_ARCH}" == "i686"
                configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic
 
                build_libquadmath = 1
+               build_libcilkrts = 1
        end
 
        if "%{DISTRO_ARCH}" == "armv5tel"
@@ -98,9 +109,11 @@ build
                        --with-abi=aapcs-linux
        end
 
-       if "%{build_cloog_ppl}" == "1"
-               configure_options += --with-cloog --with-ppl \
-                       --disable-ppl-version-check
+       if "%{build_cloog}" == "1"
+               configure_options += \
+                       --with-cloog=%{prefix} \
+                       --with-isl=%{prefix} \
+                       --enable-cloog-backend=isl
        end
 
        # CFLAGS for hardening.
@@ -163,10 +176,20 @@ build
                CFLAGS="%{CFLAGS}"
                CFLAGS=$(echo ${CFLAGS} | sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g')
                CFLAGS=$(echo ${CFLAGS} | sed -e 's/-m64//g;s/-m32//g;s/-m31//g')
+               CFLAGS=$(echo ${CFLAGS} | sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g')
                CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g')
                CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g')
                CFLAGS=$(echo "${CFLAGS}" | sed -e 's/[[:blank:]]\+/ /g')
                CXXFLAGS=$(echo  ${CFLAGS} | sed -e 's/ -Wall//g')
+               CXXFLAGS=$(echo  ${CXXFLAGS} | sed -e 's/ -fexceptions / /g')
+               CXXFLAGS=$(echo  ${CXXFLAGS} | sed -e 's/ -Werror=format-security / -Wformat -Werror=format-security /g')
+
+               case "${CFLAGS}" in
+                       *-fasynchronous-unwind-tables*)
+                               sed -i -e "s/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/" \
+                                       ../%{thisapp}/Makefile.in
+                               ;;
+               esac
 
                CFLAGS="${CFLAGS}" \
                CXXFLAGS="${CXXFLAGS}" \
@@ -188,7 +211,6 @@ build
                        --enable-checking=release \
                        --disable-werror \
                        --disable-libssp \
-                       --disable-static \
                        --with-system-zlib \
                        --with-bugurl=http://bugtracker.ipfire.org \
                        --disable-libunwind-exceptions \
@@ -197,8 +219,12 @@ build
                        --with-linker-hash-style=gnu \
                        --enable-plugin \
                        --enable-initfini-array \
+                       --disable-libgcj \
                        %{configure_options}
 
+               # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58012
+               # XXX disabled flags: --disable-static
+
                # GCC does not support a parallel build.
                make %{make_bootstrap} BOOT_CFLAGS="${CFLAGS}"
 
@@ -212,7 +238,7 @@ build
        end
 
        #test
-       #       cd %{DIR_SRC}/gcc-build && make check
+       #       cd %{DIR_SRC}/gcc-build && make -k check || true
        #       cd %{DIR_APP} && ./contrib/test_summary
        #end
 
@@ -265,12 +291,7 @@ build
                chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.*
 
                # libstdc++
-               ln -svf ../../../libstdc++.so.6.0.18 ${FULLPATH}/libstdc++.so
-
-               # libmudflap
-               ln -svf ../../../libmudflap.so.0.0.0 ${FULLPATH}/libmudflap.so
-               ln -svf ../../../libmudflapth.so.0.0.0 ${FULLPATH}/libmudflapth.so
-               chmod 755 %{BUILDROOT}%{libdir}/libmudflap{,th}.so.0.*
+               ln -svf ../../../libstdc++.so.6.0.20 ${FULLPATH}/libstdc++.so
 
                # libquadmath
                if [ "%{build_libquadmath}" = "1" ]; then
@@ -282,6 +303,28 @@ build
                mv -vf %{BUILDROOT}%{libdir}/libitm.spec ${FULLPATH}/
                ln -svf ../../../libitm.so.1.0.0 ${FULLPATH}/libitm.so
                chmod 755 %{BUILDROOT}%{libdir}/libitm.so.1.*
+
+               # liblsan
+               if [ "%{build_liblsan}" = "1" ]; then
+                       ln -svf ../../../liblsan.so.0.0.0 ${FULLPATH}/liblsan.so
+                       chmod 755 %{BUILDROOT}%{libdir}/liblsan.so.*
+               fi
+
+               # libtsan
+               if [ "%{build_libtsan}" = "1" ]; then
+                       ln -svf ../../../libtsan.so.0.0.0 ${FULLPATH}/libtsan.so
+                       chmod 755 %{BUILDROOT}%{libdir}/libtsan.so.*
+               fi
+
+               # libubsan
+               ln -svf ../../../libubsan.so.0.0.0 ${FULLPATH}/libubsan.so
+               chmod 755 %{BUILDROOT}%{libdir}/libubsan.so.*
+
+               # libcilkrts
+               if [ "%{build_libcilkrts}" = "1" ]; then
+                       ln -svf ../../../libcilkrts.so.5.0.0 ${FULLPATH}/libcilkrts.so
+                       chmod 755 %{BUILDROOT}%{libdir}/libcilkrts.so.5.*
+               fi
        end
 
        keep_libraries
@@ -295,7 +338,7 @@ packages
                groups += Build
 
                requires
-                       binutils >= %{required_binutils_version}
+                       binutils >= %{binutils_version}
                        filesystem >= 002
                        glibc >= 2.16
                        glibc-devel
@@ -309,8 +352,8 @@ packages
                provides += libgcc-devel = %{thisver}
                obsoletes += libgcc-devel < %{thisver}
 
-               if "%{build_cloog_ppl}" == "1"
-                       requires += cloog-ppl >= 0.15
+               if "%{build_cloog}" == "1"
+                       requires += cloog >= %{cloog_version}
                end
        end
 
@@ -382,6 +425,11 @@ packages
                files
                        %{libdir}/libgcc*.so.*
                end
+
+               obsoletes
+                       libmudflap
+                       libmudflap-devel
+               end
        end
 
        package libstdc++
@@ -426,41 +474,6 @@ packages
                end
        end
 
-       package libmudflap
-               summary = GCC mudflap shared support library.
-               description
-                       This package contains GCC shared support library which is needed
-                       for mudflap support.
-               end
-
-               files
-                       %{libdir}/libmudflap*.so.*
-               end
-       end
-
-       package libmudflap-devel
-               summary = Development files for GCC mudflap support.
-               description
-                       This package contains headers for building mudflap-instrumented programs.
-
-                       To instrument a non-threaded program, add -fmudflap
-                       option to GCC and when linking add -lmudflap, for threaded programs
-                       also add -fmudflapth and -lmudflapth.
-               end
-
-               requires
-                       libmudflap = %{thisver}
-               end
-
-               files
-                       %{libdir}/libmudflap.so
-                       %{libdir}/libmudflapth.so
-                       %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/mf-runtime.h
-                       %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflap.so
-                       %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflapth.so
-               end
-       end
-
        if "%{build_libquadmath}" == "1"
                package libquadmath
                        summary = GCC __float128 shared support library.
@@ -548,7 +561,7 @@ packages
                end
 
                files
-                       %{libdir}/libasan.so.0*
+                       %{libdir}/libasan.so.1*
                end
        end
 
@@ -566,6 +579,45 @@ packages
                end
        end
 
+       package libubsan
+               summary = The Undefined Behavior Sanitizer runtime library
+               description
+                       This package contains the Undefined Behavior Sanitizer library
+                       which is used for -fsanitize=undefined instrumented programs.
+               end
+
+               files
+                       %{libdir}/libubsan.so.0*
+               end
+       end
+
+       if "%{build_liblsan}" == "1"
+               package liblsan
+                       summary = The Leak Sanitizer runtime library
+                       description
+                               This package contains the Leak Sanitizer library
+                               which is used for -fsanitize=leak instrumented programs.
+                       end
+
+                       files
+                               %{libdir}/liblsan.so.0*
+                       end
+               end
+       end
+
+       if "%{build_libcilkrts}" == "1"
+               package libcilkrts
+                       summary = The Cilk+ runtime library
+                       description
+                               This package contains the Cilk+ runtime library.
+                       end
+
+                       files
+                               %{libdir}/libcilkrts.so.5*
+                       end
+               end
+       end
+
        package gcc-plugin-devel
                summary = Support for compiling GCC plugins.
                description
diff --git a/gcc/patches/01_all_gcc49_configure.patch b/gcc/patches/01_all_gcc49_configure.patch
new file mode 100644 (file)
index 0000000..ab9aae0
--- /dev/null
@@ -0,0 +1,156 @@
+2013-12-30  Magnus Granberg <zorry@gentoo.org>
+
+       * gcc/configure.ac              Add --enable-esp and define ENABLE_ESP.
+       Check if we support crtbeginP and define ENABLE_CRTBEGINP.
+       * gcc/configure Regenerated
+
+
+--- a/gcc/configure.ac 2011-11-18 11:52:32.000000000 +0100
++++ b/gcc/configure.ac 2012-10-02 17:39:15.649526241 +0200
+@@ -5130,6 +5237,55 @@ if test x"${LINKER_HASH_STYLE}" != x; th
+                                          [The linker hash style])
+ fi
++# --------------
++# Esp checks
++# --------------
++
++# Check whether --enable-esp was given and target have the support.
++AC_ARG_ENABLE([esp],
++[AS_HELP_STRING([--enable-esp],
++               [Enable Stack protector and Position independent executable as
++                default if we have suppot for it when compiling
++                and link with -z now as default.
++                Linux targets supported i*86, x86_64, x32,
++                powerpc, powerpc64, ia64, arm and mips.])],
++  enable_esp=$enableval,
++  enable_esp=no)
++if test $enable_esp = yes ; then
++  AC_MSG_CHECKING(if $target support esp)
++  case "$target" in
++    i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips-*-linux* | arm*-*-linux* | ia64-*-linux*)
++      enable_esp=yes
++      AC_DEFINE(ENABLE_ESP, 1,
++        [Define if your target support esp and you have enable it.])
++      ;;
++    *)
++      enable_esp=no
++      ;;
++  esac
++AC_MSG_RESULT($enable_esp)
++fi
++AC_SUBST([enable_esp])
++if test $enable_esp = yes ; then
++  AC_MSG_CHECKING(checking for crtbeginP.o support)
++    if test x$enable_esp = xyes ; then
++      case "$target" in
++        ia64*-*-linux*)
++          enable_crtbeginP=no ;;
++        *-*-linux*)
++          if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then
++            enable_crtbeginP=yes
++            AC_DEFINE(ENABLE_CRTBEGINP, 1,
++              [Define if your compiler will support crtbeginP.])
++          fi
++          ;;
++        *) enable_crtbeginP=no ;;
++      esac
++    fi
++  AC_MSG_RESULT($enable_crtbeginP)
++fi
++AC_SUBST([enable_crtbeginP])
++
+ # Configure the subdirectories
+ # AC_CONFIG_SUBDIRS($subdirs)
+--- a/gcc/configure    2013-02-01 21:26:24.000000000 +0100
++++ b/gcc/configure    2013-02-12 01:59:20.000000000 +0100
+@@ -600,6 +600,8 @@
+ ac_subst_vars='LTLIBOBJS
+ LIBOBJS
+ PICFLAG
++enable_crtbeginP
++enable_esp
+ enable_host_shared
+ enable_plugin
+ pluginlibs
+@@ -920,6 +922,7 @@
+ enable_plugin
+ enable_libquadmath_support
+ with_linker_hash_style
++enable_esp
+ '
+       ac_precious_vars='build_alias
+ host_alias
+@@ -1633,6 +1636,11 @@
+   --enable-plugin         enable plugin support
+   --disable-libquadmath-support
+                           disable libquadmath support for Fortran
++  --enable-esp            Enable Stack protector and Position independent
++                          executable as default if we have suppot for it when
++                          compiling and link with -z now as default.
++                          Linux targets supported i*86, x86_64, x32,
++                          powerpc, powerpc64, ia64, arm and mips.
+ Optional Packages:
+   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+@@ -27419,6 +27427,59 @@
+ fi
++# --------------
++# Esp checks
++# --------------
++
++# Check whether --enable-esp was given and target have the support.
++# Check whether --enable-esp was given.
++if test "${enable_esp+set}" = set; then :
++  enableval=$enable_esp; enable_esp=$enableval
++else
++  enable_esp=no
++fi
++
++if test $enable_esp = yes ; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $target support esp" >&5
++$as_echo_n "checking if $target support esp... " >&6; }
++  case "$target" in
++    i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips*-*-linux* | arm*-*-linux* | ia64-*-linux*)
++      enable_esp=yes
++
++$as_echo "#define ENABLE_ESP 1" >>confdefs.h
++
++      ;;
++    *)
++      enable_esp=no
++      ;;
++  esac
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_esp" >&5
++$as_echo "$enable_esp" >&6; }
++fi
++
++if test $enable_esp = yes ; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking checking for crtbeginP.o support" >&5
++$as_echo_n "checking checking for crtbeginP.o support... " >&6; }
++    if test x$enable_esp = xyes ; then
++      case "$target" in
++        ia64*-*-linux*)
++          enable_crtbeginP=no ;;
++        *-*-linux*)
++          if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then
++            enable_crtbeginP=yes
++
++$as_echo "#define ENABLE_CRTBEGINP 1" >>confdefs.h
++
++          fi
++          ;;
++        *) enable_crtbeginP=no ;;
++      esac
++    fi
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_crtbeginP" >&5
++$as_echo "$enable_crtbeginP" >&6; }
++fi
++
++
+ # Configure the subdirectories
+ # AC_CONFIG_SUBDIRS($subdirs)
diff --git a/gcc/patches/02_all_gcc48_config.in.patch0 b/gcc/patches/02_all_gcc48_config.in.patch0
new file mode 100644 (file)
index 0000000..3b4747b
--- /dev/null
@@ -0,0 +1,32 @@
+2013-02-13     Magnus Granberg         <zorry@gentoo.org>
+
+               * gcc/config.in Add ENABLE_CRTBEGINP, ENABLE_ESP
+
+--- gcc/config.in      2009-04-21 11:08:08.000000000 +0200
++++ gcc/config.in      2009-05-12 00:10:08.000000000 +0200
+@@ -46,6 +46,12 @@
+ #endif
++/* Define to 1 to enable crtbeginP.o. */
++#ifndef USED_FOR_TARGET
++#undef ENABLE_CRTBEGINP
++#endif
++
++
+ /* Define to 1 to specify that we are using the BID decimal floating point
+    format instead of DPD */
+ #ifndef USED_FOR_TARGET
+@@ -65,6 +65,12 @@
+ #endif
++/* Define to 1 to enable esp. */
++#ifndef USED_FOR_TARGET
++#undef ENABLE_ESP
++#endif
++
++
+ /* Define to 1 to enable fixed-point arithmetic extension to C. */
+ #ifndef USED_FOR_TARGET
+ #undef ENABLE_FIXED_POINT
diff --git a/gcc/patches/03_all_gcc49_Makefile.in.patch b/gcc/patches/03_all_gcc49_Makefile.in.patch
new file mode 100644 (file)
index 0000000..bf53d3c
--- /dev/null
@@ -0,0 +1,96 @@
+2012-01-17     Magnus Granberg         <zorry@gentoo.org>
+
+               * gcc/Makefile.in       Add -fno-PIE. to ALL_CFLAGS and
+                       ALL_CXXFLAGS if enable_esp yes.
+                       Echo enable_esp and enable_crtbeginP to tmp-libgcc.mvars.
+               * libgcc/Makefile.in    Add crtbeginP.o to EXTRA_PARTS if enable_crtbeginP yes
+                       We add new file crtbeginP.o if enable_crtbeginP yes
+                       Add -fno-PIE. to CRTSTUFF_CFLAGS.
+
+--- a/gcc/Makefile.in  2011-11-09 02:20:14.000000000 +0100
++++ b/gcc/Makefile.in  2011-12-24 22:28:08.864804375 +0100
+@@ -247,6 +247,14 @@ LINKER_FLAGS = $(CFLAGS)
+ endif
+ endif
++# We don't want to compile the compiler with -fPIE, it make PCH fail.
++enable_esp = @enable_esp@
++ifeq ($(enable_esp),yes)
++ESP_NOPIE_CFLAGS = -fno-PIE
++else
++ESP_NOPIE_CFLAGS=
++endif
++
+ # -------------------------------------------
+ # Programs which operate on the build machine
+ # -------------------------------------------
+@@ -974,12 +982,13 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@
+ # This is the variable actually used when we compile. If you change this,
+ # you probably want to update BUILD_CFLAGS in configure.ac
+-ALL_CFLAGS = $(T_CFLAGS) $(CFLAGS-$@) \
++ALL_CFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) \
+   $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@
+ # The C++ version.
+-ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) $(INTERNAL_CFLAGS) \
+-  $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) $(WARN_CXXFLAGS) @DEFS@
++ALL_CXXFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) \
++  $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) \
++  $(WARN_CXXFLAGS) @DEFS@
+ # Likewise.  Put INCLUDES at the beginning: this way, if some autoconf macro
+ # puts -I options in CPPFLAGS, our include files in the srcdir will always
+@@ -1814,6 +1823,8 @@ libgcc.mvars: config.status Makefile spe
+       echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars
+       echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars
+       echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars
++      echo enable_esp = '$(enable_esp)' >> tmp-libgcc.mvars
++      echo enable_crtbeginP = '@enable_crtbeginP@' >> tmp-libgcc.mvars
+       mv tmp-libgcc.mvars libgcc.mvars
+--- a/libgcc/Makefile.in       2011-11-22 04:01:02.000000000 +0100
++++ b/libgcc/Makefile.in       2011-12-25 15:18:22.449610631 +0100
+@@ -219,6 +219,17 @@ else
+ DECNUMINC =
+ endif
++ifeq ($(enable_esp),yes)
++ESP_NOPIE_CFLAGS = -fno-PIE
++else
++ESP_NOPIE_CFLAGS=
++endif
++
++# We add crtbeginP.o to the EXTRA_PARTS list if enable_crtbeginP = yes
++ifeq ($(enable_crtbeginP),yes)
++EXTRA_PARTS += crtbeginP.o
++endif
++
+ # Options to use when compiling libgcc2.a.
+ #
+ LIBGCC2_DEBUG_CFLAGS = -g
+@@ -279,7 +290,7 @@ INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CF
+ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
+   -finhibit-size-directive -fno-inline -fno-exceptions \
+   -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
+-  -fno-stack-protector \
++  -fno-stack-protector $(ESP_NOPIE_CFLAGS) \
+   $(INHIBIT_LIBC_CFLAGS)
+ # Extra flags to use when compiling crt{begin,end}.o.
+@@ -966,6 +977,13 @@ crtendS$(objext): $(srcdir)/crtstuff.c
+ # This is a version of crtbegin for -static links.
+ crtbeginT$(objext): $(srcdir)/crtstuff.c
+       $(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN -DCRTSTUFFT_O
++
++# This is a version of crtbegin for -static -fPIE links.
++ifeq ($(enable_crtbeginP),yes)
++crtbeginP$(objext): $(srcdir)/crtstuff.c
++      $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) \
++        -c $< -DCRT_BEGIN -DCRTSTUFFT_O -DCRTSTUFFS_O
++endif
+ ifeq ($(enable_vtable_verify),yes)
+ # These are used in vtable verification; see comments in source files for
\ No newline at end of file
diff --git a/gcc/patches/04_all_gcc49_default_ssp.patch b/gcc/patches/04_all_gcc49_default_ssp.patch
new file mode 100644 (file)
index 0000000..50e2645
--- /dev/null
@@ -0,0 +1,261 @@
+2014-04-27  Magnus Granberg  <zorry@gentoo.org>
+
+       Patch orig: Debian/Ubuntu
+       # 484714
+       We Add -fstack-protector-strong as default and change
+       ssp-buffer-size
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -3238,6 +3238,9 @@ case $build in
+     esac ;;
+ esac
++# Needed when we build with -fstack-protector as default.
++stage1_cflags="$stage1_cflags -fno-stack-protector"
++
+ AC_SUBST(stage1_cflags)
+ # Enable --enable-checking in stage1 of the compiler.
+--- a/configure
++++ b/configure
+@@ -14453,7 +14453,8 @@ case $build in
+     esac ;;
+ esac
+-
++# Needed when we build with -fstack-protector as default.
++stage1_cflags="$stage1_cflags -fno-stack-protector"
+ # Enable --enable-checking in stage1 of the compiler.
+ # Check whether --enable-stage1-checking was given.
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -362,7 +362,7 @@ BUILD_PREFIX_1 = @BUILD_PREFIX_1@
+ # Flags to pass to stage2 and later makes.  They are defined
+ # here so that they can be overridden by Makefile fragments.
+-BOOT_CFLAGS= -g -O2
++BOOT_CFLAGS= -g -O2 -fno-stack-protector
+ BOOT_LDFLAGS=
+ BOOT_ADAFLAGS= -gnatpg
+@@ -408,9 +408,9 @@ GNATMAKE = @GNATMAKE@
+ CFLAGS = @CFLAGS@
+ LDFLAGS = @LDFLAGS@
+-LIBCFLAGS = $(CFLAGS)
++LIBCFLAGS = $(CFLAGS) -fno-stack-protector
+ CXXFLAGS = @CXXFLAGS@
+-LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
++LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -fno-stack-protector
+ GOCFLAGS = $(CFLAGS)
+ TFLAGS =
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -9239,6 +9251,11 @@ Like @option{-fstack-protector} but incl
+ be protected --- those that have local array definitions, or have
+ references to local frame addresses.
++NOTE: In Gentoo GCC 4.9.0 and later versions this option is enabled by default
++for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector}, 
++@option{-nostdlib}, @option{-ffreestanding}, @option{-fstack-protector}, 
++@option{-fstack-protector-strong}or @option{-fstack-protector-all}are found.
++
+ @item -fsection-anchors
+ @opindex fsection-anchors
+ Try to reduce the number of symbolic address calculations by using
+@@ -9461,6 +9465,9 @@
+ The minimum size of buffers (i.e.@: arrays) that receive stack smashing
+ protection when @option{-fstack-protection} is used.
++NOTE: In Gentoo this is change from "8" to "4", to increase
++the number of functions protected by the stack protector.
++
+ @item max-jump-thread-duplication-stmts
+ Maximum number of statements allowed in a block that needs to be
+ duplicated when threading jumps.
+--- a/gcc/cp/lang-specs.h
++++ b/gcc/cp/lang-specs.h
+@@ -46,7 +46,7 @@ along with GCC; see the file COPYING3.  If not see
+               %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+             %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-      %(cc1_options) %2\
++      %(cc1_options) %(ssp_default) %2\
+       %{!fsyntax-only:%{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\
+         %W{o*:--output-pch=%*}}%V}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+@@ -57,11 +57,11 @@ along with GCC; see the file COPYING3.  If not see
+               %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+             %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-      %(cc1_options) %2\
++      %(cc1_options) %(ssp_default) %2\
+        %{!fsyntax-only:%(invoke_as)}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {".ii", "@c++-cpp-output", 0, 0, 0},
+   {"@c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1plus -fpreprocessed %i %(cc1_options) %2\
++    cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -651,6 +651,19 @@ proper position among the other output files.  */
+ #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
+ #endif
++#ifndef SSP_DEFAULT_SPEC
++#if defined ( TARGET_LIBC_PROVIDES_SSP ) && defined ( EFAULT_SSP )
++#define SSP_DEFAULT_SPEC "%{fno-stack-protector|fstack-protector| \
++  fstack-protector-strong|fstack-protector-all| \
++  ffreestanding|nostdlib:;:-fstack-protector-strong}"
++/* Add -fno-stack-protector for the use of gcc-specs-ssp.  */
++#define CC1_SSP_DEFAULT_SPEC "%{!fno-stack-protector:}"
++#else
++#define SSP_DEFAULT_SPEC ""
++#define CC1_SSP_DEFAULT_SPEC ""
++#endif
++#endif
++
+ #ifndef LINK_SSP_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector:}"
+@@ -771,7 +781,7 @@ proper position among the other output f
+ static const char *asm_debug = ASM_DEBUG_SPEC;
+ static const char *cpp_spec = CPP_SPEC;
+-static const char *cc1_spec = CC1_SPEC;
++static const char *cc1_spec = CC1_SPEC CC1_SSP_DEFAULT_SPEC;
+ static const char *cc1plus_spec = CC1PLUS_SPEC;
+ static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
+ static const char *link_ssp_spec = LINK_SSP_SPEC;
+@@ -777,6 +785,8 @@ static const char *cc1_spec = CC1_SPEC;
+ static const char *cc1plus_spec = CC1PLUS_SPEC;
+ static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
+ static const char *link_ssp_spec = LINK_SSP_SPEC;
++static const char *ssp_default_spec = SSP_DEFAULT_SPEC;
++static const char *cc1_ssp_default_spec = CC1_SSP_DEFAULT_SPEC;
+ static const char *asm_spec = ASM_SPEC;
+ static const char *asm_final_spec = ASM_FINAL_SPEC;
+ static const char *link_spec = LINK_SPEC;
+@@ -835,7 +844,7 @@ static const char *cpp_unique_options =
+ static const char *cpp_options =
+ "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+  %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\
+- %{undef} %{save-temps*:-fpch-preprocess}";
++ %{undef} %{save-temps*:-fpch-preprocess} %(ssp_default)";
+ /* This contains cpp options which are not passed when the preprocessor
+    output will be used by another program.  */
+@@ -1015,9 +1024,9 @@ static const struct compiler default_compilers[] =
+       %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
+         %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
+           cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
+-        %(cc1_options)}\
++        %(cc1_options) %(ssp_default)}\
+       %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
+-        cc1 %(cpp_unique_options) %(cc1_options)}}}\
++        cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\
+       %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1},
+   {"-",
+    "%{!E:%e-E or -x required when input is from standard input}\
+@@ -1040,7 +1049,7 @@ static const struct compiler default_compilers[] =
+                     %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
+   {".i", "@cpp-output", 0, 0, 0},
+   {"@cpp-output",
+-   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
++   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {".s", "@assembler", 0, 0, 0},
+   {"@assembler",
+    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
+@@ -1267,6 +1276,8 @@ static struct spec_list static_specs[] =
+   INIT_STATIC_SPEC ("cc1plus",                        &cc1plus_spec),
+   INIT_STATIC_SPEC ("link_gcc_c_sequence",    &link_gcc_c_sequence_spec),
+   INIT_STATIC_SPEC ("link_ssp",                       &link_ssp_spec),
++  INIT_STATIC_SPEC ("ssp_default",            &ssp_default_spec),
++  INIT_STATIC_SPEC ("cc1_ssp_default",        &cc1_ssp_default_spec),
+   INIT_STATIC_SPEC ("endfile",                        &endfile_spec),
+   INIT_STATIC_SPEC ("link",                   &link_spec),
+   INIT_STATIC_SPEC ("lib",                    &lib_spec),
+--- a/gcc/objc/lang-specs.h
++++ b/gcc/objc/lang-specs.h
+@@ -29,9 +29,9 @@ along with GCC; see the file COPYING3.  If not see
+       %{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+       %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+-          cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\
++          cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\
+       %{!save-temps*:%{!no-integrated-cpp:\
+-          cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\
++          cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}}\
+         %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objective-c-header",
+      "%{E|M|MM:cc1obj -E %{traditional|traditional-cpp:-traditional-cpp}\
+@@ -40,18 +40,18 @@ along with GCC; see the file COPYING3.  If not see
+       %{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+       %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+-          cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++          cc1obj -fpreprocessed %b.mi %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                         -o %g.s %{!o*:--output-pch=%i.gch}\
+                         %W{o*:--output-pch=%*}%V}\
+       %{!save-temps*:%{!no-integrated-cpp:\
+-          cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++          cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                         -o %g.s %{!o*:--output-pch=%i.gch}\
+                         %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0},
+   {".mi", "@objective-c-cpp-output", 0, 0, 0},
+   {"@objective-c-cpp-output",
+-     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                            %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objc-cpp-output",
+       "%nobjc-cpp-output is deprecated; please use objective-c-cpp-output instead\n\
+-       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                            %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/gcc/objcp/lang-specs.h
++++ b/gcc/objcp/lang-specs.h
+@@ -36,7 +36,7 @@ along with GCC; see the file COPYING3.  If not see
+               %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+             %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-      %(cc1_options) %2\
++      %(cc1_options) %(ssp_default) %2\
+         -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {"@objective-c++",
+@@ -46,16 +46,16 @@ along with GCC; see the file COPYING3.  If not see
+               %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+             %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-      %(cc1_options) %2\
++      %(cc1_options) %(ssp_default) %2\
+        %{!fsyntax-only:%(invoke_as)}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {".mii", "@objective-c++-cpp-output", 0, 0, 0},
+   {"@objective-c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
++    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objc++-cpp-output",
+    "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output instead\n\
+     %{!M:%{!MM:%{!E:\
+-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
++    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+--- a/gcc/params.def
++++ b/gcc/params.def
+@@ -662,7 +662,7 @@ DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
+ DEFPARAM (PARAM_SSP_BUFFER_SIZE,
+         "ssp-buffer-size",
+         "The lower bound for a buffer to be considered for stack smashing protection",
+-        8, 1, 0)
++        4, 1, 0)
+ /* When we thread through a block we have to make copies of the
+    statements within the block.  Clearly for large blocks the code
diff --git a/gcc/patches/05_all_gcc48_gcc.c.patch0 b/gcc/patches/05_all_gcc48_gcc.c.patch0
new file mode 100644 (file)
index 0000000..ddfcafd
--- /dev/null
@@ -0,0 +1,25 @@
+2014-01-01     Magnus Granberg         <zorry@gentoo.org>
+
+               * gcc/gcc.c                                                             include esp.h
+               static const char *cc1_spec                     We set that in esp.h if ENABLE_ESP.
+
+--- gcc/gcc.c  2010-01-21 10:29:30.000000000 -0500
++++ gcc/gcc.c  2010-01-29 23:29:16.000000000 -0500
+@@ -44,6 +44,7 @@
+ #include "opts.h"
+ #include "params.h"
+ #include "vec.h"
++#include "config/esp.h" /* for --enable-esp support */
+ #include "filenames.h"
+ /* By default there is no special suffix for target executables.  */
+@@ -822,7 +823,9 @@
+ static const char *asm_debug;
+ static const char *cpp_spec = CPP_SPEC;
++#ifndef ENABLE_ESP
+ static const char *cc1_spec = CC1_SPEC CC1_SSP_DEFAULT_SPEC;
++#endif
+ static const char *cc1plus_spec = CC1PLUS_SPEC;
+ static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
+ static const char *link_ssp_spec = LINK_SSP_SPEC;
diff --git a/gcc/patches/10_all_gcc49_default-fortify-source.patch b/gcc/patches/10_all_gcc49_default-fortify-source.patch
new file mode 100644 (file)
index 0000000..ad2f2b1
--- /dev/null
@@ -0,0 +1,29 @@
+Enable -D_FORTIFY_SOURCE=2 by default.
+
+
+--- a/gcc/c-family/c-cppbuiltin.c
++++ b/gcc/c-family/c-cppbuiltin.c
+@@ -951,6 +951,9 @@ c_cpp_builtins (cpp_reader *pfile)
+   builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
+   builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
++  /* Fortify Source enabled by default w/optimization.  */
++  cpp_define (pfile, "_FORTIFY_SOURCE=((defined __OPTIMIZE__ && __OPTIMIZE__ > 0) ? 2 : 0)");
++
+   /* Misc.  */
+   if (flag_gnu89_inline)
+     cpp_define (pfile, "__GNUC_GNU_INLINE__");
+--- a/gcc/doc/gcc.info
++++ b/gcc/doc/gcc.info
+@@ -6255,6 +6255,11 @@ find out the exact set of optimizations that are enabled at each level.
+      Please note the warning under '-fgcse' about invoking '-O2' on
+      programs that use computed gotos.
++     NOTE: In Gentoo, `-D_FORTIFY_SOURCE=2' is set by default, and is
++     activated when `-O' is set to 2 or higher.  This enables additional
++     compile-time and run-time checks for several libc functions.  To disable,
++     specify either `-U_FORTIFY_SOURCE' or `-D_FORTIFY_SOURCE=0'.
++
+ '-O3'
+      Optimize yet more.  '-O3' turns on all optimizations specified by
+      '-O2' and also turns on the '-finline-functions',
diff --git a/gcc/patches/11_all_gcc49_default-warn-format-security.patch b/gcc/patches/11_all_gcc49_default-warn-format-security.patch
new file mode 100644 (file)
index 0000000..ee6c7c4
--- /dev/null
@@ -0,0 +1,43 @@
+Enable -Wformat and -Wformat-security by default.
+
+
+--- a/gcc/c-family/c.opt
++++ b/gcc/c-family/c.opt
+@@ -412,7 +412,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ O
+ Warn about format strings that are not literals
+ Wformat-security
+-C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
++C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
+ Warn about possible security problems with format functions
+ Wformat-y2k
+@@ -424,7 +424,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++
+ Warn about zero-length formats
+ Wformat=
+-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
++C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
+ Warn about printf/scanf/strftime/strfmon format string anomalies
+ Wignored-qualifiers
+--- a/gcc/doc/gcc.info
++++ b/gcc/doc/gcc.info
+@@ -3451,6 +3451,8 @@ compiler warns that an unrecognized option is present.
+           '-Wno-format-contains-nul', '-Wno-format-extra-args', and
+           '-Wno-format-zero-length'.  '-Wformat' is enabled by '-Wall'.
++          This option is enabled by default in Gentoo.
++
+      '-Wno-format-contains-nul'
+           If '-Wformat' is specified, do not warn about format strings
+           that contain NUL bytes.
+@@ -3496,6 +3498,8 @@ compiler warns that an unrecognized option is present.
+           future warnings may be added to '-Wformat-security' that are
+           not included in '-Wformat-nonliteral'.)
++          This option is enabled by default in Gentoo.
++
+      '-Wformat-y2k'
+           If '-Wformat' is specified, also warn about 'strftime' formats
+           that may yield only a two-digit year.
diff --git a/gcc/patches/12_all_gcc49_default-warn-trampolines.patch b/gcc/patches/12_all_gcc49_default-warn-trampolines.patch
new file mode 100644 (file)
index 0000000..9ab4378
--- /dev/null
@@ -0,0 +1,25 @@
+Enable -Wtrampolines by default.
+
+
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -648,7 +648,7 @@ Common Var(warn_system_headers) Warning
+ Do not suppress warnings from system headers
+ Wtrampolines
+-Common Var(warn_trampolines) Warning
++Common Var(warn_trampolines) Init(1) Warning
+ Warn whenever a trampoline is generated
+ Wtype-limits
+--- a/gcc/doc/gcc.info
++++ b/gcc/doc/gcc.info
+@@ -4021,6 +4021,8 @@ compiler warns that an unrecognized option is present.
+      and thus requires the stack to be made executable in order for the
+      program to work properly.
++     This warning is enabled by default in Gentoo.
++
+ '-Wfloat-equal'
+      Warn if floating-point values are used in equality comparisons.
diff --git a/gcc/patches/16_all_gcc47_nopie_option.patch b/gcc/patches/16_all_gcc47_nopie_option.patch
new file mode 100644 (file)
index 0000000..ed9a961
--- /dev/null
@@ -0,0 +1,16 @@
+2012-01-24     Magnus Granberg <zorry@gentoo.org>
+
+               * gcc/common.opt                Add -nopie
+
+--- a/gcc/common.opt   2011-11-23 19:51:17.000000000 +0100
++++ b//gcc/common.opt  2012-01-24 16:56:24.302224357 +0100
+@@ -2280,6 +2280,9 @@ Driver
+ nodefaultlibs
+ Driver
++nopie
++Driver
++
+ nostartfiles
+ Driver
diff --git a/gcc/patches/20_all_gcc49_config_crtbeginp.patch0 b/gcc/patches/20_all_gcc49_config_crtbeginp.patch0
new file mode 100644 (file)
index 0000000..4bd5c18
--- /dev/null
@@ -0,0 +1,40 @@
+2014-04-23             Magnus Granberg         <zorry@gentoo.org>
+
+               * gcc/config/gnu-user.h                 If ENABLE_CRTBEGINP, -static and -pie use crtbegineP.o.
+               * gcc/config/rs6000/sysv4.h             If ENABLE_CRTBEGINP, -static and -pie use crtbegineP.o.
+
+--- gcc/config/gnu-user.h      2014-01-02 23:23:26.000000000 +0100
++++ gcc/config/gnu-user.h      2014-04-23 00:55:06.390265454 +0200
+@@ -40,7 +40,15 @@ see the files COPYING3 and COPYING.RUNTI
+    provides part of the support for getting C++ file-scope static
+    object constructed before entering `main'.  */
+-#if defined HAVE_LD_PIE
++#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP)
++#define GNU_USER_TARGET_STARTFILE_SPEC \
++  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
++   crti.o%s %{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}; \
++   shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
++   %{fvtable-verify=none:%s; \
++     fvtable-verify=preinit:vtv_start_preinit.o%s; \
++     fvtable-verify=std:vtv_start.o%s}"
++#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP)
+ #define GNU_USER_TARGET_STARTFILE_SPEC \
+   "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
+    crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
+--- gcc/config/rs6000/sysv4.h  2009-04-10 01:23:07.000000000 +0200
++++ gcc/config/rs6000/sysv4.h  2009-09-08 04:41:50.000000000 +0200
+@@ -883,7 +883,12 @@
+ %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} \
+ %{!shared: %{profile:-lc_p} %{!profile:-lc}}}"
+-#ifdef HAVE_LD_PIE
++#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP)
++#define STARTFILE_LINUX_SPEC "\
++%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
++%{mnewlib:ecrti.o%s;:crti.o%s} \
++%{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}"
++#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP)
+ #define       STARTFILE_LINUX_SPEC "\
+ %{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
+ %{mnewlib:ecrti.o%s;:crti.o%s} \
diff --git a/gcc/patches/24_all_gcc49_invoke.texi.patch0 b/gcc/patches/24_all_gcc49_invoke.texi.patch0
new file mode 100644 (file)
index 0000000..856a4e5
--- /dev/null
@@ -0,0 +1,44 @@
+2014-04-24  Magnus Granberg  <zorry@gentoo.org>
+
+               * gcc/doc/invoke.texi   Add NOTES about -fstack-protector-all, -pie and
+               -fPIE/-fpie when --enable-esp is enable, this options is on by default.
+
+--- gcc/doc/invoke.texi        2009-04-01 09:18:47.000000000 +0200
++++ gcc/doc/invoke.texi        2009-06-18 14:08:38.000000000 +0200
+@@ -9233,6 +9245,11 @@ If a guard check fails, an error message
+ @opindex fstack-protector-all
+ Like @option{-fstack-protector} except that all functions are protected.
++NOTE: NOTE: When --enable-esp this option is enabled by default 
++for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector}, 
++@option{-nostdlib}, @option{-ffreestanding}, @option{-fstack-protector}, 
++@option{-fstack-protector-strong}or @option{-fstack-protector-all}are found.
++
+ @item -fstack-protector-strong
+ @opindex fstack-protector-strong
+ Like @option{-fstack-protector} but includes additional functions to
+@@ -7960,6 +7965,12 @@
+ that were used to generate code (@option{-fpie}, @option{-fPIE},
+ or model suboptions) when you specify this option.
++NOTE: When --enable-esp this option is enabled by default
++for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE}
++or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or
++@option{-nostartfiles} or @option{-shared} or @option{-pg} or @option{-p}
++are found.
++
+ @item -rdynamic
+ @opindex rdynamic
+ Pass the flag @option{-export-dynamic} to the ELF linker, on targets
+@@ -15889,6 +15910,11 @@
+ @code{__pie__} and @code{__PIE__}.  The macros have the value 1
+ for @option{-fpie} and 2 for @option{-fPIE}.
++NOTE: When --enable-esp this option is enabled by default
++for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE}
++or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or
++@option{-nostartfiles} or @option{-shared} are found.
++
+ @item -fno-jump-tables
+ @opindex fno-jump-tables
+ Do not use jump tables for switch statements even where it would be
diff --git a/gcc/patches/34_all_gcc48_config_i386.patch b/gcc/patches/34_all_gcc48_config_i386.patch
new file mode 100644 (file)
index 0000000..9f0f7a3
--- /dev/null
@@ -0,0 +1,56 @@
+2013-03-24  Magnus Granberg <zorry@gentoo.org>
+
+       * gcc/config/i386/gnu-user-common.h (DRIVER_SELF_SPECS): Add ESP_DRIVER_SELF_SPEC.
+       * gcc/config/i386/gnu-user.h (SUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
+       * gcc/config/i386/i386.h (SUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
+
+--- a/gcc/config/i386/gnu-user-common.h        2013-01-10 21:38:27.000000000 +0100
++++ b/gcc/config/i386/gnu-user-common.h        2013-02-14 00:51:44.689637605 +0100
+@@ -70,3 +70,7 @@ along with GCC; see the file COPYING3.
+
+ /* Static stack checking is supported by means of probes.  */
+ #define STACK_CHECK_STATIC_BUILTIN 1
++
++#ifdef ENABLE_ESP
++#define DRIVER_SELF_SPECS ESP_DRIVER_SELF_SPEC
++#endif
+--- a/gcc/config/i386/gnu-user.h       2011-05-05 14:32:50.000000000 +0200
++++ b/gcc/config/i386/gnu-user.h       2012-07-09 14:28:38.726289455 +0200
+@@ -93,9 +93,16 @@ along with GCC; see the file COPYING3.
+   "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
+ #undef  SUBTARGET_EXTRA_SPECS
++#ifdef ENABLE_ESP
+ #define SUBTARGET_EXTRA_SPECS \
+   { "link_emulation", GNU_USER_LINK_EMULATION },\
+-  { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
++  { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }, \
++  ESP_EXTRA_SPECS
++#else
++#define SUBTARGET_EXTRA_SPECS \
++  { "link_emulation", GNU_USER_LINK_EMULATION },\
++  { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
++#endif
+ #undef        LINK_SPEC
+ #define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
+--- a/gcc/config/i386/i386.h   2011-11-24 23:11:12.000000000 +0100
++++ b/gcc/config/i386/i386.h   2012-07-09 14:21:24.575276517 +0200
+@@ -617,13 +617,16 @@ enum target_cpu_default
+    Do not define this macro if it does not need to do anything.  */
+ #ifndef SUBTARGET_EXTRA_SPECS
++#ifdef ENABLE_ESP
++#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
++#else
+ #define SUBTARGET_EXTRA_SPECS
+ #endif
++#endif
+ #define EXTRA_SPECS                                                   \
+   { "cc1_cpu",  CC1_CPU_SPEC },                                               \
+   SUBTARGET_EXTRA_SPECS
+-\f
+ /* Set the value of FLT_EVAL_METHOD in float.h.  When using only the
+    FPU, assume that the fpcw is set to extended precision; when using
diff --git a/gcc/patches/35_all_gcc48_config_arm.patch b/gcc/patches/35_all_gcc48_config_arm.patch
new file mode 100644 (file)
index 0000000..5aecc6b
--- /dev/null
@@ -0,0 +1,35 @@
+2013-06-03  Magnus Granberg  <zorry@gentoo.org>
+
+       * gcc/config/arm/arm.h (DRIVER_SELF_SPECS): Add ESP_DRIVER_SELF_SPEC.
+       * gcc/config/arm/elf.h (SUBSUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
+
+--- a/gcc/config/arm/arm.h     2013-01-15 17:17:28.000000000 +0100
++++ b/gcc/config/arm/arm.h     2013-02-18 22:45:18.327284928 +0100
+@@ -2326,6 +2326,11 @@ extern const char *host_detect_local_cpu
+ # define MCPU_MTUNE_NATIVE_SPECS ""
+ #endif
+-#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
+-
++#ifdef ENABLE_ESP
++# define DRIVER_SELF_SPECS \
++  MCPU_MTUNE_NATIVE_SPECS, \
++  ESP_DRIVER_SELF_SPEC
++#else
++# define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
++#endif
+ #endif /* ! GCC_ARM_H */
+--- a/gcc/config/arm/elf.h     2013-01-10 21:38:27.000000000 +0100
++++ b/gcc/config/arm/elf.h     2013-05-19 02:15:49.595855825 +0200
+@@ -49,7 +49,11 @@
+ #endif
+ #undef SUBSUBTARGET_EXTRA_SPECS
++#ifdef ENABLE_ESP
++#define SUBSUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
++#else
+ #define SUBSUBTARGET_EXTRA_SPECS
++#endif
+ #ifndef ASM_SPEC
+ #define ASM_SPEC "\
diff --git a/gcc/patches/40_all_gcc49_config_esp.patch0 b/gcc/patches/40_all_gcc49_config_esp.patch0
new file mode 100644 (file)
index 0000000..ec3482e
--- /dev/null
@@ -0,0 +1,135 @@
+2014-05-12  Magnus Granberg  <zorry@gentoo.org>
+
+       * gcc/esp.h     New file to support --enable-esp
+       Version 20140512.1
+
+--- gcc/config/esp.h   2010-04-09 16:14:00.000000000 +0200
++++ gcc/config/esp.h   2012-06-23 01:00:31.248348491 +0200
+@@ -0,0 +1,127 @@
++/* License terms see GNU GENERAL PUBLIC LICENSE Version 3.
++ * Version 20140512.1
++ * Magnus Granberg (Zorry) <zorry@gentoo.org>  */
++#ifndef GCC_ESP_H
++#define GCC_ESP_H
++
++/*    This file will add -fstack-protector-all, -fstack-check, -fPIE, -pie and -z now 
++      as default if the defines and the spec allow it.
++      Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass
++      to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened.
++      This will add some unsupported upstream commands options as -nopie and -nonow.
++      -D__KERNEL__ is added so we don't have -fPIE, -pie and -fstack-protector-all and -fstack-check when building kernels.
++      ESP_CC1_SPEC is added to CC1_SPEC.
++      ESP_CC1_STRICT_OVERFLOW_SPEC is added so we don't disable the strict-overflow check.
++      ESP_LINK_PIE_CHECK_SPEC check for -pie, -p, -pg, -profile and -static.
++      ENABLE_CRTBEGINP add support for crtbeginP.o, build -static with -fPIE or -fpie.
++*/
++#ifdef ENABLE_ESP
++      
++      /* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass  */
++      #define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)"
++      #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
++              #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: %{!fno-stack-check: }}}"
++      #else
++              #define ESP_CC1_SSP_SPEC ""
++      #endif
++      #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP )
++              #define ESP_CC1_PIE_SPEC "%{!nopie: }"
++      #else
++              #define ESP_CC1_PIE_SPEC ""
++      #endif
++      #define ESP_CC1_STRICT_OVERFLOW_SPEC "%{!fstrict-overflow:%{!fno-strict-overflow: -fno-strict-overflow}}"
++
++      /*      ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable
++              -z now will be added if we don't have -vanilla spec. We do a -pie incompatible check
++              Don't remove the specs in the end  */
++      #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) "
++      #define ESP_LINK_NOW_SPEC "%{!nonow:-z now}"
++
++      /*      We use ESP_DRIVER_SELF_SPEC to add pie and ssp command-line options.  */
++      #define ESP_DRIVER_SELF_SPEC "%{D__KERNEL__:;:%{!nopie:%(esp_options_pie) \
++              %(esp_link_pie)} %(esp_options_ssp) }"
++      
++      /*  This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector
++              -fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined.  */
++      #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
++              #define ESP_OPTIONS_SSP_SPEC \
++                      "%{nostdlib|ffreestanding|fno-stack-protector|fstack-protector| \
++                      fstack-protector-all|fstack-protector-strong:;:-fstack-protector-all} \
++                      %{fstack-check|fstack-check=*:;: -fstack-check}"
++      #else
++              #define ESP_OPTIONS_SSP_SPEC ""
++      #endif
++
++      /* If EFAULT_PIE or EFAULT_PIE_SSP is defined we will add -fPIE -pie  */
++      #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP )
++
++              /*  This will add -fPIE if we don't have -pie -fpic -fPIC -fpie -fPIE -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static
++                      -nostdlib -nostartfiles.  */
++              /*  With ENABLE_CRTBEGINP we don't need to check for -static  */
++              #ifdef ENABLE_CRTBEGINP
++                      #define ESP_OPTIONS_PIE_SPEC \
++                              "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \
++                              %{!shared: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }"
++              #else
++                      #define ESP_OPTIONS_PIE_SPEC \
++                              "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \
++                              %{!shared: %{!static: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }}"
++              #endif
++
++              /*  This will add -pie if we don't have -pie -A -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static -r -nostdlib 
++                      -nostartfiles  */
++              /*  With ENABLE_CRTBEGINP we don't need to check for -static
++                      and we add -pie only to get the start and endfiles. -pie will not go to the linker. */
++              #ifdef ENABLE_CRTBEGINP
++                      #define ESP_LINK_PIE_SPEC \
++                              "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!r: \
++                              %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}"
++              #else
++                      #define ESP_LINK_PIE_SPEC \
++                              "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r: \
++                              %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}"
++              #endif
++              
++              /*  This will check if -pie is set when (-static) -pg -p -profile. If set it will make gcc print out
++                      "-pie and (static)|pg|p|profile are incompatible when linking"  */
++              /*  With ENABLE_CRTBEGINP we don't need to check for -static  */
++              #ifdef ENABLE_CRTBEGINP
++                      #define ESP_LINK_PIE_CHECK_SPEC \
++                              "%{pie:%{pg|p|profile:%e-pie and -pg|p|profile are incompatible when linking}}"
++              #else
++                      #define ESP_LINK_PIE_CHECK_SPEC \
++                              "%{pie:%{static|pg|p|profile:%e-pie and -static|pg|p|profile are incompatible when linking}}"
++              #endif
++
++              /*  We don't pass -pie to the linker when -static.  */
++              #ifdef ENABLE_CRTBEGINP
++                      #define LINK_PIE_SPEC "%{!static:%{pie:-pie}} %(esp_link)"
++              #else
++                      #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)"
++              #endif
++
++      #else
++              #define ESP_OPTIONS_PIE_SPEC ""
++              #define ESP_LINK_PIE_CHECK_SPEC ""
++              #define ESP_LINK_PIE_SPEC ""
++              #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)"
++      #endif
++
++      /*  We add extra spec name's to the EXTRA_SPECS list  */
++      #define ESP_EXTRA_SPECS \
++              { "esp_cc1",                                                            ESP_CC1_SPEC },                                 \
++              { "esp_cc1_pie",                                                        ESP_CC1_PIE_SPEC },                             \
++              { "esp_cc1_ssp",                                                        ESP_CC1_SSP_SPEC },                             \
++              { "esp_cc1_strict_overflow",                                    ESP_CC1_STRICT_OVERFLOW_SPEC }, \
++              { "esp_link",                                                           ESP_LINK_SPEC },                                \
++              { "esp_link_now",                                                       ESP_LINK_NOW_SPEC },                    \
++              { "esp_link_pie",                                                       ESP_LINK_PIE_SPEC },                    \
++              { "esp_link_pie_check",                                         ESP_LINK_PIE_CHECK_SPEC },              \
++              { "esp_driver_self",                                                    ESP_DRIVER_SELF_SPEC },         \
++              { "esp_options_pie",                                            ESP_OPTIONS_PIE_SPEC },                 \
++              { "esp_options_ssp",                                            ESP_OPTIONS_SSP_SPEC }
++
++      static const char *cc1_spec = CC1_SPEC ESP_CC1_SPEC;
++
++#endif
++#endif /* End GCC_ESP_H */
diff --git a/gcc/patches/53_all_libitm-no-fortify-source.patch b/gcc/patches/53_all_libitm-no-fortify-source.patch
new file mode 100644 (file)
index 0000000..5ab15af
--- /dev/null
@@ -0,0 +1,27 @@
+https://bugs.gentoo.org/508852
+https://gcc.gnu.org/PR61164
+
+2014-04-27  Magnus Granberg  <zorry@gentoo.org>
+
+       #508852
+       * libitm/configure.tgt: Disable FORTIFY
+
+--- a/libitm/configure.tgt
++++ b/libitm/configure.tgt
+@@ -43,6 +43,16 @@ if test "$gcc_cv_have_tls" = yes ; then
+   esac
+ fi
++# FIXME: error: inlining failed in call to always_inline 
++# ‘int vfprintf(FILE*, const char*, __va_list_tag*)’
++# : function body can be overwritten at link time
++# Disable Fortify in libitm for now. #508852
++case "${target}" in
++    *-*-linux*)
++      XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE"
++      ;;
++esac
++
+ # Map the target cpu to an ARCH sub-directory.  At the same time,
+ # work out any special compilation flags as necessary.
+ case "${target_cpu}" in
diff --git a/gcc/patches/gcc-4.8.1-piepatch-20130628.patch b/gcc/patches/gcc-4.8.1-piepatch-20130628.patch
deleted file mode 100644 (file)
index 839e303..0000000
+++ /dev/null
@@ -1,874 +0,0 @@
-diff -Nur gcc-4.8.1-vanilla/configure gcc-4.8.1/configure
---- gcc-4.8.1-vanilla/configure        2013-02-15 18:45:54.000000000 +0100
-+++ gcc-4.8.1/configure        2013-06-27 23:57:54.004095553 +0200
-@@ -670,6 +670,7 @@
- CFLAGS
- CC
- EXTRA_CONFIGARGS_LIBJAVA
-+enable_esp
- target_subdir
- host_subdir
- build_subdir
-@@ -748,6 +749,7 @@
- enable_libquadmath
- enable_libquadmath_support
- enable_libada
-+enable_esp
- enable_libssp
- enable_libstdcxx
- enable_static_libjava
-@@ -1464,6 +1466,11 @@
-   --disable-libquadmath-support
-                           disable libquadmath support for Fortran
-   --enable-libada         build libada directory
-+  --enable-esp            Enable Stack protector and Position independent
-+                          executable as default if we have suppot for it when
-+                          compiling and link with and -z now as default.
-+                          Linux targets supported i*86, x86_64, x32,
-+                          powerpc, powerpc64, ia64, arm and mips.
-   --enable-libssp         build libssp directory
-   --disable-libstdcxx     do not build libstdc++-v3 directory
-   --enable-static-libjava[=ARG]
-@@ -3068,6 +3075,24 @@
-   noconfigdirs="$noconfigdirs gnattools"
- fi
-+# Check whether --enable-esp was given and target have the support.
-+# Check whether --enable-esp was given.
-+if test "${enable_esp+set}" = set; then :
-+  enableval=$enable_esp;
-+  case $target in
-+    i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips*-*-linux* | arm*-*-linux* | ia64-*-linux*)
-+      enable_esp=yes
-+      ;;
-+    *)
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** --enable-esp is not supported on this $target target." >&5
-+$as_echo "$as_me: WARNING: *** --enable-esp is not supported on this $target target." >&2;}
-+      ;;
-+  esac
-+
-+fi
-+
-+
-+
- # Check whether --enable-libssp was given.
- if test "${enable_libssp+set}" = set; then :
-   enableval=$enable_libssp; ENABLE_LIBSSP=$enableval
-@@ -14456,6 +14481,11 @@
-     esac ;;
- esac
-+# Disable -fstack-protector on stage1
-+if test x$enable_esp = xyes; then
-+  stage1_cflags="$stage1_cflags -fno-stack-protector"
-+fi
-+
- # Enable --enable-checking in stage1 of the compiler.
-diff -Nur gcc-4.8.1-vanilla/configure.ac gcc-4.8.1/configure.ac
---- gcc-4.8.1-vanilla/configure.ac     2013-02-15 18:45:54.000000000 +0100
-+++ gcc-4.8.1/configure.ac     2013-06-27 23:57:53.999095429 +0200
-@@ -423,6 +423,26 @@
-   noconfigdirs="$noconfigdirs gnattools"
- fi
-+# Check whether --enable-esp was given and target have the support.
-+AC_ARG_ENABLE([esp],
-+[AS_HELP_STRING([--enable-esp],
-+               [Enable Stack protector and Position independent executable as
-+                default if we have suppot for it when compiling
-+                and link with -z relro and -z now as default.
-+                Linux targets supported i*86, x86_64, x32,
-+                powerpc, powerpc64, ia64, arm and mips.])],
-+[
-+  case $target in
-+    i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips-*-linux* | arm*-*-linux* | ia64-*-linux*)
-+      enable_esp=yes
-+      ;;
-+    *)
-+      AC_MSG_WARN([*** --enable-esp is not supported on this $target target.])
-+      ;;
-+  esac
-+])
-+AC_SUBST([enable_esp])
-+
- AC_ARG_ENABLE(libssp,
- [AS_HELP_STRING([--enable-libssp], [build libssp directory])],
- ENABLE_LIBSSP=$enableval,
-@@ -3241,6 +3261,11 @@
-     esac ;;
- esac
-+# Disable -fstack-protector on stage1
-+if test x$enable_esp = xyes; then
-+  stage1_cflags="$stage1_cflags -fno-stack-protector"
-+fi
-+
- AC_SUBST(stage1_cflags)
- # Enable --enable-checking in stage1 of the compiler.
-diff -Nur gcc-4.8.1-vanilla/gcc/common.opt gcc-4.8.1/gcc/common.opt
---- gcc-4.8.1-vanilla/gcc/common.opt   2013-03-14 10:13:36.000000000 +0100
-+++ gcc-4.8.1/gcc/common.opt   2013-06-27 23:57:54.024096050 +0200
-@@ -2393,6 +2393,9 @@
- nodefaultlibs
- Driver
-+nopie
-+Driver
-+
- nostartfiles
- Driver
-diff -Nur gcc-4.8.1-vanilla/gcc/config/arm/arm.h gcc-4.8.1/gcc/config/arm/arm.h
---- gcc-4.8.1-vanilla/gcc/config/arm/arm.h     2013-03-17 17:28:55.000000000 +0100
-+++ gcc-4.8.1/gcc/config/arm/arm.h     2013-06-27 23:57:54.031096224 +0200
-@@ -2328,6 +2328,11 @@
- # define MCPU_MTUNE_NATIVE_SPECS ""
- #endif
--#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
--
-+#ifdef ENABLE_ESP
-+# define DRIVER_SELF_SPECS \
-+  MCPU_MTUNE_NATIVE_SPECS, \
-+  ESP_DRIVER_SELF_SPEC
-+#else
-+# define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
-+#endif
- #endif /* ! GCC_ARM_H */
-diff -Nur gcc-4.8.1-vanilla/gcc/config/arm/elf.h gcc-4.8.1/gcc/config/arm/elf.h
---- gcc-4.8.1-vanilla/gcc/config/arm/elf.h     2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.1/gcc/config/arm/elf.h     2013-06-27 23:57:54.031096224 +0200
-@@ -49,7 +49,11 @@
- #endif
- #undef SUBSUBTARGET_EXTRA_SPECS
-+#ifdef ENABLE_ESP
-+#define SUBSUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
-+#else
- #define SUBSUBTARGET_EXTRA_SPECS
-+#endif
- #ifndef ASM_SPEC
- #define ASM_SPEC "\
-diff -Nur gcc-4.8.1-vanilla/gcc/config/esp.h gcc-4.8.1/gcc/config/esp.h
---- gcc-4.8.1-vanilla/gcc/config/esp.h 1970-01-01 01:00:00.000000000 +0100
-+++ gcc-4.8.1/gcc/config/esp.h 2013-06-27 23:57:54.033096274 +0200
-@@ -0,0 +1,127 @@
-+/* License terms see GNU GENERAL PUBLIC LICENSE Version 3.
-+ * Version 20130214.1
-+ * Magnus Granberg (Zorry) <zorry@gentoo.org>  */
-+#ifndef GCC_ESP_H
-+#define GCC_ESP_H
-+
-+/*    This file will add -fstack-protector-all, -fPIE, -pie and -z now 
-+      as default if the defines and the spec allow it.
-+      Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass
-+      to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened.
-+      This will add some unsupported upstream commands options as -nopie and -nonow.
-+      -D__KERNEL__ is added so we don't have -fPIE, -pie and -fstack-protector-all when building kernels.
-+      ESP_CC1_SPEC is added to CC1_SPEC.
-+      ESP_CC1_STRICT_OVERFLOW_SPEC is added so we don't disable the strict-overflow check.
-+      ESP_LINK_PIE_CHECK_SPEC check for -pie, -p, -pg, -profile and -static.
-+      ENABLE_CRTBEGINP add support for crtbeginP.o, build -static with -fPIE or -fpie.
-+*/
-+#ifdef ENABLE_ESP
-+      
-+      /* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass  */
-+      #define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)"
-+      #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
-+              #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: }}"
-+      #else
-+              #define ESP_CC1_SSP_SPEC ""
-+      #endif
-+      #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP )
-+              #define ESP_CC1_PIE_SPEC "%{!nopie: }"
-+      #else
-+              #define ESP_CC1_PIE_SPEC ""
-+      #endif
-+      #define ESP_CC1_STRICT_OVERFLOW_SPEC "%{!fstrict-overflow:%{!fno-strict-overflow: -fno-strict-overflow}}"
-+
-+      /*      ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable
-+              -z now will be added if we don't have -vanilla spec. We do a -pie incompatible check
-+              Don't remove the specs in the end  */
-+      #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) "
-+      #define ESP_LINK_NOW_SPEC "%{!nonow:-z now}"
-+
-+      /*      We use ESP_ESP_DRIVER_SELF_SPEC to add pie and ssp command-line options.  */
-+      #define ESP_DRIVER_SELF_SPEC "%{D__KERNEL__:;:%{!nopie:%(esp_options_pie) \
-+              %(esp_link_pie)} %(esp_options_ssp) }"
-+      
-+      /*  This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector
-+              -fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined.  */
-+      #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
-+              #define ESP_OPTIONS_SSP_SPEC \
-+                      "%{nostdlib|nodefaultlibs|fno-stack-protector| \
-+                      fstack-protector|fstack-protector-all:;:-fstack-protector-all}"
-+      #else
-+              #define ESP_OPTIONS_SSP_SPEC ""
-+      #endif
-+
-+      /* If EFAULT_PIE or EFAULT_PIE_SSP is defined we will add -fPIE -pie  */
-+      #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP )
-+
-+              /*  This will add -fPIE if we don't have -pie -fpic -fPIC -fpie -fPIE -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static
-+                      -nostdlib -nostartfiles.  */
-+              /*  With ENABLE_CRTBEGINP we don't need to check for -static  */
-+              #ifdef ENABLE_CRTBEGINP
-+                      #define ESP_OPTIONS_PIE_SPEC \
-+                              "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \
-+                              %{!shared: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }"
-+              #else
-+                      #define ESP_OPTIONS_PIE_SPEC \
-+                              "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \
-+                              %{!shared: %{!static: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }}"
-+              #endif
-+
-+              /*  This will add -pie if we don't have -pie -A -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static -r -nostdlib 
-+                      -nostartfiles  */
-+              /*  With ENABLE_CRTBEGINP we don't need to check for -static
-+                      and we add -pie only to get the start and endfiles. -pie will not go to the linker. */
-+              #ifdef ENABLE_CRTBEGINP
-+                      #define ESP_LINK_PIE_SPEC \
-+                              "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!r: \
-+                              %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}"
-+              #else
-+                      #define ESP_LINK_PIE_SPEC \
-+                              "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r: \
-+                              %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}"
-+              #endif
-+              
-+              /*  This will check if -pie is set when (-static) -pg -p -profile. If set it will make gcc print out
-+                      "-pie and (static)|pg|p|profile are incompatible when linking"  */
-+              /*  With ENABLE_CRTBEGINP we don't need to check for -static  */
-+              #ifdef ENABLE_CRTBEGINP
-+                      #define ESP_LINK_PIE_CHECK_SPEC \
-+                              "%{pie:%{pg|p|profile:%e-pie and -pg|p|profile are incompatible when linking}}"
-+              #else
-+                      #define ESP_LINK_PIE_CHECK_SPEC \
-+                              "%{pie:%{static|pg|p|profile:%e-pie and -static|pg|p|profile are incompatible when linking}}"
-+              #endif
-+
-+              /*  We don't pass -pie to the linker when -static.  */
-+              #ifdef ENABLE_CRTBEGINP
-+                      #define LINK_PIE_SPEC "%{!static:%{pie:-pie}} %(esp_link)"
-+              #else
-+                      #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)"
-+              #endif
-+
-+      #else
-+              #define ESP_OPTIONS_PIE_SPEC ""
-+              #define ESP_LINK_PIE_CHECK_SPEC ""
-+              #define ESP_LINK_PIE_SPEC ""
-+              #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)"
-+      #endif
-+
-+      /*  We add extra spec name's to the EXTRA_SPECS list  */
-+      #define ESP_EXTRA_SPECS \
-+              { "esp_cc1",                                                            ESP_CC1_SPEC },                                 \
-+              { "esp_cc1_pie",                                                        ESP_CC1_PIE_SPEC },                             \
-+              { "esp_cc1_ssp",                                                        ESP_CC1_SSP_SPEC },                             \
-+              { "esp_cc1_strict_overflow",                                    ESP_CC1_STRICT_OVERFLOW_SPEC }, \
-+              { "esp_link",                                                           ESP_LINK_SPEC },                                \
-+              { "esp_link_now",                                                       ESP_LINK_NOW_SPEC },                    \
-+              { "esp_link_pie",                                                       ESP_LINK_PIE_SPEC },                    \
-+              { "esp_link_pie_check",                                         ESP_LINK_PIE_CHECK_SPEC },              \
-+              { "esp_driver_self",                                                    ESP_DRIVER_SELF_SPEC },         \
-+              { "esp_options_pie",                                            ESP_OPTIONS_PIE_SPEC },                 \
-+              { "esp_options_ssp",                                            ESP_OPTIONS_SSP_SPEC }
-+
-+      static const char *esp_driver_self_spec = ESP_DRIVER_SELF_SPEC;
-+      static const char *cc1_spec = CC1_SPEC ESP_CC1_SPEC;
-+
-+#endif
-+#endif /* End GCC_ESP_H */
-diff -Nur gcc-4.8.1-vanilla/gcc/config/gnu-user.h gcc-4.8.1/gcc/config/gnu-user.h
---- gcc-4.8.1-vanilla/gcc/config/gnu-user.h    2013-03-08 18:16:45.000000000 +0100
-+++ gcc-4.8.1/gcc/config/gnu-user.h    2013-06-27 23:57:54.024096050 +0200
-@@ -40,7 +40,11 @@
-    provides part of the support for getting C++ file-scope static
-    object constructed before entering `main'.  */
-    
--#if defined HAVE_LD_PIE
-+#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP)
-+#define GNU_USER_TARGET_STARTFILE_SPEC \
-+  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} crti.o%s \
-+   %{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}"
-+#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP)
- #define GNU_USER_TARGET_STARTFILE_SPEC \
-   "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
-    crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
-diff -Nur gcc-4.8.1-vanilla/gcc/config/i386/gnu-user-common.h gcc-4.8.1/gcc/config/i386/gnu-user-common.h
---- gcc-4.8.1-vanilla/gcc/config/i386/gnu-user-common.h        2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.1/gcc/config/i386/gnu-user-common.h        2013-06-27 23:57:54.030096199 +0200
-@@ -70,3 +70,7 @@
- /* Static stack checking is supported by means of probes.  */
- #define STACK_CHECK_STATIC_BUILTIN 1
-+
-+#ifdef ENABLE_ESP
-+#define DRIVER_SELF_SPECS ESP_DRIVER_SELF_SPEC
-+#endif
-diff -Nur gcc-4.8.1-vanilla/gcc/config/i386/gnu-user.h gcc-4.8.1/gcc/config/i386/gnu-user.h
---- gcc-4.8.1-vanilla/gcc/config/i386/gnu-user.h       2013-02-08 19:08:12.000000000 +0100
-+++ gcc-4.8.1/gcc/config/i386/gnu-user.h       2013-06-27 23:57:54.030096199 +0200
-@@ -70,9 +70,16 @@
-   "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
- #undef  SUBTARGET_EXTRA_SPECS
-+#ifdef ENABLE_ESP
-+#define SUBTARGET_EXTRA_SPECS \
-+  { "link_emulation", GNU_USER_LINK_EMULATION },\
-+  { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }, \
-+  ESP_EXTRA_SPECS
-+#else
- #define SUBTARGET_EXTRA_SPECS \
-   { "link_emulation", GNU_USER_LINK_EMULATION },\
-   { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
-+#endif
- #define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
-   %{!shared: \
-diff -Nur gcc-4.8.1-vanilla/gcc/config/i386/i386.h gcc-4.8.1/gcc/config/i386/i386.h
---- gcc-4.8.1-vanilla/gcc/config/i386/i386.h   2013-01-28 21:42:55.000000000 +0100
-+++ gcc-4.8.1/gcc/config/i386/i386.h   2013-06-27 23:57:54.031096224 +0200
-@@ -643,13 +643,16 @@
-    Do not define this macro if it does not need to do anything.  */
- #ifndef SUBTARGET_EXTRA_SPECS
-+#ifdef ENABLE_ESP
-+#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
-+#else
- #define SUBTARGET_EXTRA_SPECS
- #endif
-+#endif
- #define EXTRA_SPECS                                                   \
-   { "cc1_cpu",  CC1_CPU_SPEC },                                               \
-   SUBTARGET_EXTRA_SPECS
--\f
- /* Set the value of FLT_EVAL_METHOD in float.h.  When using only the
-    FPU, assume that the fpcw is set to extended precision; when using
-diff -Nur gcc-4.8.1-vanilla/gcc/config/ia64/ia64.h gcc-4.8.1/gcc/config/ia64/ia64.h
---- gcc-4.8.1-vanilla/gcc/config/ia64/ia64.h   2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.1/gcc/config/ia64/ia64.h   2013-06-27 23:57:54.033096274 +0200
-@@ -41,8 +41,12 @@
- } while (0)
- #ifndef SUBTARGET_EXTRA_SPECS
-+#ifdef ENABLE_ESP
-+#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
-+#else
- #define SUBTARGET_EXTRA_SPECS
- #endif
-+#endif
- #define EXTRA_SPECS \
-   { "asm_extra", ASM_EXTRA_SPEC }, \
-diff -Nur gcc-4.8.1-vanilla/gcc/config/ia64/linux.h gcc-4.8.1/gcc/config/ia64/linux.h
---- gcc-4.8.1-vanilla/gcc/config/ia64/linux.h  2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.1/gcc/config/ia64/linux.h  2013-06-27 23:57:54.032096249 +0200
-@@ -88,3 +88,7 @@
- /* Define this to be nonzero if static stack checking is supported.  */
- #define STACK_CHECK_STATIC_BUILTIN 1
-+
-+#ifdef ENABLE_ESP
-+#define DRIVER_SELF_SPECS ESP_DRIVER_SELF_SPEC
-+#endif
-diff -Nur gcc-4.8.1-vanilla/gcc/config/mips/gnu-user64.h gcc-4.8.1/gcc/config/mips/gnu-user64.h
---- gcc-4.8.1-vanilla/gcc/config/mips/gnu-user64.h     2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.1/gcc/config/mips/gnu-user64.h     2013-06-27 23:57:54.032096249 +0200
-@@ -26,9 +26,16 @@
-   " %{!mabi=*: -" MULTILIB_ABI_DEFAULT "}"
- #undef DRIVER_SELF_SPECS
-+#ifdef ENABLE_ESP
- #define DRIVER_SELF_SPECS \
-   BASE_DRIVER_SELF_SPECS, \
-+  ESP_DRIVER_SELF_SPEC, \
-   LINUX64_DRIVER_SELF_SPECS
-+# else
-+#define DRIVER_SELF_SPECS \
-+  BASE_DRIVER_SELF_SPECS, \
-+  LINUX64_DRIVER_SELF_SPECS
-+#endif
- #undef GNU_USER_TARGET_LINK_SPEC
- #define GNU_USER_TARGET_LINK_SPEC "\
-diff -Nur gcc-4.8.1-vanilla/gcc/config/mips/gnu-user.h gcc-4.8.1/gcc/config/mips/gnu-user.h
---- gcc-4.8.1-vanilla/gcc/config/mips/gnu-user.h       2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.1/gcc/config/mips/gnu-user.h       2013-06-27 23:57:54.032096249 +0200
-@@ -125,9 +125,16 @@
-   "%{mabi=64:%{!msym32:%<mplt}}"
- #undef DRIVER_SELF_SPECS
-+#ifdef ENABLE_ESP
- #define DRIVER_SELF_SPECS \
-   BASE_DRIVER_SELF_SPECS, \
-+  ESP_DRIVER_SELF_SPEC, \
-   LINUX_DRIVER_SELF_SPECS
-+# else
-+#define DRIVER_SELF_SPECS \
-+  BASE_DRIVER_SELF_SPECS, \
-+  LINUX_DRIVER_SELF_SPECS
-+#endif
- /* Similar to standard Linux, but adding -ffast-math support.  */
- #undef        GNU_USER_TARGET_MATHFILE_SPEC
-diff -Nur gcc-4.8.1-vanilla/gcc/config/mips/mips.h gcc-4.8.1/gcc/config/mips/mips.h
---- gcc-4.8.1-vanilla/gcc/config/mips/mips.h   2013-02-25 14:53:16.000000000 +0100
-+++ gcc-4.8.1/gcc/config/mips/mips.h   2013-06-27 23:57:54.032096249 +0200
-@@ -1197,9 +1197,13 @@
-   SUBTARGET_EXTRA_SPECS
- #ifndef SUBTARGET_EXTRA_SPECS
-+#ifdef ENABLE_ESP
-+#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
-+#else
- #define SUBTARGET_EXTRA_SPECS
- #endif
--\f
-+#endif
-+
- #define DBX_DEBUGGING_INFO 1          /* generate stabs (OSF/rose) */
- #define DWARF2_DEBUGGING_INFO 1         /* dwarf2 debugging info */
-diff -Nur gcc-4.8.1-vanilla/gcc/config/rs6000/linux64.h gcc-4.8.1/gcc/config/rs6000/linux64.h
---- gcc-4.8.1-vanilla/gcc/config/rs6000/linux64.h      2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.1/gcc/config/rs6000/linux64.h      2013-06-27 23:57:54.029096174 +0200
-@@ -180,7 +180,7 @@
- #endif
- #define ASM_SPEC32 "-a32 \
--%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \
-+%{mrelocatable} %{mrelocatable-lib} %{fpic|fPIC|fpie|fPIE:-K PIC} \
- %{memb} %{!memb: %{msdata=eabi: -memb}} \
- %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
-     %{mcall-freebsd: -mbig} \
-diff -Nur gcc-4.8.1-vanilla/gcc/config/rs6000/sysv4.h gcc-4.8.1/gcc/config/rs6000/sysv4.h
---- gcc-4.8.1-vanilla/gcc/config/rs6000/sysv4.h        2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.1/gcc/config/rs6000/sysv4.h        2013-06-27 23:57:54.030096199 +0200
-@@ -627,8 +627,13 @@
- #define LINK_OS_DEFAULT_SPEC ""
-+#ifdef ENABLE_ESP
-+#define DRIVER_SELF_SPECS "%{mfpu=none: %<mfpu=* \
-+      %<msingle-float %<mdouble-float}", ESP_DRIVER_SELF_SPECS
-+#else
- #define DRIVER_SELF_SPECS "%{mfpu=none: %<mfpu=* \
-       %<msingle-float %<mdouble-float}"
-+#endif
- /* Override rs6000.h definition.  */
- #undef        CPP_SPEC
-@@ -769,7 +774,12 @@
- %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} \
- %{!shared: %{profile:-lc_p} %{!profile:-lc}}}"
--#ifdef HAVE_LD_PIE
-+#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP)
-+#define STARTFILE_LINUX_SPEC "\
-+%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
-+%{mnewlib:ecrti.o%s;:crti.o%s} \
-+%{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}"
-+#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP)
- #define       STARTFILE_LINUX_SPEC "\
- %{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
- %{mnewlib:ecrti.o%s;:crti.o%s} \
-@@ -933,7 +943,11 @@
-   { "cpp_os_openbsd",         CPP_OS_OPENBSD_SPEC },                  \
-   { "cpp_os_default",         CPP_OS_DEFAULT_SPEC },                  \
-   { "fbsd_dynamic_linker",    FBSD_DYNAMIC_LINKER },                  \
--  SUBSUBTARGET_EXTRA_SPECS
-+  SUBSUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
-+  
-+#ifndef ENABLE_ESP
-+#define ESP_EXTRA_SPECS
-+#endif
- #define       SUBSUBTARGET_EXTRA_SPECS
-diff -Nur gcc-4.8.1-vanilla/gcc/config.in gcc-4.8.1/gcc/config.in
---- gcc-4.8.1-vanilla/gcc/config.in    2013-05-31 11:09:26.000000000 +0200
-+++ gcc-4.8.1/gcc/config.in    2013-06-27 23:57:54.009095677 +0200
-@@ -52,6 +52,12 @@
- #endif
-+/* Define to 1 to enable crtbeginP.o. */
-+#ifndef USED_FOR_TARGET
-+#undef ENABLE_CRTBEGINP
-+#endif
-+
-+
- /* Define to 1 to specify that we are using the BID decimal floating point
-    format instead of DPD */
- #ifndef USED_FOR_TARGET
-@@ -71,6 +77,12 @@
- #endif
-+/* Define to 1 to enable esp. */
-+#ifndef USED_FOR_TARGET
-+#undef ENABLE_ESP
-+#endif
-+
-+
- /* Define to 1 to enable fixed-point arithmetic extension to C. */
- #ifndef USED_FOR_TARGET
- #undef ENABLE_FIXED_POINT
-diff -Nur gcc-4.8.1-vanilla/gcc/configure gcc-4.8.1/gcc/configure
---- gcc-4.8.1-vanilla/gcc/configure    2013-05-08 13:36:36.000000000 +0200
-+++ gcc-4.8.1/gcc/configure    2013-06-27 23:57:54.008095652 +0200
-@@ -600,6 +600,8 @@
- ac_subst_vars='LTLIBOBJS
- LIBOBJS
-+enable_crtbeginP
-+enable_esp
- enable_plugin
- pluginlibs
- CLOOGINC
-@@ -920,6 +922,7 @@
- enable_plugin
- enable_libquadmath_support
- with_linker_hash_style
-+enable_esp
- '
-       ac_precious_vars='build_alias
- host_alias
-@@ -1633,6 +1636,11 @@
-   --enable-plugin         enable plugin support
-   --disable-libquadmath-support
-                           disable libquadmath support for Fortran
-+  --enable-esp            Enable Stack protector and Position independent
-+                          executable as default if we have suppot for it when
-+                          compiling and link with -z now as default.
-+                          Linux targets supported i*86, x86_64, x32,
-+                          powerpc, powerpc64, ia64, arm and mips.
- Optional Packages:
-   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-@@ -27431,6 +27439,59 @@
- fi
-+# --------------
-+# Esp checks
-+# --------------
-+
-+# Check whether --enable-esp was given and target have the support.
-+# Check whether --enable-esp was given.
-+if test "${enable_esp+set}" = set; then :
-+  enableval=$enable_esp; enable_esp=$enableval
-+else
-+  enable_esp=no
-+fi
-+
-+if test $enable_esp = yes ; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $target support esp" >&5
-+$as_echo_n "checking if $target support esp... " >&6; }
-+  case "$target" in
-+    i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips*-*-linux* | arm*-*-linux* | ia64-*-linux*)
-+      enable_esp=yes
-+
-+$as_echo "#define ENABLE_ESP 1" >>confdefs.h
-+
-+      ;;
-+    *)
-+      enable_esp=no
-+      ;;
-+  esac
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_esp" >&5
-+$as_echo "$enable_esp" >&6; }
-+fi
-+
-+if test $enable_esp = yes ; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking checking for crtbeginP.o support" >&5
-+$as_echo_n "checking checking for crtbeginP.o support... " >&6; }
-+    if test x$enable_esp = xyes ; then
-+      case "$target" in
-+        ia64*-*-linux*)
-+          enable_crtbeginP=no ;;
-+        *-*-linux*)
-+          if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then
-+            enable_crtbeginP=yes
-+
-+$as_echo "#define ENABLE_CRTBEGINP 1" >>confdefs.h
-+
-+          fi
-+          ;;
-+        *) enable_crtbeginP=no ;;
-+      esac
-+    fi
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_crtbeginP" >&5
-+$as_echo "$enable_crtbeginP" >&6; }
-+fi
-+
-+
- # Configure the subdirectories
- # AC_CONFIG_SUBDIRS($subdirs)
-diff -Nur gcc-4.8.1-vanilla/gcc/configure.ac gcc-4.8.1/gcc/configure.ac
---- gcc-4.8.1-vanilla/gcc/configure.ac 2013-05-08 13:36:36.000000000 +0200
-+++ gcc-4.8.1/gcc/configure.ac 2013-06-27 23:57:54.001095478 +0200
-@@ -5297,6 +5297,55 @@
-                                          [The linker hash style])
- fi
-+# --------------
-+# Esp checks
-+# --------------
-+
-+# Check whether --enable-esp was given and target have the support.
-+AC_ARG_ENABLE([esp],
-+[AS_HELP_STRING([--enable-esp],
-+               [Enable Stack protector and Position independent executable as
-+                default if we have suppot for it when compiling
-+                and link with -z now as default.
-+                Linux targets supported i*86, x86_64, x32,
-+                powerpc, powerpc64, ia64, arm and mips.])],
-+  enable_esp=$enableval,
-+  enable_esp=no)
-+if test $enable_esp = yes ; then
-+  AC_MSG_CHECKING(if $target support esp)
-+  case "$target" in
-+    i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips-*-linux* | arm*-*-linux* | ia64-*-linux*)
-+      enable_esp=yes
-+      AC_DEFINE(ENABLE_ESP, 1,
-+        [Define if your target support esp and you have enable it.])
-+      ;;
-+    *)
-+      enable_esp=no
-+      ;;
-+  esac
-+AC_MSG_RESULT($enable_esp)
-+fi
-+AC_SUBST([enable_esp])
-+if test $enable_esp = yes ; then
-+  AC_MSG_CHECKING(checking for crtbeginP.o support)
-+    if test x$enable_esp = xyes ; then
-+      case "$target" in
-+        ia64*-*-linux*)
-+          enable_crtbeginP=no ;;
-+        *-*-linux*)
-+          if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then
-+            enable_crtbeginP=yes
-+            AC_DEFINE(ENABLE_CRTBEGINP, 1,
-+              [Define if your compiler will support crtbeginP.])
-+          fi
-+          ;;
-+        *) enable_crtbeginP=no ;;
-+      esac
-+    fi
-+  AC_MSG_RESULT($enable_crtbeginP)
-+fi
-+AC_SUBST([enable_crtbeginP])
-+
- # Configure the subdirectories
- # AC_CONFIG_SUBDIRS($subdirs)
-diff -Nur gcc-4.8.1-vanilla/gcc/doc/invoke.texi gcc-4.8.1/gcc/doc/invoke.texi
---- gcc-4.8.1-vanilla/gcc/doc/invoke.texi      2013-03-29 14:41:29.000000000 +0100
-+++ gcc-4.8.1/gcc/doc/invoke.texi      2013-06-27 23:57:54.029096174 +0200
-@@ -8877,6 +8877,11 @@
- @opindex fstack-protector-all
- Like @option{-fstack-protector} except that all functions are protected.
-+NOTE: When --enable-esp this option is enabled by default 
-+for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector}
-+or @option{-nostdlib} or @option{-nodefaultlibs} or 
-+@option{-fstack-protector} are found.
-+
- @item -fsection-anchors
- @opindex fsection-anchors
- Try to reduce the number of symbolic address calculations by using
-@@ -9905,6 +9910,12 @@
- used for compilation (@option{-fpie}, @option{-fPIE},
- or model suboptions) when you specify this linker option.
-+NOTE: When --enable-esp this option is enabled by default
-+for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE}
-+or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or
-+@option{-nostartfiles} or @option{-shared} or @option{-pg} or @option{-p}
-+are found.
-+
- @item -rdynamic
- @opindex rdynamic
- Pass the flag @option{-export-dynamic} to the ELF linker, on targets
-@@ -20360,6 +20371,11 @@
- @code{__pie__} and @code{__PIE__}.  The macros have the value 1
- for @option{-fpie} and 2 for @option{-fPIE}.
-+NOTE: When --enable-esp this option is enabled by default
-+for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE}
-+or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or
-+@option{-nostartfiles} or @option{-shared} are found.
-+
- @item -fno-jump-tables
- @opindex fno-jump-tables
- Do not use jump tables for switch statements even where it would be
-diff -Nur gcc-4.8.1-vanilla/gcc/gcc.c gcc-4.8.1/gcc/gcc.c
---- gcc-4.8.1-vanilla/gcc/gcc.c        2013-05-17 14:24:26.000000000 +0200
-+++ gcc-4.8.1/gcc/gcc.c        2013-06-27 23:57:54.021095975 +0200
-@@ -42,6 +42,7 @@
- #include "opts.h"
- #include "params.h"
- #include "vec.h"
-+#include "config/esp.h" /* for --enable-esp support */
- #include "filenames.h"
- /* By default there is no special suffix for target executables.  */
-@@ -773,7 +774,9 @@
- static const char *asm_debug = ASM_DEBUG_SPEC;
- static const char *cpp_spec = CPP_SPEC;
-+#ifndef ENABLE_ESP
- static const char *cc1_spec = CC1_SPEC;
-+#endif
- static const char *cc1plus_spec = CC1PLUS_SPEC;
- static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
- static const char *link_ssp_spec = LINK_SSP_SPEC;
-diff -Nur gcc-4.8.1-vanilla/gcc/Makefile.in gcc-4.8.1/gcc/Makefile.in
---- gcc-4.8.1-vanilla/gcc/Makefile.in  2013-05-21 18:00:49.000000000 +0200
-+++ gcc-4.8.1/gcc/Makefile.in  2013-06-27 23:57:54.019095926 +0200
-@@ -235,6 +235,14 @@
- LINKER_FLAGS = $(CFLAGS)
- endif
-+# We don't want to compile the compiler with -fPIE, it make PCH fail.
-+enable_esp = @enable_esp@
-+ifeq ($(enable_esp),yes)
-+ESP_NOPIE_CFLAGS = -fno-PIE
-+else
-+ESP_NOPIE_CFLAGS=
-+endif
-+
- # -------------------------------------------
- # Programs which operate on the build machine
- # -------------------------------------------
-@@ -986,12 +994,13 @@
- # This is the variable actually used when we compile. If you change this,
- # you probably want to update BUILD_CFLAGS in configure.ac
--ALL_CFLAGS = $(T_CFLAGS) $(CFLAGS-$@) \
-+ALL_CFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) \
-   $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@
- # The C++ version.
--ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) $(INTERNAL_CFLAGS) \
--  $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) $(WARN_CXXFLAGS) @DEFS@
-+ALL_CXXFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) \
-+  $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) \
-+  $(WARN_CXXFLAGS) @DEFS@
- # Likewise.  Put INCLUDES at the beginning: this way, if some autoconf macro
- # puts -I options in CPPFLAGS, our include files in the srcdir will always
-@@ -1808,6 +1817,8 @@
-       echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars
-       echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars
-       echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars
-+      echo enable_esp = '$(enable_esp)' >> tmp-libgcc.mvars
-+      echo enable_crtbeginP = '@enable_crtbeginP@' >> tmp-libgcc.mvars
-       mv tmp-libgcc.mvars libgcc.mvars
-diff -Nur gcc-4.8.1-vanilla/gcc/varasm.c gcc-4.8.1/gcc/varasm.c
---- gcc-4.8.1-vanilla/gcc/varasm.c     2013-05-10 03:54:06.000000000 +0200
-+++ gcc-4.8.1/gcc/varasm.c     2013-06-27 23:57:54.023096025 +0200
-@@ -5939,7 +5939,11 @@
-   bool is_local;
-   is_local = targetm.binds_local_p (decl);
--  if (!flag_shlib)
-+  #ifdef ENABLE_ESP
-+    if (!flag_pic)
-+  #else
-+    if (!flag_shlib)
-+  #endif
-     {
-       if (is_local)
-       kind = TLS_MODEL_LOCAL_EXEC;
-diff -Nur gcc-4.8.1-vanilla/libgcc/Makefile.in gcc-4.8.1/libgcc/Makefile.in
---- gcc-4.8.1-vanilla/libgcc/Makefile.in       2013-02-04 20:06:20.000000000 +0100
-+++ gcc-4.8.1/libgcc/Makefile.in       2013-06-27 23:57:54.019095926 +0200
-@@ -220,6 +220,17 @@
- DECNUMINC =
- endif
-+ifeq ($(enable_esp),yes)
-+ESP_NOPIE_CFLAGS = -fno-PIE
-+else
-+ESP_NOPIE_CFLAGS=
-+endif
-+
-+# We add crtbeginP.o to the EXTRA_PARTS list if enable_crtbeginP = yes
-+ifeq ($(enable_crtbeginP),yes)
-+EXTRA_PARTS += crtbeginP.o
-+endif
-+
- # Options to use when compiling libgcc2.a.
- #
- LIBGCC2_DEBUG_CFLAGS = -g
-@@ -280,7 +291,7 @@
- CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
-   -finhibit-size-directive -fno-inline -fno-exceptions \
-   -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
--  -fno-stack-protector \
-+  -fno-stack-protector $(ESP_NOPIE_CFLAGS) \
-   $(INHIBIT_LIBC_CFLAGS)
- # Extra flags to use when compiling crt{begin,end}.o.
-@@ -969,6 +980,13 @@
- # This is a version of crtbegin for -static links.
- crtbeginT$(objext): $(srcdir)/crtstuff.c
-       $(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN -DCRTSTUFFT_O
-+
-+# This is a version of crtbegin for -static -fPIE links.
-+ifeq ($(enable_crtbeginP),yes)
-+crtbeginP$(objext): $(srcdir)/crtstuff.c
-+      $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) \
-+        -c $< -DCRT_BEGIN -DCRTSTUFFT_O -DCRTSTUFFS_O
-+endif
- endif
- ifeq ($(CUSTOM_CRTIN),)
-diff -Nur gcc-4.8.1-vanilla/Makefile.in gcc-4.8.1/Makefile.in
---- gcc-4.8.1-vanilla/Makefile.in      2013-03-30 12:25:03.000000000 +0100
-+++ gcc-4.8.1/Makefile.in      2013-06-27 23:57:54.017095876 +0200
-@@ -360,9 +360,17 @@
- BUILD_PREFIX = @BUILD_PREFIX@
- BUILD_PREFIX_1 = @BUILD_PREFIX_1@
-+# Some stuff don't compile with SSP
-+enable_esp = @enable_esp@
-+ifeq ($(enable_esp),yes)
-+ESP_NOSSP_CFLAGS = -fno-stack-protector
-+else
-+ESP_NOSSP_CFLAGS=
-+endif
-+
- # Flags to pass to stage2 and later makes.  They are defined
- # here so that they can be overridden by Makefile fragments.
--BOOT_CFLAGS= -g -O2
-+BOOT_CFLAGS= -g -O2 $(ESP_NOSSP_CFLAGS)
- BOOT_LDFLAGS=
- BOOT_ADAFLAGS= -gnatpg
-@@ -408,9 +416,9 @@
- CFLAGS = @CFLAGS@
- LDFLAGS = @LDFLAGS@
--LIBCFLAGS = $(CFLAGS)
-+LIBCFLAGS = $(CFLAGS) $(ESP_NOSSP_CFLAGS)
- CXXFLAGS = @CXXFLAGS@
--LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
-+LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates $(ESP_NOSSP_CFLAGS)
- GOCFLAGS = $(CFLAGS)
- TFLAGS =
diff --git a/gcc/patches/gcc49-aarch64-async-unw-tables.patch0 b/gcc/patches/gcc49-aarch64-async-unw-tables.patch0
new file mode 100644 (file)
index 0000000..feec149
--- /dev/null
@@ -0,0 +1,35 @@
+2014-04-07  Richard Henderson  <rth@redhat.com>
+
+       * common/config/aarch64/aarch64-common.c (TARGET_OPTION_INIT_STRUCT):
+       Define.
+       (aarch64_option_init_struct): New function.
+
+--- gcc/common/config/aarch64/aarch64-common.c
++++ gcc/common/config/aarch64/aarch64-common.c
+@@ -39,6 +39,9 @@
+ #undef        TARGET_OPTION_OPTIMIZATION_TABLE
+ #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
++#undef TARGET_OPTION_INIT_STRUCT
++#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
++
+ /* Set default optimization options.  */
+ static const struct default_options aarch_option_optimization_table[] =
+   {
+@@ -47,6 +50,16 @@ static const struct default_options aarch_option_optimization_table[] =
+     { OPT_LEVELS_NONE, 0, NULL, 0 }
+   };
++/* Implement TARGET_OPTION_INIT_STRUCT.  */
++
++static void
++aarch64_option_init_struct (struct gcc_options *opts)
++{
++  /* By default, always emit DWARF-2 unwind info.  This allows debugging
++     without maintaining a stack frame back-chain.  */
++  opts->x_flag_asynchronous_unwind_tables = 1;
++}
++
+ /* Implement TARGET_HANDLE_OPTION.
+    This function handles the target specific options for CPU/target selection.
diff --git a/gcc/patches/gcc49-aarch64-unwind-opt.patch0 b/gcc/patches/gcc49-aarch64-unwind-opt.patch0
new file mode 100644 (file)
index 0000000..3ad55ab
--- /dev/null
@@ -0,0 +1,338 @@
+2014-08-08  Richard Henderson  <rth@redhat.com>
+
+       * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Add
+       cfi_ops argument, for restore put REG_CFA_RESTORE notes into
+       *cfi_ops rather than on individual insns.  Cleanup.
+       (aarch64_save_or_restore_callee_save_registers): Likewise.
+       (aarch64_expand_prologue): Adjust caller.
+       (aarch64_expand_epilogue): Likewise.  Cleanup.  Emit queued cfi_ops
+       on the stack restore insn.
+
+--- gcc/config/aarch64/aarch64.c.jj    2014-07-08 17:38:17.398231989 +0200
++++ gcc/config/aarch64/aarch64.c       2014-08-13 10:02:45.599757706 +0200
+@@ -1810,8 +1810,7 @@ aarch64_register_saved_on_entry (int reg
+ static void
+ aarch64_save_or_restore_fprs (int start_offset, int increment,
+-                            bool restore, rtx base_rtx)
+-
++                            bool restore, rtx base_rtx, rtx *cfi_ops)
+ {
+   unsigned regno;
+   unsigned regno2;
+@@ -1819,16 +1818,16 @@ aarch64_save_or_restore_fprs (int start_
+   rtx (*gen_mem_ref)(enum machine_mode, rtx)
+     = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM;
+-
+   for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++)
+     {
+       if (aarch64_register_saved_on_entry (regno))
+       {
+-        rtx mem;
++        rtx mem, reg1;
+         mem = gen_mem_ref (DFmode,
+                            plus_constant (Pmode,
+                                           base_rtx,
+                                           start_offset));
++        reg1 = gen_rtx_REG (DFmode, regno);
+         for (regno2 = regno + 1;
+              regno2 <= V31_REGNUM
+@@ -1840,56 +1839,51 @@ aarch64_save_or_restore_fprs (int start_
+         if (regno2 <= V31_REGNUM &&
+             aarch64_register_saved_on_entry (regno2))
+           {
+-            rtx mem2;
++            rtx mem2, reg2;
+             /* Next highest register to be saved.  */
+             mem2 = gen_mem_ref (DFmode,
+                                 plus_constant
+                                 (Pmode,
+                                  base_rtx,
+                                  start_offset + increment));
++            reg2 = gen_rtx_REG (DFmode, regno2);
++
+             if (restore == false)
+               {
+-                insn = emit_insn
+-                  ( gen_store_pairdf (mem, gen_rtx_REG (DFmode, regno),
+-                                      mem2, gen_rtx_REG (DFmode, regno2)));
+-
++                insn = emit_insn (gen_store_pairdf (mem, reg1, mem2, reg2));
++                /* The first part of a frame-related parallel insn
++                   is always assumed to be relevant to the frame
++                   calculations; subsequent parts, are only
++                   frame-related if explicitly marked.  */
++                RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
++                RTX_FRAME_RELATED_P (insn) = 1;
+               }
+             else
+               {
+-                insn = emit_insn
+-                  ( gen_load_pairdf (gen_rtx_REG (DFmode, regno), mem,
+-                                     gen_rtx_REG (DFmode, regno2), mem2));
+-
+-                add_reg_note (insn, REG_CFA_RESTORE,
+-                              gen_rtx_REG (DFmode, regno));
+-                add_reg_note (insn, REG_CFA_RESTORE,
+-                              gen_rtx_REG (DFmode, regno2));
++                emit_insn (gen_load_pairdf (reg1, mem, reg2, mem2));
++                *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
++                *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops);
+               }
+-                /* The first part of a frame-related parallel insn
+-                   is always assumed to be relevant to the frame
+-                   calculations; subsequent parts, are only
+-                   frame-related if explicitly marked.  */
+-            RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
+             regno = regno2;
+             start_offset += increment * 2;
+           }
+         else
+           {
+             if (restore == false)
+-              insn = emit_move_insn (mem, gen_rtx_REG (DFmode, regno));
++              {
++                insn = emit_move_insn (mem, reg1);
++                RTX_FRAME_RELATED_P (insn) = 1;
++              }
+             else
+               {
+-                insn = emit_move_insn (gen_rtx_REG (DFmode, regno), mem);
+-                add_reg_note (insn, REG_CFA_RESTORE,
+-                              gen_rtx_REG (DImode, regno));
++                emit_move_insn (reg1, mem);
++                *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
+               }
+             start_offset += increment;
+           }
+-        RTX_FRAME_RELATED_P (insn) = 1;
+       }
+     }
+-
+ }
+@@ -1897,13 +1891,14 @@ aarch64_save_or_restore_fprs (int start_
+    restore's have to happen.  */
+ static void
+ aarch64_save_or_restore_callee_save_registers (HOST_WIDE_INT offset,
+-                                          bool restore)
++                                             bool restore, rtx *cfi_ops)
+ {
+   rtx insn;
+   rtx base_rtx = stack_pointer_rtx;
+   HOST_WIDE_INT start_offset = offset;
+   HOST_WIDE_INT increment = UNITS_PER_WORD;
+-  rtx (*gen_mem_ref)(enum machine_mode, rtx) = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM;
++  rtx (*gen_mem_ref)(enum machine_mode, rtx)
++    = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM;
+   unsigned limit = (frame_pointer_needed)? R28_REGNUM: R30_REGNUM;
+   unsigned regno;
+   unsigned regno2;
+@@ -1912,11 +1907,13 @@ aarch64_save_or_restore_callee_save_regi
+     {
+       if (aarch64_register_saved_on_entry (regno))
+       {
+-        rtx mem;
++        rtx mem, reg1;
++
+         mem = gen_mem_ref (Pmode,
+                            plus_constant (Pmode,
+                                           base_rtx,
+                                           start_offset));
++        reg1 = gen_rtx_REG (DImode, regno);
+         for (regno2 = regno + 1;
+              regno2 <= limit
+@@ -1928,56 +1925,54 @@ aarch64_save_or_restore_callee_save_regi
+         if (regno2 <= limit &&
+             aarch64_register_saved_on_entry (regno2))
+           {
+-            rtx mem2;
++            rtx mem2, reg2;
+             /* Next highest register to be saved.  */
+             mem2 = gen_mem_ref (Pmode,
+                                 plus_constant
+                                 (Pmode,
+                                  base_rtx,
+                                  start_offset + increment));
++            reg2 = gen_rtx_REG (DImode, regno2);
++
+             if (restore == false)
+               {
+-                insn = emit_insn
+-                  ( gen_store_pairdi (mem, gen_rtx_REG (DImode, regno),
+-                                      mem2, gen_rtx_REG (DImode, regno2)));
+-
++                insn = emit_insn (gen_store_pairdi (mem, reg1, mem2, reg2));
++                /* The first part of a frame-related parallel insn
++                   is always assumed to be relevant to the frame
++                   calculations; subsequent parts, are only
++                   frame-related if explicitly marked.  */
++                RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
++                RTX_FRAME_RELATED_P (insn) = 1;
+               }
+             else
+               {
+-                insn = emit_insn
+-                  ( gen_load_pairdi (gen_rtx_REG (DImode, regno), mem,
+-                                   gen_rtx_REG (DImode, regno2), mem2));
+-
+-                add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno));
+-                add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno2));
++                emit_insn (gen_load_pairdi (reg1, mem, reg2, mem2));
++                *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
++                *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops);
+               }
+-                /* The first part of a frame-related parallel insn
+-                   is always assumed to be relevant to the frame
+-                   calculations; subsequent parts, are only
+-                   frame-related if explicitly marked.  */
+-            RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0,
+-                                          1)) = 1;
+             regno = regno2;
+             start_offset += increment * 2;
+           }
+         else
+           {
+             if (restore == false)
+-              insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno));
++              {
++                insn = emit_move_insn (mem, reg1);
++                RTX_FRAME_RELATED_P (insn) = 1;
++              }
+             else
+               {
+-                insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem);
+-                add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno));
++                emit_move_insn (reg1, mem);
++                *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
+               }
+             start_offset += increment;
+           }
+-        RTX_FRAME_RELATED_P (insn) = 1;
+       }
+     }
+-  aarch64_save_or_restore_fprs (start_offset, increment, restore, base_rtx);
+-
++  aarch64_save_or_restore_fprs (start_offset, increment, restore,
++                              base_rtx, cfi_ops);
+ }
+ /* AArch64 stack frames generated by this compiler look like:
+@@ -2179,7 +2174,7 @@ aarch64_expand_prologue (void)
+       }
+       aarch64_save_or_restore_callee_save_registers
+-      (fp_offset + cfun->machine->frame.hardfp_offset, 0);
++      (fp_offset + cfun->machine->frame.hardfp_offset, 0, NULL);
+     }
+   /* when offset >= 512,
+@@ -2248,15 +2243,18 @@ aarch64_expand_epilogue (bool for_sibcal
+       insn = emit_insn (gen_add3_insn (stack_pointer_rtx,
+                                      hard_frame_pointer_rtx,
+                                      GEN_INT (- fp_offset)));
++      /* CFA should be calculated from the value of SP from now on.  */
++      add_reg_note (insn, REG_CFA_ADJUST_CFA,
++                  gen_rtx_SET (VOIDmode, stack_pointer_rtx,
++                               plus_constant (Pmode, hard_frame_pointer_rtx,
++                                              -fp_offset)));
+       RTX_FRAME_RELATED_P (insn) = 1;
+-      /* As SP is set to (FP - fp_offset), according to the rules in
+-       dwarf2cfi.c:dwarf2out_frame_debug_expr, CFA should be calculated
+-       from the value of SP from now on.  */
+       cfa_reg = stack_pointer_rtx;
+     }
++  rtx cfi_ops = NULL;
+   aarch64_save_or_restore_callee_save_registers
+-    (fp_offset + cfun->machine->frame.hardfp_offset, 1);
++    (fp_offset + cfun->machine->frame.hardfp_offset, 1, &cfi_ops);
+   /* Restore the frame pointer and lr if the frame pointer is needed.  */
+   if (offset > 0)
+@@ -2264,6 +2262,8 @@ aarch64_expand_epilogue (bool for_sibcal
+       if (frame_pointer_needed)
+       {
+         rtx mem_fp, mem_lr;
++        rtx reg_fp = hard_frame_pointer_rtx;
++        rtx reg_lr = gen_rtx_REG (DImode, LR_REGNUM);
+         if (fp_offset)
+           {
+@@ -2276,52 +2276,36 @@ aarch64_expand_epilogue (bool for_sibcal
+                                                    stack_pointer_rtx,
+                                                    fp_offset
+                                                    + UNITS_PER_WORD));
+-            insn = emit_insn (gen_load_pairdi (hard_frame_pointer_rtx,
+-                                               mem_fp,
+-                                               gen_rtx_REG (DImode,
+-                                                            LR_REGNUM),
+-                                               mem_lr));
++            emit_insn (gen_load_pairdi (reg_fp, mem_fp, reg_lr, mem_lr));
++
++            insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
++                                             GEN_INT (offset)));
+           }
+         else
+           {
+             insn = emit_insn (gen_loadwb_pairdi_di
+-                              (stack_pointer_rtx,
+-                               stack_pointer_rtx,
+-                               hard_frame_pointer_rtx,
+-                               gen_rtx_REG (DImode, LR_REGNUM),
+-                               GEN_INT (offset),
++                              (stack_pointer_rtx, stack_pointer_rtx,
++                               reg_fp, reg_lr, GEN_INT (offset),
+                                GEN_INT (GET_MODE_SIZE (DImode) + offset)));
+-            RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 2)) = 1;
+-            add_reg_note (insn, REG_CFA_ADJUST_CFA,
+-                          (gen_rtx_SET (Pmode, stack_pointer_rtx,
+-                                        plus_constant (Pmode, cfa_reg,
+-                                                       offset))));
+-          }
+-
+-        /* The first part of a frame-related parallel insn
+-           is always assumed to be relevant to the frame
+-           calculations; subsequent parts, are only
+-           frame-related if explicitly marked.  */
+-        RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
+-        RTX_FRAME_RELATED_P (insn) = 1;
+-        add_reg_note (insn, REG_CFA_RESTORE, hard_frame_pointer_rtx);
+-        add_reg_note (insn, REG_CFA_RESTORE,
+-                      gen_rtx_REG (DImode, LR_REGNUM));
+-
+-        if (fp_offset)
+-          {
+-            insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
+-                                             GEN_INT (offset)));
+-            RTX_FRAME_RELATED_P (insn) = 1;
+           }
++        cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg_fp, cfi_ops);
++        cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg_lr, cfi_ops);
+       }
+       else
+       {
+         insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
+                                          GEN_INT (offset)));
+-        RTX_FRAME_RELATED_P (insn) = 1;
+       }
++      cfi_ops = alloc_reg_note (REG_CFA_ADJUST_CFA,
++                              gen_rtx_SET (VOIDmode, stack_pointer_rtx,
++                                           plus_constant (Pmode, cfa_reg,
++                                                          offset)),
++                              cfi_ops);
++      REG_NOTES (insn) = cfi_ops;
++      RTX_FRAME_RELATED_P (insn) = 1;
+     }
++  else
++    gcc_assert (cfi_ops == NULL);
+   /* Stack adjustment for exception handler.  */
+   if (crtl->calls_eh_return)
diff --git a/gcc/patches/gcc49-cloog-dl.patch0 b/gcc/patches/gcc49-cloog-dl.patch0
new file mode 100644 (file)
index 0000000..8a72509
--- /dev/null
@@ -0,0 +1,476 @@
+--- gcc/Makefile.in.jj 2012-12-13 17:09:20.000000000 +0100
++++ gcc/Makefile.in    2012-12-14 11:45:22.585670055 +0100
+@@ -1006,7 +1006,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+ # and the system's installed libraries.
+ LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
+       $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
+-BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(if $(CLOOGLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+       $(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -2011,6 +2011,15 @@ $(out_object_file): $(out_file)
+ $(common_out_object_file): $(common_out_file)
+       $(COMPILE) $<
+       $(POSTCOMPILE)
++
++graphite%.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite%.o : \
++  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
++graphite.o : \
++  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
+ #\f
+ # Generate header and source files from the machine description,
+ # and compile them.
+--- gcc/graphite-poly.h.jj     2012-12-13 11:31:27.000000000 +0100
++++ gcc/graphite-poly.h        2012-12-14 13:41:41.970800726 +0100
+@@ -22,6 +22,371 @@ along with GCC; see the file COPYING3.
+ #ifndef GCC_GRAPHITE_POLY_H
+ #define GCC_GRAPHITE_POLY_H
++#include <isl/aff.h>
++#include <isl/schedule.h>
++#include <isl/ilp.h>
++#include <isl/flow.h>
++#include <isl/options.h>
++#include <cloog/isl/cloog.h>
++#include <dlfcn.h>
++#define DYNSYMS \
++  DYNSYM (clast_pprint); \
++  DYNSYM (cloog_clast_create_from_input); \
++  DYNSYM (cloog_clast_free); \
++  DYNSYM (cloog_domain_from_isl_set); \
++  DYNSYM (cloog_input_alloc); \
++  DYNSYM (cloog_isl_state_malloc); \
++  DYNSYM (cloog_options_free); \
++  DYNSYM (cloog_options_malloc); \
++  DYNSYM (cloog_scattering_from_isl_map); \
++  DYNSYM (cloog_state_free); \
++  DYNSYM (cloog_union_domain_add_domain); \
++  DYNSYM (cloog_union_domain_alloc); \
++  DYNSYM (cloog_union_domain_set_name); \
++  DYNSYM (isl_aff_add_coefficient_si); \
++  DYNSYM (isl_aff_add_constant); \
++  DYNSYM (isl_aff_free); \
++  DYNSYM (isl_aff_get_coefficient); \
++  DYNSYM (isl_aff_get_space); \
++  DYNSYM (isl_aff_mod); \
++  DYNSYM (isl_aff_set_coefficient_si); \
++  DYNSYM (isl_aff_set_constant_si); \
++  DYNSYM (isl_aff_zero_on_domain); \
++  DYNSYM (isl_band_free); \
++  DYNSYM (isl_band_get_children); \
++  DYNSYM (isl_band_get_partial_schedule); \
++  DYNSYM (isl_band_has_children); \
++  DYNSYM (isl_band_list_free); \
++  DYNSYM (isl_band_list_get_band); \
++  DYNSYM (isl_band_list_get_ctx); \
++  DYNSYM (isl_band_list_n_band); \
++  DYNSYM (isl_band_member_is_zero_distance); \
++  DYNSYM (isl_band_n_member); \
++  DYNSYM (isl_basic_map_add_constraint); \
++  DYNSYM (isl_basic_map_project_out); \
++  DYNSYM (isl_basic_map_universe); \
++  DYNSYM (isl_constraint_set_coefficient); \
++  DYNSYM (isl_constraint_set_coefficient_si); \
++  DYNSYM (isl_constraint_set_constant); \
++  DYNSYM (isl_constraint_set_constant_si); \
++  DYNSYM (isl_ctx_alloc); \
++  DYNSYM (isl_ctx_free); \
++  DYNSYM (isl_equality_alloc); \
++  DYNSYM (isl_id_alloc); \
++  DYNSYM (isl_id_copy); \
++  DYNSYM (isl_id_free); \
++  DYNSYM (isl_inequality_alloc); \
++  DYNSYM (isl_local_space_copy); \
++  DYNSYM (isl_local_space_free); \
++  DYNSYM (isl_local_space_from_space); \
++  DYNSYM (isl_local_space_range); \
++  DYNSYM (isl_map_add_constraint); \
++  DYNSYM (isl_map_add_dims); \
++  DYNSYM (isl_map_align_params); \
++  DYNSYM (isl_map_apply_range); \
++  DYNSYM (isl_map_copy); \
++  DYNSYM (isl_map_dim); \
++  DYNSYM (isl_map_dump); \
++  DYNSYM (isl_map_equate); \
++  DYNSYM (isl_map_fix_si); \
++  DYNSYM (isl_map_flat_product); \
++  DYNSYM (isl_map_flat_range_product); \
++  DYNSYM (isl_map_free); \
++  DYNSYM (isl_map_from_basic_map); \
++  DYNSYM (isl_map_from_pw_aff); \
++  DYNSYM (isl_map_from_union_map); \
++  DYNSYM (isl_map_get_ctx); \
++  DYNSYM (isl_map_get_space); \
++  DYNSYM (isl_map_get_tuple_id); \
++  DYNSYM (isl_map_insert_dims); \
++  DYNSYM (isl_map_intersect); \
++  DYNSYM (isl_map_intersect_domain); \
++  DYNSYM (isl_map_intersect_range); \
++  DYNSYM (isl_map_is_empty); \
++  DYNSYM (isl_map_lex_ge); \
++  DYNSYM (isl_map_lex_le); \
++  DYNSYM (isl_map_n_out); \
++  DYNSYM (isl_map_range); \
++  DYNSYM (isl_map_set_tuple_id); \
++  DYNSYM (isl_map_universe); \
++  DYNSYM (isl_options_set_on_error); \
++  DYNSYM (isl_options_set_schedule_fuse); \
++  DYNSYM (isl_options_set_schedule_max_constant_term); \
++  DYNSYM (isl_options_set_schedule_maximize_band_depth); \
++  DYNSYM (isl_printer_free); \
++  DYNSYM (isl_printer_print_aff); \
++  DYNSYM (isl_printer_print_constraint); \
++  DYNSYM (isl_printer_print_map); \
++  DYNSYM (isl_printer_print_set); \
++  DYNSYM (isl_printer_to_file); \
++  DYNSYM (isl_pw_aff_add); \
++  DYNSYM (isl_pw_aff_alloc); \
++  DYNSYM (isl_pw_aff_copy); \
++  DYNSYM (isl_pw_aff_eq_set); \
++  DYNSYM (isl_pw_aff_free); \
++  DYNSYM (isl_pw_aff_from_aff); \
++  DYNSYM (isl_pw_aff_ge_set); \
++  DYNSYM (isl_pw_aff_gt_set); \
++  DYNSYM (isl_pw_aff_is_cst); \
++  DYNSYM (isl_pw_aff_le_set); \
++  DYNSYM (isl_pw_aff_lt_set); \
++  DYNSYM (isl_pw_aff_mod); \
++  DYNSYM (isl_pw_aff_mul); \
++  DYNSYM (isl_pw_aff_ne_set); \
++  DYNSYM (isl_pw_aff_nonneg_set); \
++  DYNSYM (isl_pw_aff_set_tuple_id); \
++  DYNSYM (isl_pw_aff_sub); \
++  DYNSYM (isl_pw_aff_zero_set); \
++  DYNSYM (isl_schedule_free); \
++  DYNSYM (isl_schedule_get_band_forest); \
++  DYNSYM (isl_set_add_constraint); \
++  DYNSYM (isl_set_add_dims); \
++  DYNSYM (isl_set_apply); \
++  DYNSYM (isl_set_coalesce); \
++  DYNSYM (isl_set_copy); \
++  DYNSYM (isl_set_dim); \
++  DYNSYM (isl_set_fix_si); \
++  DYNSYM (isl_set_free); \
++  DYNSYM (isl_set_from_cloog_domain); \
++  DYNSYM (isl_set_get_space); \
++  DYNSYM (isl_set_get_tuple_id); \
++  DYNSYM (isl_set_intersect); \
++  DYNSYM (isl_set_is_empty); \
++  DYNSYM (isl_set_max); \
++  DYNSYM (isl_set_min); \
++  DYNSYM (isl_set_n_dim); \
++  DYNSYM (isl_set_nat_universe); \
++  DYNSYM (isl_set_project_out); \
++  DYNSYM (isl_set_set_tuple_id); \
++  DYNSYM (isl_set_universe); \
++  DYNSYM (isl_space_add_dims); \
++  DYNSYM (isl_space_alloc); \
++  DYNSYM (isl_space_copy); \
++  DYNSYM (isl_space_dim); \
++  DYNSYM (isl_space_domain); \
++  DYNSYM (isl_space_find_dim_by_id); \
++  DYNSYM (isl_space_free); \
++  DYNSYM (isl_space_from_domain); \
++  DYNSYM (isl_space_get_tuple_id); \
++  DYNSYM (isl_space_params_alloc); \
++  DYNSYM (isl_space_range); \
++  DYNSYM (isl_space_set_alloc); \
++  DYNSYM (isl_space_set_dim_id); \
++  DYNSYM (isl_space_set_tuple_id); \
++  DYNSYM (isl_union_map_add_map); \
++  DYNSYM (isl_union_map_align_params); \
++  DYNSYM (isl_union_map_apply_domain); \
++  DYNSYM (isl_union_map_apply_range); \
++  DYNSYM (isl_union_map_compute_flow); \
++  DYNSYM (isl_union_map_copy); \
++  DYNSYM (isl_union_map_empty); \
++  DYNSYM (isl_union_map_flat_range_product); \
++  DYNSYM (isl_union_map_foreach_map); \
++  DYNSYM (isl_union_map_free); \
++  DYNSYM (isl_union_map_from_map); \
++  DYNSYM (isl_union_map_get_ctx); \
++  DYNSYM (isl_union_map_get_space); \
++  DYNSYM (isl_union_map_gist_domain); \
++  DYNSYM (isl_union_map_gist_range); \
++  DYNSYM (isl_union_map_intersect_domain); \
++  DYNSYM (isl_union_map_is_empty); \
++  DYNSYM (isl_union_map_subtract); \
++  DYNSYM (isl_union_map_union); \
++  DYNSYM (isl_union_set_add_set); \
++  DYNSYM (isl_union_set_compute_schedule); \
++  DYNSYM (isl_union_set_copy); \
++  DYNSYM (isl_union_set_empty); \
++  DYNSYM (isl_union_set_from_set); \
++  DYNSYM (stmt_ass); \
++  DYNSYM (stmt_block); \
++  DYNSYM (stmt_for); \
++  DYNSYM (stmt_guard); \
++  DYNSYM (stmt_root); \
++  DYNSYM (stmt_user);
++extern struct cloog_pointers_s__
++{
++  bool inited;
++  void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++  DYNSYMS
++#undef DYNSYM
++} cloog_pointers__;
++
++#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
++#define clast_pprint (*cloog_pointers__.p_clast_pprint)
++#define cloog_clast_create_from_input (*cloog_pointers__.p_cloog_clast_create_from_input)
++#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
++#define cloog_domain_from_isl_set (*cloog_pointers__.p_cloog_domain_from_isl_set)
++#define cloog_input_alloc (*cloog_pointers__.p_cloog_input_alloc)
++#define cloog_isl_state_malloc (*cloog_pointers__.p_cloog_isl_state_malloc)
++#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
++#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
++#define cloog_scattering_from_isl_map (*cloog_pointers__.p_cloog_scattering_from_isl_map)
++#define cloog_state_free (*cloog_pointers__.p_cloog_state_free)
++#define cloog_union_domain_add_domain (*cloog_pointers__.p_cloog_union_domain_add_domain)
++#define cloog_union_domain_alloc (*cloog_pointers__.p_cloog_union_domain_alloc)
++#define cloog_union_domain_set_name (*cloog_pointers__.p_cloog_union_domain_set_name)
++#define isl_aff_add_coefficient_si (*cloog_pointers__.p_isl_aff_add_coefficient_si)
++#define isl_aff_add_constant (*cloog_pointers__.p_isl_aff_add_constant)
++#define isl_aff_free (*cloog_pointers__.p_isl_aff_free)
++#define isl_aff_get_coefficient (*cloog_pointers__.p_isl_aff_get_coefficient)
++#define isl_aff_get_space (*cloog_pointers__.p_isl_aff_get_space)
++#define isl_aff_mod (*cloog_pointers__.p_isl_aff_mod)
++#define isl_aff_set_coefficient_si (*cloog_pointers__.p_isl_aff_set_coefficient_si)
++#define isl_aff_set_constant_si (*cloog_pointers__.p_isl_aff_set_constant_si)
++#define isl_aff_zero_on_domain (*cloog_pointers__.p_isl_aff_zero_on_domain)
++#define isl_band_free (*cloog_pointers__.p_isl_band_free)
++#define isl_band_get_children (*cloog_pointers__.p_isl_band_get_children)
++#define isl_band_get_partial_schedule (*cloog_pointers__.p_isl_band_get_partial_schedule)
++#define isl_band_has_children (*cloog_pointers__.p_isl_band_has_children)
++#define isl_band_list_free (*cloog_pointers__.p_isl_band_list_free)
++#define isl_band_list_get_band (*cloog_pointers__.p_isl_band_list_get_band)
++#define isl_band_list_get_ctx (*cloog_pointers__.p_isl_band_list_get_ctx)
++#define isl_band_list_n_band (*cloog_pointers__.p_isl_band_list_n_band)
++#define isl_band_member_is_zero_distance (*cloog_pointers__.p_isl_band_member_is_zero_distance)
++#define isl_band_n_member (*cloog_pointers__.p_isl_band_n_member)
++#define isl_basic_map_add_constraint (*cloog_pointers__.p_isl_basic_map_add_constraint)
++#define isl_basic_map_project_out (*cloog_pointers__.p_isl_basic_map_project_out)
++#define isl_basic_map_universe (*cloog_pointers__.p_isl_basic_map_universe)
++#define isl_constraint_set_coefficient (*cloog_pointers__.p_isl_constraint_set_coefficient)
++#define isl_constraint_set_coefficient_si (*cloog_pointers__.p_isl_constraint_set_coefficient_si)
++#define isl_constraint_set_constant (*cloog_pointers__.p_isl_constraint_set_constant)
++#define isl_constraint_set_constant_si (*cloog_pointers__.p_isl_constraint_set_constant_si)
++#define isl_ctx_alloc (*cloog_pointers__.p_isl_ctx_alloc)
++#define isl_ctx_free (*cloog_pointers__.p_isl_ctx_free)
++#define isl_equality_alloc (*cloog_pointers__.p_isl_equality_alloc)
++#define isl_id_alloc (*cloog_pointers__.p_isl_id_alloc)
++#define isl_id_copy (*cloog_pointers__.p_isl_id_copy)
++#define isl_id_free (*cloog_pointers__.p_isl_id_free)
++#define isl_inequality_alloc (*cloog_pointers__.p_isl_inequality_alloc)
++#define isl_local_space_copy (*cloog_pointers__.p_isl_local_space_copy)
++#define isl_local_space_free (*cloog_pointers__.p_isl_local_space_free)
++#define isl_local_space_from_space (*cloog_pointers__.p_isl_local_space_from_space)
++#define isl_local_space_range (*cloog_pointers__.p_isl_local_space_range)
++#define isl_map_add_constraint (*cloog_pointers__.p_isl_map_add_constraint)
++#define isl_map_add_dims (*cloog_pointers__.p_isl_map_add_dims)
++#define isl_map_align_params (*cloog_pointers__.p_isl_map_align_params)
++#define isl_map_apply_range (*cloog_pointers__.p_isl_map_apply_range)
++#define isl_map_copy (*cloog_pointers__.p_isl_map_copy)
++#define isl_map_dim (*cloog_pointers__.p_isl_map_dim)
++#define isl_map_dump (*cloog_pointers__.p_isl_map_dump)
++#define isl_map_equate (*cloog_pointers__.p_isl_map_equate)
++#define isl_map_fix_si (*cloog_pointers__.p_isl_map_fix_si)
++#define isl_map_flat_product (*cloog_pointers__.p_isl_map_flat_product)
++#define isl_map_flat_range_product (*cloog_pointers__.p_isl_map_flat_range_product)
++#define isl_map_free (*cloog_pointers__.p_isl_map_free)
++#define isl_map_from_basic_map (*cloog_pointers__.p_isl_map_from_basic_map)
++#define isl_map_from_pw_aff (*cloog_pointers__.p_isl_map_from_pw_aff)
++#define isl_map_from_union_map (*cloog_pointers__.p_isl_map_from_union_map)
++#define isl_map_get_ctx (*cloog_pointers__.p_isl_map_get_ctx)
++#define isl_map_get_space (*cloog_pointers__.p_isl_map_get_space)
++#define isl_map_get_tuple_id (*cloog_pointers__.p_isl_map_get_tuple_id)
++#define isl_map_insert_dims (*cloog_pointers__.p_isl_map_insert_dims)
++#define isl_map_intersect (*cloog_pointers__.p_isl_map_intersect)
++#define isl_map_intersect_domain (*cloog_pointers__.p_isl_map_intersect_domain)
++#define isl_map_intersect_range (*cloog_pointers__.p_isl_map_intersect_range)
++#define isl_map_is_empty (*cloog_pointers__.p_isl_map_is_empty)
++#define isl_map_lex_ge (*cloog_pointers__.p_isl_map_lex_ge)
++#define isl_map_lex_le (*cloog_pointers__.p_isl_map_lex_le)
++#define isl_map_n_out (*cloog_pointers__.p_isl_map_n_out)
++#define isl_map_range (*cloog_pointers__.p_isl_map_range)
++#define isl_map_set_tuple_id (*cloog_pointers__.p_isl_map_set_tuple_id)
++#define isl_map_universe (*cloog_pointers__.p_isl_map_universe)
++#define isl_options_set_on_error (*cloog_pointers__.p_isl_options_set_on_error)
++#define isl_options_set_schedule_fuse (*cloog_pointers__.p_isl_options_set_schedule_fuse)
++#define isl_options_set_schedule_max_constant_term (*cloog_pointers__.p_isl_options_set_schedule_max_constant_term)
++#define isl_options_set_schedule_maximize_band_depth (*cloog_pointers__.p_isl_options_set_schedule_maximize_band_depth)
++#define isl_printer_free (*cloog_pointers__.p_isl_printer_free)
++#define isl_printer_print_aff (*cloog_pointers__.p_isl_printer_print_aff)
++#define isl_printer_print_constraint (*cloog_pointers__.p_isl_printer_print_constraint)
++#define isl_printer_print_map (*cloog_pointers__.p_isl_printer_print_map)
++#define isl_printer_print_set (*cloog_pointers__.p_isl_printer_print_set)
++#define isl_printer_to_file (*cloog_pointers__.p_isl_printer_to_file)
++#define isl_pw_aff_add (*cloog_pointers__.p_isl_pw_aff_add)
++#define isl_pw_aff_alloc (*cloog_pointers__.p_isl_pw_aff_alloc)
++#define isl_pw_aff_copy (*cloog_pointers__.p_isl_pw_aff_copy)
++#define isl_pw_aff_eq_set (*cloog_pointers__.p_isl_pw_aff_eq_set)
++#define isl_pw_aff_free (*cloog_pointers__.p_isl_pw_aff_free)
++#define isl_pw_aff_from_aff (*cloog_pointers__.p_isl_pw_aff_from_aff)
++#define isl_pw_aff_ge_set (*cloog_pointers__.p_isl_pw_aff_ge_set)
++#define isl_pw_aff_gt_set (*cloog_pointers__.p_isl_pw_aff_gt_set)
++#define isl_pw_aff_is_cst (*cloog_pointers__.p_isl_pw_aff_is_cst)
++#define isl_pw_aff_le_set (*cloog_pointers__.p_isl_pw_aff_le_set)
++#define isl_pw_aff_lt_set (*cloog_pointers__.p_isl_pw_aff_lt_set)
++#define isl_pw_aff_mod (*cloog_pointers__.p_isl_pw_aff_mod)
++#define isl_pw_aff_mul (*cloog_pointers__.p_isl_pw_aff_mul)
++#define isl_pw_aff_ne_set (*cloog_pointers__.p_isl_pw_aff_ne_set)
++#define isl_pw_aff_nonneg_set (*cloog_pointers__.p_isl_pw_aff_nonneg_set)
++#define isl_pw_aff_set_tuple_id (*cloog_pointers__.p_isl_pw_aff_set_tuple_id)
++#define isl_pw_aff_sub (*cloog_pointers__.p_isl_pw_aff_sub)
++#define isl_pw_aff_zero_set (*cloog_pointers__.p_isl_pw_aff_zero_set)
++#define isl_schedule_free (*cloog_pointers__.p_isl_schedule_free)
++#define isl_schedule_get_band_forest (*cloog_pointers__.p_isl_schedule_get_band_forest)
++#define isl_set_add_constraint (*cloog_pointers__.p_isl_set_add_constraint)
++#define isl_set_add_dims (*cloog_pointers__.p_isl_set_add_dims)
++#define isl_set_apply (*cloog_pointers__.p_isl_set_apply)
++#define isl_set_coalesce (*cloog_pointers__.p_isl_set_coalesce)
++#define isl_set_copy (*cloog_pointers__.p_isl_set_copy)
++#define isl_set_dim (*cloog_pointers__.p_isl_set_dim)
++#define isl_set_fix_si (*cloog_pointers__.p_isl_set_fix_si)
++#define isl_set_free (*cloog_pointers__.p_isl_set_free)
++#define isl_set_from_cloog_domain (*cloog_pointers__.p_isl_set_from_cloog_domain)
++#define isl_set_get_space (*cloog_pointers__.p_isl_set_get_space)
++#define isl_set_get_tuple_id (*cloog_pointers__.p_isl_set_get_tuple_id)
++#define isl_set_intersect (*cloog_pointers__.p_isl_set_intersect)
++#define isl_set_is_empty (*cloog_pointers__.p_isl_set_is_empty)
++#define isl_set_max (*cloog_pointers__.p_isl_set_max)
++#define isl_set_min (*cloog_pointers__.p_isl_set_min)
++#define isl_set_n_dim (*cloog_pointers__.p_isl_set_n_dim)
++#define isl_set_nat_universe (*cloog_pointers__.p_isl_set_nat_universe)
++#define isl_set_project_out (*cloog_pointers__.p_isl_set_project_out)
++#define isl_set_set_tuple_id (*cloog_pointers__.p_isl_set_set_tuple_id)
++#define isl_set_universe (*cloog_pointers__.p_isl_set_universe)
++#define isl_space_add_dims (*cloog_pointers__.p_isl_space_add_dims)
++#define isl_space_alloc (*cloog_pointers__.p_isl_space_alloc)
++#define isl_space_copy (*cloog_pointers__.p_isl_space_copy)
++#define isl_space_dim (*cloog_pointers__.p_isl_space_dim)
++#define isl_space_domain (*cloog_pointers__.p_isl_space_domain)
++#define isl_space_find_dim_by_id (*cloog_pointers__.p_isl_space_find_dim_by_id)
++#define isl_space_free (*cloog_pointers__.p_isl_space_free)
++#define isl_space_from_domain (*cloog_pointers__.p_isl_space_from_domain)
++#define isl_space_get_tuple_id (*cloog_pointers__.p_isl_space_get_tuple_id)
++#define isl_space_params_alloc (*cloog_pointers__.p_isl_space_params_alloc)
++#define isl_space_range (*cloog_pointers__.p_isl_space_range)
++#define isl_space_set_alloc (*cloog_pointers__.p_isl_space_set_alloc)
++#define isl_space_set_dim_id (*cloog_pointers__.p_isl_space_set_dim_id)
++#define isl_space_set_tuple_id (*cloog_pointers__.p_isl_space_set_tuple_id)
++#define isl_union_map_add_map (*cloog_pointers__.p_isl_union_map_add_map)
++#define isl_union_map_align_params (*cloog_pointers__.p_isl_union_map_align_params)
++#define isl_union_map_apply_domain (*cloog_pointers__.p_isl_union_map_apply_domain)
++#define isl_union_map_apply_range (*cloog_pointers__.p_isl_union_map_apply_range)
++#define isl_union_map_compute_flow (*cloog_pointers__.p_isl_union_map_compute_flow)
++#define isl_union_map_copy (*cloog_pointers__.p_isl_union_map_copy)
++#define isl_union_map_empty (*cloog_pointers__.p_isl_union_map_empty)
++#define isl_union_map_flat_range_product (*cloog_pointers__.p_isl_union_map_flat_range_product)
++#define isl_union_map_foreach_map (*cloog_pointers__.p_isl_union_map_foreach_map)
++#define isl_union_map_free (*cloog_pointers__.p_isl_union_map_free)
++#define isl_union_map_from_map (*cloog_pointers__.p_isl_union_map_from_map)
++#define isl_union_map_get_ctx (*cloog_pointers__.p_isl_union_map_get_ctx)
++#define isl_union_map_get_space (*cloog_pointers__.p_isl_union_map_get_space)
++#define isl_union_map_gist_domain (*cloog_pointers__.p_isl_union_map_gist_domain)
++#define isl_union_map_gist_range (*cloog_pointers__.p_isl_union_map_gist_range)
++#define isl_union_map_intersect_domain (*cloog_pointers__.p_isl_union_map_intersect_domain)
++#define isl_union_map_is_empty (*cloog_pointers__.p_isl_union_map_is_empty)
++#define isl_union_map_subtract (*cloog_pointers__.p_isl_union_map_subtract)
++#define isl_union_map_union (*cloog_pointers__.p_isl_union_map_union)
++#define isl_union_set_add_set (*cloog_pointers__.p_isl_union_set_add_set)
++#define isl_union_set_compute_schedule (*cloog_pointers__.p_isl_union_set_compute_schedule)
++#define isl_union_set_copy (*cloog_pointers__.p_isl_union_set_copy)
++#define isl_union_set_empty (*cloog_pointers__.p_isl_union_set_empty)
++#define isl_union_set_from_set (*cloog_pointers__.p_isl_union_set_from_set)
++#define stmt_ass (*cloog_pointers__.p_stmt_ass)
++#define stmt_block (*cloog_pointers__.p_stmt_block)
++#define stmt_for (*cloog_pointers__.p_stmt_for)
++#define stmt_guard (*cloog_pointers__.p_stmt_guard)
++#define stmt_root (*cloog_pointers__.p_stmt_root)
++#define stmt_user (*cloog_pointers__.p_stmt_user)
++
+ typedef struct poly_dr *poly_dr_p;
+ typedef struct poly_bb *poly_bb_p;
+--- gcc/graphite.c.jj  2012-12-13 11:31:00.000000000 +0100
++++ gcc/graphite.c     2012-12-14 13:40:44.155136961 +0100
+@@ -78,6 +78,34 @@ along with GCC; see the file COPYING3.
+ CloogState *cloog_state;
++__typeof (cloog_pointers__) cloog_pointers__;
++
++static bool
++init_cloog_pointers (void)
++{
++  void *h;
++
++  if (cloog_pointers__.inited)
++    return cloog_pointers__.h != NULL;
++  h = dlopen ("libcloog-isl.so.4", RTLD_LAZY);
++  cloog_pointers__.h = h;
++  if (h == NULL)
++    return false;
++#define DYNSYM(x) \
++  do \
++    { \
++      union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
++      u.q = dlsym (h, #x); \
++      if (u.q == NULL) \
++      return false; \
++      cloog_pointers__.p_##x = u.p; \
++    } \
++  while (0)
++  DYNSYMS
++#undef DYNSYM
++  return true;
++}
++
+ /* Print global statistics to FILE.  */
+ static void
+@@ -277,6 +305,15 @@ graphite_transform_loops (void)
+   if (parallelized_function_p (cfun->decl))
+     return;
++  if (number_of_loops (cfun) <= 1)
++    return;
++
++  if (!init_cloog_pointers ())
++    {
++      sorry ("Graphite loop optimizations cannot be used");
++      return;
++    }
++
+   ctx = isl_ctx_alloc ();
+   isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT);
+   if (!graphite_initialize (ctx))
+--- gcc/graphite-clast-to-gimple.c.jj  2012-12-13 11:31:27.000000000 +0100
++++ gcc/graphite-clast-to-gimple.c     2012-12-14 13:27:47.196519858 +0100
+@@ -910,7 +910,7 @@ compute_bounds_for_loop (struct clast_fo
+    from STMT_FOR.  */
+ static tree
+-type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip)
++type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip)
+ {
+   mpz_t bound_one, bound_two;
+   tree lb_type, ub_type;
+@@ -918,8 +918,8 @@ type_for_clast_for (struct clast_for *st
+   mpz_init (bound_one);
+   mpz_init (bound_two);
+-  lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two);
+-  ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two);
++  lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two);
++  ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two);
+   mpz_clear (bound_one);
+   mpz_clear (bound_two);
diff --git a/gcc/patches/gcc49-cloog-dl2.patch0 b/gcc/patches/gcc49-cloog-dl2.patch0
new file mode 100644 (file)
index 0000000..2f647a3
--- /dev/null
@@ -0,0 +1,74 @@
+2011-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+       * toplev.c (toplev_main_argv): New variable.
+       (toplev_main): Initialize it.
+       * graphite.c (init_cloog_pointers): Load libcloog-isl.so.4 from gcc's private
+       directory.
+
+--- gcc/toplev.c.jj    2008-12-09 23:59:10.000000000 +0100
++++ gcc/toplev.c       2009-01-27 14:33:52.000000000 +0100
+@@ -107,6 +107,8 @@ static bool no_backend;
+ /* Length of line when printing switch values.  */
+ #define MAX_LINE 75
++const char **toplev_main_argv;
++
+ /* Decoded options, and number of such options.  */
+ struct cl_decoded_option *save_decoded_options;
+ unsigned int save_decoded_options_count;
+@@ -1909,6 +1911,8 @@ toplev_main (int argc, char **argv)
+   expandargv (&argc, &argv);
++  toplev_main_argv = CONST_CAST2 (const char **, char **, argv);
++
+   /* Initialization of GCC's environment, and diagnostics.  */
+   general_init (argv[0]);
+--- gcc/graphite.c.jj  2010-12-01 10:24:32.000000000 -0500
++++ gcc/graphite.c     2010-12-01 11:46:07.832118193 -0500
+@@ -72,11 +72,39 @@ __typeof (cloog_pointers__) cloog_pointe
+ static bool
+ init_cloog_pointers (void)
+ {
+-  void *h;
+-
+-  if (cloog_pointers__.inited)
+-    return cloog_pointers__.h != NULL;
+-  h = dlopen ("libcloog-isl.so.4", RTLD_LAZY);
++  void *h = NULL;
++  extern const char **toplev_main_argv;
++  char *buf, *p;
++  size_t len;
++
++  if (cloog_pointers__.inited)
++    return cloog_pointers__.h != NULL;
++  len = progname - toplev_main_argv[0];
++  buf = XALLOCAVAR (char, len + sizeof "libcloog-isl.so.4");
++  memcpy (buf, toplev_main_argv[0], len);
++  strcpy (buf + len, "libcloog-isl.so.4");
++  len += sizeof "libcloog-isl.so.4";
++  p = strstr (buf, "/libexec/");
++  if (p != NULL)
++    {
++      while (1)
++      {
++        char *q = strstr (p + 8, "/libexec/");
++        if (q == NULL)
++          break;
++        p = q;
++      }
++      memmove (p + 4, p + 8, len - (p + 8 - buf));
++      h = dlopen (buf, RTLD_LAZY);
++      if (h == NULL)
++      {
++        len = progname - toplev_main_argv[0];
++        memcpy (buf, toplev_main_argv[0], len);
++        strcpy (buf + len, "libcloog-isl.so.4");
++      }
++    }
++  if (h == NULL)
++    h = dlopen (buf, RTLD_LAZY);
+   cloog_pointers__.h = h;
+   if (h == NULL)
+     return false;
diff --git a/gcc/patches/gcc49-color-auto.patch0 b/gcc/patches/gcc49-color-auto.patch0
new file mode 100644 (file)
index 0000000..a8cf938
--- /dev/null
@@ -0,0 +1,46 @@
+2013-09-20  Jakub Jelinek  <jakub@redhat.com>
+
+       * common.opt (-fdiagnostics-color=): Default to auto.
+       * toplev.c (process_options): Always default to
+       -fdiagnostics-color=auto if no -f{,no-}diagnostics-color*.
+       * doc/invoke.texi (-fdiagnostics-color*): Adjust documentation
+       of the default.
+
+--- gcc/common.opt.jj  2013-09-18 12:06:53.000000000 +0200
++++ gcc/common.opt     2013-09-20 10:00:00.935823900 +0200
+@@ -1037,7 +1037,7 @@ Common Alias(fdiagnostics-color=,always,
+ ;
+ fdiagnostics-color=
+-Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
++Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_AUTO)
+ -fdiagnostics-color=[never|always|auto]       Colorize diagnostics
+ ; Required for these enum values.
+--- gcc/toplev.c.jj    2013-09-09 11:32:39.000000000 +0200
++++ gcc/toplev.c       2013-09-20 10:10:08.198721005 +0200
+@@ -1229,10 +1229,8 @@ process_options (void)
+   maximum_field_alignment = initial_max_fld_align * BITS_PER_UNIT;
+-  /* Default to -fdiagnostics-color=auto if GCC_COLORS is in the environment,
+-     otherwise default to -fdiagnostics-color=never.  */
+-  if (!global_options_set.x_flag_diagnostics_show_color
+-      && getenv ("GCC_COLORS"))
++  /* Default to -fdiagnostics-color=auto.  */
++  if (!global_options_set.x_flag_diagnostics_show_color)
+     pp_show_color (global_dc->printer)
+       = colorize_init (DIAGNOSTICS_COLOR_AUTO);
+--- gcc/doc/invoke.texi.jj     2013-09-18 12:06:50.000000000 +0200
++++ gcc/doc/invoke.texi        2013-09-20 10:09:29.079904455 +0200
+@@ -3046,8 +3046,7 @@ a message which is too long to fit on a
+ @cindex highlight, color, colour
+ @vindex GCC_COLORS @r{environment variable}
+ Use color in diagnostics.  @var{WHEN} is @samp{never}, @samp{always},
+-or @samp{auto}.  The default is @samp{never} if @env{GCC_COLORS} environment
+-variable isn't present in the environment, and @samp{auto} otherwise.
++or @samp{auto}.  The default is @samp{auto}.
+ @samp{auto} means to use color only when the standard error is a terminal.
+ The forms @option{-fdiagnostics-color} and @option{-fno-diagnostics-color} are
+ aliases for @option{-fdiagnostics-color=always} and
similarity index 96%
rename from gcc/patches/gcc48-libstdc++-docs.patch0
rename to gcc/patches/gcc49-libstdc++-docs.patch0
index 019b97467b474fbb79f36c16417f1d4646d30982..2c8c2b86c9c694f631d73fe9311b67b3d82c55bf 100644 (file)
@@ -4,7 +4,7 @@
        <a class="link" href="http://www.fsf.org/" target="_top">FSF
        </a>
      </p><p>
-+      Release 4.8.0
++      Release 4.9.1
 +    </p><p>
        Permission is granted to copy, distribute and/or modify this
        document under the terms of the GNU Free Documentation
@@ -18,7 +18,7 @@
 -  The API documentation, rendered into HTML, can be viewed online:
 +  The API documentation, rendered into HTML, can be viewed here:
  </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
-+      <a class="link" href="api/index.html" target="_top">for the 4.8 release, local
++      <a class="link" href="api/index.html" target="_top">for the 4.9.1 release, local
 +      </a>
 +    </p></li><li class="listitem"><p>
        <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
diff --git a/gcc/patches/gcc49-pr38757.patch0 b/gcc/patches/gcc49-pr38757.patch0
new file mode 100644 (file)
index 0000000..4206584
--- /dev/null
@@ -0,0 +1,106 @@
+2009-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+       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/gcc/patches/gcc49-pr56493.patch0 b/gcc/patches/gcc49-pr56493.patch0
new file mode 100644 (file)
index 0000000..87603db
--- /dev/null
@@ -0,0 +1,76 @@
+2013-06-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/56493
+       * convert.c (convert_to_real, convert_to_expr, convert_to_complex):
+       Handle COMPOUND_EXPR.
+
+       * c-c++-common/pr56493.c: New test.
+
+--- gcc/convert.c.jj   2013-05-13 09:44:53.000000000 +0200
++++ gcc/convert.c      2013-06-16 12:16:13.754108523 +0200
+@@ -95,6 +95,15 @@ convert_to_real (tree type, tree expr)
+   enum built_in_function fcode = builtin_mathfn_code (expr);
+   tree itype = TREE_TYPE (expr);
++  if (TREE_CODE (expr) == COMPOUND_EXPR)
++    {
++      tree t = convert_to_real (type, TREE_OPERAND (expr, 1));
++      if (t == TREE_OPERAND (expr, 1))
++      return expr;
++      return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t),
++                       TREE_OPERAND (expr, 0), t);
++    }    
++
+   /* Disable until we figure out how to decide whether the functions are
+      present in runtime.  */
+   /* Convert (float)sqrt((double)x) where x is float into sqrtf(x) */
+@@ -366,6 +375,15 @@ convert_to_integer (tree type, tree expr
+       return error_mark_node;
+     }
++  if (ex_form == COMPOUND_EXPR)
++    {
++      tree t = convert_to_integer (type, TREE_OPERAND (expr, 1));
++      if (t == TREE_OPERAND (expr, 1))
++      return expr;
++      return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t),
++                       TREE_OPERAND (expr, 0), t);
++    }    
++
+   /* Convert e.g. (long)round(d) -> lround(d).  */
+   /* If we're converting to char, we may encounter differing behavior
+      between converting from double->char vs double->long->char.
+@@ -854,6 +872,14 @@ convert_to_complex (tree type, tree expr
+       if (TYPE_MAIN_VARIANT (elt_type) == TYPE_MAIN_VARIANT (subtype))
+         return expr;
++      else if (TREE_CODE (expr) == COMPOUND_EXPR)
++        {
++          tree t = convert_to_complex (type, TREE_OPERAND (expr, 1));
++          if (t == TREE_OPERAND (expr, 1))
++            return expr;
++          return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR,
++                             TREE_TYPE (t), TREE_OPERAND (expr, 0), t);
++        }    
+       else if (TREE_CODE (expr) == COMPLEX_EXPR)
+         return fold_build2 (COMPLEX_EXPR, type,
+                             convert (subtype, TREE_OPERAND (expr, 0)),
+--- gcc/testsuite/c-c++-common/pr56493.c.jj    2013-06-17 10:24:36.891659600 +0200
++++ gcc/testsuite/c-c++-common/pr56493.c       2013-06-17 10:24:33.164720149 +0200
+@@ -0,0 +1,16 @@
++/* PR c++/56493 */
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-gimple" } */
++
++unsigned long long bar (void);
++int x;
++
++void
++foo (void)
++{
++  x += bar ();
++}
++
++/* Verify we narrow the addition from unsigned long long to unsigned int type.  */
++/* { dg-final { scan-tree-dump "  (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.*  (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.* = \\1 \\+ \\2;" "gimple" { target { ilp32 || lp64 } } } } */
++/* { dg-final { cleanup-tree-dump "gimple" } } */
index 7c7617bba11e0673e40c8fecf05afcf3a6d426c7..e2c50c3a0fca9595479c5fd7ccb582f99c82c91c 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = gettext
-version    = 0.18.2
+version    = 0.19.3
 release    = 1
 
 groups     = System/Base
@@ -31,8 +31,12 @@ build
        requires
                bison
                chrpath
+               expat-devel
+               glib2-devel
                libcroco-devel
+               libunistring-devel
                libxml2-devel
+               ncurses-devel
        end
 
        configure_options += \
@@ -59,6 +63,8 @@ end
 
 packages
        package %{name}
+               provides += bundled(gnulib)
+       end
 
        package %{name}-common-devel
                summary = Common development files for gettext.
index 90a55bc05bf0c890845dfd8162d70b1c7979442b..813b988414c674bcde84cd6c3f4ef731d81a5ceb 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = glibc
-version    = 2.19
+version    = 2.20
 release    = 1
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
@@ -79,7 +79,7 @@ build
                        -e "s/-Wl,--hash-style=both/-Wl,--hash-style=gnu -Wl,-O1/"
 
                # http://sourceware.org/ml/libc-ports/2011-09/msg00018.html
-               sed -e "s/PIC/SHARED/g" -i ports/sysdeps/arm/{set,__long}jmp.S
+               sed -e "s/PIC/SHARED/g" -i sysdeps/arm/{set,__long}jmp.S
        end
 
        configure_options = \
diff --git a/glibc/patches/glibc-2.10.1-asprintf_reset2null-1.patch b/glibc/patches/glibc-2.10.1-asprintf_reset2null-1.patch
deleted file mode 100644 (file)
index 60dd425..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
-Date: 2007-05-07
-Initial Package Version: 2.5
-Upstream Status: Submitted
-http://sourceware.org/ml/libc-alpha/2004-05/msg00067.html
-http://sourceware.org/ml/libc-alpha/2004-06/msg00007.html
-Origin: Alt-Linux / Dmitry V. Levin
-Description: 
-
-The asprintf(3) and vasprintf(3) functions are GNU extentions, not defined
-by C or Posix standards. In Glibc these functions leave (char **strp) undefined
-after an error. This patch resets (char **strp) to NULL after an error, for
-sanity.
-
-This patch, and the behavior it sets, was reviewed and discussed on the Glibc
-mailing list, and appeared to be accepted, and then it looks like it was
-forgotten about.
-
-2004-06-03  Dmitry V. Levin <ldv@altlinux.org>
-
-       * libio/vasprintf.c (_IO_vasprintf): Reset the result pointer
-       to NULL on any error.
-       * manual/stdio.texi: Reflect the change in asprintf API.
-
---- glibc-2.5.orig/libio/vasprintf.c
-+++ glibc-2.5/libio/vasprintf.c
-@@ -50,7 +50,10 @@ _IO_vasprintf (result_ptr, format, args)
-      we know we will never seek on the stream.  */
-   string = (char *) malloc (init_string_size);
-   if (string == NULL)
--    return -1;
-+    {
-+      *result_ptr = NULL;
-+      return -1;
-+    }
- #ifdef _IO_MTSAFE_IO
-   sf._sbf._f._lock = NULL;
- #endif
-@@ -64,6 +67,7 @@ #endif
-   if (ret < 0)
-     {
-       free (sf._sbf._f._IO_buf_base);
-+      *result_ptr = NULL;
-       return ret;
-     }
-   /* Only use realloc if the size we need is of the same (binary)
---- glibc-2.5.orig/manual/stdio.texi
-+++ glibc-2.5/manual/stdio.texi
-@@ -2398,7 +2398,9 @@ to the newly allocated string at that lo
- The return value is the number of characters allocated for the buffer, or
- less than zero if an error occurred. Usually this means that the buffer
--could not be allocated.
-+could not be allocated, and the value of @var{ptr} in this situation is
-+implementation-dependent (in glibc, @var{ptr} will be set to the null
-+pointer, but this behavior should not be relied upon).
- Here is how to use @code{asprintf} to get the same result as the
- @code{snprintf} example, but more easily:
diff --git a/glibc/patches/glibc-2.11.1-mktemp_urandom.patch b/glibc/patches/glibc-2.11.1-mktemp_urandom.patch
deleted file mode 100644 (file)
index 5d1bafc..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
-Date: 2010-02-19
-Initial Package Version: 2.11.1
-Upstream Status: Not Submitted
-Origin: Based on http://www.uclibc.org/cgi-bin/viewcvs.cgi/trunk/uClibc/libc/
-       misc/internals/tempname.c?rev=8887&r1=5747&r2=8887
-Description:
-Use /dev/urandom exclusively with __gen_tempname(), for the mktemp/tmpnam
-family, instead of hp-timing, gettimeofday(), or getpid(). return -1 if
-/dev/urandom does not open.
-
-diff -Naur glibc-2.11.1.orig/sysdeps/posix/tempname.c glibc-2.11.1/sysdeps/posix/tempname.c
---- glibc-2.11.1.orig/sysdeps/posix/tempname.c 2009-12-08 20:10:20.000000000 +0000
-+++ glibc-2.11.1/sysdeps/posix/tempname.c      2010-02-19 17:36:44.000000000 +0000
-@@ -51,10 +51,6 @@
- # include <fcntl.h>
- #endif
--#if HAVE_SYS_TIME_H || _LIBC
--# include <sys/time.h>
--#endif
--
- #if HAVE_STDINT_H || _LIBC
- # include <stdint.h>
- #endif
-@@ -93,11 +89,11 @@
- # define struct_stat64 struct stat64
- #else
- # define struct_stat64 struct stat
--# define __getpid getpid
--# define __gettimeofday gettimeofday
- # define __mkdir mkdir
- # define __open open
- # define __open64 open
-+# define __close close
-+# define __read read
- # define __lxstat64(version, path, buf) lstat (path, buf)
- # define __xstat64(version, path, buf) stat (path, buf)
- #endif
-@@ -106,25 +102,6 @@
- # define __secure_getenv getenv
- #endif
--#ifdef _LIBC
--# include <hp-timing.h>
--# if HP_TIMING_AVAIL
--#  define RANDOM_BITS(Var) \
--  if (__builtin_expect (value == UINT64_C (0), 0))                          \
--    {                                                                       \
--      /* If this is the first time this function is used initialize         \
--       the variable we accumulate the value in to some somewhat             \
--       random value.  If we'd not do this programs at startup time          \
--       might have a reduced set of possible names, at least on slow         \
--       machines.  */                                                        \
--      struct timeval tv;                                                    \
--      __gettimeofday (&tv, NULL);                                           \
--      value = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;                    \
--    }                                                                       \
--  HP_TIMING_NOW (Var)
--# endif
--#endif
--
- /* Use the widest available unsigned type if uint64_t is not
-    available.  The algorithm below extracts a number less than 62**6
-    (approximately 2**35.725) from uint64_t, so ancient hosts where
-@@ -209,6 +186,19 @@
- static const char letters[] =
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-+static unsigned int fillrand(unsigned char *buf, unsigned int len)
-+{
-+    int fd;
-+    unsigned int result = -1;
-+    fd = __open("/dev/urandom", O_RDONLY|O_NONBLOCK|O_NOCTTY);
-+    if (fd >= 0)
-+      {
-+        result = __read(fd, buf, len);
-+        __close(fd);
-+      }
-+    return result;
-+}
-+
- /* Generate a temporary file name based on TMPL.  TMPL must match the
-    rules for mk[s]temp (i.e. end in "XXXXXX", possibly with a suffix).
-    The name constructed does not exist at the time of the call to
-@@ -219,13 +209,12 @@
-                       at the time of the call.
-    __GT_FILE:         create the file using open(O_CREAT|O_EXCL)
-                       and return a read-write fd.  The file is mode 0600.
--   __GT_DIR:          create a directory, which will be mode 0700.
-+   __GT_DIR:          create a directory, which will be mode 0700. */
--   We use a clever algorithm to get hard-to-predict names. */
- int
- __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
- {
--  int len;
-+  int len, i;
-   char *XXXXXX;
-   static uint64_t value;
-   uint64_t random_time_bits;
-@@ -233,6 +222,8 @@
-   int fd = -1;
-   int save_errno = errno;
-   struct_stat64 st;
-+  unsigned char randomness[6];
-+  unsigned int k;
-   /* A lower bound on the number of temporary files to attempt to
-      generate.  The maximum total number of temporary file names that
-@@ -260,39 +251,20 @@
-   /* This is where the Xs start.  */
-   XXXXXX = &tmpl[len - 6 - suffixlen];
--  /* Get some more or less random data.  */
--#ifdef RANDOM_BITS
--  RANDOM_BITS (random_time_bits);
--#else
--# if HAVE_GETTIMEOFDAY || _LIBC
--  {
--    struct timeval tv;
--    __gettimeofday (&tv, NULL);
--    random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;
--  }
--# else
--  random_time_bits = time (NULL);
--# endif
--#endif
--  value += random_time_bits ^ __getpid ();
-+  /* Get some random data, and die otherwise.  */
-+  if (fillrand(randomness,  sizeof(randomness)) != sizeof(randomness))
-+    {
-+      __set_errno (ENODEV);
-+      return -1;
-+    }
-+  for (i = 0 ; i < sizeof(randomness) ; i++)
-+    {
-+      k = ((randomness[i]) % 62);
-+      XXXXXX[i] = letters[k];
-+    }
-   for (count = 0; count < attempts; value += 7777, ++count)
-     {
--      uint64_t v = value;
--
--      /* Fill in the random bits.  */
--      XXXXXX[0] = letters[v % 62];
--      v /= 62;
--      XXXXXX[1] = letters[v % 62];
--      v /= 62;
--      XXXXXX[2] = letters[v % 62];
--      v /= 62;
--      XXXXXX[3] = letters[v % 62];
--      v /= 62;
--      XXXXXX[4] = letters[v % 62];
--      v /= 62;
--      XXXXXX[5] = letters[v % 62];
--
-       switch (kind)
-       {
-       case __GT_FILE:
index 350c3504d63c3f63b6cede92a87991cf9258bacb..1a794772e2de899ec684f6aafb6e52e0a4373302 100644 (file)
@@ -4,7 +4,7 @@ diff -Nrup a/nptl/Makefile b/nptl/Makefile
 @@ -529,15 +529,19 @@ $(addprefix $(objpfx), \
      $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \
                                       $(objpfx)libpthread_nonshared.a
- $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so
+ $(objpfx)tst-unload: $(libdl)
 -# $(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.
index 7e9b7ab0fe361d4f34a1d985b4258c97b2f900c6..0a808ec793939d22f7654f767924366a24c18373 100644 (file)
@@ -15,6 +15,6 @@ diff -Nrup a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Make
  
 +CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables
 +
- ifeq ($(subdir),csu)
- sysdep_routines += hp-timing
- elide-routines.os += hp-timing
+ ifeq ($(subdir),elf)
+ # help gcc inline asm code from dl-machine.h
+ +cflags += -finline-limit=2000
index 44b9195d10ce358ae6ea9bcc43339e4ae2487734..9334f199df0637328fed85c7b4753b2a3cba74e0 100644 (file)
@@ -4,8 +4,8 @@ This is part of commit glibc-2.3.3-1564-gd0b6ac6
 - remove <stropts.h>, define _XOPEN_STREAMS -1 (#436349)
 
 diff -Nrup a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h
---- a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h    2012-06-05 07:42:49.000000000 -0600
-+++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h    2012-06-07 12:15:21.817318674 -0600
+--- a/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-05 07:42:49.000000000 -0600
++++ b/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-07 12:15:21.817318674 -0600
 @@ -188,4 +188,7 @@
  /* Typed memory objects are not available.  */
  #define _POSIX_TYPED_MEMORY_OBJECTS   -1
@@ -18,8 +18,8 @@ diff -Nrup a/streams/Makefile b/streams/Makefile
 --- a/streams/Makefile 2012-06-05 07:42:49.000000000 -0600
 +++ b/streams/Makefile 2012-06-07 12:15:21.824318649 -0600
 @@ -20,7 +20,7 @@
- #
- subdir        := streams
+ include ../Makeconfig
  
 -headers               = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h
 +#headers              = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h
index 86383d4cf02c64f99eee78be258d3c45c192f325..dccace74244cfeac03b3f1b901d0bbb96def6279 100644 (file)
@@ -13,17 +13,17 @@ GLIBC_PRIVATE.
  ChangeLog                                  |    8 ++++++++
  nptl/Versions                              |    1 +
  nptl/nptl-init.c                           |    2 +-
nptl/sysdeps/unix/sysv/linux/i386/Versions |    6 ++++++
nptl/sysdeps/unix/sysv/linux/i386/smp.h    |    2 +-
+ sysdeps/unix/sysv/linux/i386/Versions |    6 ++++++
+ sysdeps/unix/sysv/linux/i386/smp.h    |    2 +-
  5 files changed, 17 insertions(+), 2 deletions(-)
- create mode 100644 nptl/sysdeps/unix/sysv/linux/i386/Versions
+ create mode 100644 sysdeps/unix/sysv/linux/i386/Versions
 
 --- a/nptl/Version
 +++ b/nptl/Versions
 @@ -30,6 +30,7 @@ libc {
-     __libc_alloca_cutoff;
-     # Internal libc interface to libpthread
-     __libc_dl_error_tsd;
+     __libc_pthread_init;
+     __libc_current_sigrtmin_private; __libc_current_sigrtmax_private;
+     __libc_allocate_rtsig_private;
 +    __getrlimit;
    }
  }
@@ -39,17 +39,17 @@ GLIBC_PRIVATE.
        || limit.rlim_cur == RLIM_INFINITY)
      /* The system limit is not usable.  Use an architecture-specific
         default.  */
---- a/nptl/sysdeps/unix/sysv/linux/i386/Versions
-+++ b/nptl/sysdeps/unix/sysv/linux/i386/Versions
-@@ -0,0 +1,6 @@
-+libc {
-+  GLIBC_PRIVATE {
-+    # Internal libc interface to libpthread
+--- a/sysdeps/unix/sysv/linux/i386/Versions
++++ b/sysdeps/unix/sysv/linux/i386/Versions
+@@ -53,5 +53,6 @@
+   }
+   GLIBC_PRIVATE {
+     __modify_ldt;
 +    __uname;
-+  }
-+}
---- a/nptl/sysdeps/unix/sysv/linux/i386/smp.h
-+++ b/nptl/sysdeps/unix/sysv/linux/i386/smp.h
+   }
+ }
+--- a/sysdeps/unix/sysv/linux/i386/smp.h
++++ b/sysdeps/unix/sysv/linux/i386/smp.h
 @@ -36,7 +36,7 @@ is_smp_system (void)
    char *cp;
  
diff --git a/glibc/patches/glibc-ports-2.15-add-arm-dependency-of-libmemusage.so.patch b/glibc/patches/glibc-ports-2.15-add-arm-dependency-of-libmemusage.so.patch
deleted file mode 100644 (file)
index 9f7b1ee..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-From 2d80bda39073a35af4b904d27fa1511cd309b26f Mon Sep 17 00:00:00 2001
-From: Nathan Sidwell <nathan@codesourcery.com>
-Date: Fri, 6 Jan 2012 20:14:44 +0000
-Subject: [PATCH 01/17] Add ARM dependency of libmemusage.so on
- libc_nonshared.a.
-
----
- sysdeps/arm/Makefile |    5 +++++
- 1 file changed, 5 insertions(+), 0 deletions(-)
-
-diff --git a/ports/sysdeps/arm/Makefile b/ports/sysdeps/arm/Makefile
-index 5651161..1a88430 100644
---- a/ports/sysdeps/arm/Makefile
-+++ b/ports/sysdeps/arm/Makefile
-@@ -7,3 +7,8 @@ endif
- ifeq ($(subdir),csu)
- gen-as-const-headers += tlsdesc.sym
- endif
-+
-+# to pull in __aeabi_read_tp, needed for tls
-+ifeq ($(subdir),malloc)
-+$(objpfx)libmemusage.so: $(common-objpfx)libc_nonshared.a
-+endif
--- 
-1.7.5.4
-
diff --git a/glibc/patches/glibc-rh1009145.patch b/glibc/patches/glibc-rh1009145.patch
new file mode 100644 (file)
index 0000000..c1af7fa
--- /dev/null
@@ -0,0 +1,19 @@
+--- glibc-2.18-151-g303e567.orig/elf/ldconfig.c        2013-09-25 14:01:01.522446341 -0400
++++ glibc-2.18-151-g303e567/elf/ldconfig.c     2013-09-25 14:06:31.094218857 -0400
+@@ -959,6 +959,16 @@
+                               || dlib_ptr->flag == FLAG_ELF_LIBC6)
+                              && flag == FLAG_ELF)
+                       dlib_ptr->flag = flag;
++#ifdef __arm__
++                    /* In Fedora 20 binutils regressed temporarily and failed to
++                       mark hard ABI objects with the correct flag. Therefore we
++                       must accept unmarked objects that were previously marked
++                       hard ABI. We can remove this check once the entire distribution
++                       has been rebuilt.  */
++                    else if (dlib_ptr->flag & FLAG_ARM_LIBHF &&
++                             (flag == FLAG_ELF_LIBC6))
++                      ;
++#endif
+                     else
+                       error (0, 0, _("libraries %s and %s in directory %s have same soname but different type."),
+                              dlib_ptr->name, direntry->d_name,
diff --git a/glibc/patches/glibc-rh1013801.patch b/glibc/patches/glibc-rh1013801.patch
new file mode 100644 (file)
index 0000000..ac656b5
--- /dev/null
@@ -0,0 +1,90 @@
+#
+# Posted upstream:
+# https://sourceware.org/ml/libc-alpha/2013-10/msg00065.html
+#
+# This is related to bug 1013801 in that it fixes the problem
+# by modifying the runtime. In bug 1013801 we have libselinux
+# using pthread_atfork which pulls in libpthread, but we don't
+# want that, we want libpthread to be pulled in only when
+# actually needed by the application. This patch makes it
+# possible to avoid requiring libpthread and still use
+# pthread_atfork.
+#
+# The general idea for the design is in the leading comment
+# in the source code.
+#
+diff --git a/nptl/sysdeps/unix/sysv/linux/Makefile b/nptl/sysdeps/unix/sysv/linux/Makefile
+index 6078e2d..36fd50b 100644
+--- a/nptl/Makefile
++++ b/nptl/Makefile
+@@ -18,7 +18,9 @@
+ routines = alloca_cutoff forward libc-lowlevellock libc-cancellation \
+          libc-cleanup libc_pthread_init libc_multiple_threads \
+-         register-atfork unregister-atfork
++         register-atfork unregister-atfork libc_pthread_atfork
++
++static-only-routines += libc_pthread_atfork
+ shared-only-routines = forward
+ libpthread-routines = nptl-init vars events version \
+diff --git a/nptl/libc_pthread_atfork.c b/nptl/libc_pthread_atfork.c
+new file mode 100644
+index 0000000..667049a
+--- /dev/null
++++ b/nptl/libc_pthread_atfork.c
+@@ -0,0 +1,54 @@
++/* Copyright (C) 2013 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
++
++   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
++   <http://www.gnu.org/licenses/>.  */
++
++/* The standard design pattern for making it optional to link against
++   libpthread is to mark the function weak, test if the function
++   address is non-zero and call the function, otherwise use a fallback.
++   The problem with pthread_atfork is that there is no viable
++   fallback.  If you need to do something during fork it has to be done
++   via pthread_atfork.  This makes having libpthread optional and using
++   pthread_atfork impossible.  We make it possible by providing
++   pthread_atfork in libc_nonshared.a.  The real work of pthread_atfork
++   is done by __register_atfork which is already provided in
++   libc_nonshared.a.  It's included in libc_nonshared.a because
++   __dso_handle has to be unique to each DSO such that unloading the DSO
++   can unregister the atfork handlers.  We build pthread_atfork again
++   under a different file name and include it into libc_nonshared.a and
++   libc.a. We keep pthread_atfork in libpthread_nonshared.a and
++   libpthread.a for compatibility and completeness.
++
++   Applications that can't rely on a new glibc should use the following
++   code to optionally include libpthread and still register a function
++   via pthread_atfork i.e. use __register_atfork directly:
++
++   extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden")));
++   extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
++
++   static int __app_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void))
++     {
++       return __register_atfork (prepare, parent, child,
++                               &__dso_handle == NULL ? NULL : __dso_handle);
++     }
++
++   This code requires glibc 2.3.2 or newer. Previous to 2.3.2 no such
++   interfaces exist and at that point is is impossible to have an
++   optional libpthread and call pthread_atfork.
++
++   This code adds no more ABI requirements than already exist since
++   __dso_handle and __register_atfork are already part of the ABI.  */
++#include <pthread_atfork.c>
diff --git a/glibc/patches/glibc-rh1070416.patch b/glibc/patches/glibc-rh1070416.patch
new file mode 100644 (file)
index 0000000..7e4235e
--- /dev/null
@@ -0,0 +1,29 @@
+--- a/nscd/nscd.service
++++ b/nscd/nscd.service
+@@ -2,6 +2,7 @@
+ [Unit]
+ Description=Name Service Cache Daemon
++After=syslog.target
+ [Service]
+ Type=forking
+@@ -17,3 +18,4 @@
+ [Install]
+ WantedBy=multi-user.target
++Also=nscd.socket
+diff --git a/nscd/nscd.socket b/nscd/nscd.socket
+new file mode 100644
+index 0000000..7e512d5
+--- /dev/null
++++ b/nscd/nscd.socket
+@@ -0,0 +1,8 @@
++[Unit]
++Description=Name Service Cache Daemon Socket
++
++[Socket]
++ListenDatagram=/var/run/nscd/socket
++
++[Install]
++WantedBy=sockets.target
diff --git a/glibc/patches/glibc-rh1124987.patch b/glibc/patches/glibc-rh1124987.patch
new file mode 100644 (file)
index 0000000..0b0c3ab
--- /dev/null
@@ -0,0 +1,32 @@
+#
+# This is an experimental patch that should go into rawhide and
+# Fedora 21 to fix failures where python applications fail to 
+# load graphics applications because of the slot usages for TLS.
+# This should eventually go upstream.
+#
+# - Carlos O'Donell
+#
+diff -urN glibc-2.19-886-gdd763fd/sysdeps/generic/ldsodefs.h glibc-2.19-886-gdd763fd.mod/sysdeps/generic/ldsodefs.h
+--- glibc-2.19-886-gdd763fd/sysdeps/generic/ldsodefs.h 2014-08-21 01:00:55.000000000 -0400
++++ glibc-2.19-886-gdd763fd.mod/sysdeps/generic/ldsodefs.h     2014-09-04 19:29:42.929692810 -0400
+@@ -388,8 +388,18 @@
+    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/glibc/patches/glibc-rh697421.patch b/glibc/patches/glibc-rh697421.patch
new file mode 100644 (file)
index 0000000..961c805
--- /dev/null
@@ -0,0 +1,10 @@
+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/glibc/patches/glibc-rh741105.patch b/glibc/patches/glibc-rh741105.patch
new file mode 100644 (file)
index 0000000..973beb5
--- /dev/null
@@ -0,0 +1,20 @@
+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 (__glibc_unlikely (ph->p_offset + ph->p_filesz > st.st_size))
++          {
++            /* 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;
++          }
+         struct loadcmd *c = &loadcmds[nloadcmds++];
+         c->mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1);
diff --git a/glibc/patches/glibc-rh757881.patch b/glibc/patches/glibc-rh757881.patch
new file mode 100644 (file)
index 0000000..f633dc5
--- /dev/null
@@ -0,0 +1,167 @@
+diff -pruN a/malloc/arena.c b/malloc/arena.c
+--- a/malloc/arena.c   2014-01-07 07:07:47.000000000 +0530
++++ b/malloc/arena.c   2014-01-07 14:11:40.093628218 +0530
+@@ -702,7 +702,7 @@ heap_trim (heap_info *heap, size_t pad)
+       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));
+diff -pruN a/malloc/hooks.c b/malloc/hooks.c
+--- a/malloc/hooks.c   2014-01-07 07:07:47.000000000 +0530
++++ b/malloc/hooks.c   2014-01-07 14:12:41.804625603 +0530
+@@ -237,7 +237,9 @@ top_check (void)
+         (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);
+diff -pruN a/malloc/malloc.c b/malloc/malloc.c
+--- a/malloc/malloc.c  2014-01-07 07:07:47.000000000 +0530
++++ b/malloc/malloc.c  2014-01-07 14:29:53.370581893 +0530
+@@ -1404,11 +1404,15 @@ 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))                   \
+-      malloc_printerr (check_action, "corrupted double-linked list", P);      \
++      {                                                                             \
++      mutex_unlock(&(AV)->mutex);                                           \
++      malloc_printerr (check_action, "corrupted double-linked list", P);    \
++      mutex_lock(&(AV)->mutex);                                             \
++      }                                                                             \
+     else {                                                                  \
+         FD->bk = BK;                                                        \
+         BK->fd = FD;                                                        \
+@@ -2524,7 +2528,9 @@ sysmalloc (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);
++            mutex_lock(&av->mutex);
+             }
+           /*
+@@ -3353,7 +3359,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;
+             }
+           check_remalloced_chunk (av, victim, nb);
+@@ -3441,8 +3449,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);
+           /*
+@@ -3589,7 +3601,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)
+@@ -3694,7 +3706,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)
+@@ -3832,9 +3844,11 @@ _int_free (mstate av, mchunkptr p, int h
+     {
+       errstr = "free(): invalid pointer";
+     errout:
+-      if (!have_lock && locked)
++      if (have_lock || locked)
+         (void) mutex_unlock (&av->mutex);
+       malloc_printerr (check_action, errstr, chunk2mem (p));
++      if (have_lock)
++      mutex_lock(&av->mutex);
+       return;
+     }
+   /* We know that each chunk is at least MINSIZE bytes in size or a
+@@ -3981,7 +3995,7 @@ _int_free (mstate av, mchunkptr p, int h
+       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) {
+@@ -3990,7 +4004,7 @@ _int_free (mstate av, mchunkptr p, int h
+       /* consolidate forward */
+       if (!nextinuse) {
+-      unlink(nextchunk, bck, fwd);
++      unlink(av, nextchunk, bck, fwd);
+       size += nextsize;
+       } else
+       clear_inuse_bit_at_offset(nextchunk, 0);
+@@ -4151,7 +4165,7 @@ static void malloc_consolidate(mstate av
+           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) {
+@@ -4159,7 +4173,7 @@ static void malloc_consolidate(mstate av
+           if (!nextinuse) {
+             size += nextsize;
+-            unlink(nextchunk, bck, fwd);
++            unlink(av, nextchunk, bck, fwd);
+           } else
+             clear_inuse_bit_at_offset(nextchunk, 0);
+@@ -4228,7 +4242,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;
+     }
+@@ -4274,7 +4290,7 @@ _int_realloc(mstate av, mchunkptr oldp,
+                (unsigned long) (nb))
+         {
+           newp = oldp;
+-          unlink (next, bck, fwd);
++          unlink (av, next, bck, fwd);
+         }
+       /* allocate, copy, free */
diff --git a/glibc/patches/glibc-rh819430.patch b/glibc/patches/glibc-rh819430.patch
new file mode 100644 (file)
index 0000000..b22e421
--- /dev/null
@@ -0,0 +1,78 @@
+diff -Nrup a/posix/fnmatch.c b/posix/fnmatch.c
+--- a/posix/fnmatch.c  2012-01-01 07:16:32.000000000 -0500
++++ b/posix/fnmatch.c  2012-05-23 14:14:29.099461189 -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,8 @@ fnmatch (pattern, string, flags)
+                                                alloca_used);
+         n = mbsrtowcs (wpattern, &p, n + 1, &ps);
+         if (__glibc_unlikely (n == (size_t) -1))
+-          /* 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 +370,8 @@ fnmatch (pattern, string, flags)
+       prepare_wpattern:
+         n = mbsrtowcs (NULL, &pattern, 0, &ps);
+         if (__glibc_unlikely (n == (size_t) -1))
+-          /* 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 (__glibc_unlikely (n >= (size_t) -1 / sizeof (wchar_t)))
+           {
+             __set_errno (ENOMEM);
+@@ -401,14 +398,8 @@ fnmatch (pattern, string, flags)
+                                               alloca_used);
+         n = mbsrtowcs (wstring, &p, n + 1, &ps);
+         if (__glibc_unlikely (n == (size_t) -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;
+-          }
++          /* Something wrong: Fall back to single byte matching. */
++          goto free_and_try_singlebyte;
+         if (p)
+           {
+             memset (&ps, '\0', sizeof (ps));
+@@ -420,10 +411,8 @@ fnmatch (pattern, string, flags)
+       prepare_wstring:
+         n = mbsrtowcs (NULL, &string, 0, &ps);
+         if (__glibc_unlikely (n == (size_t) -1))
+-          /* 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 singlebyte matching. */
++          goto free_and_try_singlebyte;
+         if (__glibc_unlikely (n >= (size_t) -1 / sizeof (wchar_t)))
+           {
+             free (wpattern_malloc);
+@@ -450,6 +439,10 @@ 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/glibc/patches/glibc-rh825061.patch b/glibc/patches/glibc-rh825061.patch
new file mode 100644 (file)
index 0000000..54fae8b
--- /dev/null
@@ -0,0 +1,13 @@
+diff -rup a/manual/Makefile b/manual/Makefile
+--- a/manual/Makefile  2012-05-20 19:47:38.000000000 -0600
++++ b/manual/Makefile  2012-05-29 22:23:33.920428631 -0600
+@@ -129,7 +129,8 @@ $(objpfx)%.c.texi: examples/%.c
+       mv -f $@.new $@
+ $(objpfx)%.info: %.texinfo
+-      LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=$@ $<
++      LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=`basename $@` $<
++      mv `basename $@`* $(objpfx)
+ $(objpfx)%.dvi: %.texinfo
+       cd $(objpfx);$(TEXI2DVI) -I $(shell cd $(<D) && pwd) --output=$@ \
diff --git a/glibc/patches/glibc-rh827510.patch b/glibc/patches/glibc-rh827510.patch
new file mode 100644 (file)
index 0000000..f5f024c
--- /dev/null
@@ -0,0 +1,27 @@
+2012-06-14  Jeff Law  <law@redhat.com>
+
+
+       * locale/loadlocale.c (_nl_load_locale): Delay setting
+       file->decided until we have successfully loaded the file's
+       data.
+
+diff --git a/locale/loadlocale.c b/locale/loadlocale.c
+index e3fa187..9fd9216 100644
+--- a/locale/loadlocale.c
++++ b/locale/loadlocale.c
+@@ -169,7 +169,6 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
+   int save_err;
+   int alloc = ld_mapped;
+-  file->decided = 1;
+   file->data = NULL;
+   fd = open_not_cancel_2 (file->filename, O_RDONLY | O_CLOEXEC);
+@@ -278,6 +277,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
+   newdata->alloc = alloc;
+   file->data = newdata;
++  file->decided = 1;
+ }
+ void
diff --git a/glibc/patches/glibc-rh841318.patch b/glibc/patches/glibc-rh841318.patch
new file mode 100644 (file)
index 0000000..18ffd8f
--- /dev/null
@@ -0,0 +1,45229 @@
+diff -Nrup a/stdio-common/Makefile b/stdio-common/Makefile
+--- a/stdio-common/Makefile    2012-09-14 14:31:29.000000000 -0600
++++ b/stdio-common/Makefile    2012-09-14 14:41:50.837749196 -0600
+@@ -57,7 +57,7 @@ tests := tstscanf test_rdwr test-popen t
+        bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
+        scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
+        bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide tst-sprintf3 \
+-       bug25 tst-printf-round bug26
++       bug25 tst-printf-round 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-09-14 14:41:27.832840375 -0600
+@@ -0,0 +1,70 @@
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++
++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-09-14 14:41:27.884840169 -0600
+@@ -0,0 +1,45076 @@
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++
++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/vfprintf.c b/stdio-common/vfprintf.c
+--- a/stdio-common/vfprintf.c  2013-06-04 16:40:55.000000000 +0530
++++ b/stdio-common/vfprintf.c  2013-06-04 21:17:10.648403112 +0530
+@@ -263,6 +263,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.  */
+@@ -1672,8 +1678,8 @@ do_positional:
+     size_t nspecs = 0;
+     /* A more or less arbitrary start value.  */
+     size_t nspecs_size = 32 * sizeof (struct printf_spec);
+-    struct printf_spec *specs = alloca (nspecs_size);
++    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.  */
+@@ -1715,10 +1721,25 @@ do_positional:
+         {
+           /* Extend the array of format specifiers.  */
+           struct printf_spec *old = specs;
+-          specs = extend_alloca (specs, nspecs_size, 2 * nspecs_size);
+-
++          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 (*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.  */
+@@ -2039,6 +2060,8 @@ do_positional:
+   }
+ all_done:
++  if (specs_malloced)
++    free (specs);
+   if (__glibc_unlikely (args_malloced != NULL))
+     free (args_malloced);
+   if (__glibc_unlikely (workstart != NULL))
diff --git a/glibc/patches/glibc-rh841787.patch b/glibc/patches/glibc-rh841787.patch
new file mode 100644 (file)
index 0000000..76f85bf
--- /dev/null
@@ -0,0 +1,33 @@
+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++;
diff --git a/glibc/patches/glibc-rh952799.patch b/glibc/patches/glibc-rh952799.patch
new file mode 100644 (file)
index 0000000..9fe22aa
--- /dev/null
@@ -0,0 +1,181 @@
+#
+# Red Hat BZ:
+# https://bugzilla.redhat.com/show_bug.cgi?id=816647
+#
+# ChangeLog
+#
+#2013-04-30  Patsy Franklin  <pfrankli@redhat.com>
+#
+#      * 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 06:43:24.788684270 -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 06:37:16.886521576 -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 06:37:16.889521601 -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 06:37:16.891521619 -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
index b8e6b176ef3f150325fd521b365e93f6c2e24af3..f3160f61b6db30735e7d5cb1b4c6d5486c47a0f8 100644 (file)
@@ -6,7 +6,7 @@
 name       = gnutls
 version    = %{ver_maj}.%{ver_min}
 ver_maj    = 3.3
-ver_min    = 4
+ver_min    = 10
 release    = 1
 
 groups     = System/Libraries
index 1462ba3ac7e2d2a2ccb1e189f75d4f82a7b6f066..1e887d3973d66d0a5f917986e375f34fe4b50e03 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = grep
-version    = 2.18
+version    = 2.21
 release    = 1
 
 groups     = Applications/Text
index 1a4fa8cd2cf4fae4a0641c0fba4d93c4893004ca..1b097c7e476afce179188b3223dd9d87ed85ff90 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = groff
-version    = 1.18.1.4
+version    = 1.22.3
 release    = 1
 
 groups     = Applications/Text
@@ -13,64 +13,45 @@ license    = GPLv2 and GFDL
 summary    = A document formatting system.
 
 description
-       Groff is a document formatting system. Groff takes standard text and \
-       formatting commands as input and produces formatted output. The \
-       created documents can be shown on a display or printed on a printer. \
-       Groff's formatting commands allow you to specify font type and size, \
-       bold type, italic type, the number and size of columns on a page, and \
+       Groff is a document formatting system. Groff takes standard text and
+       formatting commands as input and produces formatted output. The
+       created documents can be shown on a display or printed on a printer.
+       Groff's formatting commands allow you to specify font type and size,
+       bold type, italic type, the number and size of columns on a page, and
        more.
 end
 
-source_dl  =
+source_dl  = http://ftp.gnu.org/gnu/%{name}/
 
 build
        requires
                bison
                gcc-c++
+               ghostscript
+               netpbm-progs
                perl
+               texinfo
        end
 
-       export PAGE = A4
+       # Cannot run in parallel
        PARALLELISMFLAGS =
 
-       configure_options += \
-               --enable-multibyte
-
-       prepare_cmds
-               sed -i \
-                       -e 's/2010/002D/' \
-                       -e 's/2212/002D/' \
-                       -e 's/2018/0060/' \
-                       -e 's/2019/0027/' font/devutf8/R.proto
-       end
-
-       install
-               mkdir -pv %{BUILDROOT}/usr/{bin,include,sbin,share/man}
-               make install \
-                       manroot=%{BUILDROOT}/usr/share/man \
-                       bindir=%{BUILDROOT}/usr/bin \
-                       mandir=%{BUILDROOT}/usr/share/man \
-                       prefix=%{BUILDROOT}/usr \
-                       exec_prefix=%{BUILDROOT}/usr \
-                       sbindir=%{BUILDROOT}/usr/sbin \
-                       sysconfdir=%{BUILDROOT}/etc \
-                       datadir=%{BUILDROOT}/usr/share \
-                       infodir=%{BUILDROOT}/usr/share/info \
-                       sysconfdir=%{BUILDROOT}/etc \
-                       includedir=%{BUILDROOT}/usr/include \
-                       libdir=%{BUILDROOT}/usr/lib \
-                       libexecdir=%{BUILDROOT}/usr/libexec \
-                       localstatedir=%{BUILDROOT}/var \
-                       sharedstatedir=%{BUILDROOT}/usr/com \
-                       infodir=%{BUILDROOT}/usr/share/info
-
-               ln -svf eqn %{BUILDROOT}/usr/bin/geqn
-               ln -svf tbl %{BUILDROOT}/usr/bin/gtbl
+       install_cmds
+               for file in g{nroff,troff,tbl,pic,eqn,neqn,refer,lookbib,indxbib,soelim} zsoelim; do
+                       ln -svf ${file#?} %{BUILDROOT}%{bindir}/${file}
+                       ln -svf ${file#?}.1 %{BUILDROOT}%{mandir}/man1/${file}.1
+               done
        end
 end
 
 packages
        package %{name}
+               filter_requires
+                       main_subs.pl
+                       man.pl
+                       oop_fh.pl
+                       subs.pl
+               end
        end
 
        package %{name}-debuginfo
diff --git a/groff/patches/0002-load-site-font-and-site-tmac-from-etc-groff.patch b/groff/patches/0002-load-site-font-and-site-tmac-from-etc-groff.patch
new file mode 100644 (file)
index 0000000..163f784
--- /dev/null
@@ -0,0 +1,43 @@
+From c6d8bb3e0ebc03274564d7b2c768e9932cc5f79d Mon Sep 17 00:00:00 2001
+From: Jan Vcelak <jvcelak@redhat.com>
+Date: Tue, 1 Jan 2013 15:33:45 +0100
+Subject: [PATCH] load site-font and site-tmac from /etc/groff
+
+Move site-font and site-tmac configuration from /usr/share/groff to
+/etc/groff. That allows permanent custom changes. (Symlinking brought
+a lot of problems with RPM. This is safer and cleaner.)
+
+Signed-off-by: Jan Vcelak <jvcelak@redhat.com>
+---
+ Makefile.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 7534e56..d97d1b9 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -167,7 +167,7 @@ fontdir=$(datasubdir)/font
+ oldfontdir=$(datasubdir)/oldfont
+ # `localfontdir' says where local fonts will be installed (as dev*/*).
+-localfontdir=$(dataprogramdir)/site-font
++localfontdir=@sysconfdir@/groff/site-font
+ # `legacyfontdir' is for compatibility with non-GNU troff.
+ legacyfontdir=/usr/lib/font
+@@ -179,10 +179,10 @@ fontpath=$(localfontdir)$(RT_SEP)$(fontdir)$(RT_SEP)$(legacyfontdir)
+ tmacdir=$(datasubdir)/tmac
+ # `systemtmacdir' says where to install platform-dependent macros.
+-systemtmacdir=$(libprogramdir)/site-tmac
++systemtmacdir=@sysconfdir@/groff/site-tmac
+ # `localtmacdir' says where local files will be installed.
+-localtmacdir=$(dataprogramdir)/site-tmac
++localtmacdir=@sysconfdir@/groff/site-tmac
+ # `appresdir' says where to install the application resource file for
+ # gxditview.
+-- 
+1.8.0.2
+
diff --git a/groff/patches/groff-1.18.1.4-debian_fixes-1.patch b/groff/patches/groff-1.18.1.4-debian_fixes-1.patch
deleted file mode 100644 (file)
index 9e94645..0000000
+++ /dev/null
@@ -1,18983 +0,0 @@
-Submitted By: Matthew Burgess (matthew at linuxfromscratch dot org)
-Date: 2006-10-20
-Initial Package Version: 1.18.1.4
-Origin: http://ftp.debian.org/debian/pool/main/g/groff/groff_1.18.1.1-12.diff.gz
-Upstream Status: This is a debian-specific patch
-Description: Adds the ascii8 and nippon devices to groff for man-db.
-
-diff -Naur groff-1.18.1.4.orig/ChangeLog.jp groff-1.18.1.4/ChangeLog.jp
---- groff-1.18.1.4.orig/ChangeLog.jp   1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/ChangeLog.jp        2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,345 @@
-+2002-11-04  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * src/libs/libgroff/encoding.cc: for C or POSIX locale,
-+              use ascii8 encoding handler
-+      * font/devX*: new font desc for M, G
-+      * src/xditview: support ENABLE_MULTIBYTE (Japanese only?)
-+
-+2002-10-09  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * update groff-1.18-7
-+
-+2002-09-23  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * src/roff/troff/input.cc: fix bug in wchar_charinfo()
-+                              check u<CODE> where <CODE> is 4- HEX chars
-+      * src/device/grohtml/post-html.cc: works ENABLE_MULTIBYTE
-+      * font/devhtml: add font M, G for Japanese
-+
-+2002-09-22  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * new multibyte patch
-+
-+2001-08-16  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * tmac/euc-jp.tmac:
-+        fix disappearing `-' char
-+
-+2001-07-21  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * add ENABLE_MULTIBYTE support to src/xditview
-+
-+2001-07-20  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * introduce "fontset" in font/*/DESC
-+        obsoletes "ondemand"
-+
-+2001-07-19  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * don't use input_encoding->is_wchar_code()
-+      * fix troffrc empty line
-+      * fix duplicate strcasecmp()
-+
-+2001-07-19  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * sub font selection move into environment::add_char()
-+        it makes possible to use \[uni<code>]
-+
-+2001-07-19  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * use generic iconv_handler instead of euc_handler
-+      * internal code now uses UCS-2
-+
-+2001-07-19  Fumitoshi UKAI  <ukai@debian.or.jp
-+
-+      * wchar%x -> uni%X
-+        - still no code conversion
-+        - font description is not accurate
-+      * change "fixed" to charset range
-+
-+2001-07-18  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * Configuration Change: 
-+         obsolete: --enable-japanese (#ifdef NIPPON) 
-+         new:      --enable-multibyte (#ifdef ENABLE_MULTIBYTE)
-+
-+2001-07-18  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * create charinfo for wchar on demand (src/roff/troff/input.cc)
-+      * use "fixed" for font wchar metric (src/libs/libgroff/font.cc)
-+        - font/*/M,G
-+
-+2001-07-17  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * add utf8 encoding handler to src/libs/libgroff/encoding.cc
-+         (this utf8 encodig handler is too slow!)
-+
-+2001-07-15  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * based on groff 1.17.2-1
-+      * use src/include/encoding.h instead of eucmac.h
-+      * introduce src/libs/libgroff/encoding.cc
-+      * introduce tmac/euc-jp.tmac for EUC-JP documents
-+
-+2001-05-24  Fumitoshi UKAI  <ukai@debian.or.jp>
-+
-+      * Apply for groff-1.17
-+
-+2000-01-06  Yoshiaki Yanagihara  <yochi@debian.or.jp>
-+
-+      * Apply japanese patch "jgroff-0.101"
-+        (thanks hanataka@abyss.rim.or.jp).
-+      * Added japanese extention option at configure.in, aclocal.m4.
-+
-+Sat Jan  1 17:10:32 JST 2000  HANATAKA Shinya  <hanataka@abyss.rim.or.jp>
-+
-+      * jgroff-0.100 ¤ò¤½¤Î¤Þ¤Þ groff-1.14 ¤ËŬÍѤ·¤Æ jgroff-101
-+        ¤È¤·¤¿¡£
-+      * grohtml ¤òÆüËܸì¤ËÂбþ¤µ¤»¤ë¡£
-+      * ÆüËܸì¥Þ¥Ë¥å¥¢¥ëÍѤˠtmac.docj ¤È tmac.andocj ¥Þ¥¯¥í¤òÄɲá£
-+
-+Sun Mar 15 18:23:12 1998  Yoshiaki Yanagihara  <yochi@debian.or.jp>
-+
-+      * jgroff ¤Î¥Ù¡¼¥¹¤ò groff-1.11a ¤ËÊѹ¹¤·¡¢jgroff-0.99¥Ñ¥Ã¥Á¤ò
-+        Å¬ÍѤ·¤¿¤â¤Î¤ò jgroff-0.100 ¤È¤·¤¿¡£
-+        ´ðËÜŪ¤Ë jgroff-0.99 ¤Èµ¡Ç½¤ÏƱ¤¸ *¤Ï¤º*¡£
-+
-+Fri Dec 22 11:47:46 1995  Kitagawa Toshiyuki  <tm-kita@kh.rim.or.jp>
-+
-+      * ¥Ð¡¼¥¸¥ç¥ó0.99¡£
-+
-+Mon Dec 18 18:28:37 1995  Kitagawa Toshiyuki  <tm-kita@kh.rim.or.jp>
-+
-+      * tmac/Makefile.sub: ¥¿¡¼¥²¥Ã¥È stamp-wrap¡¢uninstall_sub ¤¬°ìÉô
-+      OS¤Îsh¤Ç¹½Ê¸¥¨¥é¡¼¤È¤Ê¤ë¥ª¥ê¥¸¥Ê¥ë¥Ð¥°¤ò½¤Àµ¡£
-+
-+Wed Dec 13 15:09:26 1995  Kitagawa Toshiyuki  <tm-kita@kh.rim.or.jp>
-+
-+      * jgroff.sh: ¥ª¥ê¥¸¥Ê¥ë¤Ç¥¤¥ó¥¹¥È¡¼¥ë¥Ñ¥¹¤¬Êѹ¹¤µ¤ì¤¿¤Î¤Ë¹ç¤ï¤»¡¢
-+      GROFF_TMAC_PATH¡¢GROFF_FONT_PATH¤òshare/groffÇÛ²¼¤ËÊѹ¹¡£
-+
-+Sat Dec  9 15:28:36 1995  Kitagawa Toshiyuki  <tm-kita@kh.rim.or.jp>
-+
-+      * wchar.h¤«¤éeucmac.h¤Ë¥Õ¥¡¥¤¥ë̾¤òÊѹ¹¡£
-+
-+Fri Dec  8 12:15:47 1995  Yoshio Takaeda  <shio@yinyan.bekkoame.or.jp>
-+
-+      * troff/env.cc(add_char): ¡ØASCIIʸ»ú + ²þ¹Ô¥³¡¼¥É + EUCʸ»ú¡Ù¤È¤¤¤¦
-+      ¥Ñ¥¿¡¼¥ó¤Î»þ¡¢²þ¹Ô¥³¡¼¥É¤¬¥¹¥Ú¡¼¥¹¤ËÊÑ´¹¤µ¤ì¤Ê¤¤¥Ð¥°¤ò½¤Àµ¡£
-+
-+Thu Dec  7 21:35:06 1995  Yanagihara Yoshiaki  <yosiaki@bsd2.kbnes.nec.co.jp>
-+
-+      * troff/input.cc (process_input_stack): gcc-2.7.0¤ÇÊÑ¿ôÄêµÁ¤¬¥¹¥³¡¼¥×
-+      °ãÈ¿¤È¤Ê¤Ã¤Æ¤·¤Þ¤¦²Õ½ê¤ò½¤Àµ¡£
-+
-+Thu Dec  7 21:35:06 1995  Yanagihara Yoshiaki  <yosiaki@bsd2.kbnes.nec.co.jp>
-+
-+      * jgroff¤Î¥Ù¡¼¥¹¥½¡¼¥¹¤ògroff-1.10¤ËÊѹ¹¡£
-+
-+Thu Apr  6 16:56:32 1995  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * devdvi/M.proto-NTT: DNP¤Îpk¥Õ¥©¥ó¥È¤Î¥Á¥§¥Ã¥¯¥µ¥àÃͤ¬0¤Ê¤Î¤Ç¡¢¤³
-+      ¤ì¤Ë¹ç¤ï¤»¤Æchecksum¤ÎÃͤò0¤ËÊѹ¹¡£
-+
-+Mon Apr  3 20:36:37 1995  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * troff/env.cc (possibly_break_line):
-+      line¥ê¥¹¥ÈÃæ¤Îkword_space_node¤òÄ´À°¤¹¤ë½èÍý¤Ç¡¢lineÃæ¤Ë¤³¤Î¥Î¡¼¥É
-+      ¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï½èÍý¤ò¥¹¥­¥Ã¥×¤¹¤ë¤è¤¦¤Ë¤·¤¿(EUC¥³¡¼¥É¤ò´Þ¤Þ
-+      ¤Ê¤¤roff¤ò½èÍý¤¹¤ë¾ì¹ç¤Ë¤Ïkword_space_node¤Ï¸½¤ì¤Ê¤¤¤Î¤Ç½èÍý¤¬¹â®
-+      ²½¤µ¤ì¤ë)¡£
-+
-+Mon Apr  3 20:36:37 1995  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * troff/env.cc (add_char): hwkern¡¢vlower¤Î½é´ü²½¤Ïdevice½é´ü²½¸å
-+      ¤Ë°ìÅÙ¤À¤±¹Ô¤¨¤ÐÎɤ¤¤Î¤Çenvironment¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç¤³¤ì¤ò
-+      ¹Ô¤¦¤è¤¦¤ËÊѹ¹¡£
-+
-+Sat Apr  1 17:57:23 1995  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * troff/input.cc (mount_on_demand): on demand¤Ç¥Þ¥¦¥ó¥È¤µ¤ì¤ë¥Õ¥©
-+      ¥ó¥È̾¤ò¥Ç¥Ð¥¤¥¹¤´¤È¤ÎDESC¥Õ¥¡¥¤¥ë¤Ç»ØÄê¤Ç¤­¤ë¤è¤¦¤ËÊѹ¹¡£
-+      ¥Ç¥£¥ì¥¯¥Æ¥£¥Öondemand¤Ç»ØÄꤷ¤¿¥Õ¥©¥ó¥È¤¬on demand¤Ç¥Þ¥¦¥ó¥È¤µ¤ì¤ë¡£
-+
-+Fri Mar 31 20:23:43 1995  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * libgroff/font.cc (load): ´Á»ú¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ëÍѤ˥ǥ£¥ì¥¯¥Æ¥£¥Ö
-+      fixedkanji¤òÄɲᣤ³¤ì¤Ï³Æʸ»ú¤Î¥á¥È¥ê¥Ã¥¯¤¬Á´¤ÆƱ¤¸¤Ç¤¢¤ë»ö¤ò»ØÄê
-+      ¤¹¤ë¤â¤Î¤Ç¡¢fixedkanji¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ïcharset¤Ïɾ²Á¤µ¤ì¤Ê¤¤
-+      ¤¿¤á´Á»ú¥Õ¥©¥ó¥È¤Î¥í¡¼¥É¤¬Â®¤¤¡£
-+
-+Thu Mar 30 18:20:24 1995  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * troff: node¼±Ê̤òʸ»úÎóÈæ³Ó¤Ç¹Ô¤Ã¤Æ¤¤¤¿¤¬¹â®²½¤Î¤¿¤á¿ôÃÍÈæ³Ó¤Ë
-+      Êѹ¹¤·¤¿¡£
-+
-+Wed Mar 29 20:20:49 1995  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * troff/input.cc: ´Á»ú¥Õ¥©¥ó¥È(M¤ÈG)¤òon demand¤Ç¥Þ¥¦¥ó¥È¤¹¤ë¤è¤¦
-+      ¤ËÊѹ¹¡£¤³¤ì¤Ë¤è¤Ã¤Æ´Á»ú¤ò´Þ¤Þ¤Ê¤¤roff¥Õ¥¡¥¤¥ë¤Î½èÍý»þ´Ö¤¬¹â®²½¤µ
-+      ¤ì¤¿¡£
-+
-+Fri Mar 10 15:34:26 1995  Shigeki Yoshida <shige@theta.iis.u-tokyo.ac.jp>
-+
-+      * troff/input.cc (process): geqn¤Ç¡¢
-+
-+              .EQ
-+              Í×ÁÇ sub µ­¹æ
-+              .EN
-+
-+      ¤ò½èÍý¤¹¤ë¤È¡¢"illegal token in argument to \Z"¤È¤Ê¤Ã¤Æ¤·¤Þ¤¦¥Ð¥°
-+      (\Z¥·¡¼¥±¥ó¥¹¤Î°ú¿ô¤ËEUCʸ»ú¤¬Í褿¾ì¹ç¤ÎÂбþϳ¤ì)¤ò½¤Àµ¡£
-+
-+Mon Feb  6 11:22:33 1995  Yoshio Takaeda <e50110@sakura.kudpc.kyoto-u.ac.jp>
-+
-+      * troff/input.cc: ¹ÔƬ¶Ø§ʸ»ú¤ÎEUC¥³¡¼¥É¤Î°ìÉô¤¬ÉÔÀµ¡£
-+
-+Mon Jan 30 14:02:54 1995  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * ¥Ð¡¼¥¸¥ç¥ó0.97¡£
-+
-+Fri Dec 10 14:26:14 1994  Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
-+
-+      * devdvi/M.proto: NTT JTeX¤ÈASCIIÆüËܸìTeXξÊý¤Îdvi¥Õ¥¡¥¤¥ë¤ò°·¤¨¤ë¤è¤¦
-+      M.proto¥Õ¥¡¥¤¥ë¤òÊѹ¹¡£
-+
-+Fri Dec  9 14:26:14 1994  Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
-+
-+      * troff/node.cc: boldfont_list[]¤Ë¥Õ¥©¥ó¥È̾ B ¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤«¤Ã
-+      ¤¿¤¿¤á¡¢dvi¥Õ¥¡¥¤¥ë¤Ë¥´¥·¥Ã¥¯ÂΤ¬½ÐÎϤµ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
-+
-+Fri Dec  9 14:23:22 1994  Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
-+
-+      * grotty/tty.cc (add_char): EUCʸ»ú¤ËÂФ·¤ÆWCHAR_MODE¤òÀßÄꤷ¤Æ¤¤
-+      ¤Ê¤«¤Ã¤¿¤¿¤á¡¢tty½ÐÎϤǥ´¥·¥Ã¥¯ÂΤ¬Æó½ÅÂǤÁ¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
-+
-+Fri Dec  9 14:19:33 1994  Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
-+
-+      * devdvi/Makefile.sub: ¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë G ¤Ç¡¢name¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤¬
-+      `name M'¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
-+
-+Wed Nov 30 13:24:54 1994  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * ¥Ð¡¼¥¸¥ç¥ó0.96¡£
-+
-+      * grodvi/dvi.cc: FreeBSD 1.1.5R¤Îstrcmp(3)¤Ç¤Ï°ú¿ô¤Ë¥Ì¥ë¥Ý¥¤¥ó¥¿¤ò
-+      ÅϤ¹¤È¥³¥¢¥À¥ó¥×¤·¤Æ¤·¤Þ¤¦¤Î¤Ç¡¢¤³¤ì¤ò²óÈò¤¹¤ë¥³¡¼¥É¤òÄɲä·¤¿¡£
-+
-+Tue Nov 29 13:52:54 1994  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * troff/input.cc: EUC¤Î¥¹¥Ú¡¼¥¹Ê¸»ú(0xa1a1)¤ÏASCII¤Î¥¹¥Ú¡¼¥¹Ê¸»ú¤È
-+      ¤·¤Æ½èÍý¤¹¤ë¤è¤¦½¤Àµ¡£
-+
-+      * devnippon/createM: JISX0208¤Ë¤ª¤¤¤Æʸ»ú¤¬Ì¤ÄêµÁ¤ÎÉôʬ¤Ë¤Ä¤¤¤Æ¤Ï
-+      ¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤Ë½ÐÎϤ·¤Ê¤¤¤è¤¦½¤Àµ¡£
-+
-+Mon Nov 28 18:15:31 1994  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * grodvi/dvi.cc: grodvi¤òÆüËܸ첽¤·¤¿¡£
-+
-+Fri Nov 25 15:39:05 1994  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * troff/env.cc: EUCʸ»ú¤Ç»Ï¤Þ¤ë¹Ô¤ËÂФ·¤Æ¶ÑÅù³ä¤êÉÕ¤±¤¬¹Ô¤ï¤ì¤¿¾ì
-+      ¹ç¡¢¹ÔƬ¤Ë;ʬ¤Ê¶õÇò¤¬Æþ¤ë»ö¤¬¤¢¤Ã¤¿¤Î¤Ç¤³¤ì¤ò½¤Àµ¤·¤¿¡£
-+
-+Fri Nov 18 20:19:55 1994  Masubuchi Toshimichi <tmasu@st.rim.or.jp>
-+
-+      * devnippon/createM.c: createM¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤¬ÉÔÄê¤Ë¤Ê¤ë¤¿¤á¡¢
-+      make¤¬½ªÎ»¤·¤Æ¤·¤Þ¤¦¡£createM¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤¬0¤Ë¤Ê¤ë¤è¤¦½¤Àµ¡£
-+
-+      * devnippon/Makefile.sub: PATH´Ä¶­ÊÑ¿ô¤Ë¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬´Þ¤Þ
-+      ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢devnippon/M¤òmake¤¹¤ë»þÅÀ¤ÇcreateM¤¬¸«¤Ä¤«¤é¤ºmake
-+      ¥¨¥é¡¼¤Ë¤Ê¤ë¥Ð¥°¤ò½¤Àµ¡£
-+
-+Thu Nov 17 17:11:26 1994  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * devnippon/createM.c: gets()¤òfgets()¤ËÊѹ¹¡£
-+
-+Sat Nov 12 13:38:19 1994  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * ¥Ð¡¼¥¸¥ç¥ó0.95¡£
-+
-+      * troff/env.cc: .stt ¥ê¥¯¥¨¥¹¥È¤òÄɲÃ(¥í¡¼¥«¥ë¤Ê¥Þ¥Ë¥å¥¢¥ë½ñ¼°¤Ë¹ç
-+      ¤ï¤»¤ë¤¿¤á -> ¤³¤Î¥ê¥¯¥¨¥¹¥È¤ÏÈó¸ø³«)¡£
-+
-+      * troff/input.cc (init_charset_table): ASCII¤Î¹ÔƬ¶Ø§ʸ»ú¤È¤·¤Æ
-+      ,:;>}¤òÄɲä·¤¿¡£
-+
-+      * EUC¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤Ï¡¢make»þ¤Ë¥Ä¡¼¥ë¤Ë¤è¤Ã¤ÆÀ¸À®¤¹¤ë¤è¤¦Êѹ¹¡£
-+      ¤³¤ì¤Ë¤è¤êpatch¥µ¥¤¥º¤¬¤«¤Ê¤ê¾®¤µ¤¯¤Ê¤Ã¤¿¡£
-+
-+Fri Nov 11 20:53:00 1994  Kitagawa Toshiyuki  <kitagawa@bsd2.kbnes.nec.co.jp>
-+
-+      * troff/env.cc (add_char): <EUCʸ»ú> + <ASCIIʸ»ú>¤Î¾ì¹ç¡¢´Ö¤ËÆþ¤ì
-+      ¤ë¶õÇò¤Ï¶Ø§¤Ë°ãÈ¿¤·¤Ê¤¤¤«¤®¤ê¥Ö¥ì¡¼¥¯²Äǽ¤Ê¶õÇò¤¬Æþ¤ë¤è¤¦½¤Àµ¤·¤¿¡£
-+
-+
-+Tue Oct 25 04:46:09 1994  Kitagawa Toshiyuki  (kitagawa@bsd2.kbnes.nec.co.jp)
-+
-+      * ¥Ð¡¼¥¸¥ç¥ó0.94¡£
-+
-+      * libdriver/input.cc (do_file): -Tlatin1¤ÇEUC¤Ç¤Ï¤Ê¤¤Ê¸»ú¥³¡¼¥É¤ò
-+      EUC¤ÈȽÃǤ·¤Æ¤·¤Þ¤¦¥Ð¥°¤ò½¤Àµ¡£
-+
-+Mon Oct 24 07:16:19 1994  Kitagawa Toshiyuki  (kitagawa@bsd2.kbnes.nec.co.jp)
-+
-+      * troff/node.cc (is_boldfont): FreeBSD 1.1.5¤Ç¡¢¥¼¥íÈÖÃÏ»²¾È¤Î¤¿¤á¥³
-+      ¥¢¥À¥ó¥×¤¹¤ë¥Ð¥°¤ò½¤Àµ¡£
-+
-+      * indxbib/dirnamemax.c: FreeBSD 1.1.5¤Ïpathconf()¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç
-+      _POSIX_VERSION¤òundef¤·¤¿¡£
-+
-+      * ¥Ð¡¼¥¸¥ç¥ó0.93¡£
-+
-+      * geqn¤òÆüËܸ첽¤·¤¿¡£
-+
-+      * devps/DESC¤Îwcharkern¤òÀßÄꤹ¤ë¤È¹ÔƬ¤Ë¶õÇò¤¬Æþ¤Ã¤Æ¤·¤Þ¤¦¥Ð¥°¤Î
-+      ½¤ÀµÊýË¡¤òÊѹ¹¡£
-+
-+Sat Oct 22 08:19:15 1994  Kitagawa Toshiyuki  (kitagawa@bsd2.kbnes.nec.co.jp)
-+
-+      * ¥Ð¡¼¥¸¥ç¥ó0.90¡£
-+
-+      * xtotroff¤òÆüËܸ첽¡£
-+
-+Fri Oct 21 05:33:02 1994  Kitagawa Toshiyuki  (kitagawa@bsd2.kbnes.nec.co.jp)
-+
-+      * devps/DESC¤Îwcharkern¤òÀßÄꤹ¤ë¤È¹ÔƬ¤Ë¶õÇò¤¬Æþ¤Ã¤Æ¤·¤Þ¤¦»ö¤¬¤¢
-+      ¤Ã¤¿¤Î¤Ç¡¢¤³¤ì¤ò½¤Àµ¡£
-+
-+      * pre-release¥Ð¡¼¥¸¥ç¥ó¡£
-+
-+      * gxditview¤òÆüËܸ첽¤·¤¿(¥Õ¥©¥ó¥È¥á¥È¥ê¥Ã¥¯¤Î¼è¤ê½Ð¤·¤¬¤¤¤¤²Ã¸º)¡£
-+
-+Thu Oct 20 05:23:09 1994  Kitagawa Toshiyuki  (kitagawa@bsd2.kbnes.nec.co.jp)
-+
-+      * ¥Õ¥©¥ó¥ÈÈÖ¹æ3¤Ë¥Ü¡¼¥ë¥ÉÂΰʳ°¤Î¥Õ¥©¥ó¥È¤ò¥Þ¥¦¥ó¥È¤·¤¿¾ì¹ç¡¢´Á»ú¥Õ¥©
-+      ¥ó¥È¤¬¥´¥·¥Ã¥¯ÂΤˤʤäƤ·¤Þ¤¦¥Ð¥°¤ò½¤Àµ¡£
-+
-+Wed Oct 19 06:48:55 1994  Kitagawa Toshiyuki  (kitagawa@bsd2.kbnes.nec.co.jp)
-+
-+      * beta¥Ð¡¼¥¸¥ç¥ó¡£
-+
-+Tue Oct 18 05:02:59 1994  Kitagawa Toshiyuki  (kitagawa@bsd2.kbnes.nec.co.jp)
-+
-+      * pic: 
-+      gpic¤òÆüËܸìÂбþ¤·¤¿¡£
-+
-+      * tbl: 
-+      gtbl¤òÆüËܸìÂбþ¤·¤¿¡£
-+
-+      * troff/troff: 
-+      Times-Bold°Ê³°¤Î¥Ü¡¼¥ë¥ÉÂΤ¬¥«¥ì¥ó¥È¥Õ¥©¥ó¥È¤Î»þ¡¢´Á»ú¥Õ¥©¥ó¥È¤¬¥´
-+      ¥·¥Ã¥¯¤ËÀÚ¤êÂؤï¤é¤Ê¤¤¥Ð¥°¤ò½¤Àµ¡£
-+
-+      * troff/troff: 
-+      DESC¤Ë¥Ç¥£¥ì¥¯¥Æ¥£¥Öwcharkern¤òÄɲä·¡¢ASCIIʸ»ú¤ÈEUCʸ»ú¤Î´Ö¤Ë¡¢
-+      »ØÄꤷ¤¿unit¿ô¤À¤±breakÉÔ²Äǽ¤Ê¶õÇò¤òÆþ¤ì¤ë¤è¤¦¤Ë¤·¤¿¡£
-+
-+      * troff/troff: 
-+      DESC¤Ë¥Ç¥£¥ì¥¯¥Æ¥£¥Ölowerwchar¤òÄɲä·¡¢ASCIIʸ»ú¤ËÂФ·¤ÆEUCʸ»ú¤ò¡¢
-+      »ØÄꤷ¤¿unit¿ô¤À¤±²¼¤²¤ë¤è¤¦¤Ë¤·¤¿(ASCIIʸ»ú¤¬Íî¤Á¹þ¤ó¤Ç¸«¤¨¤ë¤¿¤á)¡£
-+      
-+Fri Oct 14 08:29:06 1994  Kitagawa Toshiyuki  (kitagawa@bsd2.kbnes.nec.co.jp)
-+
-+      * aplah¥Ð¡¼¥¸¥ç¥ó¡£
-diff -Naur groff-1.18.1.4.orig/Makefile.in groff-1.18.1.4/Makefile.in
---- groff-1.18.1.4.orig/Makefile.in    2002-09-16 16:51:00.000000000 +0000
-+++ groff-1.18.1.4/Makefile.in 2006-10-18 18:54:44.000000000 +0000
-@@ -136,7 +136,11 @@
- # directory will be always added.
- # `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the
- # current nor in the home directory.
-+ifeq (,$(extratmacdirs))
- tmacpath=$(systemtmacdir):$(localtmacdir):$(tmacdir)
-+else
-+tmacpath=$(systemtmacdir):$(localtmacdir):$(tmacdir):$(extratmacdirs)
-+endif
- # `sys_tmac_prefix' is prefix (if any) for system macro packages.
- sys_tmac_prefix=@sys_tmac_prefix@
-@@ -195,6 +199,9 @@
- man7ext=7
- man7dir=$(manroot)/man$(man7ext)
-+# DVI file format.
-+DVIFORMAT=@DVIFORMAT@
-+
- # The configure script checks whether all necessary utility programs for
- # grohtml are available -- only then we can build the HTML documentation.
- make_html=@make_html@
-@@ -261,6 +268,8 @@
- # -DRETSIGTYPE=int            if signal handlers return int not void  
- # -DIS_EBCDIC_HOST            if the host's encoding is EBCDIC
- # -DPAGEA4                    if the the printer's page size is A4
-+# -DENABLE_MULTIBYTE          enable multibyte extension
-+# -DHAVE_LANGINFO_CODESET     if you have nl_langinfo(CODESET)
- DEFINES=@DEFS@
- # Include
-@@ -395,7 +404,8 @@
-   "PERLPATH=$(PERLPATH)" \
-   "SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \
-   "PURIFY=$(PURIFY)" \
--  "PURIFYCCFLAGS=$(PURIFYCCFLAGS)"
-+  "PURIFYCCFLAGS=$(PURIFYCCFLAGS)" \
-+  "DVIFORMAT=$(DVIFORMAT)"
- SHELL=/bin/sh
- INCDIRS=src/include
-@@ -437,8 +447,10 @@
-   font/devhtml
- ALLTTYDEVDIRS=\
-   font/devascii \
-+  font/devascii8 \
-   font/devlatin1 \
-   font/devutf8 \
-+  font/devnippon \
-   font/devcp1047
- OTHERDIRS=\
-   man \
-@@ -483,7 +495,7 @@
-       fi
- do=all
--dodirs=$(ALLDIRS) dot
-+dodirs=$(DISTDIRS) 
- # Default target for subdir_Makefile
- subdir=src/roff/troff
-diff -Naur groff-1.18.1.4.orig/README.jp groff-1.18.1.4/README.jp
---- groff-1.18.1.4.orig/README.jp      1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/README.jp   2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,142 @@
-+
-+                ÆüËܸìÂбþÈÇ groff-1.12 (jgroff-0.101)
-+
-+
-+                                           ËÌÀî ¿®µü (Kitagawa Toshiyuki)
-+                                                     tm-kita@kh.rim.or.jp
-+
-+                                           Ìø¸¶ ÎÉμ (Yanagihara Yoshiaki)
-+                                                      yochi@debian.or.jp
-+
-+ GNU¤Îroff¥Õ¥©¡¼¥Þ¥Ã¥¿groff(version 1.12)¤ÎÆüËܸìÂбþ¤ò¹Ô¤Ê¤¤¤Þ¤·¤¿¡£
-+ ¾å°Ì¸ß´¹¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢ÆüËܸì¤ò´Þ¤Þ¤Ê¤¤roff¥Ç¡¼¥¿¤Ï¥ª¥ê¥¸¥Ê¥ë¤É
-+¤ª¤ê¤ÎÆ°ºî¤Ë¤Ê¤ê¤Þ¤¹¡£ÆüËܸ첽¤Ë´Ø¤¹¤ë½¤ÀµÉôʬ¤Ë¤Ä¤¤¤Æ¤ÎÃøºî¸¢¤ÏGNU
-+General Public License Version 2 ¤Ë½¾¤¤¤Þ¤¹(¾ÜºÙ¤ÏCOPYING¤ò¸æÍ÷¤¯¤À¤µ¤¤)¡£
-+
-+ ÆüËܸìgroff(jgroff)¤Î¸½¥Ð¡¼¥¸¥ç¥ó¤Ï0.101(ºÇ½ª¦ÂÈÇ)¤Ç¤¹¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó
-+¤Ç¤Ï°Ê²¼¤Î¥â¥¸¥å¡¼¥ë¤¬ÆüËܸ첽¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-+
-+      groff     ...   groff¥É¥é¥¤¥Ð
-+      gtroff    ...   groffËÜÂÎ
-+      grotty    ...   Ã¼ËöÍѥݥ¹¥È¥×¥í¥»¥Ã¥µ
-+      grops     ...   PostScriptÍѥݥ¹¥È¥×¥í¥»¥Ã¥µ
-+        grohtml   ...   HTMLÍѥݥ¹¥È¥×¥í¥»¥Ã¥µ(Thanks HANATAKA Shinya
-+                                               <hanataka@abyss.rim.or.jp>)
-+      grodvi    ...   DVIÍѥݥ¹¥È¥×¥í¥»¥Ã¥µ (NTT JTeX or ASCIIÆüËܸìTeX)
-+      gxditview ...   X¥¦¥£¥ó¥É¥¦Íѥݥ¹¥È¥×¥í¥»¥Ã¥µ
-+      gtbl      ...   tbl¥Þ¥¯¥íÍÑ¥×¥ê¥×¥í¥»¥Ã¥µ
-+      gpic      ...   pic¥Þ¥¯¥íÍÑ¥×¥ê¥×¥í¥»¥Ã¥µ
-+      geqn      ...   eqn¥Þ¥¯¥íÍÑ¥×¥ê¥×¥í¥»¥Ã¥µ
-+      xtotroff  ...   X¤Î¥Õ¥©¥ó¥È¤«¤égroffÍÑ¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹
-+                      ¤ë¥Ä¡¼¥ë
-+
-+¡ô lj4¥Ý¥¹¥È¥×¥í¥»¥Ã¥µ¡¢bib´ØÏ¢¤Î¥³¥Þ¥ó¥É¤ÏÆüËܸì̤Âбþ¤Ç¤¹¡£
-+
-+
-+¡ý ¥¤¥ó¥¹¥È¡¼¥ë
-+
-+ °Ê²¼¤Î´Ä¶­¤Çmake½ÐÍè¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¤¤Þ¤¹¡£
-+
-+      ¡ù  FreeBSD 2.1.0-RELEASE
-+          XFree86-3.1.2, gcc 2.6.3
-+
-+      ¡ù  Debian GNU/Linux 2.2
-+
-+      ¡ù  NEC EWS/4800/310
-+          SVR4.2 Release9.1 Rev.B, X11R5, gcc 2.6.0
-+
-+ (1) ¥ª¥ê¥¸¥Ê¥ë¤ÈƱÍÍconfigure¤ò¼Â¹Ô¤·¤¿¸å¡¢make & install¤·¤Æ²¼¤µ¤¤¡£
-+    ¾Ü¤·¤¯¤ÏINSTALL¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
-+
-+    *) grodvi¤ÏNTT JTeX·Á¼°¤Þ¤¿¤ÏASCIIÆüËܸìTeX·Á¼°¤ÎDVI¥Õ¥¡¥¤¥ë¤ò¥µ¥Ý¡¼
-+       ¥È¤·¤Æ¤¤¤Þ¤¹¡£groff¤¬½ÐÎϤ¹¤ëDVI¥Õ¥¡¥¤¥ë¤òASCIIÆüËܸìTeX·Á¼°¤Ë
-+       ¤·¤¿¤¤¾ì¹ç¤Ïconfigure --JTeX=ASCII¤È¤·¤Æ¤¯¤À¤µ¤¤¡£
-+       --JTeX¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤ÏNTT JTeX·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£
-+
-+ (2) groff¤Îmake¤Î¸å¡¢gxditview(groff¤ÎX¥¦¥£¥ó¥É¥¦Íѥݥ¹¥È¥×¥í¥»¥Ã¥µ)
-+    ¤òmake¤·¤Þ¤¹¡£¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥êľ²¼¤Îxditview¤Øcd¤·¤Æ¡¢
-+
-+      % xmkmf
-+      % make depend
-+      % make all
-+      % make install install.man
-+
-+    ¤Ç¡¢¥¤¥ó¥¹¥È¡¼¥ë´°Î»¤Ç¤¹¡£
-+
-+
-+¡ý »È¤¤Êý
-+
-+ groff¤Î-T¥ª¥×¥·¥ç¥ó¤Ë-Tnippon(üËöɽ¼¨)¤òÄɲä·¤¿°Ê³°¤Ï¥ª¥ê¥¸¥Ê¥ë¤Î¤Þ
-+¤Þ¤Ç¤¹¡£
-+°Ê²¼¤Ï»ÈÍÑÎã¡£
-+
-+ (£±)  groff -Tnippon -man groff.jman
-+
-+ ÆüËܸì¤ò´Þ¤àroff¥Õ¥¡¥¤¥ë(groff.jman)¤òman¥Þ¥¯¥í¤ò»È¤Ã¤Æ¥Õ¥©¡¼¥Þ¥Ã¥È¤·¡¢
-+üËö¤Ëɽ¼¨¤·¤Þ¤¹¡£
-+ 
-+ (£²)  groff -Tps -man groff.jman
-+
-+ ÆüËܸì¤ò´Þ¤àroff¥Õ¥¡¥¤¥ë¤ò¥Õ¥©¡¼¥Þ¥Ã¥È¤·¡¢PostScript¤ËÊÑ´¹¤·¤Þ¤¹¡£
-+
-+ (£³)  groff -TX100 -man groff.jman
-+
-+ ÆüËܸì¤ò´Þ¤àroff¥Õ¥¡¥¤¥ë¤ò¥Õ¥©¡¼¥Þ¥Ã¥È¤·¡¢X¥¦¥£¥ó¥É¥¦¤Ëɽ¼¨¤·¤Þ¤¹¡£
-+
-+ (£´)  groff -Tdvi -man groff.jman
-+
-+ ÆüËܸì¤ò´Þ¤àroff¥Õ¥¡¥¤¥ë¤ò¥Õ¥©¡¼¥Þ¥Ã¥È¤·¡¢DVI¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ·¤Þ¤¹¡£
-+
-+
-+¡ý ÆüËܸ첽¤Ë¤Ä¤¤¤Æ
-+
-+¡¦ ÆüËܸìʸ»ú¥³¡¼¥É¤ÏÆüËܸìEUC(¤Î¥³¡¼¥É¥»¥Ã¥È1)¤Î¤ß¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£
-+
-+¡¦ ÆüËܸì¥Õ¥©¥ó¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥«¥ì¥ó¥È¥Õ¥©¥ó¥È¤¬¥Ü¡¼¥ë¥ÉÂΤλþ¤Ï¥´¥·¥Ã
-+   ¥¯ÂΤˡ¢¤½¤ì°Ê³°¤Î¥Õ¥©¥ó¥È(¥í¡¼¥Þ¥ó¡¢¥¤¥¿¥ê¥Ã¥¯¡¢¥¤¥¿¥ê¥Ã¥¯¥Ü¡¼¥ë¥É
-+   Åù)¤¬¥«¥ì¥ó¥È¥Õ¥©¥ó¥È¤Î»þ¤ÏÌÀÄ«ÂΤˡ¢¼«Æ°Åª¤ËÀÚ¤êÂؤï¤ê¤Þ¤¹¡£ÆüËܸì
-+   ¥Õ¥©¥ó¥È¤òľÀÜ»ØÄꤹ¤ë¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£
-+
-+   (Ãí) ¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë̾¤¬'B'¤Ç½ª¤Ã¤Æ¤¤¤ë¥Õ¥©¥ó¥È(B¡¢TB¡¢HNB¤Ê¤É)¤ò
-+        ¥Ü¡¼¥ë¥É¥Õ¥©¥ó¥È¤È¤·¤Æ¤¤¤Þ¤¹¡£
-+
-+¡¦ ¹ÔƬ¡¢¤ª¤è¤Ó¹ÔËö¶Ø§¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤¾¤ì¤Î¶Ø§ʸ»ú¤Ï¡¢
-+
-+   ¹ÔƬ¶Ø§ʸ»ú:       ¡¢ ¡£¡¤¡¥¡¦¡§¡¨¡©¡ª¡Ë¡Í¡Ï¡Ñ¡×¡Ù¡Û
-+                      ¤¡¤£¤¥¤§¤©¤Ã¤ã¤å¤ç¥¡¥£¥¥¥§¥©¥Ã¥ã¥å¥ç
-+                      . ? ! " ' ) ] * , : ; > }
-+   ¹ÔËö¶Ø§ʸ»ú:      ¡Ê ¡Ì¡Î¡Ð¡Ö¡Ø¡Ú
-+
-+   ¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£
-+
-+¡¦ -Tps¤ò»ØÄꤷ¤¿¾ì¹ç¡¢EUCʸ»ú¤ÈASCIIʸ»ú¤Î´Ö¤Ë¤Ï¡¢Éý¤Î¶¹¤¤¶õÇò¤¬¼«Æ°
-+   Åª¤ËÁÞÆþ¤µ¤ì¤Þ¤¹¡£¤³¤Î¶õÇò¤ÎÉý¤Ïdevps/DESC¤Îwcharkern¤Ç»ØÄꤷ¤Þ¤¹¡£
-+   unitñ°Ì¤Ç¤¹¡£0¤ò»ØÄꤹ¤ë¤È¶õÇò¤ÏÁÞÆþ¤µ¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
-+
-+¡¦ -Tps¤ò»ØÄꤷ¤¿¾ì¹ç¡¢EUCʸ»ú¤ÏASCIIʸ»ú¤ËÂФ·¤Æ¾¯¤·²¼¤²¤Æ½ÐÎϤµ¤ì¤Þ
-+   ¤¹(¤½¤Î¤Þ¤Þ¤À¤ÈASCIIʸ»ú¤¬Íî¤Á¹þ¤ó¤Ç¸«¤¨¤ë¤¿¤á)¡£¤³¤Î²¼¤²Éý¤Ï
-+   devps/DESC¤Îlowerwchar¤Ç»ØÄꤷ¤Þ¤¹¡£unitñ°Ì¤Ç¤¹¡£0¤ò»ØÄꤹ¤ë¤È»ú²¼
-+   ¤²¤Ï¹Ô¤Ê¤ï¤ì¤Þ¤»¤ó¡£
-+
-+¡¦ ¥ª¥ê¥¸¥Ê¥ë¤Ç¤Ï²þ¹Ô¥³¡¼¥É¤Ï̵¾ò·ï¤Ë¥¹¥Ú¡¼¥¹Ê¸»ú¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¤¬¡¢EUC
-+   Ê¸»ú¤Ç°Ï¤Þ¤ì¤¿²þ¹Ô¥³¡¼¥É¤Ï¥¹¥Ú¡¼¥¹¤ËÊÑ´¹¤»¤ºÌµ»ë¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
-+
-+¡¦ EUC¤Î¥¹¥Ú¡¼¥¹Ê¸»ú(0xa1a1)¤ÏASCII¤Î¥¹¥Ú¡¼¥¹Ê¸»ú¤È¤·¤Æ½èÍý¤µ¤ì¤Þ¤¹¡£
-+
-+
-+¡ý ¼Õ¼­
-+
-+grodvi¤ÎASCIIÆüËܸìTeXÂбþ¤Ï¡¢±§ÅÔµÜÂç³Ø¤Î²£ÅĤµ¤ó¤¬¹Ô¤Ê¤Ã¤Æ¤¯¤À¤µ¤¤¤Þ
-+¤·¤¿¡£grohtml¤ÎÆüËܸì(EUC)Âбþ¤Ï¡¢²Ö¿ó¿®ºÈ¤µ¤ó¤¬¹Ô¤Ã¤Æ¤¯¤ì¤Þ¤·¤¿¡£
-+¤Þ¤¿¡¢Â¿¤¯¤ÎÊý¤«¤é¥Ð¥°¤Ë´Ø¤¹¤ëÊó¹ð¡¢½¤Àµ¥¤¥á¡¼¥¸¤òÁ÷¤Ã¤Æ夭¤Þ¤·¤¿¡£
-+¸æ¶¨ÎϤ¯¤À¤µ¤Ã¤¿³§ÍͤˤϤȤƤⴶ¼Õ¤·¤Æ¤ª¤ê¤Þ¤¹¡£Í­Æñ¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£
-+
-+
-+¡ý ¤ª´ê¤¤
-+
-+¸½¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ïlj4¥Ý¥¹¥È¥×¥í¥»¥Ã¥µ¡¢bib´ØÏ¢¤Î¥³¥Þ¥ó¥É·²¤¬ÆüËܸ첽¤µ¤ì
-+¤Æ¤ª¤ê¤Þ¤»¤ó¡£¤³¤ì¤é¤ÎÆüËܸ첽¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤ëÊý¤òÊ罸Ãפ·¤Æ¤ª¤ê¤Þ¤¹¡£
-+¤¼¤Ò¸æ¶¨ÎϤ¯¤À¤µ¤¤¡£¤Þ¤¿¡¢ÆüËܸìÂбþgroff¤Ë´Ø¤·¤Æ¸æ°Õ¸«¡¢¸æ´õ˾Åù¤ò
-+À§Èó¤ªÊ¹¤«¤»¤¯¤À¤µ¤¤¡£º£¸å¤Î»²¹Í¤Ë¤µ¤»¤Æ夭¤Þ¤¹(¤â¤Á¤í¤ó¥Ð¥°Êó¹ð¤â
-+´¿·Þ¤Ç¤¹¡ª)¡£
-+°Ê¾å¤ÏE-Mail¤Ë¤Æ¡¢tm-kita@kh.rim.or.jp°¸¤Ë¤ªÁ÷¤ê¤¯¤À¤µ¤¤¡£
-diff -Naur groff-1.18.1.4.orig/TODO.jp groff-1.18.1.4/TODO.jp
---- groff-1.18.1.4.orig/TODO.jp        1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/TODO.jp     2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,19 @@
-+TODO lists
-+
-+- configure
-+    nl_langinfo()
-+    iconv()
-+
-+- font/devdvi
-+      G,M  -- NTT and/or ASCII
-+- src/devices
-+      grohtml
-+      grodvi
-+      grolbp
-+      grolj4
-+- src/xditview
-+
-+- command line option to specify input/output encoding
-+- font code?
-+      can we assume wchar code == font code?
-+      [to simplify indexing]
-diff -Naur groff-1.18.1.4.orig/aclocal.m4 groff-1.18.1.4/aclocal.m4
---- groff-1.18.1.4.orig/aclocal.m4     2002-06-18 09:36:43.000000000 +0000
-+++ groff-1.18.1.4/aclocal.m4  2006-10-18 18:54:44.000000000 +0000
-@@ -356,6 +356,19 @@
- AC_MSG_RESULT(no);AC_MSG_ERROR([header files do not support C++ (if you are using a version of gcc/g++ earlier than 2.5, you should install libg++)]))
- AC_LANG_POP(C++)])dnl
- dnl
-+dnl Support Multibyte characters, such as Japanese Code (EUC-JP)
-+dnl
-+AC_DEFUN(GROFF_MULTIBYTE,
-+[AC_MSG_CHECKING([whether to enable multibyte extension])
-+AC_ARG_ENABLE(multibyte, [  --enable-multibyte  Enable multibyte extension],
-+  multibyte=$enableval, multibyte=no)
-+if test "x$multibyte" != "xno"; then
-+  AC_DEFINE(ENABLE_MULTIBYTE, 1,
-+    [Define if you want to use multibyte extension.])
-+fi
-+AC_MSG_RESULT([$multibyte])
-+])dnl
-+dnl
- dnl
- AC_DEFUN(GROFF_TMAC,
- [AC_MSG_CHECKING([for prefix of system macro packages])
-@@ -415,6 +428,33 @@
- AC_MSG_RESULT([$tmac_wrap])
- AC_SUBST(tmac_wrap)])dnl
- dnl
-+dnl codeset.m4 from gettext, by Bruno Haible.
-+dnl
-+AC_DEFUN(GROFF_LANGINFO_CODESET,
-+[AC_CACHE_CHECK([for nl_langinfo and CODESET], groff_cv_langinfo_codeset,
-+    [AC_TRY_LINK([#include <langinfo.h>],
-+      [char* cs = nl_langinfo(CODESET);],
-+      groff_cv_langinfo_codeset=yes,
-+      groff_cv_langinfo_codeset=no)
-+    ])
-+  if test $groff_cv_langinfo_codeset = yes; then
-+    AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
-+      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
-+  fi
-+])dnl
-+dnl
-+dnl
-+AC_DEFUN(GROFF_DVIFORMAT,
-+[AC_MSG_CHECKING([japanese dvi file format])
-+if test "x$dvi_format" != "xASCII"; then
-+  DVIFORMAT=NTT
-+else
-+  DVIFORMAT=ASCII
-+fi
-+AC_MSG_RESULT([$DVIFORMAT])
-+AC_SUBST(DVIFORMAT)
-+])dnl
-+dnl
- dnl
- AC_DEFUN(GROFF_G,
- [AC_MSG_CHECKING([for existing troff installation])
-@@ -481,7 +521,7 @@
-  AC_DEFINE(IS_EBCDIC_HOST, 1,
-          [Define if the host's encoding is EBCDIC.]),
- groff_cv_ebcdic="no"
-- TTYDEVDIRS="font/devascii font/devlatin1"
-+ TTYDEVDIRS="font/devascii font/devlatin1 font/devascii8 font/devnippon"
-  OTHERDEVDIRS="font/devlj4 font/devlbp"
-  AC_MSG_RESULT(no))
- AC_SUBST(TTYDEVDIRS)
-diff -Naur groff-1.18.1.4.orig/configure groff-1.18.1.4/configure
---- groff-1.18.1.4.orig/configure      2002-09-20 16:14:00.000000000 +0000
-+++ groff-1.18.1.4/configure   2006-10-18 18:54:44.000000000 +0000
-@@ -305,7 +305,7 @@
- # include <unistd.h>
- #endif"
--ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS groff_top_builddir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX TTYDEVDIRS OTHERDEVDIRS LPR LP LPQ PSPRINT DVIPRINT PERLPATH YACC RANLIB ac_ct_RANLIB INSTALL_INFO INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S SH_SCRIPT_SED_CMD CPP EGREP LIBM LIBOBJS BROKEN_SPOOLER_FLAGS PAGE g sys_tmac_prefix tmac_wrap pnmcut pnmcrop pnmtopng gs psselect make_html make_install_html LTLIBOBJS'
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS groff_top_builddir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX TTYDEVDIRS OTHERDEVDIRS LPR LP LPQ PSPRINT DVIPRINT PERLPATH YACC RANLIB ac_ct_RANLIB INSTALL_INFO INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S SH_SCRIPT_SED_CMD CPP EGREP LIBM LIBOBJS BROKEN_SPOOLER_FLAGS PAGE g sys_tmac_prefix tmac_wrap pnmcut pnmcrop pnmtopng gs psselect make_html make_install_html DVIFORMAT LTLIBOBJS'
- ac_subst_files=''
- # Initialize some variables set by options.
-@@ -841,6 +841,11 @@
-   cat <<\_ACEOF
-+Optional Features:
-+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-+  --enable-multibyte  Enable multibyte extension
-+
- Some influential environment variables:
-   CC          C compiler command
-   CFLAGS      C compiler flags
-@@ -2530,7 +2535,7 @@
-   echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- groff_cv_ebcdic="no"
-- TTYDEVDIRS="font/devascii font/devlatin1"
-+ TTYDEVDIRS="font/devascii font/devlatin1 font/devascii8 font/devnippon"
-  OTHERDEVDIRS="font/devlj4 font/devlbp"
-  echo "$as_me:$LINENO: result: no" >&5
- echo "${ECHO_T}no" >&6
-@@ -5859,6 +5864,84 @@
- esac
-+echo "$as_me:$LINENO: checking whether to enable multibyte extension" >&5
-+echo $ECHO_N "checking whether to enable multibyte extension... $ECHO_C" >&6
-+# Check whether --enable-multibyte or --disable-multibyte was given.
-+if test "${enable_multibyte+set}" = set; then
-+  enableval="$enable_multibyte"
-+  multibyte=$enableval
-+else
-+  multibyte=no
-+fi;
-+if test "x$multibyte" != "xno"; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define ENABLE_MULTIBYTE 1
-+_ACEOF
-+
-+fi
-+echo "$as_me:$LINENO: result: $multibyte" >&5
-+echo "${ECHO_T}$multibyte" >&6
-+
-+echo "$as_me:$LINENO: checking japanese dvi file format" >&5
-+echo $ECHO_N "checking japanese dvi file format... $ECHO_C" >&6
-+if test "x$dvi_format" != "xASCII"; then
-+  DVIFORMAT=NTT
-+else
-+  DVIFORMAT=ASCII
-+fi
-+echo "$as_me:$LINENO: result: $DVIFORMAT" >&5
-+echo "${ECHO_T}$DVIFORMAT" >&6
-+
-+
-+echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5
-+echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
-+if test "${groff_cv_langinfo_codeset+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  cat >conftest.$ac_ext <<_ACEOF
-+#line $LINENO "configure"
-+#include "confdefs.h"
-+#include <langinfo.h>
-+int
-+main ()
-+{
-+char* cs = nl_langinfo(CODESET);
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+  (eval $ac_link) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); } &&
-+         { ac_try='test -s conftest$ac_exeext'
-+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+  (eval $ac_try) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; }; then
-+  groff_cv_langinfo_codeset=yes
-+else
-+  echo "$as_me: failed program was:" >&5
-+cat conftest.$ac_ext >&5
-+groff_cv_langinfo_codeset=no
-+fi
-+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+
-+fi
-+echo "$as_me:$LINENO: result: $groff_cv_langinfo_codeset" >&5
-+echo "${ECHO_T}$groff_cv_langinfo_codeset" >&6
-+  if test $groff_cv_langinfo_codeset = yes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE_LANGINFO_CODESET 1
-+_ACEOF
-+
-+  fi
-+
-           ac_config_files="$ac_config_files stamp-h"
-                               ac_config_files="$ac_config_files Makefile doc/Makefile src/xditview/Imakefile"
-@@ -6497,6 +6580,7 @@
- s,@psselect@,$psselect,;t t
- s,@make_html@,$make_html,;t t
- s,@make_install_html@,$make_install_html,;t t
-+s,@DVIFORMAT@,$DVIFORMAT,;t t
- s,@LTLIBOBJS@,$LTLIBOBJS,;t t
- CEOF
-diff -Naur groff-1.18.1.4.orig/configure.ac groff-1.18.1.4/configure.ac
---- groff-1.18.1.4.orig/configure.ac   2002-07-23 21:44:20.000000000 +0000
-+++ groff-1.18.1.4/configure.ac        2006-10-18 18:54:44.000000000 +0000
-@@ -68,6 +68,9 @@
- GROFF_G
- GROFF_TMAC
- GROFF_HTML_PROGRAMS
-+GROFF_MULTIBYTE
-+GROFF_DVIFORMAT
-+GROFF_LANGINFO_CODESET
- AC_CONFIG_FILES(stamp-h, [echo timestamp > stamp-h])
- AC_CONFIG_FILES([Makefile doc/Makefile src/xditview/Imakefile])
- AC_OUTPUT
-diff -Naur groff-1.18.1.4.orig/contrib/eqn2graph/eqn2graph.sh groff-1.18.1.4/contrib/eqn2graph/eqn2graph.sh
---- groff-1.18.1.4.orig/contrib/eqn2graph/eqn2graph.sh 2002-07-17 04:55:46.000000000 +0000
-+++ groff-1.18.1.4/contrib/eqn2graph/eqn2graph.sh      2006-10-18 18:54:44.000000000 +0000
-@@ -32,7 +32,7 @@
- #
- # Thus, we pass -U to groff(1), and everything else to convert(1).
- #
--# $Id: eqn2graph.sh,v 1.2 2002/07/17 04:55:46 wlemb Exp $
-+# $Id: eqn2graph.sh,v 1.3 2003/10/28 07:46:23 wlemb Exp $
- #
- groff_opts=""
- convert_opts=""
-@@ -58,17 +58,34 @@
-     shift
- done
-+# create temporary directory
-+tmp=
-+for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
-+    test -z "$d" && continue
-+
-+    tmp=`(umask 077 && mktemp -d -q "$d/eqn2graph-XXXXXX") 2> /dev/null` \
-+    && test -n "$tmp" && test -d "$tmp" \
-+    && break
-+
-+    tmp=$d/eqn2graph$$-$RANDOM
-+    (umask 077 && mkdir $tmp) 2> /dev/null && break
-+done;
-+if test -z "$tmp"; then
-+    echo "$0: cannot create temporary directory" >&2
-+    { (exit 1); exit 1; }
-+fi
-+
-+trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15 
-+
- # Here goes:
- # 1. Add .EQ/.EN.
- # 2. Process through eqn(1) to emit troff markup.
- # 3. Process through groff(1) to emit Postscript.
- # 4. Use convert(1) to crop the Postscript and turn it into a bitmap.
--tmp=/usr/tmp/eqn2graph-$$
--trap "rm ${tmp}.*" 0 2 15 
- read equation
--(echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"${equation}"'$') | \
--      groff -e $groff_opts -Tps >${tmp}.ps \
--      && convert -crop 0x0 $convert_opts ${tmp}.ps ${tmp}.${format} \
--      && cat ${tmp}.${format}
-+(echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"$equation"'$') | \
-+      groff -e $groff_opts -Tps -P-pletter > $tmp/eqn2graph.ps \
-+      && convert -crop 0x0 $convert_opts $tmp/eqn2graph.ps $tmp/eqn2graph.$format \
-+      && cat $tmp/eqn2graph.$format
- # End
-diff -Naur groff-1.18.1.4.orig/contrib/mom/groff_mom.man groff-1.18.1.4/contrib/mom/groff_mom.man
---- groff-1.18.1.4.orig/contrib/mom/groff_mom.man      2002-09-04 21:44:16.000000000 +0000
-+++ groff-1.18.1.4/contrib/mom/groff_mom.man   2006-10-18 18:54:44.000000000 +0000
-@@ -13,6 +13,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .mso www.tmac
- .
-diff -Naur groff-1.18.1.4.orig/contrib/pic2graph/pic2graph.sh groff-1.18.1.4/contrib/pic2graph/pic2graph.sh
---- groff-1.18.1.4.orig/contrib/pic2graph/pic2graph.sh 2002-07-17 04:55:46.000000000 +0000
-+++ groff-1.18.1.4/contrib/pic2graph/pic2graph.sh      2006-10-18 18:54:44.000000000 +0000
-@@ -32,7 +32,7 @@
- # We don't have complete option coverage on eqn because this is primarily
- # intended as a pic translator; we can live with eqn defaults. 
- #
--# $Id: pic2graph.sh,v 1.2 2002/07/17 04:55:46 wlemb Exp $
-+# $Id: pic2graph.sh,v 1.5 2003/10/31 19:32:36 wlemb Exp $
- #
- groffpic_opts=""
- gs_opts=""
-@@ -44,7 +44,7 @@
- do
-     case $1 in
-     -unsafe)
--      groffpic_opts="-U"
-+      groffpic_opts="-U";;
-     -format)
-       format=$2
-       shift;;
-@@ -68,16 +68,34 @@
-     eqndelim="delim $eqndelim"
- fi
-+# create temporary directory
-+tmp=
-+for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
-+    test -z "$d" && continue
-+
-+    tmp=`(umask 077 && mktemp -d -q "$d/pic2graph-XXXXXX") 2> /dev/null` \
-+    && test -n "$tmp" && test -d "$tmp" \
-+    && break
-+
-+    tmp=$d/pic2graph$$-$RANDOM
-+    (umask 077 && mkdir $tmp) 2> /dev/null \
-+    && break
-+done;
-+if test -z "$tmp"; then
-+    echo "$0: cannot create temporary directory" >&2
-+    { (exit 1); exit 1; }
-+fi
-+
-+trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15 
-+
- # Here goes:
- # 1. Wrap the input in dummy .PS/PE macros (and add possibly null .EQ/.EN)
- # 2. Process through eqn and pic to emit troff markup.
- # 3. Process through groff to emit Postscript.
- # 4. Use convert(1) to crop the PostScript and turn it into a bitmap.
--tmp=/usr/tmp/pic2graph-$$
--trap "rm ${tmp}.*" 0 2 15 
- (echo ".EQ"; echo $eqndelim; echo ".EN"; echo ".PS"; cat; echo ".PE") | \
--       groff -e -p $groffpic_opts -Tps >${tmp}.ps \
--       && convert -crop 0x0 $convert_opts ${tmp}.ps ${tmp}.${format} \
--       && cat ${tmp}.${format}
-+    groff -e -p $groffpic_opts -Tps -P-pletter > $tmp/pic2graph.ps \
-+    && convert -crop 0x0 $convert_opts $tmp/pic2graph.ps $tmp/pic2graph.$format \
-+    && cat $tmp/pic2graph.$format
- # End
-diff -Naur groff-1.18.1.4.orig/font/devX100/DESC groff-1.18.1.4/font/devX100/DESC
---- groff-1.18.1.4.orig/font/devX100/DESC      2000-02-06 09:35:04.000000000 +0000
-+++ groff-1.18.1.4/font/devX100/DESC   2006-10-18 18:54:44.000000000 +0000
-@@ -1,5 +1,17 @@
- styles R I B BI
--fonts 6 0 0 0 0 0 S
-+fonts 8 0 0 0 0 0 S M G
-+fontset B G 2E00..9FFF
-+fontset CB G 2E00..9FFF
-+fontset HB G 2E00..9FFF
-+fontset NB G 2E00..9FFF
-+fontset TB G 2E00..9FFF
-+fontset - M 2E00..9FFF
-+fontset B G FF00..FFEF
-+fontset CB G FF00..FFEF
-+fontset HB G FF00..FFEF
-+fontset NB G FF00..FFEF
-+fontset TB G FF00..FFEF
-+fontset - M FF00..FFEF
- sizes 8 10 12 14 18 24 0
- res 100
- X11
-diff -Naur groff-1.18.1.4.orig/font/devX100/M.proto groff-1.18.1.4/font/devX100/M.proto
---- groff-1.18.1.4.orig/font/devX100/M.proto   1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devX100/M.proto        2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,5 @@
-+name M
-+spacewidth 3
-+charset
-+u2E00..u9FFF 20 0
-+uFF00..uFFEF 20 0
-diff -Naur groff-1.18.1.4.orig/font/devX100/Makefile.sub groff-1.18.1.4/font/devX100/Makefile.sub
---- groff-1.18.1.4.orig/font/devX100/Makefile.sub      2000-02-06 09:35:06.000000000 +0000
-+++ groff-1.18.1.4/font/devX100/Makefile.sub   2006-10-18 18:54:44.000000000 +0000
-@@ -1,2 +1,13 @@
- DEV=X100
--DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S
-+DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S M G
-+CLEANADD=M G
-+
-+M: M.proto
-+      @echo Making M
-+      @-rm -f M
-+      @cat $(srcdir)/M.proto > M
-+
-+G: M
-+      @echo Making G
-+      @-rm -f G
-+      @sed -e 's/name M/name G/' M > G
-diff -Naur groff-1.18.1.4.orig/font/devX100-12/DESC groff-1.18.1.4/font/devX100-12/DESC
---- groff-1.18.1.4.orig/font/devX100-12/DESC   2000-02-06 09:35:07.000000000 +0000
-+++ groff-1.18.1.4/font/devX100-12/DESC        2006-10-18 18:54:44.000000000 +0000
-@@ -1,5 +1,17 @@
- styles R I B BI
--fonts 6 0 0 0 0 0 S
-+fonts 8 0 0 0 0 0 S M G
-+fontset B G 2E00..9FFF
-+fontset CB G 2E00..9FFF
-+fontset HB G 2E00..9FFF
-+fontset NB G 2E00..9FFF
-+fontset TB G 2E00..9FFF
-+fontset - M 2E00..9FFF
-+fontset B G FF00..FFEF
-+fontset CB G FF00..FFEF
-+fontset HB G FF00..FFEF
-+fontset NB G FF00..FFEF
-+fontset TB G FF00..FFEF
-+fontset - M FF00..FFEF
- sizes 8 10 12 14 18 24 0
- res 100
- X11
-diff -Naur groff-1.18.1.4.orig/font/devX100-12/M.proto groff-1.18.1.4/font/devX100-12/M.proto
---- groff-1.18.1.4.orig/font/devX100-12/M.proto        1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devX100-12/M.proto     2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,5 @@
-+name M
-+spacewidth 4
-+charset
-+u2E00..u9FFF 20 0
-+uFF00..uFFEF 20 0
-diff -Naur groff-1.18.1.4.orig/font/devX100-12/Makefile.sub groff-1.18.1.4/font/devX100-12/Makefile.sub
---- groff-1.18.1.4.orig/font/devX100-12/Makefile.sub   2000-02-06 09:35:07.000000000 +0000
-+++ groff-1.18.1.4/font/devX100-12/Makefile.sub        2006-10-18 18:54:44.000000000 +0000
-@@ -1,2 +1,14 @@
- DEV=X100-12
--DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S
-+DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S M G
-+CLEANADD=M G
-+
-+M: M.proto
-+      @echo Making M
-+      @-rm -f M
-+      @cat $(srcdir)/M.proto > M
-+
-+G: M
-+      @echo Making G
-+      @-rm -f G
-+      @sed -e 's/name M/name G/' M > G
-+
-diff -Naur groff-1.18.1.4.orig/font/devX75/DESC groff-1.18.1.4/font/devX75/DESC
---- groff-1.18.1.4.orig/font/devX75/DESC       2000-02-06 09:35:09.000000000 +0000
-+++ groff-1.18.1.4/font/devX75/DESC    2006-10-18 18:54:44.000000000 +0000
-@@ -1,5 +1,17 @@
- styles R I B BI
--fonts 6 0 0 0 0 0 S
-+fonts 8 0 0 0 0 0 S M G
-+fontset B G 2E00..9FFF
-+fontset CB G 2E00..9FFF
-+fontset HB G 2E00..9FFF
-+fontset NB G 2E00..9FFF
-+fontset TB G 2E00..9FFF
-+fontset - M 2E00..9FFF
-+fontset B G FF00..FFEF
-+fontset CB G FF00..FFEF
-+fontset HB G FF00..FFEF
-+fontset NB G FF00..FFEF
-+fontset TB G FF00..FFEF
-+fontset - M FF00..FFEF
- sizes 8 10 12 14 18 24 0
- res 75
- X11
-diff -Naur groff-1.18.1.4.orig/font/devX75/M.proto groff-1.18.1.4/font/devX75/M.proto
---- groff-1.18.1.4.orig/font/devX75/M.proto    1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devX75/M.proto 2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,6 @@
-+name M
-+spacewidth 2
-+charset
-+u2E00..u9FFF 10 0
-+uFF00..uFFEF 10 0
-+
-diff -Naur groff-1.18.1.4.orig/font/devX75/Makefile.sub groff-1.18.1.4/font/devX75/Makefile.sub
---- groff-1.18.1.4.orig/font/devX75/Makefile.sub       2000-02-06 09:35:10.000000000 +0000
-+++ groff-1.18.1.4/font/devX75/Makefile.sub    2006-10-18 18:54:44.000000000 +0000
-@@ -1,2 +1,13 @@
- DEV=X75
--DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S
-+DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S M G
-+CLEANADD=M G
-+
-+M: M.proto
-+      @echo Making M
-+      @-rm -f M
-+      @cat $(srcdir)/M.proto > M
-+
-+G: M
-+      @echo Making G
-+      @-rm -f G
-+      @sed -e 's/name M/name G/' M > G
-diff -Naur groff-1.18.1.4.orig/font/devX75-12/DESC groff-1.18.1.4/font/devX75-12/DESC
---- groff-1.18.1.4.orig/font/devX75-12/DESC    2000-02-06 09:35:11.000000000 +0000
-+++ groff-1.18.1.4/font/devX75-12/DESC 2006-10-18 18:54:44.000000000 +0000
-@@ -1,5 +1,17 @@
- styles R I B BI
--fonts 6 0 0 0 0 0 S
-+fonts 8 0 0 0 0 0 S M G
-+fontset B G 2E00..9FFF
-+fontset CB G 2E00..9FFF
-+fontset HB G 2E00..9FFF
-+fontset NB G 2E00..9FFF
-+fontset TB G 2E00..9FFF
-+fontset - M 2E00..9FFF
-+fontset B G FF00..FFEF
-+fontset CB G FF00..FFEF
-+fontset HB G FF00..FFEF
-+fontset NB G FF00..FFEF
-+fontset TB G FF00..FFEF
-+fontset - M FF00..FFEF
- sizes 8 10 12 14 18 24 0
- res 75
- X11
-diff -Naur groff-1.18.1.4.orig/font/devX75-12/M.proto groff-1.18.1.4/font/devX75-12/M.proto
---- groff-1.18.1.4.orig/font/devX75-12/M.proto 1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devX75-12/M.proto      2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,5 @@
-+name M
-+spacewidth 2
-+charset
-+u2E00..u9FFF 12 0
-+uFF00..uFFEF 12 0
-diff -Naur groff-1.18.1.4.orig/font/devX75-12/Makefile.sub groff-1.18.1.4/font/devX75-12/Makefile.sub
---- groff-1.18.1.4.orig/font/devX75-12/Makefile.sub    2000-02-06 09:35:12.000000000 +0000
-+++ groff-1.18.1.4/font/devX75-12/Makefile.sub 2006-10-18 18:54:44.000000000 +0000
-@@ -1,2 +1,13 @@
- DEV=X75-12
--DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S
-+DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S M G
-+CLEANADD=M G
-+
-+M: M.proto
-+      @echo Making M
-+      @-rm -f M
-+      @cat $(srcdir)/M.proto > M
-+
-+G: M
-+      @echo Making G
-+      @-rm -f G
-+      @sed -e 's/name M/name G/' M > G
-diff -Naur groff-1.18.1.4.orig/font/devascii/Makefile.sub groff-1.18.1.4/font/devascii/Makefile.sub
---- groff-1.18.1.4.orig/font/devascii/Makefile.sub     2000-02-06 09:35:12.000000000 +0000
-+++ groff-1.18.1.4/font/devascii/Makefile.sub  2006-10-18 18:54:44.000000000 +0000
-@@ -12,8 +12,8 @@
-       @-rm -f $@
-       @(charwidth=`expr $(RES) / $(CPI)` ; \
-        sed -e "s/^name [A-Z]*$$/name $@/" \
--           -e "s/^\\([^       ]*\\)   [0-9]+  /\\1    $$charwidth     /" \
--           -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \
-+           -e "s/^\\([^       ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-+           -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-            -e "s/^internalname .*$$/internalname $@/" \
-            -e "/^internalname/s/BI/3/" \
-            -e "/^internalname/s/B/2/" \
-diff -Naur groff-1.18.1.4.orig/font/devascii8/DESC.proto groff-1.18.1.4/font/devascii8/DESC.proto
---- groff-1.18.1.4.orig/font/devascii8/DESC.proto      1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devascii8/DESC.proto   2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,8 @@
-+res 240
-+hor 24
-+vert 40
-+unitwidth 10
-+sizes 10 0
-+fonts 4 R I B BI
-+tcommand
-+postpro grotty
-diff -Naur groff-1.18.1.4.orig/font/devascii8/Makefile.sub groff-1.18.1.4/font/devascii8/Makefile.sub
---- groff-1.18.1.4.orig/font/devascii8/Makefile.sub    1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devascii8/Makefile.sub 2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,31 @@
-+DEV=ascii8
-+FONTS=R I B BI
-+DEVFILES=$(FONTS) DESC
-+CLEANADD=$(FONTS) DESC
-+
-+RES=240
-+CPI=10
-+LPI=6
-+
-+$(FONTS): R.proto
-+      @echo Making $@
-+      @-rm -f $@
-+      @(charwidth=`expr $(RES) / $(CPI)` ; \
-+       sed -e "s/^name [A-Z]*$$/name $@/" \
-+           -e "s/^\\([^       ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-+           -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-+           -e "s/^internalname .*$$/internalname $@/" \
-+           -e "/^internalname/s/BI/3/" \
-+           -e "/^internalname/s/B/2/" \
-+           -e "/^internalname/s/I/1/" \
-+           -e "/^internalname .*[^ 0-9]/d" \
-+           $(srcdir)/R.proto >$@)
-+
-+DESC: DESC.proto
-+      @echo Making $@
-+      @-rm -f $@
-+      @sed -e "s/^res .*$$/res $(RES)/" \
-+          -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-+          -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
-+          -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
-+          $(srcdir)/DESC.proto >$@
-diff -Naur groff-1.18.1.4.orig/font/devascii8/R.proto groff-1.18.1.4/font/devascii8/R.proto
---- groff-1.18.1.4.orig/font/devascii8/R.proto 1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devascii8/R.proto      2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,262 @@
-+name R
-+internalname 0
-+spacewidth 24
-+charset
-+!     24      0       0041
-+"     24      0       0042
-+dq    "
-+lq    "
-+rq    "
-+#     24      0       0043
-+sh    "
-+$     24      0       0044
-+Do    "
-+%     24      0       0045
-+&     24      0       0046
-+'     24      0       0047
-+aa    "
-+fm    "
-+aq    "
-+cq    "
-+(     24      0       0050
-+)     24      0       0051
-+*     24      0       0052
-+**    "
-++     24      0       0053
-+pl    "
-+,     24      0       0054
-+\-    24      0       0055
-+hy    "
-+-     "
-+mi    "
-+en    "
-+.     24      0       0056
-+/     24      0       0057
-+sl    "
-+f/    "
-+0     24      0       0060
-+1     24      0       0061
-+2     24      0       0062
-+3     24      0       0063
-+4     24      0       0064
-+5     24      0       0065
-+6     24      0       0066
-+7     24      0       0067
-+8     24      0       0070
-+9     24      0       0071
-+:     24      0       0072
-+;     24      0       0073
-+<     24      0       0074
-+la    "
-+fo    "
-+=     24      0       0075
-+eq    "
-+>     24      0       0076
-+ra    "
-+fc    "
-+?     24      0       0077
-+@     24      0       0100
-+at    "
-+A     24      0       0101
-+*A    "
-+B     24      0       0102
-+*B    "
-+C     24      0       0103
-+D     24      0       0104
-+E     24      0       0105
-+*E    "
-+F     24      0       0106
-+G     24      0       0107
-+H     24      0       0110
-+*Y    "
-+I     24      0       0111
-+*I    "
-+J     24      0       0112
-+K     24      0       0113
-+*K    "
-+L     24      0       0114
-+M     24      0       0115
-+*M    "
-+N     24      0       0116
-+*N    "
-+O     24      0       0117
-+ci    "
-+*O    "
-+P     24      0       0120
-+*R    "
-+Q     24      0       0121
-+R     24      0       0122
-+S     24      0       0123
-+T     24      0       0124
-+*T    "
-+U     24      0       0125
-+V     24      0       0126
-+W     24      0       0127
-+X     24      0       0130
-+*X    "
-+Y     24      0       0131
-+*U    "
-+Z     24      0       0132
-+*Z    "
-+[     24      0       0133
-+lB    "
-+\     24      0       0134
-+rs    "
-+]     24      0       0135
-+rB    "
-+a^    24      0       0136
-+^     "
-+ha    "
-+_     24      0       0137
-+ru    "
-+ul    "
-+`     24      0       0140
-+oq    "
-+ga    "
-+a     24      0       0141
-+b     24      0       0142
-+c     24      0       0143
-+d     24      0       0144
-+e     24      0       0145
-+f     24      0       0146
-+g     24      0       0147
-+h     24      0       0150
-+i     24      0       0151
-+.i    "
-+j     24      0       0152
-+k     24      0       0153
-+l     24      0       0154
-+m     24      0       0155
-+n     24      0       0156
-+o     24      0       0157
-+*o    "
-+p     24      0       0160
-+q     24      0       0161
-+r     24      0       0162
-+s     24      0       0163
-+t     24      0       0164
-+u     24      0       0165
-+v     24      0       0166
-+w     24      0       0167
-+x     24      0       0170
-+mu    "
-+y     24      0       0171
-+z     24      0       0172
-+lC    24      0       0173
-+{     "
-+ba    24      0       0174
-+or    "
-+bv    "
-+br    "
-+|     "
-+lb    "
-+lc    "
-+lf    "
-+lk    "
-+lt    "
-+rb    "
-+rc    "
-+rf    "
-+rk    "
-+rt    "
-+rC    24      0       0175
-+}     "
-+a~    24      0       0176
-+~     "
-+ap    "
-+ti    "
-+char161       24      0       0241
-+char162       24      0       0242
-+char163       24      0       0243
-+char164       24      0       0244
-+char165       24      0       0245
-+char166       24      0       0246
-+char167       24      0       0247
-+char168       24      0       0250
-+char169       24      0       0251
-+char170       24      0       0252
-+char171       24      0       0253
-+char172       24      0       0254
-+char173       24      0       0255 
-+char174       24      0       0256
-+char175       24      0       0257
-+char176       24      0       0260
-+char177       24      0       0261
-+char178       24      0       0262
-+char179       24      0       0263
-+char180       24      0       0264
-+char181       24      0       0265
-+char182       24      0       0266
-+char183       24      0       0267
-+char184       24      0       0270
-+char185       24      0       0271
-+char186       24      0       0272
-+char187       24      0       0273
-+char188       24      0       0274
-+char189       24      0       0275
-+char190       24      0       0276
-+char191       24      0       0277
-+char192       24      0       0300
-+char193       24      0       0301
-+char194       24      0       0302
-+char195       24      0       0303
-+char196       24      0       0304
-+char197       24      0       0305
-+char198       24      0       0306
-+char199       24      0       0307
-+char200       24      0       0310
-+char201       24      0       0311
-+char202       24      0       0312
-+char203       24      0       0313
-+char204       24      0       0314
-+char205       24      0       0315
-+char206       24      0       0316
-+char207       24      0       0317
-+char208       24      0       0320
-+char209       24      0       0321
-+char210       24      0       0322
-+char211       24      0       0323
-+char212       24      0       0324
-+char213       24      0       0325
-+char214       24      0       0326
-+char215       24      0       0327
-+char216       24      0       0330
-+char217       24      0       0331
-+char218       24      0       0332
-+char219       24      0       0333
-+char220       24      0       0334
-+char221       24      0       0335
-+char222       24      0       0336
-+char223       24      0       0337
-+char224       24      0       0340
-+char225       24      0       0341
-+char226       24      0       0342
-+char227       24      0       0343
-+char228       24      0       0344
-+char229       24      0       0345
-+char230       24      0       0346
-+char231       24      0       0347
-+char232       24      0       0350
-+char233       24      0       0351
-+char234       24      0       0352
-+char235       24      0       0353
-+char236       24      0       0354
-+char237       24      0       0355
-+char238       24      0       0356
-+char239       24      0       0357
-+char240       24      0       0360
-+char241       24      0       0361
-+char242       24      0       0362
-+char243       24      0       0363
-+char244       24      0       0364
-+char245       24      0       0365
-+char246       24      0       0366
-+char247       24      0       0367
-+char248       24      0       0370
-+char249       24      0       0371
-+char250       24      0       0372
-+char251       24      0       0373
-+char252       24      0       0374
-+char253       24      0       0375
-+char254       24      0       0376
-+char255       24      0       0377
-diff -Naur groff-1.18.1.4.orig/font/devdvi/DESC.in groff-1.18.1.4/font/devdvi/DESC.in
---- groff-1.18.1.4.orig/font/devdvi/DESC.in    2002-03-16 07:45:07.000000000 +0000
-+++ groff-1.18.1.4/font/devdvi/DESC.in 2006-10-18 18:54:44.000000000 +0000
-@@ -6,6 +6,10 @@
- sizes 500-1000000 0
- styles R I B BI
- family T
--fonts 13 0 0 0 0 0 0 0 0 0 MI S EX CW
-+fonts 15 0 0 0 0 0 0 0 0 0 MI S EX CW M G
-+fontset B G 100..FFFF
-+fontset HB G 100..FFFF
-+fontset SB G 100..FFFF
-+fontset - M 100..FFFF
- tcommand
- postpro grodvi
-diff -Naur groff-1.18.1.4.orig/font/devdvi/FixMetric.sed groff-1.18.1.4/font/devdvi/FixMetric.sed
---- groff-1.18.1.4.orig/font/devdvi/FixMetric.sed      1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devdvi/FixMetric.sed   2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,77 @@
-+s/1006514,.*0x212b$/370845,815360,145600      1       0x212b/
-+s/1006514,.*0x212c$/370845,815360,145600      1       0x212c/
-+s/1006514,.*0x2126$/370845,815360,145600      1       0x2126/
-+s/1006514,.*0x2127$/370845,815360,145600      1       0x2127/
-+s/1006514,.*0x2128$/370845,815360,145600      1       0x2128/
-+s/1006514,.*0x212a$/370845,815360,145600      1       0x212a/
-+s/1006514,.*0x212d$/370845,815360,145600      1       0x212d/
-+s/1006514,.*0x212e$/370845,815360,145600      1       0x212e/
-+s/1006514,.*0x213e$/370845,815360,145600      1       0x213e/
-+s/1006514,.*0x2142$/370845,815360,145600      1       0x2142/
-+s/1006514,.*0x2143$/370845,815360,145600      1       0x2143/
-+s/1006514,.*0x2146$/370845,815360,145600      1       0x2146/
-+s/1006514,.*0x2147$/370845,815360,145600      1       0x2147/
-+s/1006514,.*0x2124$/370845,815360,145600      1       0x2124/
-+s/1006514,.*0x2125$/370845,815360,145600      1       0x2125/
-+s/1006514,.*0x214b$/528496,815360,145600      1       0x214b/
-+s/1006514,.*0x214d$/528496,815360,145600      1       0x214d/
-+s/1006514,.*0x214f$/528496,815360,145600      1       0x214f/
-+s/1006514,.*0x2151$/528496,815360,145600      1       0x2151/
-+s/1006514,.*0x2153$/528496,815360,145600      1       0x2153/
-+s/1006514,.*0x2155$/528496,815360,145600      1       0x2155/
-+s/1006514,.*0x2157$/528496,815360,145600      1       0x2157/
-+s/1006514,.*0x2159$/528496,815360,145600      1       0x2159/
-+s/1006514,.*0x215b$/528496,815360,145600      1       0x215b/
-+s/1006514,.*0x2129$/528496,815360,145600      1       0x2129/
-+s/1006514,.*0x212f$/528496,815360,145600      1       0x212f/
-+s/1006514,.*0x2130$/528496,815360,145600      1       0x2130/
-+s/1006514,.*0x2133$/528496,815360,145600      1       0x2133/
-+s/1006514,.*0x2135$/528496,815360,145600      1       0x2135/
-+s/1006514,.*0x2148$/528496,815360,145600      1       0x2148/
-+s/1006514,.*0x2149$/528496,815360,145600      1       0x2149/
-+s/1006514,.*0x216b$/528496,815360,145600      1       0x216b/
-+s/1006514,.*0x216c$/528496,815360,145600      1       0x216c/
-+s/1006514,.*0x216d$/528496,815360,145600      1       0x216d/
-+s/1006514,.*0x2178$/528496,815360,145600      1       0x2178/
-+s/1006514,.*0x214a$/528496,815360,145600      1       0x214a/
-+s/1006514,.*0x214c$/528496,815360,145600      1       0x214c/
-+s/1006514,.*0x214e$/528496,815360,145600      1       0x214e/
-+s/1006514,.*0x2150$/528496,815360,145600      1       0x2150/
-+s/1006514,.*0x2152$/528496,815360,145600      1       0x2152/
-+s/1006514,.*0x2154$/528496,815360,145600      1       0x2154/
-+s/1006514,.*0x2156$/528496,815360,145600      1       0x2156/
-+s/1006514,.*0x2158$/528496,815360,145600      1       0x2158/
-+s/1006514,.*0x215a$/528496,815360,145600      1       0x215a/
-+s/1006514,.*0x2122$/528496,815360,145600      1       0x2122/
-+s/1006514,.*0x2123$/528496,815360,145600      1       0x2123/
-+s/1006514,.*0x2136$/783741,815360,145600      1       0x2136/
-+s/1006514,.*0x2137$/783741,815360,145600      1       0x2137/
-+s/1006514,.*0x2139$/783741,815360,145600      1       0x2139/
-+s/1006514,.*0x2168$/783741,815360,145600      1       0x2168/
-+s/1006514,.*0x2169$/783741,815360,145600      1       0x2169/
-+s/1006514,.*0x216a$/783741,815360,145600      1       0x216a/
-+s/1006514,.*0x2170$/783741,815360,145600      1       0x2170/
-+s/1006514,.*0x2171$/783741,815360,145600      1       0x2171/
-+s/1006514,.*0x2172$/783741,815360,145600      1       0x2172/
-+s/1006514,.*0x2421$/783741,815360,145600      1       0x2421/
-+s/1006514,.*0x2423$/783741,815360,145600      1       0x2423/
-+s/1006514,.*0x2425$/783741,815360,145600      1       0x2425/
-+s/1006514,.*0x2427$/783741,815360,145600      1       0x2427/
-+s/1006514,.*0x2429$/783741,815360,145600      1       0x2429/
-+s/1006514,.*0x2443$/783741,815360,145600      1       0x2443/
-+s/1006514,.*0x2463$/783741,815360,145600      1       0x2463/
-+s/1006514,.*0x2465$/783741,815360,145600      1       0x2465/
-+s/1006514,.*0x2467$/783741,815360,145600      1       0x2467/
-+s/1006514,.*0x246e$/783741,815360,145600      1       0x246e/
-+s/1006514,.*0x2521$/783741,815360,145600      1       0x2521/
-+s/1006514,.*0x2523$/783741,815360,145600      1       0x2523/
-+s/1006514,.*0x2525$/783741,815360,145600      1       0x2525/
-+s/1006514,.*0x2527$/783741,815360,145600      1       0x2527/
-+s/1006514,.*0x2529$/783741,815360,145600      1       0x2529/
-+s/1006514,.*0x2543$/783741,815360,145600      1       0x2543/
-+s/1006514,.*0x2563$/783741,815360,145600      1       0x2563/
-+s/1006514,.*0x2565$/783741,815360,145600      1       0x2565/
-+s/1006514,.*0x2567$/783741,815360,145600      1       0x2567/
-+s/1006514,.*0x256e$/783741,815360,145600      1       0x256e/
-+s/1006514,.*0x2575$/783741,815360,145600      1       0x2575/
-+s/1006514,.*0x2576$/783741,815360,145600      1       0x2576/
-diff -Naur groff-1.18.1.4.orig/font/devdvi/M.proto-ASCII groff-1.18.1.4/font/devdvi/M.proto-ASCII
---- groff-1.18.1.4.orig/font/devdvi/M.proto-ASCII      1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devdvi/M.proto-ASCII   2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,4 @@
-+name M
-+internalname min10
-+checksum -375402250
-+designsize 10485760
-diff -Naur groff-1.18.1.4.orig/font/devdvi/M.proto-NTT groff-1.18.1.4/font/devdvi/M.proto-NTT
---- groff-1.18.1.4.orig/font/devdvi/M.proto-NTT        1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devdvi/M.proto-NTT     2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,6882 @@
-+name M
-+internalname dmj10
-+checksum 0
-+designsize 10485760
-+charset
-+¡¡    F       1:0
-+¡¢    F       2:0
-+¡£    F       3:0
-+¡¤    F       4:0
-+¡¥    F       5:0
-+¡¦    F       6:0
-+¡§    F       7:0
-+¡¨    F       8:0
-+¡©    F       9:0
-+¡ª    F       10:0
-+¡«    F       11:0
-+¡¬    F       12:0
-+¡­    F       13:0
-+¡®    F       14:0
-+¡¯    F       15:0
-+¡°    F       16:0
-+¡±    F       17:0
-+¡²    F       18:0
-+¡³    F       19:0
-+¡´    F       20:0
-+¡µ    F       21:0
-+¡¶    F       22:0
-+¡·    F       23:0
-+¡¸    F       24:0
-+¡¹    F       25:0
-+¡º    F       26:0
-+¡»    F       27:0
-+¡¼    F       28:0
-+¡½    F       29:0
-+¡¾    F       30:0
-+¡¿    F       31:0
-+¡À    F       32:0
-+¡Á    F       33:0
-+¡Â    F       34:0
-+¡Ã    F       35:0
-+¡Ä    F       36:0
-+¡Å    F       37:0
-+¡Æ    F       38:0
-+¡Ç    F       39:0
-+¡È    F       40:0
-+¡É    F       41:0
-+¡Ê    F       42:0
-+¡Ë    F       43:0
-+¡Ì    F       44:0
-+¡Í    F       45:0
-+¡Î    F       46:0
-+¡Ï    F       47:0
-+¡Ð    F       48:0
-+¡Ñ    F       49:0
-+¡Ò    F       50:0
-+¡Ó    F       51:0
-+¡Ô    F       52:0
-+¡Õ    F       53:0
-+¡Ö    F       54:0
-+¡×    F       55:0
-+¡Ø    F       56:0
-+¡Ù    F       57:0
-+¡Ú    F       58:0
-+¡Û    F       59:0
-+¡Ü    F       60:0
-+¡Ý    F       61:0
-+¡Þ    F       62:0
-+¡ß    F       63:0
-+¡à    F       64:0
-+¡á    F       65:0
-+¡â    F       66:0
-+¡ã    F       67:0
-+¡ä    F       68:0
-+¡å    F       69:0
-+¡æ    F       70:0
-+¡ç    F       71:0
-+¡è    F       72:0
-+¡é    F       73:0
-+¡ê    F       74:0
-+¡ë    F       75:0
-+¡ì    F       76:0
-+¡í    F       77:0
-+¡î    F       78:0
-+¡ï    F       79:0
-+¡ð    F       80:0
-+¡ñ    F       81:0
-+¡ò    F       82:0
-+¡ó    F       83:0
-+¡ô    F       84:0
-+¡õ    F       85:0
-+¡ö    F       86:0
-+¡÷    F       87:0
-+¡ø    F       88:0
-+¡ù    F       89:0
-+¡ú    F       90:0
-+¡û    F       91:0
-+¡ü    F       92:0
-+¡ý    F       93:0
-+¡þ    F       94:0
-+¢¡    F       101:0
-+¢¢    F       102:0
-+¢£    F       103:0
-+¢¤    F       104:0
-+¢¥    F       105:0
-+¢¦    F       106:0
-+¢§    F       107:0
-+¢¨    F       108:0
-+¢©    F       109:0
-+¢ª    F       110:0
-+¢«    F       111:0
-+¢¬    F       112:0
-+¢­    F       113:0
-+¢®    F       114:0
-+¢º    F       126:0
-+¢»    F       127:0
-+¢¼    F       128:0
-+¢½    F       129:0
-+¢¾    F       130:0
-+¢¿    F       131:0
-+¢À    F       132:0
-+¢Á    F       133:0
-+¢Ê    F       142:0
-+¢Ë    F       143:0
-+¢Ì    F       144:0
-+¢Í    F       145:0
-+¢Î    F       146:0
-+¢Ï    F       147:0
-+¢Ð    F       148:0
-+¢Ü    F       160:0
-+¢Ý    F       161:0
-+¢Þ    F       162:0
-+¢ß    F       163:0
-+¢à    F       164:0
-+¢á    F       165:0
-+¢â    F       166:0
-+¢ã    F       167:0
-+¢ä    F       168:0
-+¢å    F       169:0
-+¢æ    F       170:0
-+¢ç    F       171:0
-+¢è    F       172:0
-+¢é    F       173:0
-+¢ê    F       174:0
-+¢ò    F       182:0
-+¢ó    F       183:0
-+¢ô    F       184:0
-+¢õ    F       185:0
-+¢ö    F       186:0
-+¢÷    F       187:0
-+¢ø    F       188:0
-+¢ù    F       189:0
-+¢þ    F       194:0
-+£°    F       48:1
-+£±    F       49:1
-+£²    F       50:1
-+£³    F       51:1
-+£´    F       52:1
-+£µ    F       53:1
-+£¶    F       54:1
-+£·    F       55:1
-+£¸    F       56:1
-+£¹    F       57:1
-+£Á    F       65:1
-+£Â    F       66:1
-+£Ã    F       67:1
-+£Ä    F       68:1
-+£Å    F       69:1
-+£Æ    F       70:1
-+£Ç    F       71:1
-+£È    F       72:1
-+£É    F       73:1
-+£Ê    F       74:1
-+£Ë    F       75:1
-+£Ì    F       76:1
-+£Í    F       77:1
-+£Î    F       78:1
-+£Ï    F       79:1
-+£Ð    F       80:1
-+£Ñ    F       81:1
-+£Ò    F       82:1
-+£Ó    F       83:1
-+£Ô    F       84:1
-+£Õ    F       85:1
-+£Ö    F       86:1
-+£×    F       87:1
-+£Ø    F       88:1
-+£Ù    F       89:1
-+£Ú    F       90:1
-+£á    F       97:1
-+£â    F       98:1
-+£ã    F       99:1
-+£ä    F       100:1
-+£å    F       101:1
-+£æ    F       102:1
-+£ç    F       103:1
-+£è    F       104:1
-+£é    F       105:1
-+£ê    F       106:1
-+£ë    F       107:1
-+£ì    F       108:1
-+£í    F       109:1
-+£î    F       110:1
-+£ï    F       111:1
-+£ð    F       112:1
-+£ñ    F       113:1
-+£ò    F       114:1
-+£ó    F       115:1
-+£ô    F       116:1
-+£õ    F       117:1
-+£ö    F       118:1
-+£÷    F       119:1
-+£ø    F       120:1
-+£ù    F       121:1
-+£ú    F       122:1
-+¤¡    F       1:2
-+¤¢    F       2:2
-+¤£    F       3:2
-+¤¤    F       4:2
-+¤¥    F       5:2
-+¤¦    F       6:2
-+¤§    F       7:2
-+¤¨    F       8:2
-+¤©    F       9:2
-+¤ª    F       10:2
-+¤«    F       11:2
-+¤¬    F       12:2
-+¤­    F       13:2
-+¤®    F       14:2
-+¤¯    F       15:2
-+¤°    F       16:2
-+¤±    F       17:2
-+¤²    F       18:2
-+¤³    F       19:2
-+¤´    F       20:2
-+¤µ    F       21:2
-+¤¶    F       22:2
-+¤·    F       23:2
-+¤¸    F       24:2
-+¤¹    F       25:2
-+¤º    F       26:2
-+¤»    F       27:2
-+¤¼    F       28:2
-+¤½    F       29:2
-+¤¾    F       30:2
-+¤¿    F       31:2
-+¤À    F       32:2
-+¤Á    F       33:2
-+¤Â    F       34:2
-+¤Ã    F       35:2
-+¤Ä    F       36:2
-+¤Å    F       37:2
-+¤Æ    F       38:2
-+¤Ç    F       39:2
-+¤È    F       40:2
-+¤É    F       41:2
-+¤Ê    F       42:2
-+¤Ë    F       43:2
-+¤Ì    F       44:2
-+¤Í    F       45:2
-+¤Î    F       46:2
-+¤Ï    F       47:2
-+¤Ð    F       48:2
-+¤Ñ    F       49:2
-+¤Ò    F       50:2
-+¤Ó    F       51:2
-+¤Ô    F       52:2
-+¤Õ    F       53:2
-+¤Ö    F       54:2
-+¤×    F       55:2
-+¤Ø    F       56:2
-+¤Ù    F       57:2
-+¤Ú    F       58:2
-+¤Û    F       59:2
-+¤Ü    F       60:2
-+¤Ý    F       61:2
-+¤Þ    F       62:2
-+¤ß    F       63:2
-+¤à    F       64:2
-+¤á    F       65:2
-+¤â    F       66:2
-+¤ã    F       67:2
-+¤ä    F       68:2
-+¤å    F       69:2
-+¤æ    F       70:2
-+¤ç    F       71:2
-+¤è    F       72:2
-+¤é    F       73:2
-+¤ê    F       74:2
-+¤ë    F       75:2
-+¤ì    F       76:2
-+¤í    F       77:2
-+¤î    F       78:2
-+¤ï    F       79:2
-+¤ð    F       80:2
-+¤ñ    F       81:2
-+¤ò    F       82:2
-+¤ó    F       83:2
-+¥¡    F       1:3
-+¥¢    F       2:3
-+¥£    F       3:3
-+¥¤    F       4:3
-+¥¥    F       5:3
-+¥¦    F       6:3
-+¥§    F       7:3
-+¥¨    F       8:3
-+¥©    F       9:3
-+¥ª    F       10:3
-+¥«    F       11:3
-+¥¬    F       12:3
-+¥­    F       13:3
-+¥®    F       14:3
-+¥¯    F       15:3
-+¥°    F       16:3
-+¥±    F       17:3
-+¥²    F       18:3
-+¥³    F       19:3
-+¥´    F       20:3
-+¥µ    F       21:3
-+¥¶    F       22:3
-+¥·    F       23:3
-+¥¸    F       24:3
-+¥¹    F       25:3
-+¥º    F       26:3
-+¥»    F       27:3
-+¥¼    F       28:3
-+¥½    F       29:3
-+¥¾    F       30:3
-+¥¿    F       31:3
-+¥À    F       32:3
-+¥Á    F       33:3
-+¥Â    F       34:3
-+¥Ã    F       35:3
-+¥Ä    F       36:3
-+¥Å    F       37:3
-+¥Æ    F       38:3
-+¥Ç    F       39:3
-+¥È    F       40:3
-+¥É    F       41:3
-+¥Ê    F       42:3
-+¥Ë    F       43:3
-+¥Ì    F       44:3
-+¥Í    F       45:3
-+¥Î    F       46:3
-+¥Ï    F       47:3
-+¥Ð    F       48:3
-+¥Ñ    F       49:3
-+¥Ò    F       50:3
-+¥Ó    F       51:3
-+¥Ô    F       52:3
-+¥Õ    F       53:3
-+¥Ö    F       54:3
-+¥×    F       55:3
-+¥Ø    F       56:3
-+¥Ù    F       57:3
-+¥Ú    F       58:3
-+¥Û    F       59:3
-+¥Ü    F       60:3
-+¥Ý    F       61:3
-+¥Þ    F       62:3
-+¥ß    F       63:3
-+¥à    F       64:3
-+¥á    F       65:3
-+¥â    F       66:3
-+¥ã    F       67:3
-+¥ä    F       68:3
-+¥å    F       69:3
-+¥æ    F       70:3
-+¥ç    F       71:3
-+¥è    F       72:3
-+¥é    F       73:3
-+¥ê    F       74:3
-+¥ë    F       75:3
-+¥ì    F       76:3
-+¥í    F       77:3
-+¥î    F       78:3
-+¥ï    F       79:3
-+¥ð    F       80:3
-+¥ñ    F       81:3
-+¥ò    F       82:3
-+¥ó    F       83:3
-+¥ô    F       84:3
-+¥õ    F       85:3
-+¥ö    F       86:3
-+¦¡    F       1:4
-+¦¢    F       2:4
-+¦£    F       3:4
-+¦¤    F       4:4
-+¦¥    F       5:4
-+¦¦    F       6:4
-+¦§    F       7:4
-+¦¨    F       8:4
-+¦©    F       9:4
-+¦ª    F       10:4
-+¦«    F       11:4
-+¦¬    F       12:4
-+¦­    F       13:4
-+¦®    F       14:4
-+¦¯    F       15:4
-+¦°    F       16:4
-+¦±    F       17:4
-+¦²    F       18:4
-+¦³    F       19:4
-+¦´    F       20:4
-+¦µ    F       21:4
-+¦¶    F       22:4
-+¦·    F       23:4
-+¦¸    F       24:4
-+¦Á    F       33:4
-+¦Â    F       34:4
-+¦Ã    F       35:4
-+¦Ä    F       36:4
-+¦Å    F       37:4
-+¦Æ    F       38:4
-+¦Ç    F       39:4
-+¦È    F       40:4
-+¦É    F       41:4
-+¦Ê    F       42:4
-+¦Ë    F       43:4
-+¦Ì    F       44:4
-+¦Í    F       45:4
-+¦Î    F       46:4
-+¦Ï    F       47:4
-+¦Ð    F       48:4
-+¦Ñ    F       49:4
-+¦Ò    F       50:4
-+¦Ó    F       51:4
-+¦Ô    F       52:4
-+¦Õ    F       53:4
-+¦Ö    F       54:4
-+¦×    F       55:4
-+¦Ø    F       56:4
-+§¡    F       1:5
-+§¢    F       2:5
-+§£    F       3:5
-+§¤    F       4:5
-+§¥    F       5:5
-+§¦    F       6:5
-+§§    F       7:5
-+§¨    F       8:5
-+§©    F       9:5
-+§ª    F       10:5
-+§«    F       11:5
-+§¬    F       12:5
-+§­    F       13:5
-+§®    F       14:5
-+§¯    F       15:5
-+§°    F       16:5
-+§±    F       17:5
-+§²    F       18:5
-+§³    F       19:5
-+§´    F       20:5
-+§µ    F       21:5
-+§¶    F       22:5
-+§·    F       23:5
-+§¸    F       24:5
-+§¹    F       25:5
-+§º    F       26:5
-+§»    F       27:5
-+§¼    F       28:5
-+§½    F       29:5
-+§¾    F       30:5
-+§¿    F       31:5
-+§À    F       32:5
-+§Á    F       33:5
-+§Ñ    F       49:5
-+§Ò    F       50:5
-+§Ó    F       51:5
-+§Ô    F       52:5
-+§Õ    F       53:5
-+§Ö    F       54:5
-+§×    F       55:5
-+§Ø    F       56:5
-+§Ù    F       57:5
-+§Ú    F       58:5
-+§Û    F       59:5
-+§Ü    F       60:5
-+§Ý    F       61:5
-+§Þ    F       62:5
-+§ß    F       63:5
-+§à    F       64:5
-+§á    F       65:5
-+§â    F       66:5
-+§ã    F       67:5
-+§ä    F       68:5
-+§å    F       69:5
-+§æ    F       70:5
-+§ç    F       71:5
-+§è    F       72:5
-+§é    F       73:5
-+§ê    F       74:5
-+§ë    F       75:5
-+§ì    F       76:5
-+§í    F       77:5
-+§î    F       78:5
-+§ï    F       79:5
-+§ð    F       80:5
-+§ñ    F       81:5
-+¨¡    F       1:6
-+¨¢    F       2:6
-+¨£    F       3:6
-+¨¤    F       4:6
-+¨¥    F       5:6
-+¨¦    F       6:6
-+¨§    F       7:6
-+¨¨    F       8:6
-+¨©    F       9:6
-+¨ª    F       10:6
-+¨«    F       11:6
-+¨¬    F       12:6
-+¨­    F       13:6
-+¨®    F       14:6
-+¨¯    F       15:6
-+¨°    F       16:6
-+¨±    F       17:6
-+¨²    F       18:6
-+¨³    F       19:6
-+¨´    F       20:6
-+¨µ    F       21:6
-+¨¶    F       22:6
-+¨·    F       23:6
-+¨¸    F       24:6
-+¨¹    F       25:6
-+¨º    F       26:6
-+¨»    F       27:6
-+¨¼    F       28:6
-+¨½    F       29:6
-+¨¾    F       30:6
-+¨¿    F       31:6
-+¨À    F       32:6
-+°¡    F       0:a
-+°¢    F       1:a
-+°£    F       2:a
-+°¤    F       3:a
-+°¥    F       4:a
-+°¦    F       5:a
-+°§    F       6:a
-+°¨    F       7:a
-+°©    F       8:a
-+°ª    F       9:a
-+°«    F       10:a
-+°¬    F       11:a
-+°­    F       12:a
-+°®    F       13:a
-+°¯    F       14:a
-+°°    F       15:a
-+°±    F       16:a
-+°²    F       17:a
-+°³    F       18:a
-+°´    F       19:a
-+°µ    F       20:a
-+°¶    F       21:a
-+°·    F       22:a
-+°¸    F       23:a
-+°¹    F       24:a
-+°º    F       25:a
-+°»    F       26:a
-+°¼    F       27:a
-+°½    F       28:a
-+°¾    F       29:a
-+°¿    F       30:a
-+°À    F       31:a
-+°Á    F       32:a
-+°Â    F       33:a
-+°Ã    F       34:a
-+°Ä    F       35:a
-+°Å    F       36:a
-+°Æ    F       37:a
-+°Ç    F       38:a
-+°È    F       39:a
-+°É    F       40:a
-+°Ê    F       41:a
-+°Ë    F       42:a
-+°Ì    F       43:a
-+°Í    F       44:a
-+°Î    F       45:a
-+°Ï    F       46:a
-+°Ð    F       47:a
-+°Ñ    F       48:a
-+°Ò    F       49:a
-+°Ó    F       50:a
-+°Ô    F       51:a
-+°Õ    F       52:a
-+°Ö    F       53:a
-+°×    F       54:a
-+°Ø    F       55:a
-+°Ù    F       56:a
-+°Ú    F       57:a
-+°Û    F       58:a
-+°Ü    F       59:a
-+°Ý    F       60:a
-+°Þ    F       61:a
-+°ß    F       62:a
-+°à    F       63:a
-+°á    F       64:a
-+°â    F       65:a
-+°ã    F       66:a
-+°ä    F       67:a
-+°å    F       68:a
-+°æ    F       69:a
-+°ç    F       70:a
-+°è    F       71:a
-+°é    F       72:a
-+°ê    F       73:a
-+°ë    F       74:a
-+°ì    F       75:a
-+°í    F       76:a
-+°î    F       77:a
-+°ï    F       78:a
-+°ð    F       79:a
-+°ñ    F       80:a
-+°ò    F       81:a
-+°ó    F       82:a
-+°ô    F       83:a
-+°õ    F       84:a
-+°ö    F       85:a
-+°÷    F       86:a
-+°ø    F       87:a
-+°ù    F       88:a
-+°ú    F       89:a
-+°û    F       90:a
-+°ü    F       91:a
-+°ý    F       92:a
-+°þ    F       93:a
-+±¡    F       94:a
-+±¢    F       95:a
-+±£    F       96:a
-+±¤    F       97:a
-+±¥    F       98:a
-+±¦    F       99:a
-+±§    F       100:a
-+±¨    F       101:a
-+±©    F       102:a
-+±ª    F       103:a
-+±«    F       104:a
-+±¬    F       105:a
-+±­    F       106:a
-+±®    F       107:a
-+±¯    F       108:a
-+±°    F       109:a
-+±±    F       110:a
-+±²    F       111:a
-+±³    F       112:a
-+±´    F       113:a
-+±µ    F       114:a
-+±¶    F       115:a
-+±·    F       116:a
-+±¸    F       117:a
-+±¹    F       118:a
-+±º    F       119:a
-+±»    F       120:a
-+±¼    F       121:a
-+±½    F       122:a
-+±¾    F       123:a
-+±¿    F       124:a
-+±À    F       125:a
-+±Á    F       126:a
-+±Â    F       127:a
-+±Ã    F       128:a
-+±Ä    F       129:a
-+±Å    F       130:a
-+±Æ    F       131:a
-+±Ç    F       132:a
-+±È    F       133:a
-+±É    F       134:a
-+±Ê    F       135:a
-+±Ë    F       136:a
-+±Ì    F       137:a
-+±Í    F       138:a
-+±Î    F       139:a
-+±Ï    F       140:a
-+±Ð    F       141:a
-+±Ñ    F       142:a
-+±Ò    F       143:a
-+±Ó    F       144:a
-+±Ô    F       145:a
-+±Õ    F       146:a
-+±Ö    F       147:a
-+±×    F       148:a
-+±Ø    F       149:a
-+±Ù    F       150:a
-+±Ú    F       151:a
-+±Û    F       152:a
-+±Ü    F       153:a
-+±Ý    F       154:a
-+±Þ    F       155:a
-+±ß    F       156:a
-+±à    F       157:a
-+±á    F       158:a
-+±â    F       159:a
-+±ã    F       160:a
-+±ä    F       161:a
-+±å    F       162:a
-+±æ    F       163:a
-+±ç    F       164:a
-+±è    F       165:a
-+±é    F       166:a
-+±ê    F       167:a
-+±ë    F       168:a
-+±ì    F       169:a
-+±í    F       170:a
-+±î    F       171:a
-+±ï    F       172:a
-+±ð    F       173:a
-+±ñ    F       174:a
-+±ò    F       175:a
-+±ó    F       176:a
-+±ô    F       177:a
-+±õ    F       178:a
-+±ö    F       179:a
-+±÷    F       180:a
-+±ø    F       181:a
-+±ù    F       182:a
-+±ú    F       183:a
-+±û    F       184:a
-+±ü    F       185:a
-+±ý    F       186:a
-+±þ    F       187:a
-+²¡    F       188:a
-+²¢    F       189:a
-+²£    F       190:a
-+²¤    F       191:a
-+²¥    F       192:a
-+²¦    F       193:a
-+²§    F       194:a
-+²¨    F       195:a
-+²©    F       196:a
-+²ª    F       197:a
-+²«    F       198:a
-+²¬    F       199:a
-+²­    F       200:a
-+²®    F       201:a
-+²¯    F       202:a
-+²°    F       203:a
-+²±    F       204:a
-+²²    F       205:a
-+²³    F       206:a
-+²´    F       207:a
-+²µ    F       208:a
-+²¶    F       209:a
-+²·    F       210:a
-+²¸    F       211:a
-+²¹    F       212:a
-+²º    F       213:a
-+²»    F       214:a
-+²¼    F       215:a
-+²½    F       216:a
-+²¾    F       217:a
-+²¿    F       218:a
-+²À    F       219:a
-+²Á    F       220:a
-+²Â    F       221:a
-+²Ã    F       222:a
-+²Ä    F       223:a
-+²Å    F       224:a
-+²Æ    F       225:a
-+²Ç    F       226:a
-+²È    F       227:a
-+²É    F       228:a
-+²Ê    F       229:a
-+²Ë    F       230:a
-+²Ì    F       231:a
-+²Í    F       232:a
-+²Î    F       233:a
-+²Ï    F       234:a
-+²Ð    F       235:a
-+²Ñ    F       236:a
-+²Ò    F       237:a
-+²Ó    F       238:a
-+²Ô    F       239:a
-+²Õ    F       240:a
-+²Ö    F       241:a
-+²×    F       242:a
-+²Ø    F       243:a
-+²Ù    F       244:a
-+²Ú    F       245:a
-+²Û    F       246:a
-+²Ü    F       247:a
-+²Ý    F       248:a
-+²Þ    F       249:a
-+²ß    F       250:a
-+²à    F       251:a
-+²á    F       252:a
-+²â    F       253:a
-+²ã    F       254:a
-+²ä    F       255:a
-+²å    F       0:b
-+²æ    F       1:b
-+²ç    F       2:b
-+²è    F       3:b
-+²é    F       4:b
-+²ê    F       5:b
-+²ë    F       6:b
-+²ì    F       7:b
-+²í    F       8:b
-+²î    F       9:b
-+²ï    F       10:b
-+²ð    F       11:b
-+²ñ    F       12:b
-+²ò    F       13:b
-+²ó    F       14:b
-+²ô    F       15:b
-+²õ    F       16:b
-+²ö    F       17:b
-+²÷    F       18:b
-+²ø    F       19:b
-+²ù    F       20:b
-+²ú    F       21:b
-+²û    F       22:b
-+²ü    F       23:b
-+²ý    F       24:b
-+²þ    F       25:b
-+³¡    F       26:b
-+³¢    F       27:b
-+³£    F       28:b
-+³¤    F       29:b
-+³¥    F       30:b
-+³¦    F       31:b
-+³§    F       32:b
-+³¨    F       33:b
-+³©    F       34:b
-+³ª    F       35:b
-+³«    F       36:b
-+³¬    F       37:b
-+³­    F       38:b
-+³®    F       39:b
-+³¯    F       40:b
-+³°    F       41:b
-+³±    F       42:b
-+³²    F       43:b
-+³³    F       44:b
-+³´    F       45:b
-+³µ    F       46:b
-+³¶    F       47:b
-+³·    F       48:b
-+³¸    F       49:b
-+³¹    F       50:b
-+³º    F       51:b
-+³»    F       52:b
-+³¼    F       53:b
-+³½    F       54:b
-+³¾    F       55:b
-+³¿    F       56:b
-+³À    F       57:b
-+³Á    F       58:b
-+³Â    F       59:b
-+³Ã    F       60:b
-+³Ä    F       61:b
-+³Å    F       62:b
-+³Æ    F       63:b
-+³Ç    F       64:b
-+³È    F       65:b
-+³É    F       66:b
-+³Ê    F       67:b
-+³Ë    F       68:b
-+³Ì    F       69:b
-+³Í    F       70:b
-+³Î    F       71:b
-+³Ï    F       72:b
-+³Ð    F       73:b
-+³Ñ    F       74:b
-+³Ò    F       75:b
-+³Ó    F       76:b
-+³Ô    F       77:b
-+³Õ    F       78:b
-+³Ö    F       79:b
-+³×    F       80:b
-+³Ø    F       81:b
-+³Ù    F       82:b
-+³Ú    F       83:b
-+³Û    F       84:b
-+³Ü    F       85:b
-+³Ý    F       86:b
-+³Þ    F       87:b
-+³ß    F       88:b
-+³à    F       89:b
-+³á    F       90:b
-+³â    F       91:b
-+³ã    F       92:b
-+³ä    F       93:b
-+³å    F       94:b
-+³æ    F       95:b
-+³ç    F       96:b
-+³è    F       97:b
-+³é    F       98:b
-+³ê    F       99:b
-+³ë    F       100:b
-+³ì    F       101:b
-+³í    F       102:b
-+³î    F       103:b
-+³ï    F       104:b
-+³ð    F       105:b
-+³ñ    F       106:b
-+³ò    F       107:b
-+³ó    F       108:b
-+³ô    F       109:b
-+³õ    F       110:b
-+³ö    F       111:b
-+³÷    F       112:b
-+³ø    F       113:b
-+³ù    F       114:b
-+³ú    F       115:b
-+³û    F       116:b
-+³ü    F       117:b
-+³ý    F       118:b
-+³þ    F       119:b
-+´¡    F       120:b
-+´¢    F       121:b
-+´£    F       122:b
-+´¤    F       123:b
-+´¥    F       124:b
-+´¦    F       125:b
-+´§    F       126:b
-+´¨    F       127:b
-+´©    F       128:b
-+´ª    F       129:b
-+´«    F       130:b
-+´¬    F       131:b
-+´­    F       132:b
-+´®    F       133:b
-+´¯    F       134:b
-+´°    F       135:b
-+´±    F       136:b
-+´²    F       137:b
-+´³    F       138:b
-+´´    F       139:b
-+´µ    F       140:b
-+´¶    F       141:b
-+´·    F       142:b
-+´¸    F       143:b
-+´¹    F       144:b
-+´º    F       145:b
-+´»    F       146:b
-+´¼    F       147:b
-+´½    F       148:b
-+´¾    F       149:b
-+´¿    F       150:b
-+´À    F       151:b
-+´Á    F       152:b
-+´Â    F       153:b
-+´Ã    F       154:b
-+´Ä    F       155:b
-+´Å    F       156:b
-+´Æ    F       157:b
-+´Ç    F       158:b
-+´È    F       159:b
-+´É    F       160:b
-+´Ê    F       161:b
-+´Ë    F       162:b
-+´Ì    F       163:b
-+´Í    F       164:b
-+´Î    F       165:b
-+´Ï    F       166:b
-+´Ð    F       167:b
-+´Ñ    F       168:b
-+´Ò    F       169:b
-+´Ó    F       170:b
-+´Ô    F       171:b
-+´Õ    F       172:b
-+´Ö    F       173:b
-+´×    F       174:b
-+´Ø    F       175:b
-+´Ù    F       176:b
-+´Ú    F       177:b
-+´Û    F       178:b
-+´Ü    F       179:b
-+´Ý    F       180:b
-+´Þ    F       181:b
-+´ß    F       182:b
-+´à    F       183:b
-+´á    F       184:b
-+´â    F       185:b
-+´ã    F       186:b
-+´ä    F       187:b
-+´å    F       188:b
-+´æ    F       189:b
-+´ç    F       190:b
-+´è    F       191:b
-+´é    F       192:b
-+´ê    F       193:b
-+´ë    F       194:b
-+´ì    F       195:b
-+´í    F       196:b
-+´î    F       197:b
-+´ï    F       198:b
-+´ð    F       199:b
-+´ñ    F       200:b
-+´ò    F       201:b
-+´ó    F       202:b
-+´ô    F       203:b
-+´õ    F       204:b
-+´ö    F       205:b
-+´÷    F       206:b
-+´ø    F       207:b
-+´ù    F       208:b
-+´ú    F       209:b
-+´û    F       210:b
-+´ü    F       211:b
-+´ý    F       212:b
-+´þ    F       213:b
-+µ¡    F       214:b
-+µ¢    F       215:b
-+µ£    F       216:b
-+µ¤    F       217:b
-+µ¥    F       218:b
-+µ¦    F       219:b
-+µ§    F       220:b
-+µ¨    F       221:b
-+µ©    F       222:b
-+µª    F       223:b
-+µ«    F       224:b
-+µ¬    F       225:b
-+µ­    F       226:b
-+µ®    F       227:b
-+µ¯    F       228:b
-+µ°    F       229:b
-+µ±    F       230:b
-+µ²    F       231:b
-+µ³    F       232:b
-+µ´    F       233:b
-+µµ    F       234:b
-+µ¶    F       235:b
-+µ·    F       236:b
-+µ¸    F       237:b
-+µ¹    F       238:b
-+µº    F       239:b
-+µ»    F       240:b
-+µ¼    F       241:b
-+µ½    F       242:b
-+µ¾    F       243:b
-+µ¿    F       244:b
-+µÀ    F       245:b
-+µÁ    F       246:b
-+µÂ    F       247:b
-+µÃ    F       248:b
-+µÄ    F       249:b
-+µÅ    F       250:b
-+µÆ    F       251:b
-+µÇ    F       252:b
-+µÈ    F       253:b
-+µÉ    F       254:b
-+µÊ    F       255:b
-+µË    F       0:c
-+µÌ    F       1:c
-+µÍ    F       2:c
-+µÎ    F       3:c
-+µÏ    F       4:c
-+µÐ    F       5:c
-+µÑ    F       6:c
-+µÒ    F       7:c
-+µÓ    F       8:c
-+µÔ    F       9:c
-+µÕ    F       10:c
-+µÖ    F       11:c
-+µ×    F       12:c
-+µØ    F       13:c
-+µÙ    F       14:c
-+µÚ    F       15:c
-+µÛ    F       16:c
-+µÜ    F       17:c
-+µÝ    F       18:c
-+µÞ    F       19:c
-+µß    F       20:c
-+µà    F       21:c
-+µá    F       22:c
-+µâ    F       23:c
-+µã    F       24:c
-+µä    F       25:c
-+µå    F       26:c
-+µæ    F       27:c
-+µç    F       28:c
-+µè    F       29:c
-+µé    F       30:c
-+µê    F       31:c
-+µë    F       32:c
-+µì    F       33:c
-+µí    F       34:c
-+µî    F       35:c
-+µï    F       36:c
-+µð    F       37:c
-+µñ    F       38:c
-+µò    F       39:c
-+µó    F       40:c
-+µô    F       41:c
-+µõ    F       42:c
-+µö    F       43:c
-+µ÷    F       44:c
-+µø    F       45:c
-+µù    F       46:c
-+µú    F       47:c
-+µû    F       48:c
-+µü    F       49:c
-+µý    F       50:c
-+µþ    F       51:c
-+¶¡    F       52:c
-+¶¢    F       53:c
-+¶£    F       54:c
-+¶¤    F       55:c
-+¶¥    F       56:c
-+¶¦    F       57:c
-+¶§    F       58:c
-+¶¨    F       59:c
-+¶©    F       60:c
-+¶ª    F       61:c
-+¶«    F       62:c
-+¶¬    F       63:c
-+¶­    F       64:c
-+¶®    F       65:c
-+¶¯    F       66:c
-+¶°    F       67:c
-+¶±    F       68:c
-+¶²    F       69:c
-+¶³    F       70:c
-+¶´    F       71:c
-+¶µ    F       72:c
-+¶¶    F       73:c
-+¶·    F       74:c
-+¶¸    F       75:c
-+¶¹    F       76:c
-+¶º    F       77:c
-+¶»    F       78:c
-+¶¼    F       79:c
-+¶½    F       80:c
-+¶¾    F       81:c
-+¶¿    F       82:c
-+¶À    F       83:c
-+¶Á    F       84:c
-+¶Â    F       85:c
-+¶Ã    F       86:c
-+¶Ä    F       87:c
-+¶Å    F       88:c
-+¶Æ    F       89:c
-+¶Ç    F       90:c
-+¶È    F       91:c
-+¶É    F       92:c
-+¶Ê    F       93:c
-+¶Ë    F       94:c
-+¶Ì    F       95:c
-+¶Í    F       96:c
-+¶Î    F       97:c
-+¶Ï    F       98:c
-+¶Ð    F       99:c
-+¶Ñ    F       100:c
-+¶Ò    F       101:c
-+¶Ó    F       102:c
-+¶Ô    F       103:c
-+¶Õ    F       104:c
-+¶Ö    F       105:c
-+¶×    F       106:c
-+¶Ø    F       107:c
-+¶Ù    F       108:c
-+¶Ú    F       109:c
-+¶Û    F       110:c
-+¶Ü    F       111:c
-+¶Ý    F       112:c
-+¶Þ    F       113:c
-+¶ß    F       114:c
-+¶à    F       115:c
-+¶á    F       116:c
-+¶â    F       117:c
-+¶ã    F       118:c
-+¶ä    F       119:c
-+¶å    F       120:c
-+¶æ    F       121:c
-+¶ç    F       122:c
-+¶è    F       123:c
-+¶é    F       124:c
-+¶ê    F       125:c
-+¶ë    F       126:c
-+¶ì    F       127:c
-+¶í    F       128:c
-+¶î    F       129:c
-+¶ï    F       130:c
-+¶ð    F       131:c
-+¶ñ    F       132:c
-+¶ò    F       133:c
-+¶ó    F       134:c
-+¶ô    F       135:c
-+¶õ    F       136:c
-+¶ö    F       137:c
-+¶÷    F       138:c
-+¶ø    F       139:c
-+¶ù    F       140:c
-+¶ú    F       141:c
-+¶û    F       142:c
-+¶ü    F       143:c
-+¶ý    F       144:c
-+¶þ    F       145:c
-+·¡    F       146:c
-+·¢    F       147:c
-+·£    F       148:c
-+·¤    F       149:c
-+·¥    F       150:c
-+·¦    F       151:c
-+·§    F       152:c
-+·¨    F       153:c
-+·©    F       154:c
-+·ª    F       155:c
-+·«    F       156:c
-+·¬    F       157:c
-+·­    F       158:c
-+·®    F       159:c
-+·¯    F       160:c
-+·°    F       161:c
-+·±    F       162:c
-+·²    F       163:c
-+·³    F       164:c
-+·´    F       165:c
-+·µ    F       166:c
-+·¶    F       167:c
-+··    F       168:c
-+·¸    F       169:c
-+·¹    F       170:c
-+·º    F       171:c
-+·»    F       172:c
-+·¼    F       173:c
-+·½    F       174:c
-+·¾    F       175:c
-+·¿    F       176:c
-+·À    F       177:c
-+·Á    F       178:c
-+·Â    F       179:c
-+·Ã    F       180:c
-+·Ä    F       181:c
-+·Å    F       182:c
-+·Æ    F       183:c
-+·Ç    F       184:c
-+·È    F       185:c
-+·É    F       186:c
-+·Ê    F       187:c
-+·Ë    F       188:c
-+·Ì    F       189:c
-+·Í    F       190:c
-+·Î    F       191:c
-+·Ï    F       192:c
-+·Ð    F       193:c
-+·Ñ    F       194:c
-+·Ò    F       195:c
-+·Ó    F       196:c
-+·Ô    F       197:c
-+·Õ    F       198:c
-+·Ö    F       199:c
-+·×    F       200:c
-+·Ø    F       201:c
-+·Ù    F       202:c
-+·Ú    F       203:c
-+·Û    F       204:c
-+·Ü    F       205:c
-+·Ý    F       206:c
-+·Þ    F       207:c
-+·ß    F       208:c
-+·à    F       209:c
-+·á    F       210:c
-+·â    F       211:c
-+·ã    F       212:c
-+·ä    F       213:c
-+·å    F       214:c
-+·æ    F       215:c
-+·ç    F       216:c
-+·è    F       217:c
-+·é    F       218:c
-+·ê    F       219:c
-+·ë    F       220:c
-+·ì    F       221:c
-+·í    F       222:c
-+·î    F       223:c
-+·ï    F       224:c
-+·ð    F       225:c
-+·ñ    F       226:c
-+·ò    F       227:c
-+·ó    F       228:c
-+·ô    F       229:c
-+·õ    F       230:c
-+·ö    F       231:c
-+·÷    F       232:c
-+·ø    F       233:c
-+·ù    F       234:c
-+·ú    F       235:c
-+·û    F       236:c
-+·ü    F       237:c
-+·ý    F       238:c
-+·þ    F       239:c
-+¸¡    F       240:c
-+¸¢    F       241:c
-+¸£    F       242:c
-+¸¤    F       243:c
-+¸¥    F       244:c
-+¸¦    F       245:c
-+¸§    F       246:c
-+¸¨    F       247:c
-+¸©    F       248:c
-+¸ª    F       249:c
-+¸«    F       250:c
-+¸¬    F       251:c
-+¸­    F       252:c
-+¸®    F       253:c
-+¸¯    F       254:c
-+¸°    F       255:c
-+¸±    F       0:d
-+¸²    F       1:d
-+¸³    F       2:d
-+¸´    F       3:d
-+¸µ    F       4:d
-+¸¶    F       5:d
-+¸·    F       6:d
-+¸¸    F       7:d
-+¸¹    F       8:d
-+¸º    F       9:d
-+¸»    F       10:d
-+¸¼    F       11:d
-+¸½    F       12:d
-+¸¾    F       13:d
-+¸¿    F       14:d
-+¸À    F       15:d
-+¸Á    F       16:d
-+¸Â    F       17:d
-+¸Ã    F       18:d
-+¸Ä    F       19:d
-+¸Å    F       20:d
-+¸Æ    F       21:d
-+¸Ç    F       22:d
-+¸È    F       23:d
-+¸É    F       24:d
-+¸Ê    F       25:d
-+¸Ë    F       26:d
-+¸Ì    F       27:d
-+¸Í    F       28:d
-+¸Î    F       29:d
-+¸Ï    F       30:d
-+¸Ð    F       31:d
-+¸Ñ    F       32:d
-+¸Ò    F       33:d
-+¸Ó    F       34:d
-+¸Ô    F       35:d
-+¸Õ    F       36:d
-+¸Ö    F       37:d
-+¸×    F       38:d
-+¸Ø    F       39:d
-+¸Ù    F       40:d
-+¸Ú    F       41:d
-+¸Û    F       42:d
-+¸Ü    F       43:d
-+¸Ý    F       44:d
-+¸Þ    F       45:d
-+¸ß    F       46:d
-+¸à    F       47:d
-+¸á    F       48:d
-+¸â    F       49:d
-+¸ã    F       50:d
-+¸ä    F       51:d
-+¸å    F       52:d
-+¸æ    F       53:d
-+¸ç    F       54:d
-+¸è    F       55:d
-+¸é    F       56:d
-+¸ê    F       57:d
-+¸ë    F       58:d
-+¸ì    F       59:d
-+¸í    F       60:d
-+¸î    F       61:d
-+¸ï    F       62:d
-+¸ð    F       63:d
-+¸ñ    F       64:d
-+¸ò    F       65:d
-+¸ó    F       66:d
-+¸ô    F       67:d
-+¸õ    F       68:d
-+¸ö    F       69:d
-+¸÷    F       70:d
-+¸ø    F       71:d
-+¸ù    F       72:d
-+¸ú    F       73:d
-+¸û    F       74:d
-+¸ü    F       75:d
-+¸ý    F       76:d
-+¸þ    F       77:d
-+¹¡    F       78:d
-+¹¢    F       79:d
-+¹£    F       80:d
-+¹¤    F       81:d
-+¹¥    F       82:d
-+¹¦    F       83:d
-+¹§    F       84:d
-+¹¨    F       85:d
-+¹©    F       86:d
-+¹ª    F       87:d
-+¹«    F       88:d
-+¹¬    F       89:d
-+¹­    F       90:d
-+¹®    F       91:d
-+¹¯    F       92:d
-+¹°    F       93:d
-+¹±    F       94:d
-+¹²    F       95:d
-+¹³    F       96:d
-+¹´    F       97:d
-+¹µ    F       98:d
-+¹¶    F       99:d
-+¹·    F       100:d
-+¹¸    F       101:d
-+¹¹    F       102:d
-+¹º    F       103:d
-+¹»    F       104:d
-+¹¼    F       105:d
-+¹½    F       106:d
-+¹¾    F       107:d
-+¹¿    F       108:d
-+¹À    F       109:d
-+¹Á    F       110:d
-+¹Â    F       111:d
-+¹Ã    F       112:d
-+¹Ä    F       113:d
-+¹Å    F       114:d
-+¹Æ    F       115:d
-+¹Ç    F       116:d
-+¹È    F       117:d
-+¹É    F       118:d
-+¹Ê    F       119:d
-+¹Ë    F       120:d
-+¹Ì    F       121:d
-+¹Í    F       122:d
-+¹Î    F       123:d
-+¹Ï    F       124:d
-+¹Ð    F       125:d
-+¹Ñ    F       126:d
-+¹Ò    F       127:d
-+¹Ó    F       128:d
-+¹Ô    F       129:d
-+¹Õ    F       130:d
-+¹Ö    F       131:d
-+¹×    F       132:d
-+¹Ø    F       133:d
-+¹Ù    F       134:d
-+¹Ú    F       135:d
-+¹Û    F       136:d
-+¹Ü    F       137:d
-+¹Ý    F       138:d
-+¹Þ    F       139:d
-+¹ß    F       140:d
-+¹à    F       141:d
-+¹á    F       142:d
-+¹â    F       143:d
-+¹ã    F       144:d
-+¹ä    F       145:d
-+¹å    F       146:d
-+¹æ    F       147:d
-+¹ç    F       148:d
-+¹è    F       149:d
-+¹é    F       150:d
-+¹ê    F       151:d
-+¹ë    F       152:d
-+¹ì    F       153:d
-+¹í    F       154:d
-+¹î    F       155:d
-+¹ï    F       156:d
-+¹ð    F       157:d
-+¹ñ    F       158:d
-+¹ò    F       159:d
-+¹ó    F       160:d
-+¹ô    F       161:d
-+¹õ    F       162:d
-+¹ö    F       163:d
-+¹÷    F       164:d
-+¹ø    F       165:d
-+¹ù    F       166:d
-+¹ú    F       167:d
-+¹û    F       168:d
-+¹ü    F       169:d
-+¹ý    F       170:d
-+¹þ    F       171:d
-+º¡    F       172:d
-+º¢    F       173:d
-+º£    F       174:d
-+º¤    F       175:d
-+º¥    F       176:d
-+º¦    F       177:d
-+º§    F       178:d
-+º¨    F       179:d
-+º©    F       180:d
-+ºª    F       181:d
-+º«    F       182:d
-+º¬    F       183:d
-+º­    F       184:d
-+º®    F       185:d
-+º¯    F       186:d
-+º°    F       187:d
-+º±    F       188:d
-+º²    F       189:d
-+º³    F       190:d
-+º´    F       191:d
-+ºµ    F       192:d
-+º¶    F       193:d
-+º·    F       194:d
-+º¸    F       195:d
-+º¹    F       196:d
-+ºº    F       197:d
-+º»    F       198:d
-+º¼    F       199:d
-+º½    F       200:d
-+º¾    F       201:d
-+º¿    F       202:d
-+ºÀ    F       203:d
-+ºÁ    F       204:d
-+ºÂ    F       205:d
-+ºÃ    F       206:d
-+ºÄ    F       207:d
-+ºÅ    F       208:d
-+ºÆ    F       209:d
-+ºÇ    F       210:d
-+ºÈ    F       211:d
-+ºÉ    F       212:d
-+ºÊ    F       213:d
-+ºË    F       214:d
-+ºÌ    F       215:d
-+ºÍ    F       216:d
-+ºÎ    F       217:d
-+ºÏ    F       218:d
-+ºÐ    F       219:d
-+ºÑ    F       220:d
-+ºÒ    F       221:d
-+ºÓ    F       222:d
-+ºÔ    F       223:d
-+ºÕ    F       224:d
-+ºÖ    F       225:d
-+º×    F       226:d
-+ºØ    F       227:d
-+ºÙ    F       228:d
-+ºÚ    F       229:d
-+ºÛ    F       230:d
-+ºÜ    F       231:d
-+ºÝ    F       232:d
-+ºÞ    F       233:d
-+ºß    F       234:d
-+ºà    F       235:d
-+ºá    F       236:d
-+ºâ    F       237:d
-+ºã    F       238:d
-+ºä    F       239:d
-+ºå    F       240:d
-+ºæ    F       241:d
-+ºç    F       242:d
-+ºè    F       243:d
-+ºé    F       244:d
-+ºê    F       245:d
-+ºë    F       246:d
-+ºì    F       247:d
-+ºí    F       248:d
-+ºî    F       249:d
-+ºï    F       250:d
-+ºð    F       251:d
-+ºñ    F       252:d
-+ºò    F       253:d
-+ºó    F       254:d
-+ºô    F       255:d
-+ºõ    F       0:e
-+ºö    F       1:e
-+º÷    F       2:e
-+ºø    F       3:e
-+ºù    F       4:e
-+ºú    F       5:e
-+ºû    F       6:e
-+ºü    F       7:e
-+ºý    F       8:e
-+ºþ    F       9:e
-+»¡    F       10:e
-+»¢    F       11:e
-+»£    F       12:e
-+»¤    F       13:e
-+»¥    F       14:e
-+»¦    F       15:e
-+»§    F       16:e
-+»¨    F       17:e
-+»©    F       18:e
-+»ª    F       19:e
-+»«    F       20:e
-+»¬    F       21:e
-+»­    F       22:e
-+»®    F       23:e
-+»¯    F       24:e
-+»°    F       25:e
-+»±    F       26:e
-+»²    F       27:e
-+»³    F       28:e
-+»´    F       29:e
-+»µ    F       30:e
-+»¶    F       31:e
-+»·    F       32:e
-+»¸    F       33:e
-+»¹    F       34:e
-+»º    F       35:e
-+»»    F       36:e
-+»¼    F       37:e
-+»½    F       38:e
-+»¾    F       39:e
-+»¿    F       40:e
-+»À    F       41:e
-+»Á    F       42:e
-+»Â    F       43:e
-+»Ã    F       44:e
-+»Ä    F       45:e
-+»Å    F       46:e
-+»Æ    F       47:e
-+»Ç    F       48:e
-+»È    F       49:e
-+»É    F       50:e
-+»Ê    F       51:e
-+»Ë    F       52:e
-+»Ì    F       53:e
-+»Í    F       54:e
-+»Î    F       55:e
-+»Ï    F       56:e
-+»Ð    F       57:e
-+»Ñ    F       58:e
-+»Ò    F       59:e
-+»Ó    F       60:e
-+»Ô    F       61:e
-+»Õ    F       62:e
-+»Ö    F       63:e
-+»×    F       64:e
-+»Ø    F       65:e
-+»Ù    F       66:e
-+»Ú    F       67:e
-+»Û    F       68:e
-+»Ü    F       69:e
-+»Ý    F       70:e
-+»Þ    F       71:e
-+»ß    F       72:e
-+»à    F       73:e
-+»á    F       74:e
-+»â    F       75:e
-+»ã    F       76:e
-+»ä    F       77:e
-+»å    F       78:e
-+»æ    F       79:e
-+»ç    F       80:e
-+»è    F       81:e
-+»é    F       82:e
-+»ê    F       83:e
-+»ë    F       84:e
-+»ì    F       85:e
-+»í    F       86:e
-+»î    F       87:e
-+»ï    F       88:e
-+»ð    F       89:e
-+»ñ    F       90:e
-+»ò    F       91:e
-+»ó    F       92:e
-+»ô    F       93:e
-+»õ    F       94:e
-+»ö    F       95:e
-+»÷    F       96:e
-+»ø    F       97:e
-+»ù    F       98:e
-+»ú    F       99:e
-+»û    F       100:e
-+»ü    F       101:e
-+»ý    F       102:e
-+»þ    F       103:e
-+¼¡    F       104:e
-+¼¢    F       105:e
-+¼£    F       106:e
-+¼¤    F       107:e
-+¼¥    F       108:e
-+¼¦    F       109:e
-+¼§    F       110:e
-+¼¨    F       111:e
-+¼©    F       112:e
-+¼ª    F       113:e
-+¼«    F       114:e
-+¼¬    F       115:e
-+¼­    F       116:e
-+¼®    F       117:e
-+¼¯    F       118:e
-+¼°    F       119:e
-+¼±    F       120:e
-+¼²    F       121:e
-+¼³    F       122:e
-+¼´    F       123:e
-+¼µ    F       124:e
-+¼¶    F       125:e
-+¼·    F       126:e
-+¼¸    F       127:e
-+¼¹    F       128:e
-+¼º    F       129:e
-+¼»    F       130:e
-+¼¼    F       131:e
-+¼½    F       132:e
-+¼¾    F       133:e
-+¼¿    F       134:e
-+¼À    F       135:e
-+¼Á    F       136:e
-+¼Â    F       137:e
-+¼Ã    F       138:e
-+¼Ä    F       139:e
-+¼Å    F       140:e
-+¼Æ    F       141:e
-+¼Ç    F       142:e
-+¼È    F       143:e
-+¼É    F       144:e
-+¼Ê    F       145:e
-+¼Ë    F       146:e
-+¼Ì    F       147:e
-+¼Í    F       148:e
-+¼Î    F       149:e
-+¼Ï    F       150:e
-+¼Ð    F       151:e
-+¼Ñ    F       152:e
-+¼Ò    F       153:e
-+¼Ó    F       154:e
-+¼Ô    F       155:e
-+¼Õ    F       156:e
-+¼Ö    F       157:e
-+¼×    F       158:e
-+¼Ø    F       159:e
-+¼Ù    F       160:e
-+¼Ú    F       161:e
-+¼Û    F       162:e
-+¼Ü    F       163:e
-+¼Ý    F       164:e
-+¼Þ    F       165:e
-+¼ß    F       166:e
-+¼à    F       167:e
-+¼á    F       168:e
-+¼â    F       169:e
-+¼ã    F       170:e
-+¼ä    F       171:e
-+¼å    F       172:e
-+¼æ    F       173:e
-+¼ç    F       174:e
-+¼è    F       175:e
-+¼é    F       176:e
-+¼ê    F       177:e
-+¼ë    F       178:e
-+¼ì    F       179:e
-+¼í    F       180:e
-+¼î    F       181:e
-+¼ï    F       182:e
-+¼ð    F       183:e
-+¼ñ    F       184:e
-+¼ò    F       185:e
-+¼ó    F       186:e
-+¼ô    F       187:e
-+¼õ    F       188:e
-+¼ö    F       189:e
-+¼÷    F       190:e
-+¼ø    F       191:e
-+¼ù    F       192:e
-+¼ú    F       193:e
-+¼û    F       194:e
-+¼ü    F       195:e
-+¼ý    F       196:e
-+¼þ    F       197:e
-+½¡    F       198:e
-+½¢    F       199:e
-+½£    F       200:e
-+½¤    F       201:e
-+½¥    F       202:e
-+½¦    F       203:e
-+½§    F       204:e
-+½¨    F       205:e
-+½©    F       206:e
-+½ª    F       207:e
-+½«    F       208:e
-+½¬    F       209:e
-+½­    F       210:e
-+½®    F       211:e
-+½¯    F       212:e
-+½°    F       213:e
-+½±    F       214:e
-+½²    F       215:e
-+½³    F       216:e
-+½´    F       217:e
-+½µ    F       218:e
-+½¶    F       219:e
-+½·    F       220:e
-+½¸    F       221:e
-+½¹    F       222:e
-+½º    F       223:e
-+½»    F       224:e
-+½¼    F       225:e
-+½½    F       226:e
-+½¾    F       227:e
-+½¿    F       228:e
-+½À    F       229:e
-+½Á    F       230:e
-+½Â    F       231:e
-+½Ã    F       232:e
-+½Ä    F       233:e
-+½Å    F       234:e
-+½Æ    F       235:e
-+½Ç    F       236:e
-+½È    F       237:e
-+½É    F       238:e
-+½Ê    F       239:e
-+½Ë    F       240:e
-+½Ì    F       241:e
-+½Í    F       242:e
-+½Î    F       243:e
-+½Ï    F       244:e
-+½Ð    F       245:e
-+½Ñ    F       246:e
-+½Ò    F       247:e
-+½Ó    F       248:e
-+½Ô    F       249:e
-+½Õ    F       250:e
-+½Ö    F       251:e
-+½×    F       252:e
-+½Ø    F       253:e
-+½Ù    F       254:e
-+½Ú    F       255:e
-+½Û    F       0:f
-+½Ü    F       1:f
-+½Ý    F       2:f
-+½Þ    F       3:f
-+½ß    F       4:f
-+½à    F       5:f
-+½á    F       6:f
-+½â    F       7:f
-+½ã    F       8:f
-+½ä    F       9:f
-+½å    F       10:f
-+½æ    F       11:f
-+½ç    F       12:f
-+½è    F       13:f
-+½é    F       14:f
-+½ê    F       15:f
-+½ë    F       16:f
-+½ì    F       17:f
-+½í    F       18:f
-+½î    F       19:f
-+½ï    F       20:f
-+½ð    F       21:f
-+½ñ    F       22:f
-+½ò    F       23:f
-+½ó    F       24:f
-+½ô    F       25:f
-+½õ    F       26:f
-+½ö    F       27:f
-+½÷    F       28:f
-+½ø    F       29:f
-+½ù    F       30:f
-+½ú    F       31:f
-+½û    F       32:f
-+½ü    F       33:f
-+½ý    F       34:f
-+½þ    F       35:f
-+¾¡    F       36:f
-+¾¢    F       37:f
-+¾£    F       38:f
-+¾¤    F       39:f
-+¾¥    F       40:f
-+¾¦    F       41:f
-+¾§    F       42:f
-+¾¨    F       43:f
-+¾©    F       44:f
-+¾ª    F       45:f
-+¾«    F       46:f
-+¾¬    F       47:f
-+¾­    F       48:f
-+¾®    F       49:f
-+¾¯    F       50:f
-+¾°    F       51:f
-+¾±    F       52:f
-+¾²    F       53:f
-+¾³    F       54:f
-+¾´    F       55:f
-+¾µ    F       56:f
-+¾¶    F       57:f
-+¾·    F       58:f
-+¾¸    F       59:f
-+¾¹    F       60:f
-+¾º    F       61:f
-+¾»    F       62:f
-+¾¼    F       63:f
-+¾½    F       64:f
-+¾¾    F       65:f
-+¾¿    F       66:f
-+¾À    F       67:f
-+¾Á    F       68:f
-+¾Â    F       69:f
-+¾Ã    F       70:f
-+¾Ä    F       71:f
-+¾Å    F       72:f
-+¾Æ    F       73:f
-+¾Ç    F       74:f
-+¾È    F       75:f
-+¾É    F       76:f
-+¾Ê    F       77:f
-+¾Ë    F       78:f
-+¾Ì    F       79:f
-+¾Í    F       80:f
-+¾Î    F       81:f
-+¾Ï    F       82:f
-+¾Ð    F       83:f
-+¾Ñ    F       84:f
-+¾Ò    F       85:f
-+¾Ó    F       86:f
-+¾Ô    F       87:f
-+¾Õ    F       88:f
-+¾Ö    F       89:f
-+¾×    F       90:f
-+¾Ø    F       91:f
-+¾Ù    F       92:f
-+¾Ú    F       93:f
-+¾Û    F       94:f
-+¾Ü    F       95:f
-+¾Ý    F       96:f
-+¾Þ    F       97:f
-+¾ß    F       98:f
-+¾à    F       99:f
-+¾á    F       100:f
-+¾â    F       101:f
-+¾ã    F       102:f
-+¾ä    F       103:f
-+¾å    F       104:f
-+¾æ    F       105:f
-+¾ç    F       106:f
-+¾è    F       107:f
-+¾é    F       108:f
-+¾ê    F       109:f
-+¾ë    F       110:f
-+¾ì    F       111:f
-+¾í    F       112:f
-+¾î    F       113:f
-+¾ï    F       114:f
-+¾ð    F       115:f
-+¾ñ    F       116:f
-+¾ò    F       117:f
-+¾ó    F       118:f
-+¾ô    F       119:f
-+¾õ    F       120:f
-+¾ö    F       121:f
-+¾÷    F       122:f
-+¾ø    F       123:f
-+¾ù    F       124:f
-+¾ú    F       125:f
-+¾û    F       126:f
-+¾ü    F       127:f
-+¾ý    F       128:f
-+¾þ    F       129:f
-+¿¡    F       130:f
-+¿¢    F       131:f
-+¿£    F       132:f
-+¿¤    F       133:f
-+¿¥    F       134:f
-+¿¦    F       135:f
-+¿§    F       136:f
-+¿¨    F       137:f
-+¿©    F       138:f
-+¿ª    F       139:f
-+¿«    F       140:f
-+¿¬    F       141:f
-+¿­    F       142:f
-+¿®    F       143:f
-+¿¯    F       144:f
-+¿°    F       145:f
-+¿±    F       146:f
-+¿²    F       147:f
-+¿³    F       148:f
-+¿´    F       149:f
-+¿µ    F       150:f
-+¿¶    F       151:f
-+¿·    F       152:f
-+¿¸    F       153:f
-+¿¹    F       154:f
-+¿º    F       155:f
-+¿»    F       156:f
-+¿¼    F       157:f
-+¿½    F       158:f
-+¿¾    F       159:f
-+¿¿    F       160:f
-+¿À    F       161:f
-+¿Á    F       162:f
-+¿Â    F       163:f
-+¿Ã    F       164:f
-+¿Ä    F       165:f
-+¿Å    F       166:f
-+¿Æ    F       167:f
-+¿Ç    F       168:f
-+¿È    F       169:f
-+¿É    F       170:f
-+¿Ê    F       171:f
-+¿Ë    F       172:f
-+¿Ì    F       173:f
-+¿Í    F       174:f
-+¿Î    F       175:f
-+¿Ï    F       176:f
-+¿Ð    F       177:f
-+¿Ñ    F       178:f
-+¿Ò    F       179:f
-+¿Ó    F       180:f
-+¿Ô    F       181:f
-+¿Õ    F       182:f
-+¿Ö    F       183:f
-+¿×    F       184:f
-+¿Ø    F       185:f
-+¿Ù    F       186:f
-+¿Ú    F       187:f
-+¿Û    F       188:f
-+¿Ü    F       189:f
-+¿Ý    F       190:f
-+¿Þ    F       191:f
-+¿ß    F       192:f
-+¿à    F       193:f
-+¿á    F       194:f
-+¿â    F       195:f
-+¿ã    F       196:f
-+¿ä    F       197:f
-+¿å    F       198:f
-+¿æ    F       199:f
-+¿ç    F       200:f
-+¿è    F       201:f
-+¿é    F       202:f
-+¿ê    F       203:f
-+¿ë    F       204:f
-+¿ì    F       205:f
-+¿í    F       206:f
-+¿î    F       207:f
-+¿ï    F       208:f
-+¿ð    F       209:f
-+¿ñ    F       210:f
-+¿ò    F       211:f
-+¿ó    F       212:f
-+¿ô    F       213:f
-+¿õ    F       214:f
-+¿ö    F       215:f
-+¿÷    F       216:f
-+¿ø    F       217:f
-+¿ù    F       218:f
-+¿ú    F       219:f
-+¿û    F       220:f
-+¿ü    F       221:f
-+¿ý    F       222:f
-+¿þ    F       223:f
-+À¡    F       224:f
-+À¢    F       225:f
-+À£    F       226:f
-+À¤    F       227:f
-+À¥    F       228:f
-+À¦    F       229:f
-+À§    F       230:f
-+À¨    F       231:f
-+À©    F       232:f
-+Àª    F       233:f
-+À«    F       234:f
-+À¬    F       235:f
-+À­    F       236:f
-+À®    F       237:f
-+À¯    F       238:f
-+À°    F       239:f
-+À±    F       240:f
-+À²    F       241:f
-+À³    F       242:f
-+À´    F       243:f
-+Àµ    F       244:f
-+À¶    F       245:f
-+À·    F       246:f
-+À¸    F       247:f
-+À¹    F       248:f
-+Àº    F       249:f
-+À»    F       250:f
-+À¼    F       251:f
-+À½    F       252:f
-+À¾    F       253:f
-+À¿    F       254:f
-+ÀÀ    F       255:f
-+ÀÁ    F       0:g
-+À    F       1:g
-+Àà   F       2:g
-+ÀÄ    F       3:g
-+ÀÅ    F       4:g
-+ÀÆ    F       5:g
-+ÀÇ    F       6:g
-+ÀÈ    F       7:g
-+ÀÉ    F       8:g
-+ÀÊ    F       9:g
-+ÀË    F       10:g
-+ÀÌ    F       11:g
-+ÀÍ    F       12:g
-+ÀΠ   F       13:g
-+ÀÏ    F       14:g
-+ÀР   F       15:g
-+ÀÑ    F       16:g
-+ÀÒ    F       17:g
-+ÀÓ    F       18:g
-+ÀÔ    F       19:g
-+ÀÕ    F       20:g
-+ÀÖ    F       21:g
-+À×    F       22:g
-+ÀØ    F       23:g
-+ÀÙ    F       24:g
-+ÀÚ    F       25:g
-+ÀÛ    F       26:g
-+ÀÜ    F       27:g
-+ÀÝ    F       28:g
-+ÀÞ    F       29:g
-+Àß    F       30:g
-+Àà    F       31:g
-+Àá    F       32:g
-+Àâ    F       33:g
-+Àã    F       34:g
-+Àä    F       35:g
-+Àå    F       36:g
-+Àæ    F       37:g
-+Àç    F       38:g
-+Àè    F       39:g
-+Àé    F       40:g
-+Àê    F       41:g
-+Àë    F       42:g
-+Àì    F       43:g
-+Àí    F       44:g
-+Àî    F       45:g
-+Àï    F       46:g
-+Àð    F       47:g
-+Àñ    F       48:g
-+Àò    F       49:g
-+Àó    F       50:g
-+Àô    F       51:g
-+Àõ    F       52:g
-+Àö    F       53:g
-+À÷    F       54:g
-+Àø    F       55:g
-+Àù    F       56:g
-+Àú    F       57:g
-+Àû    F       58:g
-+Àü    F       59:g
-+Àý    F       60:g
-+Àþ    F       61:g
-+Á¡    F       62:g
-+Á¢    F       63:g
-+Á£    F       64:g
-+Á¤    F       65:g
-+Á¥    F       66:g
-+Á¦    F       67:g
-+Á§    F       68:g
-+Á¨    F       69:g
-+Á©    F       70:g
-+Áª    F       71:g
-+Á«    F       72:g
-+Á¬    F       73:g
-+Á­    F       74:g
-+Á®    F       75:g
-+Á¯    F       76:g
-+Á°    F       77:g
-+Á±    F       78:g
-+Á²    F       79:g
-+Á³    F       80:g
-+Á´    F       81:g
-+Áµ    F       82:g
-+Á¶    F       83:g
-+Á·    F       84:g
-+Á¸    F       85:g
-+Á¹    F       86:g
-+Áº    F       87:g
-+Á»    F       88:g
-+Á¼    F       89:g
-+Á½    F       90:g
-+Á¾    F       91:g
-+Á¿    F       92:g
-+ÁÀ    F       93:g
-+ÁÁ    F       94:g
-+Á    F       95:g
-+Áà   F       96:g
-+ÁÄ    F       97:g
-+ÁÅ    F       98:g
-+ÁÆ    F       99:g
-+ÁÇ    F       100:g
-+ÁÈ    F       101:g
-+ÁÉ    F       102:g
-+ÁÊ    F       103:g
-+ÁË    F       104:g
-+ÁÌ    F       105:g
-+ÁÍ    F       106:g
-+ÁΠ   F       107:g
-+ÁÏ    F       108:g
-+ÁР   F       109:g
-+ÁÑ    F       110:g
-+ÁÒ    F       111:g
-+ÁÓ    F       112:g
-+ÁÔ    F       113:g
-+ÁÕ    F       114:g
-+ÁÖ    F       115:g
-+Á×    F       116:g
-+ÁØ    F       117:g
-+ÁÙ    F       118:g
-+ÁÚ    F       119:g
-+ÁÛ    F       120:g
-+ÁÜ    F       121:g
-+ÁÝ    F       122:g
-+ÁÞ    F       123:g
-+Áß    F       124:g
-+Áà    F       125:g
-+Áá    F       126:g
-+Áâ    F       127:g
-+Áã    F       128:g
-+Áä    F       129:g
-+Áå    F       130:g
-+Áæ    F       131:g
-+Áç    F       132:g
-+Áè    F       133:g
-+Áé    F       134:g
-+Áê    F       135:g
-+Áë    F       136:g
-+Áì    F       137:g
-+Áí    F       138:g
-+Áî    F       139:g
-+Áï    F       140:g
-+Áð    F       141:g
-+Áñ    F       142:g
-+Áò    F       143:g
-+Áó    F       144:g
-+Áô    F       145:g
-+Áõ    F       146:g
-+Áö    F       147:g
-+Á÷    F       148:g
-+Áø    F       149:g
-+Áù    F       150:g
-+Áú    F       151:g
-+Áû    F       152:g
-+Áü    F       153:g
-+Áý    F       154:g
-+Áþ    F       155:g
-+¡    F       156:g
-+¢    F       157:g
-+£    F       158:g
-+¤    F       159:g
-+¥    F       160:g
-+¦    F       161:g
-+§    F       162:g
-+¨    F       163:g
-+©    F       164:g
-+ª    F       165:g
-+«    F       166:g
-+¬    F       167:g
-+­    F       168:g
-+®    F       169:g
-+¯    F       170:g
-+°    F       171:g
-+±    F       172:g
-+²    F       173:g
-+³    F       174:g
-+´    F       175:g
-+µ    F       176:g
-+¶    F       177:g
-+·    F       178:g
-+¸    F       179:g
-+¹    F       180:g
-+º    F       181:g
-+»    F       182:g
-+¼    F       183:g
-+½    F       184:g
-+¾    F       185:g
-+¿    F       186:g
-+ÂÀ    F       187:g
-+ÂÁ    F       188:g
-+    F       189:g
-+Âà   F       190:g
-+ÂÄ    F       191:g
-+ÂÅ    F       192:g
-+ÂÆ    F       193:g
-+ÂÇ    F       194:g
-+ÂÈ    F       195:g
-+ÂÉ    F       196:g
-+ÂÊ    F       197:g
-+ÂË    F       198:g
-+ÂÌ    F       199:g
-+ÂÍ    F       200:g
-+ÂΠ   F       201:g
-+ÂÏ    F       202:g
-+ÂР   F       203:g
-+ÂÑ    F       204:g
-+ÂÒ    F       205:g
-+ÂÓ    F       206:g
-+ÂÔ    F       207:g
-+ÂÕ    F       208:g
-+ÂÖ    F       209:g
-+Â×    F       210:g
-+ÂØ    F       211:g
-+ÂÙ    F       212:g
-+ÂÚ    F       213:g
-+ÂÛ    F       214:g
-+ÂÜ    F       215:g
-+ÂÝ    F       216:g
-+ÂÞ    F       217:g
-+Âß    F       218:g
-+Âà    F       219:g
-+Âá    F       220:g
-+Ââ    F       221:g
-+Âã    F       222:g
-+Âä    F       223:g
-+Âå    F       224:g
-+Âæ    F       225:g
-+Âç    F       226:g
-+Âè    F       227:g
-+Âé    F       228:g
-+Âê    F       229:g
-+Âë    F       230:g
-+Âì    F       231:g
-+Âí    F       232:g
-+Âî    F       233:g
-+Âï    F       234:g
-+Âð    F       235:g
-+Âñ    F       236:g
-+Âò    F       237:g
-+Âó    F       238:g
-+Âô    F       239:g
-+Âõ    F       240:g
-+Âö    F       241:g
-+Â÷    F       242:g
-+Âø    F       243:g
-+Âù    F       244:g
-+Âú    F       245:g
-+Âû    F       246:g
-+Âü    F       247:g
-+Âý    F       248:g
-+Âþ    F       249:g
-+á    F       250:g
-+â    F       251:g
-+ã    F       252:g
-+ä    F       253:g
-+å    F       254:g
-+æ    F       255:g
-+ç    F       0:h
-+è    F       1:h
-+é    F       2:h
-+ê    F       3:h
-+ë    F       4:h
-+ì    F       5:h
-+í    F       6:h
-+î    F       7:h
-+ï    F       8:h
-+ð    F       9:h
-+ñ    F       10:h
-+ò    F       11:h
-+ó    F       12:h
-+ô    F       13:h
-+õ    F       14:h
-+ö    F       15:h
-+÷    F       16:h
-+ø    F       17:h
-+ù    F       18:h
-+ú    F       19:h
-+û    F       20:h
-+ü    F       21:h
-+ý    F       22:h
-+þ    F       23:h
-+ÿ    F       24:h
-+ÃÀ    F       25:h
-+ÃÁ    F       26:h
-+à   F       27:h
-+Ãà   F       28:h
-+ÃÄ    F       29:h
-+ÃÅ    F       30:h
-+ÃÆ    F       31:h
-+ÃÇ    F       32:h
-+ÃÈ    F       33:h
-+ÃÉ    F       34:h
-+ÃÊ    F       35:h
-+ÃË    F       36:h
-+ÃÌ    F       37:h
-+ÃÍ    F       38:h
-+ÃΠ   F       39:h
-+ÃÏ    F       40:h
-+ÃР   F       41:h
-+ÃÑ    F       42:h
-+ÃÒ    F       43:h
-+ÃÓ    F       44:h
-+ÃÔ    F       45:h
-+ÃÕ    F       46:h
-+ÃÖ    F       47:h
-+Ã×    F       48:h
-+ÃØ    F       49:h
-+ÃÙ    F       50:h
-+ÃÚ    F       51:h
-+ÃÛ    F       52:h
-+ÃÜ    F       53:h
-+ÃÝ    F       54:h
-+ÃÞ    F       55:h
-+Ãß    F       56:h
-+Ãà    F       57:h
-+Ãá    F       58:h
-+Ãâ    F       59:h
-+Ãã    F       60:h
-+Ãä    F       61:h
-+Ãå    F       62:h
-+Ãæ    F       63:h
-+Ãç    F       64:h
-+Ãè    F       65:h
-+Ãé    F       66:h
-+Ãê    F       67:h
-+Ãë    F       68:h
-+Ãì    F       69:h
-+Ãí    F       70:h
-+Ãî    F       71:h
-+Ãï    F       72:h
-+Ãð    F       73:h
-+Ãñ    F       74:h
-+Ãò    F       75:h
-+Ãó    F       76:h
-+Ãô    F       77:h
-+Ãõ    F       78:h
-+Ãö    F       79:h
-+Ã÷    F       80:h
-+Ãø    F       81:h
-+Ãù    F       82:h
-+Ãú    F       83:h
-+Ãû    F       84:h
-+Ãü    F       85:h
-+Ãý    F       86:h
-+Ãþ    F       87:h
-+ġ    F       88:h
-+Ģ    F       89:h
-+ģ    F       90:h
-+Ĥ    F       91:h
-+ĥ    F       92:h
-+Ħ    F       93:h
-+ħ    F       94:h
-+Ĩ    F       95:h
-+ĩ    F       96:h
-+Ī    F       97:h
-+ī    F       98:h
-+Ĭ    F       99:h
-+ĭ    F       100:h
-+Į    F       101:h
-+į    F       102:h
-+İ    F       103:h
-+ı    F       104:h
-+IJ    F       105:h
-+ij    F       106:h
-+Ĵ    F       107:h
-+ĵ    F       108:h
-+Ķ    F       109:h
-+ķ    F       110:h
-+ĸ    F       111:h
-+Ĺ    F       112:h
-+ĺ    F       113:h
-+Ļ    F       114:h
-+ļ    F       115:h
-+Ľ    F       116:h
-+ľ    F       117:h
-+Ŀ    F       118:h
-+ÄÀ    F       119:h
-+ÄÁ    F       120:h
-+Ä    F       121:h
-+Äà   F       122:h
-+ÄÄ    F       123:h
-+ÄÅ    F       124:h
-+ÄÆ    F       125:h
-+ÄÇ    F       126:h
-+ÄÈ    F       127:h
-+ÄÉ    F       128:h
-+ÄÊ    F       129:h
-+ÄË    F       130:h
-+ÄÌ    F       131:h
-+ÄÍ    F       132:h
-+ÄΠ   F       133:h
-+ÄÏ    F       134:h
-+ÄР   F       135:h
-+ÄÑ    F       136:h
-+ÄÒ    F       137:h
-+ÄÓ    F       138:h
-+ÄÔ    F       139:h
-+ÄÕ    F       140:h
-+ÄÖ    F       141:h
-+Ä×    F       142:h
-+ÄØ    F       143:h
-+ÄÙ    F       144:h
-+ÄÚ    F       145:h
-+ÄÛ    F       146:h
-+ÄÜ    F       147:h
-+ÄÝ    F       148:h
-+ÄÞ    F       149:h
-+Äß    F       150:h
-+Äà    F       151:h
-+Äá    F       152:h
-+Äâ    F       153:h
-+Äã    F       154:h
-+Ää    F       155:h
-+Äå    F       156:h
-+Äæ    F       157:h
-+Äç    F       158:h
-+Äè    F       159:h
-+Äé    F       160:h
-+Äê    F       161:h
-+Äë    F       162:h
-+Äì    F       163:h
-+Äí    F       164:h
-+Äî    F       165:h
-+Äï    F       166:h
-+Äð    F       167:h
-+Äñ    F       168:h
-+Äò    F       169:h
-+Äó    F       170:h
-+Äô    F       171:h
-+Äõ    F       172:h
-+Äö    F       173:h
-+Ä÷    F       174:h
-+Äø    F       175:h
-+Äù    F       176:h
-+Äú    F       177:h
-+Äû    F       178:h
-+Äü    F       179:h
-+Äý    F       180:h
-+Äþ    F       181:h
-+š    F       182:h
-+Ţ    F       183:h
-+ţ    F       184:h
-+Ť    F       185:h
-+ť    F       186:h
-+Ŧ    F       187:h
-+ŧ    F       188:h
-+Ũ    F       189:h
-+ũ    F       190:h
-+Ū    F       191:h
-+ū    F       192:h
-+Ŭ    F       193:h
-+ŭ    F       194:h
-+Ů    F       195:h
-+ů    F       196:h
-+Ű    F       197:h
-+ű    F       198:h
-+Ų    F       199:h
-+ų    F       200:h
-+Ŵ    F       201:h
-+ŵ    F       202:h
-+Ŷ    F       203:h
-+ŷ    F       204:h
-+Ÿ    F       205:h
-+Ź    F       206:h
-+ź    F       207:h
-+Ż    F       208:h
-+ż    F       209:h
-+Ž    F       210:h
-+ž    F       211:h
-+ſ    F       212:h
-+ÅÀ    F       213:h
-+ÅÁ    F       214:h
-+Å    F       215:h
-+Åà   F       216:h
-+ÅÄ    F       217:h
-+ÅÅ    F       218:h
-+ÅÆ    F       219:h
-+ÅÇ    F       220:h
-+ÅÈ    F       221:h
-+ÅÉ    F       222:h
-+ÅÊ    F       223:h
-+ÅË    F       224:h
-+ÅÌ    F       225:h
-+ÅÍ    F       226:h
-+ÅΠ   F       227:h
-+ÅÏ    F       228:h
-+ÅР   F       229:h
-+ÅÑ    F       230:h
-+ÅÒ    F       231:h
-+ÅÓ    F       232:h
-+ÅÔ    F       233:h
-+ÅÕ    F       234:h
-+ÅÖ    F       235:h
-+Å×    F       236:h
-+ÅØ    F       237:h
-+ÅÙ    F       238:h
-+ÅÚ    F       239:h
-+ÅÛ    F       240:h
-+ÅÜ    F       241:h
-+ÅÝ    F       242:h
-+ÅÞ    F       243:h
-+Åß    F       244:h
-+Åà    F       245:h
-+Åá    F       246:h
-+Åâ    F       247:h
-+Åã    F       248:h
-+Åä    F       249:h
-+Åå    F       250:h
-+Åæ    F       251:h
-+Åç    F       252:h
-+Åè    F       253:h
-+Åé    F       254:h
-+Åê    F       255:h
-+Åë    F       0:i
-+Åì    F       1:i
-+Åí    F       2:i
-+Åî    F       3:i
-+Åï    F       4:i
-+Åð    F       5:i
-+Åñ    F       6:i
-+Åò    F       7:i
-+Åó    F       8:i
-+Åô    F       9:i
-+Åõ    F       10:i
-+Åö    F       11:i
-+Å÷    F       12:i
-+Åø    F       13:i
-+Åù    F       14:i
-+Åú    F       15:i
-+Åû    F       16:i
-+Åü    F       17:i
-+Åý    F       18:i
-+Åþ    F       19:i
-+ơ    F       20:i
-+Ƣ    F       21:i
-+ƣ    F       22:i
-+Ƥ    F       23:i
-+ƥ    F       24:i
-+Ʀ    F       25:i
-+Ƨ    F       26:i
-+ƨ    F       27:i
-+Ʃ    F       28:i
-+ƪ    F       29:i
-+ƫ    F       30:i
-+Ƭ    F       31:i
-+ƭ    F       32:i
-+Ʈ    F       33:i
-+Ư    F       34:i
-+ư    F       35:i
-+Ʊ    F       36:i
-+Ʋ    F       37:i
-+Ƴ    F       38:i
-+ƴ    F       39:i
-+Ƶ    F       40:i
-+ƶ    F       41:i
-+Ʒ    F       42:i
-+Ƹ    F       43:i
-+ƹ    F       44:i
-+ƺ    F       45:i
-+ƻ    F       46:i
-+Ƽ    F       47:i
-+ƽ    F       48:i
-+ƾ    F       49:i
-+ƿ    F       50:i
-+ÆÀ    F       51:i
-+ÆÁ    F       52:i
-+Æ    F       53:i
-+Æà   F       54:i
-+ÆÄ    F       55:i
-+ÆÅ    F       56:i
-+ÆÆ    F       57:i
-+ÆÇ    F       58:i
-+ÆÈ    F       59:i
-+ÆÉ    F       60:i
-+ÆÊ    F       61:i
-+ÆË    F       62:i
-+ÆÌ    F       63:i
-+ÆÍ    F       64:i
-+ÆΠ   F       65:i
-+ÆÏ    F       66:i
-+ÆР   F       67:i
-+ÆÑ    F       68:i
-+ÆÒ    F       69:i
-+ÆÓ    F       70:i
-+ÆÔ    F       71:i
-+ÆÕ    F       72:i
-+ÆÖ    F       73:i
-+Æ×    F       74:i
-+ÆØ    F       75:i
-+ÆÙ    F       76:i
-+ÆÚ    F       77:i
-+ÆÛ    F       78:i
-+ÆÜ    F       79:i
-+ÆÝ    F       80:i
-+ÆÞ    F       81:i
-+Æß    F       82:i
-+Æà    F       83:i
-+Æá    F       84:i
-+Æâ    F       85:i
-+Æã    F       86:i
-+Æä    F       87:i
-+Æå    F       88:i
-+Ææ    F       89:i
-+Æç    F       90:i
-+Æè    F       91:i
-+Æé    F       92:i
-+Æê    F       93:i
-+Æë    F       94:i
-+Æì    F       95:i
-+Æí    F       96:i
-+Æî    F       97:i
-+Æï    F       98:i
-+Æð    F       99:i
-+Æñ    F       100:i
-+Æò    F       101:i
-+Æó    F       102:i
-+Æô    F       103:i
-+Æõ    F       104:i
-+Æö    F       105:i
-+Æ÷    F       106:i
-+Æø    F       107:i
-+Æù    F       108:i
-+Æú    F       109:i
-+Æû    F       110:i
-+Æü    F       111:i
-+Æý    F       112:i
-+Æþ    F       113:i
-+ǡ    F       114:i
-+Ǣ    F       115:i
-+ǣ    F       116:i
-+Ǥ    F       117:i
-+ǥ    F       118:i
-+Ǧ    F       119:i
-+ǧ    F       120:i
-+Ǩ    F       121:i
-+ǩ    F       122:i
-+Ǫ    F       123:i
-+ǫ    F       124:i
-+Ǭ    F       125:i
-+ǭ    F       126:i
-+Ǯ    F       127:i
-+ǯ    F       128:i
-+ǰ    F       129:i
-+DZ    F       130:i
-+Dz    F       131:i
-+dz    F       132:i
-+Ǵ    F       133:i
-+ǵ    F       134:i
-+Ƕ    F       135:i
-+Ƿ    F       136:i
-+Ǹ    F       137:i
-+ǹ    F       138:i
-+Ǻ    F       139:i
-+ǻ    F       140:i
-+Ǽ    F       141:i
-+ǽ    F       142:i
-+Ǿ    F       143:i
-+ǿ    F       144:i
-+ÇÀ    F       145:i
-+ÇÁ    F       146:i
-+Ç    F       147:i
-+Çà   F       148:i
-+ÇÄ    F       149:i
-+ÇÅ    F       150:i
-+ÇÆ    F       151:i
-+ÇÇ    F       152:i
-+ÇÈ    F       153:i
-+ÇÉ    F       154:i
-+ÇÊ    F       155:i
-+ÇË    F       156:i
-+ÇÌ    F       157:i
-+ÇÍ    F       158:i
-+ÇΠ   F       159:i
-+ÇÏ    F       160:i
-+ÇР   F       161:i
-+ÇÑ    F       162:i
-+ÇÒ    F       163:i
-+ÇÓ    F       164:i
-+ÇÔ    F       165:i
-+ÇÕ    F       166:i
-+ÇÖ    F       167:i
-+Ç×    F       168:i
-+ÇØ    F       169:i
-+ÇÙ    F       170:i
-+ÇÚ    F       171:i
-+ÇÛ    F       172:i
-+ÇÜ    F       173:i
-+ÇÝ    F       174:i
-+ÇÞ    F       175:i
-+Çß    F       176:i
-+Çà    F       177:i
-+Çá    F       178:i
-+Çâ    F       179:i
-+Çã    F       180:i
-+Çä    F       181:i
-+Çå    F       182:i
-+Çæ    F       183:i
-+Çç    F       184:i
-+Çè    F       185:i
-+Çé    F       186:i
-+Çê    F       187:i
-+Çë    F       188:i
-+Çì    F       189:i
-+Çí    F       190:i
-+Çî    F       191:i
-+Çï    F       192:i
-+Çð    F       193:i
-+Çñ    F       194:i
-+Çò    F       195:i
-+Çó    F       196:i
-+Çô    F       197:i
-+Çõ    F       198:i
-+Çö    F       199:i
-+Ç÷    F       200:i
-+Çø    F       201:i
-+Çù    F       202:i
-+Çú    F       203:i
-+Çû    F       204:i
-+Çü    F       205:i
-+Çý    F       206:i
-+Çþ    F       207:i
-+ȡ    F       208:i
-+Ȣ    F       209:i
-+ȣ    F       210:i
-+Ȥ    F       211:i
-+ȥ    F       212:i
-+Ȧ    F       213:i
-+ȧ    F       214:i
-+Ȩ    F       215:i
-+ȩ    F       216:i
-+Ȫ    F       217:i
-+ȫ    F       218:i
-+Ȭ    F       219:i
-+ȭ    F       220:i
-+Ȯ    F       221:i
-+ȯ    F       222:i
-+Ȱ    F       223:i
-+ȱ    F       224:i
-+Ȳ    F       225:i
-+ȳ    F       226:i
-+ȴ    F       227:i
-+ȵ    F       228:i
-+ȶ    F       229:i
-+ȷ    F       230:i
-+ȸ    F       231:i
-+ȹ    F       232:i
-+Ⱥ    F       233:i
-+Ȼ    F       234:i
-+ȼ    F       235:i
-+Ƚ    F       236:i
-+Ⱦ    F       237:i
-+ȿ    F       238:i
-+ÈÀ    F       239:i
-+ÈÁ    F       240:i
-+È    F       241:i
-+Èà   F       242:i
-+ÈÄ    F       243:i
-+ÈÅ    F       244:i
-+ÈÆ    F       245:i
-+ÈÇ    F       246:i
-+ÈÈ    F       247:i
-+ÈÉ    F       248:i
-+ÈÊ    F       249:i
-+ÈË    F       250:i
-+ÈÌ    F       251:i
-+ÈÍ    F       252:i
-+ÈΠ   F       253:i
-+ÈÏ    F       254:i
-+ÈР   F       255:i
-+ÈÑ    F       0:j
-+ÈÒ    F       1:j
-+ÈÓ    F       2:j
-+ÈÔ    F       3:j
-+ÈÕ    F       4:j
-+ÈÖ    F       5:j
-+È×    F       6:j
-+ÈØ    F       7:j
-+ÈÙ    F       8:j
-+ÈÚ    F       9:j
-+ÈÛ    F       10:j
-+ÈÜ    F       11:j
-+ÈÝ    F       12:j
-+ÈÞ    F       13:j
-+Èß    F       14:j
-+Èà    F       15:j
-+Èá    F       16:j
-+Èâ    F       17:j
-+Èã    F       18:j
-+Èä    F       19:j
-+Èå    F       20:j
-+Èæ    F       21:j
-+Èç    F       22:j
-+Èè    F       23:j
-+Èé    F       24:j
-+Èê    F       25:j
-+Èë    F       26:j
-+Èì    F       27:j
-+Èí    F       28:j
-+Èî    F       29:j
-+Èï    F       30:j
-+Èð    F       31:j
-+Èñ    F       32:j
-+Èò    F       33:j
-+Èó    F       34:j
-+Èô    F       35:j
-+Èõ    F       36:j
-+Èö    F       37:j
-+È÷    F       38:j
-+Èø    F       39:j
-+Èù    F       40:j
-+Èú    F       41:j
-+Èû    F       42:j
-+Èü    F       43:j
-+Èý    F       44:j
-+Èþ    F       45:j
-+ɡ    F       46:j
-+ɢ    F       47:j
-+ɣ    F       48:j
-+ɤ    F       49:j
-+ɥ    F       50:j
-+ɦ    F       51:j
-+ɧ    F       52:j
-+ɨ    F       53:j
-+ɩ    F       54:j
-+ɪ    F       55:j
-+ɫ    F       56:j
-+ɬ    F       57:j
-+ɭ    F       58:j
-+ɮ    F       59:j
-+ɯ    F       60:j
-+ɰ    F       61:j
-+ɱ    F       62:j
-+ɲ    F       63:j
-+ɳ    F       64:j
-+ɴ    F       65:j
-+ɵ    F       66:j
-+ɶ    F       67:j
-+ɷ    F       68:j
-+ɸ    F       69:j
-+ɹ    F       70:j
-+ɺ    F       71:j
-+ɻ    F       72:j
-+ɼ    F       73:j
-+ɽ    F       74:j
-+ɾ    F       75:j
-+ɿ    F       76:j
-+ÉÀ    F       77:j
-+ÉÁ    F       78:j
-+É    F       79:j
-+Éà   F       80:j
-+ÉÄ    F       81:j
-+ÉÅ    F       82:j
-+ÉÆ    F       83:j
-+ÉÇ    F       84:j
-+ÉÈ    F       85:j
-+ÉÉ    F       86:j
-+ÉÊ    F       87:j
-+ÉË    F       88:j
-+ÉÌ    F       89:j
-+ÉÍ    F       90:j
-+ÉΠ   F       91:j
-+ÉÏ    F       92:j
-+ÉР   F       93:j
-+ÉÑ    F       94:j
-+ÉÒ    F       95:j
-+ÉÓ    F       96:j
-+ÉÔ    F       97:j
-+ÉÕ    F       98:j
-+ÉÖ    F       99:j
-+É×    F       100:j
-+ÉØ    F       101:j
-+ÉÙ    F       102:j
-+ÉÚ    F       103:j
-+ÉÛ    F       104:j
-+ÉÜ    F       105:j
-+ÉÝ    F       106:j
-+ÉÞ    F       107:j
-+Éß    F       108:j
-+Éà    F       109:j
-+Éá    F       110:j
-+Éâ    F       111:j
-+Éã    F       112:j
-+Éä    F       113:j
-+Éå    F       114:j
-+Éæ    F       115:j
-+Éç    F       116:j
-+Éè    F       117:j
-+Éé    F       118:j
-+Éê    F       119:j
-+Éë    F       120:j
-+Éì    F       121:j
-+Éí    F       122:j
-+Éî    F       123:j
-+Éï    F       124:j
-+Éð    F       125:j
-+Éñ    F       126:j
-+Éò    F       127:j
-+Éó    F       128:j
-+Éô    F       129:j
-+Éõ    F       130:j
-+Éö    F       131:j
-+É÷    F       132:j
-+Éø    F       133:j
-+Éù    F       134:j
-+Éú    F       135:j
-+Éû    F       136:j
-+Éü    F       137:j
-+Éý    F       138:j
-+Éþ    F       139:j
-+ʡ    F       140:j
-+ʢ    F       141:j
-+ʣ    F       142:j
-+ʤ    F       143:j
-+ʥ    F       144:j
-+ʦ    F       145:j
-+ʧ    F       146:j
-+ʨ    F       147:j
-+ʩ    F       148:j
-+ʪ    F       149:j
-+ʫ    F       150:j
-+ʬ    F       151:j
-+ʭ    F       152:j
-+ʮ    F       153:j
-+ʯ    F       154:j
-+ʰ    F       155:j
-+ʱ    F       156:j
-+ʲ    F       157:j
-+ʳ    F       158:j
-+ʴ    F       159:j
-+ʵ    F       160:j
-+ʶ    F       161:j
-+ʷ    F       162:j
-+ʸ    F       163:j
-+ʹ    F       164:j
-+ʺ    F       165:j
-+ʻ    F       166:j
-+ʼ    F       167:j
-+ʽ    F       168:j
-+ʾ    F       169:j
-+ʿ    F       170:j
-+ÊÀ    F       171:j
-+ÊÁ    F       172:j
-+Ê    F       173:j
-+Êà   F       174:j
-+ÊÄ    F       175:j
-+ÊÅ    F       176:j
-+ÊÆ    F       177:j
-+ÊÇ    F       178:j
-+ÊÈ    F       179:j
-+ÊÉ    F       180:j
-+ÊÊ    F       181:j
-+ÊË    F       182:j
-+ÊÌ    F       183:j
-+ÊÍ    F       184:j
-+ÊΠ   F       185:j
-+ÊÏ    F       186:j
-+ÊР   F       187:j
-+ÊÑ    F       188:j
-+ÊÒ    F       189:j
-+ÊÓ    F       190:j
-+ÊÔ    F       191:j
-+ÊÕ    F       192:j
-+ÊÖ    F       193:j
-+Ê×    F       194:j
-+ÊØ    F       195:j
-+ÊÙ    F       196:j
-+ÊÚ    F       197:j
-+ÊÛ    F       198:j
-+ÊÜ    F       199:j
-+ÊÝ    F       200:j
-+ÊÞ    F       201:j
-+Êß    F       202:j
-+Êà    F       203:j
-+Êá    F       204:j
-+Êâ    F       205:j
-+Êã    F       206:j
-+Êä    F       207:j
-+Êå    F       208:j
-+Êæ    F       209:j
-+Êç    F       210:j
-+Êè    F       211:j
-+Êé    F       212:j
-+Êê    F       213:j
-+Êë    F       214:j
-+Êì    F       215:j
-+Êí    F       216:j
-+Êî    F       217:j
-+Êï    F       218:j
-+Êð    F       219:j
-+Êñ    F       220:j
-+Êò    F       221:j
-+Êó    F       222:j
-+Êô    F       223:j
-+Êõ    F       224:j
-+Êö    F       225:j
-+Ê÷    F       226:j
-+Êø    F       227:j
-+Êù    F       228:j
-+Êú    F       229:j
-+Êû    F       230:j
-+Êü    F       231:j
-+Êý    F       232:j
-+Êþ    F       233:j
-+ˡ    F       234:j
-+ˢ    F       235:j
-+ˣ    F       236:j
-+ˤ    F       237:j
-+˥    F       238:j
-+˦    F       239:j
-+˧    F       240:j
-+˨    F       241:j
-+˩    F       242:j
-+˪    F       243:j
-+˫    F       244:j
-+ˬ    F       245:j
-+˭    F       246:j
-+ˮ    F       247:j
-+˯    F       248:j
-+˰    F       249:j
-+˱    F       250:j
-+˲    F       251:j
-+˳    F       252:j
-+˴    F       253:j
-+˵    F       254:j
-+˶    F       255:j
-+˷    F       0:k
-+˸    F       1:k
-+˹    F       2:k
-+˺    F       3:k
-+˻    F       4:k
-+˼    F       5:k
-+˽    F       6:k
-+˾    F       7:k
-+˿    F       8:k
-+ËÀ    F       9:k
-+ËÁ    F       10:k
-+Ë    F       11:k
-+Ëà   F       12:k
-+ËÄ    F       13:k
-+ËÅ    F       14:k
-+ËÆ    F       15:k
-+ËÇ    F       16:k
-+ËÈ    F       17:k
-+ËÉ    F       18:k
-+ËÊ    F       19:k
-+ËË    F       20:k
-+ËÌ    F       21:k
-+ËÍ    F       22:k
-+ËΠ   F       23:k
-+ËÏ    F       24:k
-+ËР   F       25:k
-+ËÑ    F       26:k
-+ËÒ    F       27:k
-+ËÓ    F       28:k
-+ËÔ    F       29:k
-+ËÕ    F       30:k
-+ËÖ    F       31:k
-+Ë×    F       32:k
-+ËØ    F       33:k
-+ËÙ    F       34:k
-+ËÚ    F       35:k
-+ËÛ    F       36:k
-+ËÜ    F       37:k
-+ËÝ    F       38:k
-+ËÞ    F       39:k
-+Ëß    F       40:k
-+Ëà    F       41:k
-+Ëá    F       42:k
-+Ëâ    F       43:k
-+Ëã    F       44:k
-+Ëä    F       45:k
-+Ëå    F       46:k
-+Ëæ    F       47:k
-+Ëç    F       48:k
-+Ëè    F       49:k
-+Ëé    F       50:k
-+Ëê    F       51:k
-+Ëë    F       52:k
-+Ëì    F       53:k
-+Ëí    F       54:k
-+Ëî    F       55:k
-+Ëï    F       56:k
-+Ëð    F       57:k
-+Ëñ    F       58:k
-+Ëò    F       59:k
-+Ëó    F       60:k
-+Ëô    F       61:k
-+Ëõ    F       62:k
-+Ëö    F       63:k
-+Ë÷    F       64:k
-+Ëø    F       65:k
-+Ëù    F       66:k
-+Ëú    F       67:k
-+Ëû    F       68:k
-+Ëü    F       69:k
-+Ëý    F       70:k
-+Ëþ    F       71:k
-+̡    F       72:k
-+̢    F       73:k
-+̣    F       74:k
-+̤    F       75:k
-+̥    F       76:k
-+̦    F       77:k
-+̧    F       78:k
-+̨    F       79:k
-+̩    F       80:k
-+̪    F       81:k
-+̫    F       82:k
-+̬    F       83:k
-+̭    F       84:k
-+̮    F       85:k
-+̯    F       86:k
-+̰    F       87:k
-+̱    F       88:k
-+̲    F       89:k
-+̳    F       90:k
-+̴    F       91:k
-+̵    F       92:k
-+̶    F       93:k
-+̷    F       94:k
-+̸    F       95:k
-+̹    F       96:k
-+̺    F       97:k
-+̻    F       98:k
-+̼    F       99:k
-+̽    F       100:k
-+̾    F       101:k
-+̿    F       102:k
-+ÌÀ    F       103:k
-+ÌÁ    F       104:k
-+Ì    F       105:k
-+Ìà   F       106:k
-+ÌÄ    F       107:k
-+ÌÅ    F       108:k
-+ÌÆ    F       109:k
-+ÌÇ    F       110:k
-+ÌÈ    F       111:k
-+ÌÉ    F       112:k
-+ÌÊ    F       113:k
-+ÌË    F       114:k
-+ÌÌ    F       115:k
-+ÌÍ    F       116:k
-+ÌΠ   F       117:k
-+ÌÏ    F       118:k
-+ÌР   F       119:k
-+ÌÑ    F       120:k
-+ÌÒ    F       121:k
-+ÌÓ    F       122:k
-+ÌÔ    F       123:k
-+ÌÕ    F       124:k
-+ÌÖ    F       125:k
-+Ì×    F       126:k
-+ÌØ    F       127:k
-+ÌÙ    F       128:k
-+ÌÚ    F       129:k
-+ÌÛ    F       130:k
-+ÌÜ    F       131:k
-+ÌÝ    F       132:k
-+ÌÞ    F       133:k
-+Ìß    F       134:k
-+Ìà    F       135:k
-+Ìá    F       136:k
-+Ìâ    F       137:k
-+Ìã    F       138:k
-+Ìä    F       139:k
-+Ìå    F       140:k
-+Ìæ    F       141:k
-+Ìç    F       142:k
-+Ìè    F       143:k
-+Ìé    F       144:k
-+Ìê    F       145:k
-+Ìë    F       146:k
-+Ìì    F       147:k
-+Ìí    F       148:k
-+Ìî    F       149:k
-+Ìï    F       150:k
-+Ìð    F       151:k
-+Ìñ    F       152:k
-+Ìò    F       153:k
-+Ìó    F       154:k
-+Ìô    F       155:k
-+Ìõ    F       156:k
-+Ìö    F       157:k
-+Ì÷    F       158:k
-+Ìø    F       159:k
-+Ìù    F       160:k
-+Ìú    F       161:k
-+Ìû    F       162:k
-+Ìü    F       163:k
-+Ìý    F       164:k
-+Ìþ    F       165:k
-+͡    F       166:k
-+͢    F       167:k
-+ͣ    F       168:k
-+ͤ    F       169:k
-+ͥ    F       170:k
-+ͦ    F       171:k
-+ͧ    F       172:k
-+ͨ    F       173:k
-+ͩ    F       174:k
-+ͪ    F       175:k
-+ͫ    F       176:k
-+ͬ    F       177:k
-+ͭ    F       178:k
-+ͮ    F       179:k
-+ͯ    F       180:k
-+Ͱ    F       181:k
-+ͱ    F       182:k
-+Ͳ    F       183:k
-+ͳ    F       184:k
-+ʹ    F       185:k
-+͵    F       186:k
-+Ͷ    F       187:k
-+ͷ    F       188:k
-+͸    F       189:k
-+͹    F       190:k
-+ͺ    F       191:k
-+ͻ    F       192:k
-+ͼ    F       193:k
-+ͽ    F       194:k
-+;    F       195:k
-+Ϳ    F       196:k
-+ÍÀ    F       197:k
-+ÍÁ    F       198:k
-+Í    F       199:k
-+Íà   F       200:k
-+ÍÄ    F       201:k
-+ÍÅ    F       202:k
-+ÍÆ    F       203:k
-+ÍÇ    F       204:k
-+ÍÈ    F       205:k
-+ÍÉ    F       206:k
-+ÍÊ    F       207:k
-+ÍË    F       208:k
-+ÍÌ    F       209:k
-+ÍÍ    F       210:k
-+ÍΠ   F       211:k
-+ÍÏ    F       212:k
-+ÍР   F       213:k
-+ÍÑ    F       214:k
-+ÍÒ    F       215:k
-+ÍÓ    F       216:k
-+ÍÔ    F       217:k
-+ÍÕ    F       218:k
-+ÍÖ    F       219:k
-+Í×    F       220:k
-+ÍØ    F       221:k
-+ÍÙ    F       222:k
-+ÍÚ    F       223:k
-+ÍÛ    F       224:k
-+ÍÜ    F       225:k
-+ÍÝ    F       226:k
-+ÍÞ    F       227:k
-+Íß    F       228:k
-+Íà    F       229:k
-+Íá    F       230:k
-+Íâ    F       231:k
-+Íã    F       232:k
-+Íä    F       233:k
-+Íå    F       234:k
-+Íæ    F       235:k
-+Íç    F       236:k
-+Íè    F       237:k
-+Íé    F       238:k
-+Íê    F       239:k
-+Íë    F       240:k
-+Íì    F       241:k
-+Íí    F       242:k
-+Íî    F       243:k
-+Íï    F       244:k
-+Íð    F       245:k
-+Íñ    F       246:k
-+Íò    F       247:k
-+Íó    F       248:k
-+Íô    F       249:k
-+Íõ    F       250:k
-+Íö    F       251:k
-+Í÷    F       252:k
-+Íø    F       253:k
-+Íù    F       254:k
-+Íú    F       255:k
-+Íû    F       0:l
-+Íü    F       1:l
-+Íý    F       2:l
-+Íþ    F       3:l
-+Ρ    F       4:l
-+΢    F       5:l
-+Σ    F       6:l
-+Τ    F       7:l
-+Υ    F       8:l
-+Φ    F       9:l
-+Χ    F       10:l
-+Ψ    F       11:l
-+Ω    F       12:l
-+Ϊ    F       13:l
-+Ϋ    F       14:l
-+ά    F       15:l
-+έ    F       16:l
-+ή    F       17:l
-+ί    F       18:l
-+ΰ    F       19:l
-+α    F       20:l
-+β    F       21:l
-+γ    F       22:l
-+δ    F       23:l
-+ε    F       24:l
-+ζ    F       25:l
-+η    F       26:l
-+θ    F       27:l
-+ι    F       28:l
-+κ    F       29:l
-+λ    F       30:l
-+μ    F       31:l
-+ν    F       32:l
-+ξ    F       33:l
-+ο    F       34:l
-+ÎÀ    F       35:l
-+ÎÁ    F       36:l
-+Π   F       37:l
-+Îà   F       38:l
-+ÎÄ    F       39:l
-+ÎÅ    F       40:l
-+ÎÆ    F       41:l
-+ÎÇ    F       42:l
-+ÎÈ    F       43:l
-+ÎÉ    F       44:l
-+ÎÊ    F       45:l
-+ÎË    F       46:l
-+ÎÌ    F       47:l
-+ÎÍ    F       48:l
-+ÎΠ   F       49:l
-+ÎÏ    F       50:l
-+ÎР   F       51:l
-+ÎÑ    F       52:l
-+ÎÒ    F       53:l
-+ÎÓ    F       54:l
-+ÎÔ    F       55:l
-+ÎÕ    F       56:l
-+ÎÖ    F       57:l
-+Î×    F       58:l
-+ÎØ    F       59:l
-+ÎÙ    F       60:l
-+ÎÚ    F       61:l
-+ÎÛ    F       62:l
-+ÎÜ    F       63:l
-+ÎÝ    F       64:l
-+ÎÞ    F       65:l
-+Îß    F       66:l
-+Îà    F       67:l
-+Îá    F       68:l
-+Îâ    F       69:l
-+Îã    F       70:l
-+Îä    F       71:l
-+Îå    F       72:l
-+Îæ    F       73:l
-+Îç    F       74:l
-+Îè    F       75:l
-+Îé    F       76:l
-+Îê    F       77:l
-+Îë    F       78:l
-+Îì    F       79:l
-+Îí    F       80:l
-+Îî    F       81:l
-+Îï    F       82:l
-+Îð    F       83:l
-+Îñ    F       84:l
-+Îò    F       85:l
-+Îó    F       86:l
-+Îô    F       87:l
-+Îõ    F       88:l
-+Îö    F       89:l
-+Î÷    F       90:l
-+Îø    F       91:l
-+Îù    F       92:l
-+Îú    F       93:l
-+Îû    F       94:l
-+Îü    F       95:l
-+Îý    F       96:l
-+Îþ    F       97:l
-+ϡ    F       98:l
-+Ϣ    F       99:l
-+ϣ    F       100:l
-+Ϥ    F       101:l
-+ϥ    F       102:l
-+Ϧ    F       103:l
-+ϧ    F       104:l
-+Ϩ    F       105:l
-+ϩ    F       106:l
-+Ϫ    F       107:l
-+ϫ    F       108:l
-+Ϭ    F       109:l
-+ϭ    F       110:l
-+Ϯ    F       111:l
-+ϯ    F       112:l
-+ϰ    F       113:l
-+ϱ    F       114:l
-+ϲ    F       115:l
-+ϳ    F       116:l
-+ϴ    F       117:l
-+ϵ    F       118:l
-+϶    F       119:l
-+Ϸ    F       120:l
-+ϸ    F       121:l
-+Ϲ    F       122:l
-+Ϻ    F       123:l
-+ϻ    F       124:l
-+ϼ    F       125:l
-+Ͻ    F       126:l
-+Ͼ    F       127:l
-+Ͽ    F       128:l
-+ÏÀ    F       129:l
-+ÏÁ    F       130:l
-+Ï    F       131:l
-+Ïà   F       132:l
-+ÏÄ    F       133:l
-+ÏÅ    F       134:l
-+ÏÆ    F       135:l
-+ÏÇ    F       136:l
-+ÏÈ    F       137:l
-+ÏÉ    F       138:l
-+ÏÊ    F       139:l
-+ÏË    F       140:l
-+ÏÌ    F       141:l
-+ÏÍ    F       142:l
-+ÏΠ   F       143:l
-+ÏÏ    F       144:l
-+ÏР   F       145:l
-+ÏÑ    F       146:l
-+ÏÒ    F       147:l
-+ÏÓ    F       148:l
-+С    F       0:m
-+Т    F       1:m
-+У    F       2:m
-+Ф    F       3:m
-+Х    F       4:m
-+Ц    F       5:m
-+Ч    F       6:m
-+Ш    F       7:m
-+Щ    F       8:m
-+Ъ    F       9:m
-+Ы    F       10:m
-+Ь    F       11:m
-+Э    F       12:m
-+Ю    F       13:m
-+Я    F       14:m
-+а    F       15:m
-+б    F       16:m
-+в    F       17:m
-+г    F       18:m
-+д    F       19:m
-+е    F       20:m
-+ж    F       21:m
-+з    F       22:m
-+и    F       23:m
-+й    F       24:m
-+к    F       25:m
-+л    F       26:m
-+м    F       27:m
-+н    F       28:m
-+о    F       29:m
-+п    F       30:m
-+ÐÀ    F       31:m
-+ÐÁ    F       32:m
-+Р   F       33:m
-+Ðà   F       34:m
-+ÐÄ    F       35:m
-+ÐÅ    F       36:m
-+ÐÆ    F       37:m
-+ÐÇ    F       38:m
-+ÐÈ    F       39:m
-+ÐÉ    F       40:m
-+ÐÊ    F       41:m
-+ÐË    F       42:m
-+ÐÌ    F       43:m
-+ÐÍ    F       44:m
-+ÐΠ   F       45:m
-+ÐÏ    F       46:m
-+ÐР   F       47:m
-+ÐÑ    F       48:m
-+ÐÒ    F       49:m
-+ÐÓ    F       50:m
-+ÐÔ    F       51:m
-+ÐÕ    F       52:m
-+ÐÖ    F       53:m
-+Ð×    F       54:m
-+ÐØ    F       55:m
-+ÐÙ    F       56:m
-+ÐÚ    F       57:m
-+ÐÛ    F       58:m
-+ÐÜ    F       59:m
-+ÐÝ    F       60:m
-+ÐÞ    F       61:m
-+Ðß    F       62:m
-+Ðà    F       63:m
-+Ðá    F       64:m
-+Ðâ    F       65:m
-+Ðã    F       66:m
-+Ðä    F       67:m
-+Ðå    F       68:m
-+Ðæ    F       69:m
-+Ðç    F       70:m
-+Ðè    F       71:m
-+Ðé    F       72:m
-+Ðê    F       73:m
-+Ðë    F       74:m
-+Ðì    F       75:m
-+Ðí    F       76:m
-+Ðî    F       77:m
-+Ðï    F       78:m
-+Ðð    F       79:m
-+Ðñ    F       80:m
-+Ðò    F       81:m
-+Ðó    F       82:m
-+Ðô    F       83:m
-+Ðõ    F       84:m
-+Ðö    F       85:m
-+Ð÷    F       86:m
-+Ðø    F       87:m
-+Ðù    F       88:m
-+Ðú    F       89:m
-+Ðû    F       90:m
-+Ðü    F       91:m
-+Ðý    F       92:m
-+Ðþ    F       93:m
-+ѡ    F       94:m
-+Ѣ    F       95:m
-+ѣ    F       96:m
-+Ѥ    F       97:m
-+ѥ    F       98:m
-+Ѧ    F       99:m
-+ѧ    F       100:m
-+Ѩ    F       101:m
-+ѩ    F       102:m
-+Ѫ    F       103:m
-+ѫ    F       104:m
-+Ѭ    F       105:m
-+ѭ    F       106:m
-+Ѯ    F       107:m
-+ѯ    F       108:m
-+Ѱ    F       109:m
-+ѱ    F       110:m
-+Ѳ    F       111:m
-+ѳ    F       112:m
-+Ѵ    F       113:m
-+ѵ    F       114:m
-+Ѷ    F       115:m
-+ѷ    F       116:m
-+Ѹ    F       117:m
-+ѹ    F       118:m
-+Ѻ    F       119:m
-+ѻ    F       120:m
-+Ѽ    F       121:m
-+ѽ    F       122:m
-+Ѿ    F       123:m
-+ѿ    F       124:m
-+ÑÀ    F       125:m
-+ÑÁ    F       126:m
-+Ñ    F       127:m
-+Ñà   F       128:m
-+ÑÄ    F       129:m
-+ÑÅ    F       130:m
-+ÑÆ    F       131:m
-+ÑÇ    F       132:m
-+ÑÈ    F       133:m
-+ÑÉ    F       134:m
-+ÑÊ    F       135:m
-+ÑË    F       136:m
-+ÑÌ    F       137:m
-+ÑÍ    F       138:m
-+ÑΠ   F       139:m
-+ÑÏ    F       140:m
-+ÑР   F       141:m
-+ÑÑ    F       142:m
-+ÑÒ    F       143:m
-+ÑÓ    F       144:m
-+ÑÔ    F       145:m
-+ÑÕ    F       146:m
-+ÑÖ    F       147:m
-+Ñ×    F       148:m
-+ÑØ    F       149:m
-+ÑÙ    F       150:m
-+ÑÚ    F       151:m
-+ÑÛ    F       152:m
-+ÑÜ    F       153:m
-+ÑÝ    F       154:m
-+ÑÞ    F       155:m
-+Ñß    F       156:m
-+Ñà    F       157:m
-+Ñá    F       158:m
-+Ñâ    F       159:m
-+Ñã    F       160:m
-+Ñä    F       161:m
-+Ñå    F       162:m
-+Ñæ    F       163:m
-+Ñç    F       164:m
-+Ñè    F       165:m
-+Ñé    F       166:m
-+Ñê    F       167:m
-+Ñë    F       168:m
-+Ñì    F       169:m
-+Ñí    F       170:m
-+Ñî    F       171:m
-+Ñï    F       172:m
-+Ñð    F       173:m
-+Ññ    F       174:m
-+Ñò    F       175:m
-+Ñó    F       176:m
-+Ñô    F       177:m
-+Ñõ    F       178:m
-+Ñö    F       179:m
-+Ñ÷    F       180:m
-+Ñø    F       181:m
-+Ñù    F       182:m
-+Ñú    F       183:m
-+Ñû    F       184:m
-+Ñü    F       185:m
-+Ñý    F       186:m
-+Ñþ    F       187:m
-+ҡ    F       188:m
-+Ң    F       189:m
-+ң    F       190:m
-+Ҥ    F       191:m
-+ҥ    F       192:m
-+Ҧ    F       193:m
-+ҧ    F       194:m
-+Ҩ    F       195:m
-+ҩ    F       196:m
-+Ҫ    F       197:m
-+ҫ    F       198:m
-+Ҭ    F       199:m
-+ҭ    F       200:m
-+Ү    F       201:m
-+ү    F       202:m
-+Ұ    F       203:m
-+ұ    F       204:m
-+Ҳ    F       205:m
-+ҳ    F       206:m
-+Ҵ    F       207:m
-+ҵ    F       208:m
-+Ҷ    F       209:m
-+ҷ    F       210:m
-+Ҹ    F       211:m
-+ҹ    F       212:m
-+Һ    F       213:m
-+һ    F       214:m
-+Ҽ    F       215:m
-+ҽ    F       216:m
-+Ҿ    F       217:m
-+ҿ    F       218:m
-+ÒÀ    F       219:m
-+ÒÁ    F       220:m
-+Ò    F       221:m
-+Òà   F       222:m
-+ÒÄ    F       223:m
-+ÒÅ    F       224:m
-+ÒÆ    F       225:m
-+ÒÇ    F       226:m
-+ÒÈ    F       227:m
-+ÒÉ    F       228:m
-+ÒÊ    F       229:m
-+ÒË    F       230:m
-+ÒÌ    F       231:m
-+ÒÍ    F       232:m
-+ÒΠ   F       233:m
-+ÒÏ    F       234:m
-+ÒР   F       235:m
-+ÒÑ    F       236:m
-+ÒÒ    F       237:m
-+ÒÓ    F       238:m
-+ÒÔ    F       239:m
-+ÒÕ    F       240:m
-+ÒÖ    F       241:m
-+Ò×    F       242:m
-+ÒØ    F       243:m
-+ÒÙ    F       244:m
-+ÒÚ    F       245:m
-+ÒÛ    F       246:m
-+ÒÜ    F       247:m
-+ÒÝ    F       248:m
-+ÒÞ    F       249:m
-+Òß    F       250:m
-+Òà    F       251:m
-+Òá    F       252:m
-+Òâ    F       253:m
-+Òã    F       254:m
-+Òä    F       255:m
-+Òå    F       0:n
-+Òæ    F       1:n
-+Òç    F       2:n
-+Òè    F       3:n
-+Òé    F       4:n
-+Òê    F       5:n
-+Òë    F       6:n
-+Òì    F       7:n
-+Òí    F       8:n
-+Òî    F       9:n
-+Òï    F       10:n
-+Òð    F       11:n
-+Òñ    F       12:n
-+Òò    F       13:n
-+Òó    F       14:n
-+Òô    F       15:n
-+Òõ    F       16:n
-+Òö    F       17:n
-+Ò÷    F       18:n
-+Òø    F       19:n
-+Òù    F       20:n
-+Òú    F       21:n
-+Òû    F       22:n
-+Òü    F       23:n
-+Òý    F       24:n
-+Òþ    F       25:n
-+ӡ    F       26:n
-+Ӣ    F       27:n
-+ӣ    F       28:n
-+Ӥ    F       29:n
-+ӥ    F       30:n
-+Ӧ    F       31:n
-+ӧ    F       32:n
-+Ө    F       33:n
-+ө    F       34:n
-+Ӫ    F       35:n
-+ӫ    F       36:n
-+Ӭ    F       37:n
-+ӭ    F       38:n
-+Ӯ    F       39:n
-+ӯ    F       40:n
-+Ӱ    F       41:n
-+ӱ    F       42:n
-+Ӳ    F       43:n
-+ӳ    F       44:n
-+Ӵ    F       45:n
-+ӵ    F       46:n
-+Ӷ    F       47:n
-+ӷ    F       48:n
-+Ӹ    F       49:n
-+ӹ    F       50:n
-+Ӻ    F       51:n
-+ӻ    F       52:n
-+Ӽ    F       53:n
-+ӽ    F       54:n
-+Ӿ    F       55:n
-+ӿ    F       56:n
-+ÓÀ    F       57:n
-+ÓÁ    F       58:n
-+Ó    F       59:n
-+Óà   F       60:n
-+ÓÄ    F       61:n
-+ÓÅ    F       62:n
-+ÓÆ    F       63:n
-+ÓÇ    F       64:n
-+ÓÈ    F       65:n
-+ÓÉ    F       66:n
-+ÓÊ    F       67:n
-+ÓË    F       68:n
-+ÓÌ    F       69:n
-+ÓÍ    F       70:n
-+ÓΠ   F       71:n
-+ÓÏ    F       72:n
-+ÓР   F       73:n
-+ÓÑ    F       74:n
-+ÓÒ    F       75:n
-+ÓÓ    F       76:n
-+ÓÔ    F       77:n
-+ÓÕ    F       78:n
-+ÓÖ    F       79:n
-+Ó×    F       80:n
-+ÓØ    F       81:n
-+ÓÙ    F       82:n
-+ÓÚ    F       83:n
-+ÓÛ    F       84:n
-+ÓÜ    F       85:n
-+ÓÝ    F       86:n
-+ÓÞ    F       87:n
-+Óß    F       88:n
-+Óà    F       89:n
-+Óá    F       90:n
-+Óâ    F       91:n
-+Óã    F       92:n
-+Óä    F       93:n
-+Óå    F       94:n
-+Óæ    F       95:n
-+Óç    F       96:n
-+Óè    F       97:n
-+Óé    F       98:n
-+Óê    F       99:n
-+Óë    F       100:n
-+Óì    F       101:n
-+Óí    F       102:n
-+Óî    F       103:n
-+Óï    F       104:n
-+Óð    F       105:n
-+Óñ    F       106:n
-+Óò    F       107:n
-+Óó    F       108:n
-+Óô    F       109:n
-+Óõ    F       110:n
-+Óö    F       111:n
-+Ó÷    F       112:n
-+Óø    F       113:n
-+Óù    F       114:n
-+Óú    F       115:n
-+Óû    F       116:n
-+Óü    F       117:n
-+Óý    F       118:n
-+Óþ    F       119:n
-+ԡ    F       120:n
-+Ԣ    F       121:n
-+ԣ    F       122:n
-+Ԥ    F       123:n
-+ԥ    F       124:n
-+Ԧ    F       125:n
-+ԧ    F       126:n
-+Ԩ    F       127:n
-+ԩ    F       128:n
-+Ԫ    F       129:n
-+ԫ    F       130:n
-+Ԭ    F       131:n
-+ԭ    F       132:n
-+Ԯ    F       133:n
-+ԯ    F       134:n
-+԰    F       135:n
-+Ա    F       136:n
-+Բ    F       137:n
-+Գ    F       138:n
-+Դ    F       139:n
-+Ե    F       140:n
-+Զ    F       141:n
-+Է    F       142:n
-+Ը    F       143:n
-+Թ    F       144:n
-+Ժ    F       145:n
-+Ի    F       146:n
-+Լ    F       147:n
-+Խ    F       148:n
-+Ծ    F       149:n
-+Կ    F       150:n
-+ÔÀ    F       151:n
-+ÔÁ    F       152:n
-+Ô    F       153:n
-+Ôà   F       154:n
-+ÔÄ    F       155:n
-+ÔÅ    F       156:n
-+ÔÆ    F       157:n
-+ÔÇ    F       158:n
-+ÔÈ    F       159:n
-+ÔÉ    F       160:n
-+ÔÊ    F       161:n
-+ÔË    F       162:n
-+ÔÌ    F       163:n
-+ÔÍ    F       164:n
-+ÔΠ   F       165:n
-+ÔÏ    F       166:n
-+ÔР   F       167:n
-+ÔÑ    F       168:n
-+ÔÒ    F       169:n
-+ÔÓ    F       170:n
-+ÔÔ    F       171:n
-+ÔÕ    F       172:n
-+ÔÖ    F       173:n
-+Ô×    F       174:n
-+ÔØ    F       175:n
-+ÔÙ    F       176:n
-+ÔÚ    F       177:n
-+ÔÛ    F       178:n
-+ÔÜ    F       179:n
-+ÔÝ    F       180:n
-+ÔÞ    F       181:n
-+Ôß    F       182:n
-+Ôà    F       183:n
-+Ôá    F       184:n
-+Ôâ    F       185:n
-+Ôã    F       186:n
-+Ôä    F       187:n
-+Ôå    F       188:n
-+Ôæ    F       189:n
-+Ôç    F       190:n
-+Ôè    F       191:n
-+Ôé    F       192:n
-+Ôê    F       193:n
-+Ôë    F       194:n
-+Ôì    F       195:n
-+Ôí    F       196:n
-+Ôî    F       197:n
-+Ôï    F       198:n
-+Ôð    F       199:n
-+Ôñ    F       200:n
-+Ôò    F       201:n
-+Ôó    F       202:n
-+Ôô    F       203:n
-+Ôõ    F       204:n
-+Ôö    F       205:n
-+Ô÷    F       206:n
-+Ôø    F       207:n
-+Ôù    F       208:n
-+Ôú    F       209:n
-+Ôû    F       210:n
-+Ôü    F       211:n
-+Ôý    F       212:n
-+Ôþ    F       213:n
-+ա    F       214:n
-+բ    F       215:n
-+գ    F       216:n
-+դ    F       217:n
-+ե    F       218:n
-+զ    F       219:n
-+է    F       220:n
-+ը    F       221:n
-+թ    F       222:n
-+ժ    F       223:n
-+ի    F       224:n
-+լ    F       225:n
-+խ    F       226:n
-+ծ    F       227:n
-+կ    F       228:n
-+հ    F       229:n
-+ձ    F       230:n
-+ղ    F       231:n
-+ճ    F       232:n
-+մ    F       233:n
-+յ    F       234:n
-+ն    F       235:n
-+շ    F       236:n
-+ո    F       237:n
-+չ    F       238:n
-+պ    F       239:n
-+ջ    F       240:n
-+ռ    F       241:n
-+ս    F       242:n
-+վ    F       243:n
-+տ    F       244:n
-+ÕÀ    F       245:n
-+ÕÁ    F       246:n
-+Õ    F       247:n
-+Õà   F       248:n
-+ÕÄ    F       249:n
-+ÕÅ    F       250:n
-+ÕÆ    F       251:n
-+ÕÇ    F       252:n
-+ÕÈ    F       253:n
-+ÕÉ    F       254:n
-+ÕÊ    F       255:n
-+ÕË    F       0:o
-+ÕÌ    F       1:o
-+ÕÍ    F       2:o
-+ÕΠ   F       3:o
-+ÕÏ    F       4:o
-+ÕР   F       5:o
-+ÕÑ    F       6:o
-+ÕÒ    F       7:o
-+ÕÓ    F       8:o
-+ÕÔ    F       9:o
-+ÕÕ    F       10:o
-+ÕÖ    F       11:o
-+Õ×    F       12:o
-+ÕØ    F       13:o
-+ÕÙ    F       14:o
-+ÕÚ    F       15:o
-+ÕÛ    F       16:o
-+ÕÜ    F       17:o
-+ÕÝ    F       18:o
-+ÕÞ    F       19:o
-+Õß    F       20:o
-+Õà    F       21:o
-+Õá    F       22:o
-+Õâ    F       23:o
-+Õã    F       24:o
-+Õä    F       25:o
-+Õå    F       26:o
-+Õæ    F       27:o
-+Õç    F       28:o
-+Õè    F       29:o
-+Õé    F       30:o
-+Õê    F       31:o
-+Õë    F       32:o
-+Õì    F       33:o
-+Õí    F       34:o
-+Õî    F       35:o
-+Õï    F       36:o
-+Õð    F       37:o
-+Õñ    F       38:o
-+Õò    F       39:o
-+Õó    F       40:o
-+Õô    F       41:o
-+Õõ    F       42:o
-+Õö    F       43:o
-+Õ÷    F       44:o
-+Õø    F       45:o
-+Õù    F       46:o
-+Õú    F       47:o
-+Õû    F       48:o
-+Õü    F       49:o
-+Õý    F       50:o
-+Õþ    F       51:o
-+֡    F       52:o
-+֢    F       53:o
-+֣    F       54:o
-+֤    F       55:o
-+֥    F       56:o
-+֦    F       57:o
-+֧    F       58:o
-+֨    F       59:o
-+֩    F       60:o
-+֪    F       61:o
-+֫    F       62:o
-+֬    F       63:o
-+֭    F       64:o
-+֮    F       65:o
-+֯    F       66:o
-+ְ    F       67:o
-+ֱ    F       68:o
-+ֲ    F       69:o
-+ֳ    F       70:o
-+ִ    F       71:o
-+ֵ    F       72:o
-+ֶ    F       73:o
-+ַ    F       74:o
-+ָ    F       75:o
-+ֹ    F       76:o
-+ֺ    F       77:o
-+ֻ    F       78:o
-+ּ    F       79:o
-+ֽ    F       80:o
-+־    F       81:o
-+ֿ    F       82:o
-+ÖÀ    F       83:o
-+ÖÁ    F       84:o
-+Ö    F       85:o
-+Öà   F       86:o
-+ÖÄ    F       87:o
-+ÖÅ    F       88:o
-+ÖÆ    F       89:o
-+ÖÇ    F       90:o
-+ÖÈ    F       91:o
-+ÖÉ    F       92:o
-+ÖÊ    F       93:o
-+ÖË    F       94:o
-+ÖÌ    F       95:o
-+ÖÍ    F       96:o
-+ÖΠ   F       97:o
-+ÖÏ    F       98:o
-+ÖР   F       99:o
-+ÖÑ    F       100:o
-+ÖÒ    F       101:o
-+ÖÓ    F       102:o
-+ÖÔ    F       103:o
-+ÖÕ    F       104:o
-+ÖÖ    F       105:o
-+Ö×    F       106:o
-+ÖØ    F       107:o
-+ÖÙ    F       108:o
-+ÖÚ    F       109:o
-+ÖÛ    F       110:o
-+ÖÜ    F       111:o
-+ÖÝ    F       112:o
-+ÖÞ    F       113:o
-+Öß    F       114:o
-+Öà    F       115:o
-+Öá    F       116:o
-+Öâ    F       117:o
-+Öã    F       118:o
-+Öä    F       119:o
-+Öå    F       120:o
-+Öæ    F       121:o
-+Öç    F       122:o
-+Öè    F       123:o
-+Öé    F       124:o
-+Öê    F       125:o
-+Öë    F       126:o
-+Öì    F       127:o
-+Öí    F       128:o
-+Öî    F       129:o
-+Öï    F       130:o
-+Öð    F       131:o
-+Öñ    F       132:o
-+Öò    F       133:o
-+Öó    F       134:o
-+Öô    F       135:o
-+Öõ    F       136:o
-+Öö    F       137:o
-+Ö÷    F       138:o
-+Öø    F       139:o
-+Öù    F       140:o
-+Öú    F       141:o
-+Öû    F       142:o
-+Öü    F       143:o
-+Öý    F       144:o
-+Öþ    F       145:o
-+ס    F       146:o
-+ע    F       147:o
-+ף    F       148:o
-+פ    F       149:o
-+ץ    F       150:o
-+צ    F       151:o
-+ק    F       152:o
-+ר    F       153:o
-+ש    F       154:o
-+ת    F       155:o
-+׫    F       156:o
-+׬    F       157:o
-+׭    F       158:o
-+׮    F       159:o
-+ׯ    F       160:o
-+װ    F       161:o
-+ױ    F       162:o
-+ײ    F       163:o
-+׳    F       164:o
-+״    F       165:o
-+׵    F       166:o
-+׶    F       167:o
-+׷    F       168:o
-+׸    F       169:o
-+׹    F       170:o
-+׺    F       171:o
-+׻    F       172:o
-+׼    F       173:o
-+׽    F       174:o
-+׾    F       175:o
-+׿    F       176:o
-+×À    F       177:o
-+×Á    F       178:o
-+×    F       179:o
-+×à   F       180:o
-+×Ä    F       181:o
-+×Å    F       182:o
-+×Æ    F       183:o
-+×Ç    F       184:o
-+×È    F       185:o
-+×É    F       186:o
-+×Ê    F       187:o
-+×Ë    F       188:o
-+×Ì    F       189:o
-+×Í    F       190:o
-+×Π   F       191:o
-+×Ï    F       192:o
-+×Р   F       193:o
-+×Ñ    F       194:o
-+×Ò    F       195:o
-+×Ó    F       196:o
-+×Ô    F       197:o
-+×Õ    F       198:o
-+×Ö    F       199:o
-+××    F       200:o
-+×Ø    F       201:o
-+×Ù    F       202:o
-+×Ú    F       203:o
-+×Û    F       204:o
-+×Ü    F       205:o
-+×Ý    F       206:o
-+×Þ    F       207:o
-+×ß    F       208:o
-+×à    F       209:o
-+×á    F       210:o
-+×â    F       211:o
-+×ã    F       212:o
-+×ä    F       213:o
-+×å    F       214:o
-+×æ    F       215:o
-+×ç    F       216:o
-+×è    F       217:o
-+×é    F       218:o
-+×ê    F       219:o
-+×ë    F       220:o
-+×ì    F       221:o
-+×í    F       222:o
-+×î    F       223:o
-+×ï    F       224:o
-+×ð    F       225:o
-+×ñ    F       226:o
-+×ò    F       227:o
-+×ó    F       228:o
-+×ô    F       229:o
-+×õ    F       230:o
-+×ö    F       231:o
-+×÷    F       232:o
-+×ø    F       233:o
-+×ù    F       234:o
-+×ú    F       235:o
-+×û    F       236:o
-+×ü    F       237:o
-+×ý    F       238:o
-+×þ    F       239:o
-+ء    F       240:o
-+آ    F       241:o
-+أ    F       242:o
-+ؤ    F       243:o
-+إ    F       244:o
-+ئ    F       245:o
-+ا    F       246:o
-+ب    F       247:o
-+ة    F       248:o
-+ت    F       249:o
-+ث    F       250:o
-+ج    F       251:o
-+ح    F       252:o
-+خ    F       253:o
-+د    F       254:o
-+ذ    F       255:o
-+ر    F       0:p
-+ز    F       1:p
-+س    F       2:p
-+ش    F       3:p
-+ص    F       4:p
-+ض    F       5:p
-+ط    F       6:p
-+ظ    F       7:p
-+ع    F       8:p
-+غ    F       9:p
-+ػ    F       10:p
-+ؼ    F       11:p
-+ؽ    F       12:p
-+ؾ    F       13:p
-+ؿ    F       14:p
-+ØÀ    F       15:p
-+ØÁ    F       16:p
-+Ø    F       17:p
-+Øà   F       18:p
-+ØÄ    F       19:p
-+ØÅ    F       20:p
-+ØÆ    F       21:p
-+ØÇ    F       22:p
-+ØÈ    F       23:p
-+ØÉ    F       24:p
-+ØÊ    F       25:p
-+ØË    F       26:p
-+ØÌ    F       27:p
-+ØÍ    F       28:p
-+ØΠ   F       29:p
-+ØÏ    F       30:p
-+ØР   F       31:p
-+ØÑ    F       32:p
-+ØÒ    F       33:p
-+ØÓ    F       34:p
-+ØÔ    F       35:p
-+ØÕ    F       36:p
-+ØÖ    F       37:p
-+Ø×    F       38:p
-+ØØ    F       39:p
-+ØÙ    F       40:p
-+ØÚ    F       41:p
-+ØÛ    F       42:p
-+ØÜ    F       43:p
-+ØÝ    F       44:p
-+ØÞ    F       45:p
-+Øß    F       46:p
-+Øà    F       47:p
-+Øá    F       48:p
-+Øâ    F       49:p
-+Øã    F       50:p
-+Øä    F       51:p
-+Øå    F       52:p
-+Øæ    F       53:p
-+Øç    F       54:p
-+Øè    F       55:p
-+Øé    F       56:p
-+Øê    F       57:p
-+Øë    F       58:p
-+Øì    F       59:p
-+Øí    F       60:p
-+Øî    F       61:p
-+Øï    F       62:p
-+Øð    F       63:p
-+Øñ    F       64:p
-+Øò    F       65:p
-+Øó    F       66:p
-+Øô    F       67:p
-+Øõ    F       68:p
-+Øö    F       69:p
-+Ø÷    F       70:p
-+Øø    F       71:p
-+Øù    F       72:p
-+Øú    F       73:p
-+Øû    F       74:p
-+Øü    F       75:p
-+Øý    F       76:p
-+Øþ    F       77:p
-+١    F       78:p
-+٢    F       79:p
-+٣    F       80:p
-+٤    F       81:p
-+٥    F       82:p
-+٦    F       83:p
-+٧    F       84:p
-+٨    F       85:p
-+٩    F       86:p
-+٪    F       87:p
-+٫    F       88:p
-+٬    F       89:p
-+٭    F       90:p
-+ٮ    F       91:p
-+ٯ    F       92:p
-+ٰ    F       93:p
-+ٱ    F       94:p
-+ٲ    F       95:p
-+ٳ    F       96:p
-+ٴ    F       97:p
-+ٵ    F       98:p
-+ٶ    F       99:p
-+ٷ    F       100:p
-+ٸ    F       101:p
-+ٹ    F       102:p
-+ٺ    F       103:p
-+ٻ    F       104:p
-+ټ    F       105:p
-+ٽ    F       106:p
-+پ    F       107:p
-+ٿ    F       108:p
-+ÙÀ    F       109:p
-+ÙÁ    F       110:p
-+Ù    F       111:p
-+Ùà   F       112:p
-+ÙÄ    F       113:p
-+ÙÅ    F       114:p
-+ÙÆ    F       115:p
-+ÙÇ    F       116:p
-+ÙÈ    F       117:p
-+ÙÉ    F       118:p
-+ÙÊ    F       119:p
-+ÙË    F       120:p
-+ÙÌ    F       121:p
-+ÙÍ    F       122:p
-+ÙΠ   F       123:p
-+ÙÏ    F       124:p
-+ÙР   F       125:p
-+ÙÑ    F       126:p
-+ÙÒ    F       127:p
-+ÙÓ    F       128:p
-+ÙÔ    F       129:p
-+ÙÕ    F       130:p
-+ÙÖ    F       131:p
-+Ù×    F       132:p
-+ÙØ    F       133:p
-+ÙÙ    F       134:p
-+ÙÚ    F       135:p
-+ÙÛ    F       136:p
-+ÙÜ    F       137:p
-+ÙÝ    F       138:p
-+ÙÞ    F       139:p
-+Ùß    F       140:p
-+Ùà    F       141:p
-+Ùá    F       142:p
-+Ùâ    F       143:p
-+Ùã    F       144:p
-+Ùä    F       145:p
-+Ùå    F       146:p
-+Ùæ    F       147:p
-+Ùç    F       148:p
-+Ùè    F       149:p
-+Ùé    F       150:p
-+Ùê    F       151:p
-+Ùë    F       152:p
-+Ùì    F       153:p
-+Ùí    F       154:p
-+Ùî    F       155:p
-+Ùï    F       156:p
-+Ùð    F       157:p
-+Ùñ    F       158:p
-+Ùò    F       159:p
-+Ùó    F       160:p
-+Ùô    F       161:p
-+Ùõ    F       162:p
-+Ùö    F       163:p
-+Ù÷    F       164:p
-+Ùø    F       165:p
-+Ùù    F       166:p
-+Ùú    F       167:p
-+Ùû    F       168:p
-+Ùü    F       169:p
-+Ùý    F       170:p
-+Ùþ    F       171:p
-+ڡ    F       172:p
-+ڢ    F       173:p
-+ڣ    F       174:p
-+ڤ    F       175:p
-+ڥ    F       176:p
-+ڦ    F       177:p
-+ڧ    F       178:p
-+ڨ    F       179:p
-+ک    F       180:p
-+ڪ    F       181:p
-+ګ    F       182:p
-+ڬ    F       183:p
-+ڭ    F       184:p
-+ڮ    F       185:p
-+گ    F       186:p
-+ڰ    F       187:p
-+ڱ    F       188:p
-+ڲ    F       189:p
-+ڳ    F       190:p
-+ڴ    F       191:p
-+ڵ    F       192:p
-+ڶ    F       193:p
-+ڷ    F       194:p
-+ڸ    F       195:p
-+ڹ    F       196:p
-+ں    F       197:p
-+ڻ    F       198:p
-+ڼ    F       199:p
-+ڽ    F       200:p
-+ھ    F       201:p
-+ڿ    F       202:p
-+ÚÀ    F       203:p
-+ÚÁ    F       204:p
-+Ú    F       205:p
-+Úà   F       206:p
-+ÚÄ    F       207:p
-+ÚÅ    F       208:p
-+ÚÆ    F       209:p
-+ÚÇ    F       210:p
-+ÚÈ    F       211:p
-+ÚÉ    F       212:p
-+ÚÊ    F       213:p
-+ÚË    F       214:p
-+ÚÌ    F       215:p
-+ÚÍ    F       216:p
-+ÚΠ   F       217:p
-+ÚÏ    F       218:p
-+ÚР   F       219:p
-+ÚÑ    F       220:p
-+ÚÒ    F       221:p
-+ÚÓ    F       222:p
-+ÚÔ    F       223:p
-+ÚÕ    F       224:p
-+ÚÖ    F       225:p
-+Ú×    F       226:p
-+ÚØ    F       227:p
-+ÚÙ    F       228:p
-+ÚÚ    F       229:p
-+ÚÛ    F       230:p
-+ÚÜ    F       231:p
-+ÚÝ    F       232:p
-+ÚÞ    F       233:p
-+Úß    F       234:p
-+Úà    F       235:p
-+Úá    F       236:p
-+Úâ    F       237:p
-+Úã    F       238:p
-+Úä    F       239:p
-+Úå    F       240:p
-+Úæ    F       241:p
-+Úç    F       242:p
-+Úè    F       243:p
-+Úé    F       244:p
-+Úê    F       245:p
-+Úë    F       246:p
-+Úì    F       247:p
-+Úí    F       248:p
-+Úî    F       249:p
-+Úï    F       250:p
-+Úð    F       251:p
-+Úñ    F       252:p
-+Úò    F       253:p
-+Úó    F       254:p
-+Úô    F       255:p
-+Úõ    F       0:q
-+Úö    F       1:q
-+Ú÷    F       2:q
-+Úø    F       3:q
-+Úù    F       4:q
-+Úú    F       5:q
-+Úû    F       6:q
-+Úü    F       7:q
-+Úý    F       8:q
-+Úþ    F       9:q
-+ۡ    F       10:q
-+ۢ    F       11:q
-+ۣ    F       12:q
-+ۤ    F       13:q
-+ۥ    F       14:q
-+ۦ    F       15:q
-+ۧ    F       16:q
-+ۨ    F       17:q
-+۩    F       18:q
-+۪    F       19:q
-+۫    F       20:q
-+۬    F       21:q
-+ۭ    F       22:q
-+ۮ    F       23:q
-+ۯ    F       24:q
-+۰    F       25:q
-+۱    F       26:q
-+۲    F       27:q
-+۳    F       28:q
-+۴    F       29:q
-+۵    F       30:q
-+۶    F       31:q
-+۷    F       32:q
-+۸    F       33:q
-+۹    F       34:q
-+ۺ    F       35:q
-+ۻ    F       36:q
-+ۼ    F       37:q
-+۽    F       38:q
-+۾    F       39:q
-+ۿ    F       40:q
-+ÛÀ    F       41:q
-+ÛÁ    F       42:q
-+Û    F       43:q
-+Ûà   F       44:q
-+ÛÄ    F       45:q
-+ÛÅ    F       46:q
-+ÛÆ    F       47:q
-+ÛÇ    F       48:q
-+ÛÈ    F       49:q
-+ÛÉ    F       50:q
-+ÛÊ    F       51:q
-+ÛË    F       52:q
-+ÛÌ    F       53:q
-+ÛÍ    F       54:q
-+ÛΠ   F       55:q
-+ÛÏ    F       56:q
-+ÛР   F       57:q
-+ÛÑ    F       58:q
-+ÛÒ    F       59:q
-+ÛÓ    F       60:q
-+ÛÔ    F       61:q
-+ÛÕ    F       62:q
-+ÛÖ    F       63:q
-+Û×    F       64:q
-+ÛØ    F       65:q
-+ÛÙ    F       66:q
-+ÛÚ    F       67:q
-+ÛÛ    F       68:q
-+ÛÜ    F       69:q
-+ÛÝ    F       70:q
-+ÛÞ    F       71:q
-+Ûß    F       72:q
-+Ûà    F       73:q
-+Ûá    F       74:q
-+Ûâ    F       75:q
-+Ûã    F       76:q
-+Ûä    F       77:q
-+Ûå    F       78:q
-+Ûæ    F       79:q
-+Ûç    F       80:q
-+Ûè    F       81:q
-+Ûé    F       82:q
-+Ûê    F       83:q
-+Ûë    F       84:q
-+Ûì    F       85:q
-+Ûí    F       86:q
-+Ûî    F       87:q
-+Ûï    F       88:q
-+Ûð    F       89:q
-+Ûñ    F       90:q
-+Ûò    F       91:q
-+Ûó    F       92:q
-+Ûô    F       93:q
-+Ûõ    F       94:q
-+Ûö    F       95:q
-+Û÷    F       96:q
-+Ûø    F       97:q
-+Ûù    F       98:q
-+Ûú    F       99:q
-+Ûû    F       100:q
-+Ûü    F       101:q
-+Ûý    F       102:q
-+Ûþ    F       103:q
-+ܡ    F       104:q
-+ܢ    F       105:q
-+ܣ    F       106:q
-+ܤ    F       107:q
-+ܥ    F       108:q
-+ܦ    F       109:q
-+ܧ    F       110:q
-+ܨ    F       111:q
-+ܩ    F       112:q
-+ܪ    F       113:q
-+ܫ    F       114:q
-+ܬ    F       115:q
-+ܭ    F       116:q
-+ܮ    F       117:q
-+ܯ    F       118:q
-+ܰ    F       119:q
-+ܱ    F       120:q
-+ܲ    F       121:q
-+ܳ    F       122:q
-+ܴ    F       123:q
-+ܵ    F       124:q
-+ܶ    F       125:q
-+ܷ    F       126:q
-+ܸ    F       127:q
-+ܹ    F       128:q
-+ܺ    F       129:q
-+ܻ    F       130:q
-+ܼ    F       131:q
-+ܽ    F       132:q
-+ܾ    F       133:q
-+ܿ    F       134:q
-+ÜÀ    F       135:q
-+ÜÁ    F       136:q
-+Ü    F       137:q
-+Üà   F       138:q
-+ÜÄ    F       139:q
-+ÜÅ    F       140:q
-+ÜÆ    F       141:q
-+ÜÇ    F       142:q
-+ÜÈ    F       143:q
-+ÜÉ    F       144:q
-+ÜÊ    F       145:q
-+ÜË    F       146:q
-+ÜÌ    F       147:q
-+ÜÍ    F       148:q
-+ÜΠ   F       149:q
-+ÜÏ    F       150:q
-+ÜР   F       151:q
-+ÜÑ    F       152:q
-+ÜÒ    F       153:q
-+ÜÓ    F       154:q
-+ÜÔ    F       155:q
-+ÜÕ    F       156:q
-+ÜÖ    F       157:q
-+Ü×    F       158:q
-+ÜØ    F       159:q
-+ÜÙ    F       160:q
-+ÜÚ    F       161:q
-+ÜÛ    F       162:q
-+ÜÜ    F       163:q
-+ÜÝ    F       164:q
-+ÜÞ    F       165:q
-+Üß    F       166:q
-+Üà    F       167:q
-+Üá    F       168:q
-+Üâ    F       169:q
-+Üã    F       170:q
-+Üä    F       171:q
-+Üå    F       172:q
-+Üæ    F       173:q
-+Üç    F       174:q
-+Üè    F       175:q
-+Üé    F       176:q
-+Üê    F       177:q
-+Üë    F       178:q
-+Üì    F       179:q
-+Üí    F       180:q
-+Üî    F       181:q
-+Üï    F       182:q
-+Üð    F       183:q
-+Üñ    F       184:q
-+Üò    F       185:q
-+Üó    F       186:q
-+Üô    F       187:q
-+Üõ    F       188:q
-+Üö    F       189:q
-+Ü÷    F       190:q
-+Üø    F       191:q
-+Üù    F       192:q
-+Üú    F       193:q
-+Üû    F       194:q
-+Üü    F       195:q
-+Üý    F       196:q
-+Üþ    F       197:q
-+ݡ    F       198:q
-+ݢ    F       199:q
-+ݣ    F       200:q
-+ݤ    F       201:q
-+ݥ    F       202:q
-+ݦ    F       203:q
-+ݧ    F       204:q
-+ݨ    F       205:q
-+ݩ    F       206:q
-+ݪ    F       207:q
-+ݫ    F       208:q
-+ݬ    F       209:q
-+ݭ    F       210:q
-+ݮ    F       211:q
-+ݯ    F       212:q
-+ݰ    F       213:q
-+ݱ    F       214:q
-+ݲ    F       215:q
-+ݳ    F       216:q
-+ݴ    F       217:q
-+ݵ    F       218:q
-+ݶ    F       219:q
-+ݷ    F       220:q
-+ݸ    F       221:q
-+ݹ    F       222:q
-+ݺ    F       223:q
-+ݻ    F       224:q
-+ݼ    F       225:q
-+ݽ    F       226:q
-+ݾ    F       227:q
-+ݿ    F       228:q
-+ÝÀ    F       229:q
-+ÝÁ    F       230:q
-+Ý    F       231:q
-+Ýà   F       232:q
-+ÝÄ    F       233:q
-+ÝÅ    F       234:q
-+ÝÆ    F       235:q
-+ÝÇ    F       236:q
-+ÝÈ    F       237:q
-+ÝÉ    F       238:q
-+ÝÊ    F       239:q
-+ÝË    F       240:q
-+ÝÌ    F       241:q
-+ÝÍ    F       242:q
-+ÝΠ   F       243:q
-+ÝÏ    F       244:q
-+ÝР   F       245:q
-+ÝÑ    F       246:q
-+ÝÒ    F       247:q
-+ÝÓ    F       248:q
-+ÝÔ    F       249:q
-+ÝÕ    F       250:q
-+ÝÖ    F       251:q
-+Ý×    F       252:q
-+ÝØ    F       253:q
-+ÝÙ    F       254:q
-+ÝÚ    F       255:q
-+ÝÛ    F       0:r
-+ÝÜ    F       1:r
-+ÝÝ    F       2:r
-+ÝÞ    F       3:r
-+Ýß    F       4:r
-+Ýà    F       5:r
-+Ýá    F       6:r
-+Ýâ    F       7:r
-+Ýã    F       8:r
-+Ýä    F       9:r
-+Ýå    F       10:r
-+Ýæ    F       11:r
-+Ýç    F       12:r
-+Ýè    F       13:r
-+Ýé    F       14:r
-+Ýê    F       15:r
-+Ýë    F       16:r
-+Ýì    F       17:r
-+Ýí    F       18:r
-+Ýî    F       19:r
-+Ýï    F       20:r
-+Ýð    F       21:r
-+Ýñ    F       22:r
-+Ýò    F       23:r
-+Ýó    F       24:r
-+Ýô    F       25:r
-+Ýõ    F       26:r
-+Ýö    F       27:r
-+Ý÷    F       28:r
-+Ýø    F       29:r
-+Ýù    F       30:r
-+Ýú    F       31:r
-+Ýû    F       32:r
-+Ýü    F       33:r
-+Ýý    F       34:r
-+Ýþ    F       35:r
-+ޡ    F       36:r
-+ޢ    F       37:r
-+ޣ    F       38:r
-+ޤ    F       39:r
-+ޥ    F       40:r
-+ަ    F       41:r
-+ާ    F       42:r
-+ި    F       43:r
-+ީ    F       44:r
-+ު    F       45:r
-+ޫ    F       46:r
-+ެ    F       47:r
-+ޭ    F       48:r
-+ޮ    F       49:r
-+ޯ    F       50:r
-+ް    F       51:r
-+ޱ    F       52:r
-+޲    F       53:r
-+޳    F       54:r
-+޴    F       55:r
-+޵    F       56:r
-+޶    F       57:r
-+޷    F       58:r
-+޸    F       59:r
-+޹    F       60:r
-+޺    F       61:r
-+޻    F       62:r
-+޼    F       63:r
-+޽    F       64:r
-+޾    F       65:r
-+޿    F       66:r
-+ÞÀ    F       67:r
-+ÞÁ    F       68:r
-+Þ    F       69:r
-+Þà   F       70:r
-+ÞÄ    F       71:r
-+ÞÅ    F       72:r
-+ÞÆ    F       73:r
-+ÞÇ    F       74:r
-+ÞÈ    F       75:r
-+ÞÉ    F       76:r
-+ÞÊ    F       77:r
-+ÞË    F       78:r
-+ÞÌ    F       79:r
-+ÞÍ    F       80:r
-+ÞΠ   F       81:r
-+ÞÏ    F       82:r
-+ÞР   F       83:r
-+ÞÑ    F       84:r
-+ÞÒ    F       85:r
-+ÞÓ    F       86:r
-+ÞÔ    F       87:r
-+ÞÕ    F       88:r
-+ÞÖ    F       89:r
-+Þ×    F       90:r
-+ÞØ    F       91:r
-+ÞÙ    F       92:r
-+ÞÚ    F       93:r
-+ÞÛ    F       94:r
-+ÞÜ    F       95:r
-+ÞÝ    F       96:r
-+ÞÞ    F       97:r
-+Þß    F       98:r
-+Þà    F       99:r
-+Þá    F       100:r
-+Þâ    F       101:r
-+Þã    F       102:r
-+Þä    F       103:r
-+Þå    F       104:r
-+Þæ    F       105:r
-+Þç    F       106:r
-+Þè    F       107:r
-+Þé    F       108:r
-+Þê    F       109:r
-+Þë    F       110:r
-+Þì    F       111:r
-+Þí    F       112:r
-+Þî    F       113:r
-+Þï    F       114:r
-+Þð    F       115:r
-+Þñ    F       116:r
-+Þò    F       117:r
-+Þó    F       118:r
-+Þô    F       119:r
-+Þõ    F       120:r
-+Þö    F       121:r
-+Þ÷    F       122:r
-+Þø    F       123:r
-+Þù    F       124:r
-+Þú    F       125:r
-+Þû    F       126:r
-+Þü    F       127:r
-+Þý    F       128:r
-+Þþ    F       129:r
-+ߡ    F       130:r
-+ߢ    F       131:r
-+ߣ    F       132:r
-+ߤ    F       133:r
-+ߥ    F       134:r
-+ߦ    F       135:r
-+ߧ    F       136:r
-+ߨ    F       137:r
-+ߩ    F       138:r
-+ߪ    F       139:r
-+߫    F       140:r
-+߬    F       141:r
-+߭    F       142:r
-+߮    F       143:r
-+߯    F       144:r
-+߰    F       145:r
-+߱    F       146:r
-+߲    F       147:r
-+߳    F       148:r
-+ߴ    F       149:r
-+ߵ    F       150:r
-+߶    F       151:r
-+߷    F       152:r
-+߸    F       153:r
-+߹    F       154:r
-+ߺ    F       155:r
-+߻    F       156:r
-+߼    F       157:r
-+߽    F       158:r
-+߾    F       159:r
-+߿    F       160:r
-+ßÀ    F       161:r
-+ßÁ    F       162:r
-+ß    F       163:r
-+ßà   F       164:r
-+ßÄ    F       165:r
-+ßÅ    F       166:r
-+ßÆ    F       167:r
-+ßÇ    F       168:r
-+ßÈ    F       169:r
-+ßÉ    F       170:r
-+ßÊ    F       171:r
-+ßË    F       172:r
-+ßÌ    F       173:r
-+ßÍ    F       174:r
-+ßΠ   F       175:r
-+ßÏ    F       176:r
-+ßР   F       177:r
-+ßÑ    F       178:r
-+ßÒ    F       179:r
-+ßÓ    F       180:r
-+ßÔ    F       181:r
-+ßÕ    F       182:r
-+ßÖ    F       183:r
-+ß×    F       184:r
-+ßØ    F       185:r
-+ßÙ    F       186:r
-+ßÚ    F       187:r
-+ßÛ    F       188:r
-+ßÜ    F       189:r
-+ßÝ    F       190:r
-+ßÞ    F       191:r
-+ßß    F       192:r
-+ßà    F       193:r
-+ßá    F       194:r
-+ßâ    F       195:r
-+ßã    F       196:r
-+ßä    F       197:r
-+ßå    F       198:r
-+ßæ    F       199:r
-+ßç    F       200:r
-+ßè    F       201:r
-+ßé    F       202:r
-+ßê    F       203:r
-+ßë    F       204:r
-+ßì    F       205:r
-+ßí    F       206:r
-+ßî    F       207:r
-+ßï    F       208:r
-+ßð    F       209:r
-+ßñ    F       210:r
-+ßò    F       211:r
-+ßó    F       212:r
-+ßô    F       213:r
-+ßõ    F       214:r
-+ßö    F       215:r
-+ß÷    F       216:r
-+ßø    F       217:r
-+ßù    F       218:r
-+ßú    F       219:r
-+ßû    F       220:r
-+ßü    F       221:r
-+ßý    F       222:r
-+ßþ    F       223:r
-+à¡    F       224:r
-+ࢠ   F       225:r
-+࣠   F       226:r
-+ठ   F       227:r
-+ॠ   F       228:r
-+ঠ   F       229:r
-+ৠ   F       230:r
-+ਠ   F       231:r
-+à©    F       232:r
-+ઠ   F       233:r
-+à«    F       234:r
-+ଠ   F       235:r
-+à­    F       236:r
-+à®    F       237:r
-+௠   F       238:r
-+à°    F       239:r
-+à±    F       240:r
-+ಠ   F       241:r
-+à³    F       242:r
-+à´    F       243:r
-+ൠ   F       244:r
-+ච   F       245:r
-+à·    F       246:r
-+ภ   F       247:r
-+๠   F       248:r
-+ຠ   F       249:r
-+à»    F       250:r
-+༠   F       251:r
-+འ   F       252:r
-+ྠ   F       253:r
-+à¿    F       254:r
-+àÀ    F       255:r
-+àÁ    F       0:s
-+à    F       1:s
-+àà   F       2:s
-+àÄ    F       3:s
-+àÅ    F       4:s
-+àÆ    F       5:s
-+àÇ    F       6:s
-+àÈ    F       7:s
-+àÉ    F       8:s
-+àÊ    F       9:s
-+àË    F       10:s
-+àÌ    F       11:s
-+àÍ    F       12:s
-+àΠ   F       13:s
-+àÏ    F       14:s
-+àР   F       15:s
-+àÑ    F       16:s
-+àÒ    F       17:s
-+àÓ    F       18:s
-+àÔ    F       19:s
-+àÕ    F       20:s
-+àÖ    F       21:s
-+à×    F       22:s
-+àØ    F       23:s
-+àÙ    F       24:s
-+àÚ    F       25:s
-+àÛ    F       26:s
-+àÜ    F       27:s
-+àÝ    F       28:s
-+àÞ    F       29:s
-+àß    F       30:s
-+àà    F       31:s
-+àá    F       32:s
-+àâ    F       33:s
-+àã    F       34:s
-+àä    F       35:s
-+àå    F       36:s
-+àæ    F       37:s
-+àç    F       38:s
-+àè    F       39:s
-+àé    F       40:s
-+àê    F       41:s
-+àë    F       42:s
-+àì    F       43:s
-+àí    F       44:s
-+àî    F       45:s
-+àï    F       46:s
-+àð    F       47:s
-+àñ    F       48:s
-+àò    F       49:s
-+àó    F       50:s
-+àô    F       51:s
-+àõ    F       52:s
-+àö    F       53:s
-+à÷    F       54:s
-+àø    F       55:s
-+àù    F       56:s
-+àú    F       57:s
-+àû    F       58:s
-+àü    F       59:s
-+àý    F       60:s
-+àþ    F       61:s
-+á¡    F       62:s
-+ᢠ   F       63:s
-+ᣠ   F       64:s
-+ᤠ   F       65:s
-+ᥠ   F       66:s
-+ᦠ   F       67:s
-+᧠   F       68:s
-+ᨠ   F       69:s
-+á©    F       70:s
-+᪠   F       71:s
-+á«    F       72:s
-+ᬠ   F       73:s
-+á­    F       74:s
-+á®    F       75:s
-+ᯠ   F       76:s
-+á°    F       77:s
-+á±    F       78:s
-+á²    F       79:s
-+á³    F       80:s
-+á´    F       81:s
-+áµ    F       82:s
-+ᶠ   F       83:s
-+á·    F       84:s
-+Ḡ   F       85:s
-+á¹    F       86:s
-+Ạ   F       87:s
-+á»    F       88:s
-+á¼    F       89:s
-+á½    F       90:s
-+á¾    F       91:s
-+á¿    F       92:s
-+áÀ    F       93:s
-+áÁ    F       94:s
-+á    F       95:s
-+áà   F       96:s
-+áÄ    F       97:s
-+áÅ    F       98:s
-+áÆ    F       99:s
-+áÇ    F       100:s
-+áÈ    F       101:s
-+áÉ    F       102:s
-+áÊ    F       103:s
-+áË    F       104:s
-+áÌ    F       105:s
-+áÍ    F       106:s
-+áΠ   F       107:s
-+áÏ    F       108:s
-+áР   F       109:s
-+áÑ    F       110:s
-+áÒ    F       111:s
-+áÓ    F       112:s
-+áÔ    F       113:s
-+áÕ    F       114:s
-+áÖ    F       115:s
-+á×    F       116:s
-+áØ    F       117:s
-+áÙ    F       118:s
-+áÚ    F       119:s
-+áÛ    F       120:s
-+áÜ    F       121:s
-+áÝ    F       122:s
-+áÞ    F       123:s
-+áß    F       124:s
-+áà    F       125:s
-+áá    F       126:s
-+áâ    F       127:s
-+áã    F       128:s
-+áä    F       129:s
-+áå    F       130:s
-+áæ    F       131:s
-+áç    F       132:s
-+áè    F       133:s
-+áé    F       134:s
-+áê    F       135:s
-+áë    F       136:s
-+áì    F       137:s
-+áí    F       138:s
-+áî    F       139:s
-+áï    F       140:s
-+áð    F       141:s
-+áñ    F       142:s
-+áò    F       143:s
-+áó    F       144:s
-+áô    F       145:s
-+áõ    F       146:s
-+áö    F       147:s
-+á÷    F       148:s
-+áø    F       149:s
-+áù    F       150:s
-+áú    F       151:s
-+áû    F       152:s
-+áü    F       153:s
-+áý    F       154:s
-+áþ    F       155:s
-+â¡    F       156:s
-+⢠   F       157:s
-+⣠   F       158:s
-+⤠   F       159:s
-+⥠   F       160:s
-+⦠   F       161:s
-+⧠   F       162:s
-+⨠   F       163:s
-+â©    F       164:s
-+⪠   F       165:s
-+â«    F       166:s
-+⬠   F       167:s
-+â­    F       168:s
-+â®    F       169:s
-+⯠   F       170:s
-+â°    F       171:s
-+â±    F       172:s
-+â²    F       173:s
-+â³    F       174:s
-+â´    F       175:s
-+âµ    F       176:s
-+ⶠ   F       177:s
-+â·    F       178:s
-+⸠   F       179:s
-+â¹    F       180:s
-+⺠   F       181:s
-+â»    F       182:s
-+â¼    F       183:s
-+â½    F       184:s
-+â¾    F       185:s
-+â¿    F       186:s
-+âÀ    F       187:s
-+âÁ    F       188:s
-+â    F       189:s
-+âà   F       190:s
-+âÄ    F       191:s
-+âÅ    F       192:s
-+âÆ    F       193:s
-+âÇ    F       194:s
-+âÈ    F       195:s
-+âÉ    F       196:s
-+âÊ    F       197:s
-+âË    F       198:s
-+âÌ    F       199:s
-+âÍ    F       200:s
-+âΠ   F       201:s
-+âÏ    F       202:s
-+âР   F       203:s
-+âÑ    F       204:s
-+âÒ    F       205:s
-+âÓ    F       206:s
-+âÔ    F       207:s
-+âÕ    F       208:s
-+âÖ    F       209:s
-+â×    F       210:s
-+âØ    F       211:s
-+âÙ    F       212:s
-+âÚ    F       213:s
-+âÛ    F       214:s
-+âÜ    F       215:s
-+âÝ    F       216:s
-+âÞ    F       217:s
-+âß    F       218:s
-+âà    F       219:s
-+âá    F       220:s
-+ââ    F       221:s
-+âã    F       222:s
-+âä    F       223:s
-+âå    F       224:s
-+âæ    F       225:s
-+âç    F       226:s
-+âè    F       227:s
-+âé    F       228:s
-+âê    F       229:s
-+âë    F       230:s
-+âì    F       231:s
-+âí    F       232:s
-+âî    F       233:s
-+âï    F       234:s
-+âð    F       235:s
-+âñ    F       236:s
-+âò    F       237:s
-+âó    F       238:s
-+âô    F       239:s
-+âõ    F       240:s
-+âö    F       241:s
-+â÷    F       242:s
-+âø    F       243:s
-+âù    F       244:s
-+âú    F       245:s
-+âû    F       246:s
-+âü    F       247:s
-+âý    F       248:s
-+âþ    F       249:s
-+ã¡    F       250:s
-+㢠   F       251:s
-+㣠   F       252:s
-+㤠   F       253:s
-+㥠   F       254:s
-+㦠   F       255:s
-+㧠   F       0:t
-+㨠   F       1:t
-+ã©    F       2:t
-+㪠   F       3:t
-+ã«    F       4:t
-+㬠   F       5:t
-+ã­    F       6:t
-+ã®    F       7:t
-+㯠   F       8:t
-+ã°    F       9:t
-+ã±    F       10:t
-+ã²    F       11:t
-+ã³    F       12:t
-+ã´    F       13:t
-+ãµ    F       14:t
-+㶠   F       15:t
-+ã·    F       16:t
-+㸠   F       17:t
-+ã¹    F       18:t
-+㺠   F       19:t
-+ã»    F       20:t
-+ã¼    F       21:t
-+ã½    F       22:t
-+ã¾    F       23:t
-+ã¿    F       24:t
-+ãÀ    F       25:t
-+ãÁ    F       26:t
-+ã    F       27:t
-+ãà   F       28:t
-+ãÄ    F       29:t
-+ãÅ    F       30:t
-+ãÆ    F       31:t
-+ãÇ    F       32:t
-+ãÈ    F       33:t
-+ãÉ    F       34:t
-+ãÊ    F       35:t
-+ãË    F       36:t
-+ãÌ    F       37:t
-+ãÍ    F       38:t
-+ãΠ   F       39:t
-+ãÏ    F       40:t
-+ãР   F       41:t
-+ãÑ    F       42:t
-+ãÒ    F       43:t
-+ãÓ    F       44:t
-+ãÔ    F       45:t
-+ãÕ    F       46:t
-+ãÖ    F       47:t
-+ã×    F       48:t
-+ãØ    F       49:t
-+ãÙ    F       50:t
-+ãÚ    F       51:t
-+ãÛ    F       52:t
-+ãÜ    F       53:t
-+ãÝ    F       54:t
-+ãÞ    F       55:t
-+ãß    F       56:t
-+ãà    F       57:t
-+ãá    F       58:t
-+ãâ    F       59:t
-+ãã    F       60:t
-+ãä    F       61:t
-+ãå    F       62:t
-+ãæ    F       63:t
-+ãç    F       64:t
-+ãè    F       65:t
-+ãé    F       66:t
-+ãê    F       67:t
-+ãë    F       68:t
-+ãì    F       69:t
-+ãí    F       70:t
-+ãî    F       71:t
-+ãï    F       72:t
-+ãð    F       73:t
-+ãñ    F       74:t
-+ãò    F       75:t
-+ãó    F       76:t
-+ãô    F       77:t
-+ãõ    F       78:t
-+ãö    F       79:t
-+ã÷    F       80:t
-+ãø    F       81:t
-+ãù    F       82:t
-+ãú    F       83:t
-+ãû    F       84:t
-+ãü    F       85:t
-+ãý    F       86:t
-+ãþ    F       87:t
-+ä¡    F       88:t
-+䢠   F       89:t
-+䣠   F       90:t
-+䤠   F       91:t
-+䥠   F       92:t
-+䦠   F       93:t
-+䧠   F       94:t
-+䨠   F       95:t
-+ä©    F       96:t
-+䪠   F       97:t
-+ä«    F       98:t
-+䬠   F       99:t
-+ä­    F       100:t
-+ä®    F       101:t
-+䯠   F       102:t
-+ä°    F       103:t
-+ä±    F       104:t
-+ä²    F       105:t
-+ä³    F       106:t
-+ä´    F       107:t
-+äµ    F       108:t
-+䶠   F       109:t
-+ä·    F       110:t
-+丠   F       111:t
-+ä¹    F       112:t
-+亠   F       113:t
-+ä»    F       114:t
-+ä¼    F       115:t
-+ä½    F       116:t
-+ä¾    F       117:t
-+ä¿    F       118:t
-+äÀ    F       119:t
-+äÁ    F       120:t
-+ä    F       121:t
-+äà   F       122:t
-+äÄ    F       123:t
-+äÅ    F       124:t
-+äÆ    F       125:t
-+äÇ    F       126:t
-+äÈ    F       127:t
-+äÉ    F       128:t
-+äÊ    F       129:t
-+äË    F       130:t
-+äÌ    F       131:t
-+äÍ    F       132:t
-+äΠ   F       133:t
-+äÏ    F       134:t
-+äР   F       135:t
-+äÑ    F       136:t
-+äÒ    F       137:t
-+äÓ    F       138:t
-+äÔ    F       139:t
-+äÕ    F       140:t
-+äÖ    F       141:t
-+ä×    F       142:t
-+äØ    F       143:t
-+äÙ    F       144:t
-+äÚ    F       145:t
-+äÛ    F       146:t
-+äÜ    F       147:t
-+äÝ    F       148:t
-+äÞ    F       149:t
-+äß    F       150:t
-+äà    F       151:t
-+äá    F       152:t
-+äâ    F       153:t
-+äã    F       154:t
-+ää    F       155:t
-+äå    F       156:t
-+äæ    F       157:t
-+äç    F       158:t
-+äè    F       159:t
-+äé    F       160:t
-+äê    F       161:t
-+äë    F       162:t
-+äì    F       163:t
-+äí    F       164:t
-+äî    F       165:t
-+äï    F       166:t
-+äð    F       167:t
-+äñ    F       168:t
-+äò    F       169:t
-+äó    F       170:t
-+äô    F       171:t
-+äõ    F       172:t
-+äö    F       173:t
-+ä÷    F       174:t
-+äø    F       175:t
-+äù    F       176:t
-+äú    F       177:t
-+äû    F       178:t
-+äü    F       179:t
-+äý    F       180:t
-+äþ    F       181:t
-+å¡    F       182:t
-+墠   F       183:t
-+壠   F       184:t
-+夠   F       185:t
-+奠   F       186:t
-+妠   F       187:t
-+姠   F       188:t
-+娠   F       189:t
-+å©    F       190:t
-+媠   F       191:t
-+å«    F       192:t
-+嬠   F       193:t
-+å­    F       194:t
-+å®    F       195:t
-+寠   F       196:t
-+å°    F       197:t
-+å±    F       198:t
-+å²    F       199:t
-+å³    F       200:t
-+å´    F       201:t
-+åµ    F       202:t
-+嶠   F       203:t
-+å·    F       204:t
-+帠   F       205:t
-+å¹    F       206:t
-+庠   F       207:t
-+å»    F       208:t
-+å¼    F       209:t
-+å½    F       210:t
-+å¾    F       211:t
-+å¿    F       212:t
-+åÀ    F       213:t
-+åÁ    F       214:t
-+å    F       215:t
-+åà   F       216:t
-+åÄ    F       217:t
-+åÅ    F       218:t
-+åÆ    F       219:t
-+åÇ    F       220:t
-+åÈ    F       221:t
-+åÉ    F       222:t
-+åÊ    F       223:t
-+åË    F       224:t
-+åÌ    F       225:t
-+åÍ    F       226:t
-+åΠ   F       227:t
-+åÏ    F       228:t
-+åР   F       229:t
-+åÑ    F       230:t
-+åÒ    F       231:t
-+åÓ    F       232:t
-+åÔ    F       233:t
-+åÕ    F       234:t
-+åÖ    F       235:t
-+å×    F       236:t
-+åØ    F       237:t
-+åÙ    F       238:t
-+åÚ    F       239:t
-+åÛ    F       240:t
-+åÜ    F       241:t
-+åÝ    F       242:t
-+åÞ    F       243:t
-+åß    F       244:t
-+åà    F       245:t
-+åá    F       246:t
-+åâ    F       247:t
-+åã    F       248:t
-+åä    F       249:t
-+åå    F       250:t
-+åæ    F       251:t
-+åç    F       252:t
-+åè    F       253:t
-+åé    F       254:t
-+åê    F       255:t
-+åë    F       0:u
-+åì    F       1:u
-+åí    F       2:u
-+åî    F       3:u
-+åï    F       4:u
-+åð    F       5:u
-+åñ    F       6:u
-+åò    F       7:u
-+åó    F       8:u
-+åô    F       9:u
-+åõ    F       10:u
-+åö    F       11:u
-+å÷    F       12:u
-+åø    F       13:u
-+åù    F       14:u
-+åú    F       15:u
-+åû    F       16:u
-+åü    F       17:u
-+åý    F       18:u
-+åþ    F       19:u
-+æ¡    F       20:u
-+梠   F       21:u
-+棠   F       22:u
-+椠   F       23:u
-+楠   F       24:u
-+榠   F       25:u
-+槠   F       26:u
-+樠   F       27:u
-+æ©    F       28:u
-+檠   F       29:u
-+æ«    F       30:u
-+欠   F       31:u
-+æ­    F       32:u
-+æ®    F       33:u
-+毠   F       34:u
-+æ°    F       35:u
-+æ±    F       36:u
-+æ²    F       37:u
-+æ³    F       38:u
-+æ´    F       39:u
-+æµ    F       40:u
-+涠   F       41:u
-+æ·    F       42:u
-+渠   F       43:u
-+æ¹    F       44:u
-+溠   F       45:u
-+æ»    F       46:u
-+æ¼    F       47:u
-+æ½    F       48:u
-+æ¾    F       49:u
-+æ¿    F       50:u
-+æÀ    F       51:u
-+æÁ    F       52:u
-+æ    F       53:u
-+æà   F       54:u
-+æÄ    F       55:u
-+æÅ    F       56:u
-+æÆ    F       57:u
-+æÇ    F       58:u
-+æÈ    F       59:u
-+æÉ    F       60:u
-+æÊ    F       61:u
-+æË    F       62:u
-+æÌ    F       63:u
-+æÍ    F       64:u
-+æΠ   F       65:u
-+æÏ    F       66:u
-+æР   F       67:u
-+æÑ    F       68:u
-+æÒ    F       69:u
-+æÓ    F       70:u
-+æÔ    F       71:u
-+æÕ    F       72:u
-+æÖ    F       73:u
-+æ×    F       74:u
-+æØ    F       75:u
-+æÙ    F       76:u
-+æÚ    F       77:u
-+æÛ    F       78:u
-+æÜ    F       79:u
-+æÝ    F       80:u
-+æÞ    F       81:u
-+æß    F       82:u
-+æà    F       83:u
-+æá    F       84:u
-+æâ    F       85:u
-+æã    F       86:u
-+æä    F       87:u
-+æå    F       88:u
-+ææ    F       89:u
-+æç    F       90:u
-+æè    F       91:u
-+æé    F       92:u
-+æê    F       93:u
-+æë    F       94:u
-+æì    F       95:u
-+æí    F       96:u
-+æî    F       97:u
-+æï    F       98:u
-+æð    F       99:u
-+æñ    F       100:u
-+æò    F       101:u
-+æó    F       102:u
-+æô    F       103:u
-+æõ    F       104:u
-+æö    F       105:u
-+æ÷    F       106:u
-+æø    F       107:u
-+æù    F       108:u
-+æú    F       109:u
-+æû    F       110:u
-+æü    F       111:u
-+æý    F       112:u
-+æþ    F       113:u
-+ç¡    F       114:u
-+碠   F       115:u
-+磠   F       116:u
-+礠   F       117:u
-+祠   F       118:u
-+禠   F       119:u
-+秠   F       120:u
-+稠   F       121:u
-+ç©    F       122:u
-+窠   F       123:u
-+ç«    F       124:u
-+笠   F       125:u
-+ç­    F       126:u
-+ç®    F       127:u
-+篠   F       128:u
-+ç°    F       129:u
-+ç±    F       130:u
-+ç²    F       131:u
-+ç³    F       132:u
-+ç´    F       133:u
-+çµ    F       134:u
-+綠   F       135:u
-+ç·    F       136:u
-+縠   F       137:u
-+ç¹    F       138:u
-+纠   F       139:u
-+ç»    F       140:u
-+ç¼    F       141:u
-+ç½    F       142:u
-+ç¾    F       143:u
-+ç¿    F       144:u
-+çÀ    F       145:u
-+çÁ    F       146:u
-+ç    F       147:u
-+çà   F       148:u
-+çÄ    F       149:u
-+çÅ    F       150:u
-+çÆ    F       151:u
-+çÇ    F       152:u
-+çÈ    F       153:u
-+çÉ    F       154:u
-+çÊ    F       155:u
-+çË    F       156:u
-+çÌ    F       157:u
-+çÍ    F       158:u
-+çΠ   F       159:u
-+çÏ    F       160:u
-+çР   F       161:u
-+çÑ    F       162:u
-+çÒ    F       163:u
-+çÓ    F       164:u
-+çÔ    F       165:u
-+çÕ    F       166:u
-+çÖ    F       167:u
-+ç×    F       168:u
-+çØ    F       169:u
-+çÙ    F       170:u
-+çÚ    F       171:u
-+çÛ    F       172:u
-+çÜ    F       173:u
-+çÝ    F       174:u
-+çÞ    F       175:u
-+çß    F       176:u
-+çà    F       177:u
-+çá    F       178:u
-+çâ    F       179:u
-+çã    F       180:u
-+çä    F       181:u
-+çå    F       182:u
-+çæ    F       183:u
-+çç    F       184:u
-+çè    F       185:u
-+çé    F       186:u
-+çê    F       187:u
-+çë    F       188:u
-+çì    F       189:u
-+çí    F       190:u
-+çî    F       191:u
-+çï    F       192:u
-+çð    F       193:u
-+çñ    F       194:u
-+çò    F       195:u
-+çó    F       196:u
-+çô    F       197:u
-+çõ    F       198:u
-+çö    F       199:u
-+ç÷    F       200:u
-+çø    F       201:u
-+çù    F       202:u
-+çú    F       203:u
-+çû    F       204:u
-+çü    F       205:u
-+çý    F       206:u
-+çþ    F       207:u
-+è¡    F       208:u
-+袠   F       209:u
-+裠   F       210:u
-+褠   F       211:u
-+襠   F       212:u
-+覠   F       213:u
-+觠   F       214:u
-+訠   F       215:u
-+è©    F       216:u
-+誠   F       217:u
-+è«    F       218:u
-+謠   F       219:u
-+è­    F       220:u
-+è®    F       221:u
-+诠   F       222:u
-+è°    F       223:u
-+è±    F       224:u
-+è²    F       225:u
-+è³    F       226:u
-+è´    F       227:u
-+èµ    F       228:u
-+趠   F       229:u
-+è·    F       230:u
-+踠   F       231:u
-+è¹    F       232:u
-+躠   F       233:u
-+è»    F       234:u
-+è¼    F       235:u
-+è½    F       236:u
-+è¾    F       237:u
-+è¿    F       238:u
-+èÀ    F       239:u
-+èÁ    F       240:u
-+è    F       241:u
-+èà   F       242:u
-+èÄ    F       243:u
-+èÅ    F       244:u
-+èÆ    F       245:u
-+èÇ    F       246:u
-+èÈ    F       247:u
-+èÉ    F       248:u
-+èÊ    F       249:u
-+èË    F       250:u
-+èÌ    F       251:u
-+èÍ    F       252:u
-+èΠ   F       253:u
-+èÏ    F       254:u
-+èР   F       255:u
-+èÑ    F       0:v
-+èÒ    F       1:v
-+èÓ    F       2:v
-+èÔ    F       3:v
-+èÕ    F       4:v
-+èÖ    F       5:v
-+è×    F       6:v
-+èØ    F       7:v
-+èÙ    F       8:v
-+èÚ    F       9:v
-+èÛ    F       10:v
-+èÜ    F       11:v
-+èÝ    F       12:v
-+èÞ    F       13:v
-+èß    F       14:v
-+èà    F       15:v
-+èá    F       16:v
-+èâ    F       17:v
-+èã    F       18:v
-+èä    F       19:v
-+èå    F       20:v
-+èæ    F       21:v
-+èç    F       22:v
-+èè    F       23:v
-+èé    F       24:v
-+èê    F       25:v
-+èë    F       26:v
-+èì    F       27:v
-+èí    F       28:v
-+èî    F       29:v
-+èï    F       30:v
-+èð    F       31:v
-+èñ    F       32:v
-+èò    F       33:v
-+èó    F       34:v
-+èô    F       35:v
-+èõ    F       36:v
-+èö    F       37:v
-+è÷    F       38:v
-+èø    F       39:v
-+èù    F       40:v
-+èú    F       41:v
-+èû    F       42:v
-+èü    F       43:v
-+èý    F       44:v
-+èþ    F       45:v
-+é¡    F       46:v
-+颠   F       47:v
-+飠   F       48:v
-+餠   F       49:v
-+饠   F       50:v
-+馠   F       51:v
-+駠   F       52:v
-+騠   F       53:v
-+é©    F       54:v
-+骠   F       55:v
-+é«    F       56:v
-+鬠   F       57:v
-+é­    F       58:v
-+é®    F       59:v
-+鯠   F       60:v
-+é°    F       61:v
-+é±    F       62:v
-+é²    F       63:v
-+é³    F       64:v
-+é´    F       65:v
-+éµ    F       66:v
-+鶠   F       67:v
-+é·    F       68:v
-+鸠   F       69:v
-+é¹    F       70:v
-+麠   F       71:v
-+é»    F       72:v
-+é¼    F       73:v
-+é½    F       74:v
-+é¾    F       75:v
-+é¿    F       76:v
-+éÀ    F       77:v
-+éÁ    F       78:v
-+é    F       79:v
-+éà   F       80:v
-+éÄ    F       81:v
-+éÅ    F       82:v
-+éÆ    F       83:v
-+éÇ    F       84:v
-+éÈ    F       85:v
-+éÉ    F       86:v
-+éÊ    F       87:v
-+éË    F       88:v
-+éÌ    F       89:v
-+éÍ    F       90:v
-+éΠ   F       91:v
-+éÏ    F       92:v
-+éР   F       93:v
-+éÑ    F       94:v
-+éÒ    F       95:v
-+éÓ    F       96:v
-+éÔ    F       97:v
-+éÕ    F       98:v
-+éÖ    F       99:v
-+é×    F       100:v
-+éØ    F       101:v
-+éÙ    F       102:v
-+éÚ    F       103:v
-+éÛ    F       104:v
-+éÜ    F       105:v
-+éÝ    F       106:v
-+éÞ    F       107:v
-+éß    F       108:v
-+éà    F       109:v
-+éá    F       110:v
-+éâ    F       111:v
-+éã    F       112:v
-+éä    F       113:v
-+éå    F       114:v
-+éæ    F       115:v
-+éç    F       116:v
-+éè    F       117:v
-+éé    F       118:v
-+éê    F       119:v
-+éë    F       120:v
-+éì    F       121:v
-+éí    F       122:v
-+éî    F       123:v
-+éï    F       124:v
-+éð    F       125:v
-+éñ    F       126:v
-+éò    F       127:v
-+éó    F       128:v
-+éô    F       129:v
-+éõ    F       130:v
-+éö    F       131:v
-+é÷    F       132:v
-+éø    F       133:v
-+éù    F       134:v
-+éú    F       135:v
-+éû    F       136:v
-+éü    F       137:v
-+éý    F       138:v
-+éþ    F       139:v
-+ê¡    F       140:v
-+ꢠ   F       141:v
-+꣠   F       142:v
-+ꤠ   F       143:v
-+ꥠ   F       144:v
-+ꦠ   F       145:v
-+ꧠ   F       146:v
-+ꨠ   F       147:v
-+ê©    F       148:v
-+ꪠ   F       149:v
-+ê«    F       150:v
-+ꬠ   F       151:v
-+ê­    F       152:v
-+ê®    F       153:v
-+ꯠ   F       154:v
-+ê°    F       155:v
-+ê±    F       156:v
-+ê²    F       157:v
-+ê³    F       158:v
-+ê´    F       159:v
-+êµ    F       160:v
-+궠   F       161:v
-+ê·    F       162:v
-+긠   F       163:v
-+ê¹    F       164:v
-+꺠   F       165:v
-+ê»    F       166:v
-+ê¼    F       167:v
-+ê½    F       168:v
-+ê¾    F       169:v
-+ê¿    F       170:v
-+êÀ    F       171:v
-+êÁ    F       172:v
-+ê    F       173:v
-+êà   F       174:v
-+êÄ    F       175:v
-+êÅ    F       176:v
-+êÆ    F       177:v
-+êÇ    F       178:v
-+êÈ    F       179:v
-+êÉ    F       180:v
-+êÊ    F       181:v
-+êË    F       182:v
-+êÌ    F       183:v
-+êÍ    F       184:v
-+êΠ   F       185:v
-+êÏ    F       186:v
-+êР   F       187:v
-+êÑ    F       188:v
-+êÒ    F       189:v
-+êÓ    F       190:v
-+êÔ    F       191:v
-+êÕ    F       192:v
-+êÖ    F       193:v
-+ê×    F       194:v
-+êØ    F       195:v
-+êÙ    F       196:v
-+êÚ    F       197:v
-+êÛ    F       198:v
-+êÜ    F       199:v
-+êÝ    F       200:v
-+êÞ    F       201:v
-+êß    F       202:v
-+êà    F       203:v
-+êá    F       204:v
-+êâ    F       205:v
-+êã    F       206:v
-+êä    F       207:v
-+êå    F       208:v
-+êæ    F       209:v
-+êç    F       210:v
-+êè    F       211:v
-+êé    F       212:v
-+êê    F       213:v
-+êë    F       214:v
-+êì    F       215:v
-+êí    F       216:v
-+êî    F       217:v
-+êï    F       218:v
-+êð    F       219:v
-+êñ    F       220:v
-+êò    F       221:v
-+êó    F       222:v
-+êô    F       223:v
-+êõ    F       224:v
-+êö    F       225:v
-+ê÷    F       226:v
-+êø    F       227:v
-+êù    F       228:v
-+êú    F       229:v
-+êû    F       230:v
-+êü    F       231:v
-+êý    F       232:v
-+êþ    F       233:v
-+ë¡    F       234:v
-+뢠   F       235:v
-+룠   F       236:v
-+뤠   F       237:v
-+률   F       238:v
-+릠   F       239:v
-+맠   F       240:v
-+먠   F       241:v
-+ë©    F       242:v
-+몠   F       243:v
-+ë«    F       244:v
-+묠   F       245:v
-+ë­    F       246:v
-+ë®    F       247:v
-+믠   F       248:v
-+ë°    F       249:v
-+ë±    F       250:v
-+ë²    F       251:v
-+ë³    F       252:v
-+ë´    F       253:v
-+ëµ    F       254:v
-+붠   F       255:v
-+ë·    F       0:w
-+븠   F       1:w
-+ë¹    F       2:w
-+뺠   F       3:w
-+ë»    F       4:w
-+ë¼    F       5:w
-+ë½    F       6:w
-+ë¾    F       7:w
-+ë¿    F       8:w
-+ëÀ    F       9:w
-+ëÁ    F       10:w
-+ë    F       11:w
-+ëà   F       12:w
-+ëÄ    F       13:w
-+ëÅ    F       14:w
-+ëÆ    F       15:w
-+ëÇ    F       16:w
-+ëÈ    F       17:w
-+ëÉ    F       18:w
-+ëÊ    F       19:w
-+ëË    F       20:w
-+ëÌ    F       21:w
-+ëÍ    F       22:w
-+ëΠ   F       23:w
-+ëÏ    F       24:w
-+ëР   F       25:w
-+ëÑ    F       26:w
-+ëÒ    F       27:w
-+ëÓ    F       28:w
-+ëÔ    F       29:w
-+ëÕ    F       30:w
-+ëÖ    F       31:w
-+ë×    F       32:w
-+ëØ    F       33:w
-+ëÙ    F       34:w
-+ëÚ    F       35:w
-+ëÛ    F       36:w
-+ëÜ    F       37:w
-+ëÝ    F       38:w
-+ëÞ    F       39:w
-+ëß    F       40:w
-+ëà    F       41:w
-+ëá    F       42:w
-+ëâ    F       43:w
-+ëã    F       44:w
-+ëä    F       45:w
-+ëå    F       46:w
-+ëæ    F       47:w
-+ëç    F       48:w
-+ëè    F       49:w
-+ëé    F       50:w
-+ëê    F       51:w
-+ëë    F       52:w
-+ëì    F       53:w
-+ëí    F       54:w
-+ëî    F       55:w
-+ëï    F       56:w
-+ëð    F       57:w
-+ëñ    F       58:w
-+ëò    F       59:w
-+ëó    F       60:w
-+ëô    F       61:w
-+ëõ    F       62:w
-+ëö    F       63:w
-+ë÷    F       64:w
-+ëø    F       65:w
-+ëù    F       66:w
-+ëú    F       67:w
-+ëû    F       68:w
-+ëü    F       69:w
-+ëý    F       70:w
-+ëþ    F       71:w
-+ì¡    F       72:w
-+좠   F       73:w
-+죠   F       74:w
-+줠   F       75:w
-+쥠   F       76:w
-+즠   F       77:w
-+짠   F       78:w
-+쨠   F       79:w
-+ì©    F       80:w
-+쪠   F       81:w
-+ì«    F       82:w
-+쬠   F       83:w
-+ì­    F       84:w
-+ì®    F       85:w
-+쯠   F       86:w
-+ì°    F       87:w
-+ì±    F       88:w
-+ì²    F       89:w
-+ì³    F       90:w
-+ì´    F       91:w
-+ìµ    F       92:w
-+춠   F       93:w
-+ì·    F       94:w
-+츠   F       95:w
-+ì¹    F       96:w
-+캠   F       97:w
-+ì»    F       98:w
-+ì¼    F       99:w
-+ì½    F       100:w
-+ì¾    F       101:w
-+ì¿    F       102:w
-+ìÀ    F       103:w
-+ìÁ    F       104:w
-+ì    F       105:w
-+ìà   F       106:w
-+ìÄ    F       107:w
-+ìÅ    F       108:w
-+ìÆ    F       109:w
-+ìÇ    F       110:w
-+ìÈ    F       111:w
-+ìÉ    F       112:w
-+ìÊ    F       113:w
-+ìË    F       114:w
-+ìÌ    F       115:w
-+ìÍ    F       116:w
-+ìΠ   F       117:w
-+ìÏ    F       118:w
-+ìР   F       119:w
-+ìÑ    F       120:w
-+ìÒ    F       121:w
-+ìÓ    F       122:w
-+ìÔ    F       123:w
-+ìÕ    F       124:w
-+ìÖ    F       125:w
-+ì×    F       126:w
-+ìØ    F       127:w
-+ìÙ    F       128:w
-+ìÚ    F       129:w
-+ìÛ    F       130:w
-+ìÜ    F       131:w
-+ìÝ    F       132:w
-+ìÞ    F       133:w
-+ìß    F       134:w
-+ìà    F       135:w
-+ìá    F       136:w
-+ìâ    F       137:w
-+ìã    F       138:w
-+ìä    F       139:w
-+ìå    F       140:w
-+ìæ    F       141:w
-+ìç    F       142:w
-+ìè    F       143:w
-+ìé    F       144:w
-+ìê    F       145:w
-+ìë    F       146:w
-+ìì    F       147:w
-+ìí    F       148:w
-+ìî    F       149:w
-+ìï    F       150:w
-+ìð    F       151:w
-+ìñ    F       152:w
-+ìò    F       153:w
-+ìó    F       154:w
-+ìô    F       155:w
-+ìõ    F       156:w
-+ìö    F       157:w
-+ì÷    F       158:w
-+ìø    F       159:w
-+ìù    F       160:w
-+ìú    F       161:w
-+ìû    F       162:w
-+ìü    F       163:w
-+ìý    F       164:w
-+ìþ    F       165:w
-+í¡    F       166:w
-+í¢    F       167:w
-+í£    F       168:w
-+í¤    F       169:w
-+í¥    F       170:w
-+í¦    F       171:w
-+í§    F       172:w
-+í¨    F       173:w
-+í©    F       174:w
-+íª    F       175:w
-+í«    F       176:w
-+í¬    F       177:w
-+í­    F       178:w
-+í®    F       179:w
-+í¯    F       180:w
-+í°    F       181:w
-+í±    F       182:w
-+í²    F       183:w
-+í³    F       184:w
-+í´    F       185:w
-+íµ    F       186:w
-+í¶    F       187:w
-+í·    F       188:w
-+í¸    F       189:w
-+í¹    F       190:w
-+íº    F       191:w
-+í»    F       192:w
-+í¼    F       193:w
-+í½    F       194:w
-+í¾    F       195:w
-+í¿    F       196:w
-+íÀ    F       197:w
-+íÁ    F       198:w
-+í    F       199:w
-+íà   F       200:w
-+íÄ    F       201:w
-+íÅ    F       202:w
-+íÆ    F       203:w
-+íÇ    F       204:w
-+íÈ    F       205:w
-+íÉ    F       206:w
-+íÊ    F       207:w
-+íË    F       208:w
-+íÌ    F       209:w
-+íÍ    F       210:w
-+íΠ   F       211:w
-+íÏ    F       212:w
-+íР   F       213:w
-+íÑ    F       214:w
-+íÒ    F       215:w
-+íÓ    F       216:w
-+íÔ    F       217:w
-+íÕ    F       218:w
-+íÖ    F       219:w
-+í×    F       220:w
-+íØ    F       221:w
-+íÙ    F       222:w
-+íÚ    F       223:w
-+íÛ    F       224:w
-+íÜ    F       225:w
-+íÝ    F       226:w
-+íÞ    F       227:w
-+íß    F       228:w
-+íà    F       229:w
-+íá    F       230:w
-+íâ    F       231:w
-+íã    F       232:w
-+íä    F       233:w
-+íå    F       234:w
-+íæ    F       235:w
-+íç    F       236:w
-+íè    F       237:w
-+íé    F       238:w
-+íê    F       239:w
-+íë    F       240:w
-+íì    F       241:w
-+íí    F       242:w
-+íî    F       243:w
-+íï    F       244:w
-+íð    F       245:w
-+íñ    F       246:w
-+íò    F       247:w
-+íó    F       248:w
-+íô    F       249:w
-+íõ    F       250:w
-+íö    F       251:w
-+í÷    F       252:w
-+íø    F       253:w
-+íù    F       254:w
-+íú    F       255:w
-+íû    F       0:x
-+íü    F       1:x
-+íý    F       2:x
-+íþ    F       3:x
-+î¡    F       4:x
-+   F       5:x
-+   F       6:x
-+   F       7:x
-+   F       8:x
-+   F       9:x
-+   F       10:x
-+   F       11:x
-+î©    F       12:x
-+   F       13:x
-+î«    F       14:x
-+   F       15:x
-+î­    F       16:x
-+î®    F       17:x
-+   F       18:x
-+î°    F       19:x
-+î±    F       20:x
-+î²    F       21:x
-+î³    F       22:x
-+î´    F       23:x
-+îµ    F       24:x
-+   F       25:x
-+î·    F       26:x
-+   F       27:x
-+î¹    F       28:x
-+   F       29:x
-+î»    F       30:x
-+î¼    F       31:x
-+î½    F       32:x
-+î¾    F       33:x
-+î¿    F       34:x
-+îÀ    F       35:x
-+îÁ    F       36:x
-+î    F       37:x
-+îà   F       38:x
-+îÄ    F       39:x
-+îÅ    F       40:x
-+îÆ    F       41:x
-+îÇ    F       42:x
-+îÈ    F       43:x
-+îÉ    F       44:x
-+îÊ    F       45:x
-+îË    F       46:x
-+îÌ    F       47:x
-+îÍ    F       48:x
-+îΠ   F       49:x
-+îÏ    F       50:x
-+îР   F       51:x
-+îÑ    F       52:x
-+îÒ    F       53:x
-+îÓ    F       54:x
-+îÔ    F       55:x
-+îÕ    F       56:x
-+îÖ    F       57:x
-+î×    F       58:x
-+îØ    F       59:x
-+îÙ    F       60:x
-+îÚ    F       61:x
-+îÛ    F       62:x
-+îÜ    F       63:x
-+îÝ    F       64:x
-+îÞ    F       65:x
-+îß    F       66:x
-+îà    F       67:x
-+îá    F       68:x
-+îâ    F       69:x
-+îã    F       70:x
-+îä    F       71:x
-+îå    F       72:x
-+îæ    F       73:x
-+îç    F       74:x
-+îè    F       75:x
-+îé    F       76:x
-+îê    F       77:x
-+îë    F       78:x
-+îì    F       79:x
-+îí    F       80:x
-+îî    F       81:x
-+îï    F       82:x
-+îð    F       83:x
-+îñ    F       84:x
-+îò    F       85:x
-+îó    F       86:x
-+îô    F       87:x
-+îõ    F       88:x
-+îö    F       89:x
-+î÷    F       90:x
-+îø    F       91:x
-+îù    F       92:x
-+îú    F       93:x
-+îû    F       94:x
-+îü    F       95:x
-+îý    F       96:x
-+îþ    F       97:x
-+ï¡    F       98:x
-+   F       99:x
-+   F       100:x
-+鸞   F       101:x
-+怒   F       102:x
-+裂   F       103:x
-+易   F       104:x
-+蘒   F       105:x
-+ï©    F       106:x
-+猪   F       107:x
-+ï«    F       108:x
-+ﬠ   F       109:x
-+ï­    F       110:x
-+ï®    F       111:x
-+ﯠ   F       112:x
-+ï°    F       113:x
-+ï±    F       114:x
-+ï²    F       115:x
-+ï³    F       116:x
-+ï´    F       117:x
-+ïµ    F       118:x
-+ﶠ   F       119:x
-+ï·    F       120:x
-+︠   F       121:x
-+ï¹    F       122:x
-+ﺠ   F       123:x
-+ï»    F       124:x
-+ï¼    F       125:x
-+ï½    F       126:x
-+ï¾    F       127:x
-+ï¿    F       128:x
-+ïÀ    F       129:x
-+ïÁ    F       130:x
-+ï    F       131:x
-+ïà   F       132:x
-+ïÄ    F       133:x
-+ïÅ    F       134:x
-+ïÆ    F       135:x
-+ïÇ    F       136:x
-+ïÈ    F       137:x
-+ïÉ    F       138:x
-+ïÊ    F       139:x
-+ïË    F       140:x
-+ïÌ    F       141:x
-+ïÍ    F       142:x
-+ïΠ   F       143:x
-+ïÏ    F       144:x
-+ïР   F       145:x
-+ïÑ    F       146:x
-+ïÒ    F       147:x
-+ïÓ    F       148:x
-+ïÔ    F       149:x
-+ïÕ    F       150:x
-+ïÖ    F       151:x
-+ï×    F       152:x
-+ïØ    F       153:x
-+ïÙ    F       154:x
-+ïÚ    F       155:x
-+ïÛ    F       156:x
-+ïÜ    F       157:x
-+ïÝ    F       158:x
-+ïÞ    F       159:x
-+ïß    F       160:x
-+ïà    F       161:x
-+ïá    F       162:x
-+ïâ    F       163:x
-+ïã    F       164:x
-+ïä    F       165:x
-+ïå    F       166:x
-+ïæ    F       167:x
-+ïç    F       168:x
-+ïè    F       169:x
-+ïé    F       170:x
-+ïê    F       171:x
-+ïë    F       172:x
-+ïì    F       173:x
-+ïí    F       174:x
-+ïî    F       175:x
-+ïï    F       176:x
-+ïð    F       177:x
-+ïñ    F       178:x
-+ïò    F       179:x
-+ïó    F       180:x
-+ïô    F       181:x
-+ïõ    F       182:x
-+ïö    F       183:x
-+ï÷    F       184:x
-+ïø    F       185:x
-+ïù    F       186:x
-+ïú    F       187:x
-+ïû    F       188:x
-+ïü    F       189:x
-+ïý    F       190:x
-+ïþ    F       191:x
-+ð¡    F       192:x
-+𢠠  F       193:x
-+𣠠  F       194:x
-+𤠠  F       195:x
-+𥠠  F       196:x
-+𦠠  F       197:x
-+𧠠  F       198:x
-+𨠠  F       199:x
-+ð©    F       200:x
-+𪠠  F       201:x
-+ð«    F       202:x
-+𬠠  F       203:x
-+ð­    F       204:x
-+ð®    F       205:x
-+刻  F       206:x
-+ð°    F       207:x
-+ð±    F       208:x
-+ð²    F       209:x
-+ð³    F       210:x
-+ð´    F       211:x
-+ðµ    F       212:x
-+𶠠  F       213:x
-+ð·    F       214:x
-+𸠠  F       215:x
-+ð¹    F       216:x
-+𺠠  F       217:x
-+ð»    F       218:x
-+ð¼    F       219:x
-+ð½    F       220:x
-+ð¾    F       221:x
-+ð¿    F       222:x
-+ðÀ    F       223:x
-+ðÁ    F       224:x
-+ð    F       225:x
-+ðà   F       226:x
-+ðÄ    F       227:x
-+ðÅ    F       228:x
-+ðÆ    F       229:x
-+ðÇ    F       230:x
-+ðÈ    F       231:x
-+ðÉ    F       232:x
-+ðÊ    F       233:x
-+ðË    F       234:x
-+ðÌ    F       235:x
-+ðÍ    F       236:x
-+ðΠ   F       237:x
-+ðÏ    F       238:x
-+ðР   F       239:x
-+ðÑ    F       240:x
-+ðÒ    F       241:x
-+ðÓ    F       242:x
-+ðÔ    F       243:x
-+ðÕ    F       244:x
-+ðÖ    F       245:x
-+ð×    F       246:x
-+ðØ    F       247:x
-+ðÙ    F       248:x
-+ðÚ    F       249:x
-+ðÛ    F       250:x
-+ðÜ    F       251:x
-+ðÝ    F       252:x
-+ðÞ    F       253:x
-+ðß    F       254:x
-+ðà    F       255:x
-+ðá    F       0:y
-+ðâ    F       1:y
-+ðã    F       2:y
-+ðä    F       3:y
-+ðå    F       4:y
-+ðæ    F       5:y
-+ðç    F       6:y
-+ðè    F       7:y
-+ðé    F       8:y
-+ðê    F       9:y
-+ðë    F       10:y
-+ðì    F       11:y
-+ðí    F       12:y
-+ðî    F       13:y
-+ðï    F       14:y
-+ðð    F       15:y
-+ðñ    F       16:y
-+ðò    F       17:y
-+ðó    F       18:y
-+ðô    F       19:y
-+ðõ    F       20:y
-+ðö    F       21:y
-+ð÷    F       22:y
-+ðø    F       23:y
-+ðù    F       24:y
-+ðú    F       25:y
-+ðû    F       26:y
-+ðü    F       27:y
-+ðý    F       28:y
-+ðþ    F       29:y
-+ñ¡    F       30:y
-+ñ¢    F       31:y
-+ñ£    F       32:y
-+ñ¤    F       33:y
-+ñ¥    F       34:y
-+ñ¦    F       35:y
-+ñ§    F       36:y
-+ñ¨    F       37:y
-+ñ©    F       38:y
-+ñª    F       39:y
-+ñ«    F       40:y
-+ñ¬    F       41:y
-+ñ­    F       42:y
-+ñ®    F       43:y
-+ñ¯    F       44:y
-+ñ°    F       45:y
-+ñ±    F       46:y
-+ñ²    F       47:y
-+ñ³    F       48:y
-+ñ´    F       49:y
-+ñµ    F       50:y
-+ñ¶    F       51:y
-+ñ·    F       52:y
-+ñ¸    F       53:y
-+ñ¹    F       54:y
-+ñº    F       55:y
-+ñ»    F       56:y
-+ñ¼    F       57:y
-+ñ½    F       58:y
-+ñ¾    F       59:y
-+ñ¿    F       60:y
-+ñÀ    F       61:y
-+ñÁ    F       62:y
-+ñ    F       63:y
-+ñà   F       64:y
-+ñÄ    F       65:y
-+ñÅ    F       66:y
-+ñÆ    F       67:y
-+ñÇ    F       68:y
-+ñÈ    F       69:y
-+ñÉ    F       70:y
-+ñÊ    F       71:y
-+ñË    F       72:y
-+ñÌ    F       73:y
-+ñÍ    F       74:y
-+ñΠ   F       75:y
-+ñÏ    F       76:y
-+ñР   F       77:y
-+ñÑ    F       78:y
-+ñÒ    F       79:y
-+ñÓ    F       80:y
-+ñÔ    F       81:y
-+ñÕ    F       82:y
-+ñÖ    F       83:y
-+ñ×    F       84:y
-+ñØ    F       85:y
-+ñÙ    F       86:y
-+ñÚ    F       87:y
-+ñÛ    F       88:y
-+ñÜ    F       89:y
-+ñÝ    F       90:y
-+ñÞ    F       91:y
-+ñß    F       92:y
-+ñà    F       93:y
-+ñá    F       94:y
-+ñâ    F       95:y
-+ñã    F       96:y
-+ñä    F       97:y
-+ñå    F       98:y
-+ñæ    F       99:y
-+ñç    F       100:y
-+ñè    F       101:y
-+ñé    F       102:y
-+ñê    F       103:y
-+ñë    F       104:y
-+ñì    F       105:y
-+ñí    F       106:y
-+ñî    F       107:y
-+ñï    F       108:y
-+ñð    F       109:y
-+ññ    F       110:y
-+ñò    F       111:y
-+ñó    F       112:y
-+ñô    F       113:y
-+ñõ    F       114:y
-+ñö    F       115:y
-+ñ÷    F       116:y
-+ñø    F       117:y
-+ñù    F       118:y
-+ñú    F       119:y
-+ñû    F       120:y
-+ñü    F       121:y
-+ñý    F       122:y
-+ñþ    F       123:y
-+ò¡    F       124:y
-+ò¢    F       125:y
-+ò£    F       126:y
-+ò¤    F       127:y
-+ò¥    F       128:y
-+ò¦    F       129:y
-+ò§    F       130:y
-+ò¨    F       131:y
-+ò©    F       132:y
-+òª    F       133:y
-+ò«    F       134:y
-+ò¬    F       135:y
-+ò­    F       136:y
-+ò®    F       137:y
-+ò¯    F       138:y
-+ò°    F       139:y
-+ò±    F       140:y
-+ò²    F       141:y
-+ò³    F       142:y
-+ò´    F       143:y
-+òµ    F       144:y
-+ò¶    F       145:y
-+ò·    F       146:y
-+ò¸    F       147:y
-+ò¹    F       148:y
-+òº    F       149:y
-+ò»    F       150:y
-+ò¼    F       151:y
-+ò½    F       152:y
-+ò¾    F       153:y
-+ò¿    F       154:y
-+òÀ    F       155:y
-+òÁ    F       156:y
-+ò    F       157:y
-+òà   F       158:y
-+òÄ    F       159:y
-+òÅ    F       160:y
-+òÆ    F       161:y
-+òÇ    F       162:y
-+òÈ    F       163:y
-+òÉ    F       164:y
-+òÊ    F       165:y
-+òË    F       166:y
-+òÌ    F       167:y
-+òÍ    F       168:y
-+òΠ   F       169:y
-+òÏ    F       170:y
-+òР   F       171:y
-+òÑ    F       172:y
-+òÒ    F       173:y
-+òÓ    F       174:y
-+òÔ    F       175:y
-+òÕ    F       176:y
-+òÖ    F       177:y
-+ò×    F       178:y
-+òØ    F       179:y
-+òÙ    F       180:y
-+òÚ    F       181:y
-+òÛ    F       182:y
-+òÜ    F       183:y
-+òÝ    F       184:y
-+òÞ    F       185:y
-+òß    F       186:y
-+òà    F       187:y
-+òá    F       188:y
-+òâ    F       189:y
-+òã    F       190:y
-+òä    F       191:y
-+òå    F       192:y
-+òæ    F       193:y
-+òç    F       194:y
-+òè    F       195:y
-+òé    F       196:y
-+òê    F       197:y
-+òë    F       198:y
-+òì    F       199:y
-+òí    F       200:y
-+òî    F       201:y
-+òï    F       202:y
-+òð    F       203:y
-+òñ    F       204:y
-+òò    F       205:y
-+òó    F       206:y
-+òô    F       207:y
-+òõ    F       208:y
-+òö    F       209:y
-+ò÷    F       210:y
-+òø    F       211:y
-+òù    F       212:y
-+òú    F       213:y
-+òû    F       214:y
-+òü    F       215:y
-+òý    F       216:y
-+òþ    F       217:y
-+ó¡    F       218:y
-+ó¢    F       219:y
-+ó£    F       220:y
-+ó¤    F       221:y
-+ó¥    F       222:y
-+ó¦    F       223:y
-+ó§    F       224:y
-+ó¨    F       225:y
-+ó©    F       226:y
-+óª    F       227:y
-+ó«    F       228:y
-+ó¬    F       229:y
-+ó­    F       230:y
-+ó®    F       231:y
-+ó¯    F       232:y
-+ó°    F       233:y
-+ó±    F       234:y
-+ó²    F       235:y
-+ó³    F       236:y
-+ó´    F       237:y
-+óµ    F       238:y
-+ó¶    F       239:y
-+ó·    F       240:y
-+ó¸    F       241:y
-+ó¹    F       242:y
-+óº    F       243:y
-+ó»    F       244:y
-+ó¼    F       245:y
-+ó½    F       246:y
-+ó¾    F       247:y
-+ó¿    F       248:y
-+óÀ    F       249:y
-+óÁ    F       250:y
-+ó    F       251:y
-+óà   F       252:y
-+óÄ    F       253:y
-+óÅ    F       254:y
-+óÆ    F       255:y
-+óÇ    F       0:z
-+óÈ    F       1:z
-+óÉ    F       2:z
-+óÊ    F       3:z
-+óË    F       4:z
-+óÌ    F       5:z
-+óÍ    F       6:z
-+óΠ   F       7:z
-+óÏ    F       8:z
-+óР   F       9:z
-+óÑ    F       10:z
-+óÒ    F       11:z
-+óÓ    F       12:z
-+óÔ    F       13:z
-+óÕ    F       14:z
-+óÖ    F       15:z
-+ó×    F       16:z
-+óØ    F       17:z
-+óÙ    F       18:z
-+óÚ    F       19:z
-+óÛ    F       20:z
-+óÜ    F       21:z
-+óÝ    F       22:z
-+óÞ    F       23:z
-+óß    F       24:z
-+óà    F       25:z
-+óá    F       26:z
-+óâ    F       27:z
-+óã    F       28:z
-+óä    F       29:z
-+óå    F       30:z
-+óæ    F       31:z
-+óç    F       32:z
-+óè    F       33:z
-+óé    F       34:z
-+óê    F       35:z
-+óë    F       36:z
-+óì    F       37:z
-+óí    F       38:z
-+óî    F       39:z
-+óï    F       40:z
-+óð    F       41:z
-+óñ    F       42:z
-+óò    F       43:z
-+óó    F       44:z
-+óô    F       45:z
-+óõ    F       46:z
-+óö    F       47:z
-+ó÷    F       48:z
-+óø    F       49:z
-+óù    F       50:z
-+óú    F       51:z
-+óû    F       52:z
-+óü    F       53:z
-+óý    F       54:z
-+óþ    F       55:z
-+ô¡    F       56:z
-+ô¢    F       57:z
-+ô£    F       58:z
-+ô¤    F       59:z
-diff -Naur groff-1.18.1.4.orig/font/devdvi/Makefile.sub groff-1.18.1.4/font/devdvi/Makefile.sub
---- groff-1.18.1.4.orig/font/devdvi/Makefile.sub       2002-02-27 02:23:12.000000000 +0000
-+++ groff-1.18.1.4/font/devdvi/Makefile.sub    2006-10-18 18:54:44.000000000 +0000
-@@ -3,15 +3,68 @@
-   TR TI TB TBI CW CWI HR HI HB HBI \
-   TREC TIEC TBEC TBIEC CWEC CWIEC HREC HIEC HBEC HBIEC \
-   TRTC TITC TBTC TBITC CWTC CWITC HRTC HITC HBTC HBITC \
--  MI S EX SA SB \
-+  MI S EX SA SB M G \
-   generate/CompileFonts generate/Makefile \
-   generate/msam.map generate/msbm.map \
-   generate/texb.map generate/texex.map generate/texi.map generate/texmi.map \
-   generate/texr.map generate/texsy.map generate/textt.map \
-   generate/ec.map generate/tc.map
--CLEANADD=DESC
-+CLEANADD=DESC M G
- DESC: DESC.in
-       cat $(srcdir)/DESC.in >DESC
-       test -z '$(DVIPRINT)' || echo print '$(DVIPRINT)' >>DESC
-+ 
-+M: M.proto-$(DVIFORMAT)
-+      @echo Making $@
-+      @-rm -f $@
-+      cp M.proto-$(DVIFORMAT) M
-+#     @if [ x$(DVIFORMAT) = xNTT ]; then \
-+#     sed -e 's/      F       /       959887,808326,151561    1       /' \
-+#         -e 's/:0$$/:dmjsy10/' \
-+#         -e 's/:1$$/:dmjroma10/' \
-+#         -e 's/:2$$/:dmjhira10/' \
-+#         -e 's/:3$$/:dmjkata10/' \
-+#         -e 's/:4$$/:dmjgreek10/' \
-+#         -e 's/:5$$/:dmjrussian10/' \
-+#         -e 's/:6$$/:dmjkeisen10/' \
-+#         -e 's/:a$$/:dmjka10/' \
-+#         -e 's/:b$$/:dmjkb10/' \
-+#         -e 's/:c$$/:dmjkc10/' \
-+#         -e 's/:d$$/:dmjkd10/' \
-+#         -e 's/:e$$/:dmjke10/' \
-+#         -e 's/:f$$/:dmjkf10/' \
-+#         -e 's/:g$$/:dmjkg10/' \
-+#         -e 's/:h$$/:dmjkh10/' \
-+#         -e 's/:i$$/:dmjki10/' \
-+#         -e 's/:j$$/:dmjkj10/' \
-+#         -e 's/:k$$/:dmjkk10/' \
-+#         -e 's/:l$$/:dmjkl10/' \
-+#         -e 's/:m$$/:dmjkm10/' \
-+#         -e 's/:n$$/:dmjkn10/' \
-+#         -e 's/:o$$/:dmjko10/' \
-+#         -e 's/:p$$/:dmjkp10/' \
-+#         -e 's/:q$$/:dmjkq10/' \
-+#         -e 's/:r$$/:dmjkr10/' \
-+#         -e 's/:s$$/:dmjks10/' \
-+#         -e 's/:t$$/:dmjkt10/' \
-+#         -e 's/:u$$/:dmjku10/' \
-+#         -e 's/:v$$/:dmjkv10/' \
-+#         -e 's/:w$$/:dmjkw10/' \
-+#         -e 's/:x$$/:dmjkx10/' \
-+#         -e 's/:y$$/:dmjky10/' \
-+#         -e 's/:z$$/:dmjkz10/' \
-+#         < M.proto-NTT > M ;\
-+#     else \
-+#     ../devnippon/createM -jis "1006514,815360,145600" 1 < M.proto-ASCII | \
-+#         sed -f FixMetric.sed > M ;\
-+#     fi
-+      
-+G: M
-+      @echo Making $@
-+      @-rm -f $@
-+      @sed -e 's/name M/name G/' \
-+           -e 's/dmj/dgj/' \
-+           -e 's/internalname min10/internalname goth10/' \
-+           < M > G
-diff -Naur groff-1.18.1.4.orig/font/devhtml/DESC.proto groff-1.18.1.4/font/devhtml/DESC.proto
---- groff-1.18.1.4.orig/font/devhtml/DESC.proto        2002-08-07 12:52:23.000000000 +0000
-+++ groff-1.18.1.4/font/devhtml/DESC.proto     2006-10-18 18:54:44.000000000 +0000
-@@ -3,7 +3,11 @@
- vert 40
- unitwidth 10
- sizes 6 8 10 12 14 16 18 0
--fonts 9 R I B BI CR CI CB CBI S
-+fonts 11 R I B BI CR CI CB CBI S M G
-+fontset B G 2E00..9FFF
-+fontset - M 2E00..9FFF
-+fontset B G FF00..FFEF
-+fontset - M FF00..FFEF
- tcommand
- html
- postpro post-grohtml
-diff -Naur groff-1.18.1.4.orig/font/devhtml/M.proto groff-1.18.1.4/font/devhtml/M.proto
---- groff-1.18.1.4.orig/font/devhtml/M.proto   1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devhtml/M.proto        2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,5 @@
-+name M
-+spacewidth 16
-+charset
-+u2E00..u9FFF 16,14,2 0
-+uFF00..uFFEF 16,14,2 0
-diff -Naur groff-1.18.1.4.orig/font/devhtml/Makefile.sub groff-1.18.1.4/font/devhtml/Makefile.sub
---- groff-1.18.1.4.orig/font/devhtml/Makefile.sub      2002-08-07 12:52:23.000000000 +0000
-+++ groff-1.18.1.4/font/devhtml/Makefile.sub   2006-10-18 18:54:44.000000000 +0000
-@@ -1,8 +1,10 @@
- DEV=html
- PROTOFONTS=R I B BI CR CI CB CBI
- FONTS=$(PROTOFONTS) S
--DEVFILES=$(FONTS) DESC
--CLEANADD=$(FONTS) DESC
-+WFONTS=M G
-+ALLFONTS=$(FONTS) $(WFONTS)
-+DEVFILES=$(ALLFONTS) DESC
-+CLEANADD=$(ALLFONTS) DESC
- RES=240
- CPI=10
-@@ -13,8 +15,8 @@
-       @-rm -f $@
-       @(charwidth=`expr $(RES) / $(CPI)` ; \
-        sed -e "s/^name [A-Z]*$$/name $@/" \
--           -e "s/^\\([^       ]*\\)   [0-9]+  /\\1    $$charwidth     /" \
--           -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \
-+           -e "s/^\\([^       ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-+           -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-            -e "s/^internalname .*$$/internalname $@/" \
-            -e "/^internalname/s/CR/4/" \
-            -e "/^internalname/s/BI/3/" \
-@@ -29,6 +31,19 @@
-       @sed -e "s/^res .*$$/res $(RES)/" \
-           -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-           -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
--          -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
-+          -e "s/^fonts .*$$/fonts `set $(ALLFONTS); echo $$#` $(ALLFONTS)/" \
-           $(srcdir)/DESC.proto >$@
-+M: M.proto
-+      @echo Making M
-+      @-rm -f M
-+      @(wcharwidth=`expr $(RES) / $(CPI) \* 2`; \
-+        spacewidth=`expr $(RES) / $(CPI)`; \
-+       sed -e "s/^u\\([0-9A-F]*\\)..u\\([0-9A-F]*\\) [0-9][0-9]*/u\\1..u\\2 $$wcharwidth/" \
-+           -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$spacewidth/" \
-+         $(srcdir)/M.proto > $@)
-+
-+G: M
-+      @echo Making G
-+      @-rm -f G
-+      @sed -e 's/name M/name G/' M > G
-diff -Naur groff-1.18.1.4.orig/font/devlbp/Makefile.sub groff-1.18.1.4/font/devlbp/Makefile.sub
---- groff-1.18.1.4.orig/font/devlbp/Makefile.sub       2002-03-08 07:33:49.000000000 +0000
-+++ groff-1.18.1.4/font/devlbp/Makefile.sub    2006-10-18 18:54:44.000000000 +0000
-@@ -13,9 +13,9 @@
-       -rm -f DESC
-       cat $(srcdir)/DESC.in >>DESC
-       if test "$(PAGE)" = A4; then \
--        echo "papersize a4" >>DESC; \
-+        echo "papersize /etc/papersize a4" >>DESC; \
-       else \
--        echo "papersize letter" >>DESC; \
-+        echo "papersize /etc/papersize letter" >>DESC; \
-       fi
-       test -z '$(LBPPRINT)' || echo print '$(LBPPRINT)' >>DESC
-diff -Naur groff-1.18.1.4.orig/font/devlj4/Makefile.sub groff-1.18.1.4/font/devlj4/Makefile.sub
---- groff-1.18.1.4.orig/font/devlj4/Makefile.sub       2000-02-06 09:35:37.000000000 +0000
-+++ groff-1.18.1.4/font/devlj4/Makefile.sub    2006-10-18 18:54:44.000000000 +0000
-@@ -22,9 +22,9 @@
-       echo "unitwidth `expr 7620000 / $(LJ4RES)`" >>DESC
-       cat $(srcdir)/DESC.in >>DESC
-       if test "$(PAGE)" = A4; then \
--        echo "papersize a4" >>DESC; \
-+        echo "papersize /etc/papersize a4" >>DESC; \
-       else \
--        echo "papersize letter" >>DESC; \
-+        echo "papersize /etc/papersize letter" >>DESC; \
-       fi
-       test -z '$(LJ4PRINT)' || echo print '$(LJ4PRINT)' >>DESC
-diff -Naur groff-1.18.1.4.orig/font/devnippon/DESC.proto groff-1.18.1.4/font/devnippon/DESC.proto
---- groff-1.18.1.4.orig/font/devnippon/DESC.proto      1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devnippon/DESC.proto   2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,12 @@
-+res 240
-+hor 24
-+vert 40
-+unitwidth 10
-+sizes 10 0
-+fonts 6 R I B BI M G
-+fontset B G 2E00..9FFF
-+fontset - M 2E00..9FFF
-+fontset B G FF00..FFEF
-+fontset - M FF00..FFEF
-+tcommand
-+postpro grotty
-diff -Naur groff-1.18.1.4.orig/font/devnippon/M.proto groff-1.18.1.4/font/devnippon/M.proto
---- groff-1.18.1.4.orig/font/devnippon/M.proto 1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devnippon/M.proto      2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,6 @@
-+name M
-+internalname 4
-+spacewidth 48
-+charset
-+u2E00..u9FFF 48 0
-+uFF00..uFFEF 48 0
-diff -Naur groff-1.18.1.4.orig/font/devnippon/Makefile.sub groff-1.18.1.4/font/devnippon/Makefile.sub
---- groff-1.18.1.4.orig/font/devnippon/Makefile.sub    1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devnippon/Makefile.sub 2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,48 @@
-+DEV=nippon
-+FONTS=R I B BI
-+WFONTS=M G
-+ALLFONTS=$(FONTS) $(WFONTS)
-+DEVFILES=$(ALLFONTS) DESC
-+CLEANADD=$(ALLFONTS) DESC
-+
-+RES=240
-+CPI=10
-+LPI=6
-+
-+$(FONTS): R.proto
-+      @echo Making $@
-+      @-rm -f $@
-+      @(charwidth=`expr $(RES) / $(CPI)` ; \
-+       sed -e "s/^name [A-Z]*$$/name $@/" \
-+           -e "s/^\\([^       ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-+           -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-+           -e "s/^internalname .*$$/internalname $@/" \
-+           -e "/^internalname/s/BI/3/" \
-+           -e "/^internalname/s/B/2/" \
-+           -e "/^internalname/s/I/1/" \
-+           -e "/^internalname .*[^ 0-9]/d" \
-+           $(srcdir)/R.proto >$@)
-+
-+M: M.proto
-+      @echo Making M
-+      @-rm -f M
-+      @(wcharwidth=`expr $(RES) / $(CPI) \* 2` ; \
-+        spacewidth=`expr $(RES) / $(CPI)` ; \
-+        sed -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$spacewidth/" \
-+            -e "s/^u\\([0-9A-F]*\\)..u\\([0-9A-F]*\\) [0-9][0-9]*/u\\1..u\\2 $$wcharwidth/" \
-+        $(srcdir)/M.proto > $@)
-+
-+G: M
-+      @echo Making G
-+      @-rm -f G
-+      @sed -e 's/name M/name G/' \
-+          -e 's/internalname 4/internalname 5/' M > G
-+              
-+DESC: DESC.proto
-+      @echo Making $@
-+      @-rm -f $@
-+      @sed -e "s/^res .*$$/res $(RES)/" \
-+          -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-+          -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
-+          -e "s/^fonts .*$$/fonts `set $(ALLFONTS); echo $$#` $(ALLFONTS)/" \
-+          $(srcdir)/DESC.proto >$@
-diff -Naur groff-1.18.1.4.orig/font/devnippon/R.proto groff-1.18.1.4/font/devnippon/R.proto
---- groff-1.18.1.4.orig/font/devnippon/R.proto 1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devnippon/R.proto      2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,167 @@
-+name R
-+internalname 0
-+spacewidth 24
-+charset
-+!     24      0       0041
-+"     24      0       0042
-+dq    "
-+lq    "
-+rq    "
-+#     24      0       0043
-+sh    "
-+$     24      0       0044
-+Do    "
-+%     24      0       0045
-+&     24      0       0046
-+'     24      0       0047
-+aa    "
-+fm    "
-+aq    "
-+cq    "
-+(     24      0       0050
-+)     24      0       0051
-+*     24      0       0052
-+**    "
-++     24      0       0053
-+pl    "
-+,     24      0       0054
-+\-    24      0       0055
-+hy    "
-+-     "
-+mi    "
-+en    "
-+.     24      0       0056
-+/     24      0       0057
-+sl    "
-+f/    "
-+0     24      0       0060
-+1     24      0       0061
-+2     24      0       0062
-+3     24      0       0063
-+4     24      0       0064
-+5     24      0       0065
-+6     24      0       0066
-+7     24      0       0067
-+8     24      0       0070
-+9     24      0       0071
-+:     24      0       0072
-+;     24      0       0073
-+<     24      0       0074
-+la    "
-+fo    "
-+=     24      0       0075
-+eq    "
-+>     24      0       0076
-+ra    "
-+fc    "
-+?     24      0       0077
-+@     24      0       0100
-+at    "
-+A     24      0       0101
-+*A    "
-+B     24      0       0102
-+*B    "
-+C     24      0       0103
-+D     24      0       0104
-+E     24      0       0105
-+*E    "
-+F     24      0       0106
-+G     24      0       0107
-+H     24      0       0110
-+*Y    "
-+I     24      0       0111
-+*I    "
-+J     24      0       0112
-+K     24      0       0113
-+*K    "
-+L     24      0       0114
-+M     24      0       0115
-+*M    "
-+N     24      0       0116
-+*N    "
-+O     24      0       0117
-+ci    "
-+*O    "
-+P     24      0       0120
-+*R    "
-+Q     24      0       0121
-+R     24      0       0122
-+S     24      0       0123
-+T     24      0       0124
-+*T    "
-+U     24      0       0125
-+V     24      0       0126
-+W     24      0       0127
-+X     24      0       0130
-+*X    "
-+Y     24      0       0131
-+*U    "
-+Z     24      0       0132
-+*Z    "
-+[     24      0       0133
-+lB    "
-+\     24      0       0134
-+rs    "
-+]     24      0       0135
-+rB    "
-+a^    24      0       0136
-+^     "
-+ha    "
-+_     24      0       0137
-+ru    "
-+ul    "
-+`     24      0       0140
-+oq    "
-+ga    "
-+a     24      0       0141
-+b     24      0       0142
-+c     24      0       0143
-+d     24      0       0144
-+e     24      0       0145
-+f     24      0       0146
-+g     24      0       0147
-+h     24      0       0150
-+i     24      0       0151
-+.i    "
-+j     24      0       0152
-+k     24      0       0153
-+l     24      0       0154
-+m     24      0       0155
-+n     24      0       0156
-+o     24      0       0157
-+*o    "
-+p     24      0       0160
-+q     24      0       0161
-+r     24      0       0162
-+s     24      0       0163
-+t     24      0       0164
-+u     24      0       0165
-+v     24      0       0166
-+w     24      0       0167
-+x     24      0       0170
-+mu    "
-+y     24      0       0171
-+z     24      0       0172
-+lC    24      0       0173
-+{     "
-+ba    24      0       0174
-+or    "
-+bv    "
-+br    "
-+|     "
-+lb    "
-+lc    "
-+lf    "
-+lk    "
-+lt    "
-+rb    "
-+rc    "
-+rf    "
-+rk    "
-+rt    "
-+rC    24      0       0175
-+}     "
-+a~    24      0       0176
-+~     "
-+ap    "
-+ti    "
-diff -Naur groff-1.18.1.4.orig/font/devps/DESC.in groff-1.18.1.4/font/devps/DESC.in
---- groff-1.18.1.4.orig/font/devps/DESC.in     2000-02-06 09:35:57.000000000 +0000
-+++ groff-1.18.1.4/font/devps/DESC.in  2006-10-18 18:54:44.000000000 +0000
-@@ -1,11 +1,33 @@
- res 72000
- hor 1
- vert 1
-+lowerwchar 300
-+wcharkern 400
- sizescale 1000
- unitwidth 1000
- sizes 1000-10000000 0
- styles R I B BI
- family T
--fonts 9 0 0 0 0 0 SS S ZD ZDR
-+fonts 11 0 0 0 0 0 SS S ZD ZDR M G
-+fontset B G 2E00..9FFF
-+fontset AB G 2E00..9FFF
-+fontset BMB G 2E00..9FFF
-+fontset CB G 2E00..9FFF
-+fontset HB G 2E00..9FFF
-+fontset HNB G 2E00..9FFF
-+fontset NB G 2E00..9FFF
-+fontset PB G 2E00..9FFF
-+fontset TB G 2E00..9FFF
-+fontset - M 2E00..9FFF
-+fontset B G FF00..FFEF
-+fontset AB G FF00..FFEF
-+fontset BMB G FF00..FFEF
-+fontset CB G FF00..FFEF
-+fontset HB G FF00..FFEF
-+fontset HNB G FF00..FFEF
-+fontset NB G FF00..FFEF
-+fontset PB G FF00..FFEF
-+fontset TB G FF00..FFEF
-+fontset - M FF00..FFEF
- tcommand
- postpro grops
-diff -Naur groff-1.18.1.4.orig/font/devps/M.proto groff-1.18.1.4/font/devps/M.proto
---- groff-1.18.1.4.orig/font/devps/M.proto     1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devps/M.proto  2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,9 @@
-+name M
-+internalname Ryumin-Light-EUC-H
-+spacewidth 250
-+encodingname EUC-JP
-+charset
-+u2E00..u9FFF 1000 3
-+uFF00..uFF5F 1000 3
-+uFF60..uFF9F 500 3
-+uFFA0..uFFEF 1000 3
-diff -Naur groff-1.18.1.4.orig/font/devps/Makefile.sub groff-1.18.1.4/font/devps/Makefile.sub
---- groff-1.18.1.4.orig/font/devps/Makefile.sub        2002-06-04 13:03:19.000000000 +0000
-+++ groff-1.18.1.4/font/devps/Makefile.sub     2006-10-18 18:54:44.000000000 +0000
-@@ -2,23 +2,23 @@
- DISTFILES=text.enc download \
-   S ZD ZDR SS AB ABI AI AR BMB BMBI BMI BMR \
-   CB CBI CI CR HB HBI HI HR HNB HNBI HNI HNR \
--  NB NBI NI NR PB PBI PI PR TB TBI TI TR ZCMI
-+  NB NBI NI NR PB PBI PI PR TB TBI TI TR ZCMI M G
- PSFILES=prologue symbolsl.pfa zapfdr.pfa
- DEVGENFILES=generate/Makefile generate/afmname generate/dingbats.map \
-   generate/dingbats.rmap generate/lgreekmap generate/symbol.sed \
-   generate/symbolchars generate/symbolsl.afm generate/textmap
- DEVFILES=DESC $(PSFILES) $(DISTFILES) $(DEVGENFILES)
--CLEANADD=DESC $(PSFILES)
-+CLEANADD=DESC $(PSFILES) M G
- DESC: DESC.in
-       -rm -f DESC
-       cat $(srcdir)/DESC.in >DESC
-       echo broken $(BROKEN_SPOOLER_FLAGS) >>DESC
-       if test "$(PAGE)" = A4; then \
--        echo "papersize a4" >>DESC; \
-+        echo "papersize /etc/papersize a4" >>DESC; \
-       else \
--        echo "papersize letter" >>DESC; \
-+        echo "papersize /etc/papersize letter" >>DESC; \
-       fi
-       test -z '$(PSPRINT)' || echo print '$(PSPRINT)' >>DESC
-@@ -33,3 +33,14 @@
- $(PSFILES):
-       -rm -f $@
-       sed -f $(srcdir)/psstrip.sed $? >$@
-+
-+M: M.proto
-+      @echo Making M
-+      @-rm -f M
-+      @cp M.proto M
-+
-+G: M
-+      @echo Making G
-+      @-rm -f G
-+      @sed -e 's/name M/name G/' \
-+          -e 's/internalname Ryumin-Light-EUC-H/internalname GothicBBB-Medium-EUC-H/' M > G
-diff -Naur groff-1.18.1.4.orig/font/devutf8/DESC.proto groff-1.18.1.4/font/devutf8/DESC.proto
---- groff-1.18.1.4.orig/font/devutf8/DESC.proto        2000-02-06 09:36:22.000000000 +0000
-+++ groff-1.18.1.4/font/devutf8/DESC.proto     2006-10-18 18:54:44.000000000 +0000
-@@ -3,6 +3,10 @@
- vert 40
- unitwidth 10
- sizes 10 0
--fonts 4 R I B BI
-+fonts 6 R I B BI M G
-+fontset B G 2E00..9FFF
-+fontset B G FF00..FFEF
-+fontset - M 2E00..9FFF
-+fontset - M FF00..FFEF
- tcommand
- postpro grotty
-diff -Naur groff-1.18.1.4.orig/font/devutf8/M.proto groff-1.18.1.4/font/devutf8/M.proto
---- groff-1.18.1.4.orig/font/devutf8/M.proto   1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/font/devutf8/M.proto        2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,6 @@
-+name M
-+internalname 4
-+spacewidth 48
-+charset
-+u2E00..u9FFF 48 0
-+uFF00..uFFEF 48 0
-diff -Naur groff-1.18.1.4.orig/font/devutf8/Makefile.sub groff-1.18.1.4/font/devutf8/Makefile.sub
---- groff-1.18.1.4.orig/font/devutf8/Makefile.sub      2000-02-06 09:36:22.000000000 +0000
-+++ groff-1.18.1.4/font/devutf8/Makefile.sub   2006-10-18 18:54:44.000000000 +0000
-@@ -1,7 +1,8 @@
- DEV=utf8
- FONTS=R I B BI
--DEVFILES=$(FONTS) DESC
--CLEANADD=$(FONTS) DESC
-+WFONTS=M G
-+DEVFILES=$(FONTS) $(WFONTS) DESC
-+CLEANADD=$(FONTS) $(WFONTS) DESC
- RES=240
- CPI=10
-@@ -12,8 +13,8 @@
-       @-rm -f $@
-       @(charwidth=`expr $(RES) / $(CPI)` ; \
-        sed -e "s/^name [A-Z]*$$/name $@/" \
--           -e "s/^\\([^       ]*\\)   [0-9]+  /\\1    $$charwidth     /" \
--           -e "s/^spacewidth [0-9]+$$/spacewidth $$charwidth/" \
-+           -e "s/^\\([^       ]*\\)   [0-9][0-9]*     /\\1    $$charwidth     /" \
-+           -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$charwidth/" \
-            -e "s/^internalname .*$$/internalname $@/" \
-            -e "/^internalname/s/BI/3/" \
-            -e "/^internalname/s/B/2/" \
-@@ -21,12 +22,27 @@
-            -e "/^internalname .*[^ 0-9]/d" \
-            $(srcdir)/R.proto >$@)
-+M: M.proto
-+      @echo Making M
-+      @-rm -f M
-+      (wcharwidth=`expr $(RES) / $(CPI) \* 2` ; \
-+        spacewidth=`expr $(RES) / $(CPI)` ; \
-+        sed -e "s/^spacewidth [0-9][0-9]*$$/spacewidth $$spacewidth/" \
-+            -e "s/^u\\([0-9A-F]*\\)..u\\([0-9A-F]*\\) [0-9][0-9]*/u\\1..u\\2 $$wcharwidth/" \
-+        $(srcdir)/M.proto > $@)
-+
-+G: M
-+      @echo Making G
-+      @-rm -f G
-+      @sed -e 's/name M/name G/' \
-+          -e 's/internalname 4/internalname 5/' M > G
-+
- DESC: DESC.proto
-       @echo Making $@
-       @-rm -f $@
-       @sed -e "s/^res .*$$/res $(RES)/" \
-           -e "s/^hor .*$$/hor `expr $(RES) / $(CPI)`/" \
-           -e "s/^vert .*$$/vert `expr $(RES) / $(LPI)`/" \
--          -e "s/^fonts .*$$/fonts `set $(FONTS); echo $$#` $(FONTS)/" \
-+          -e "s/^fonts .*$$/fonts `set $(FONTS) $(WFONTS); echo $$#` $(FONTS) $(WFONTS)/" \
-           $(srcdir)/DESC.proto >$@
-diff -Naur groff-1.18.1.4.orig/man/ditroff.man groff-1.18.1.4/man/ditroff.man
---- groff-1.18.1.4.orig/man/ditroff.man        2002-02-19 16:28:30.000000000 +0000
-+++ groff-1.18.1.4/man/ditroff.man     2006-10-18 18:54:44.000000000 +0000
-@@ -18,6 +18,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup
-diff -Naur groff-1.18.1.4.orig/man/groff.man groff-1.18.1.4/man/groff.man
---- groff-1.18.1.4.orig/man/groff.man  2002-06-29 20:46:03.000000000 +0000
-+++ groff-1.18.1.4/man/groff.man       2006-10-18 18:54:44.000000000 +0000
-@@ -19,6 +19,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup
-diff -Naur groff-1.18.1.4.orig/man/groff_char.man groff-1.18.1.4/man/groff_char.man
---- groff-1.18.1.4.orig/man/groff_char.man     2002-07-20 03:54:14.000000000 +0000
-+++ groff-1.18.1.4/man/groff_char.man  2006-10-18 18:54:44.000000000 +0000
-@@ -32,6 +32,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup Part 1
-diff -Naur groff-1.18.1.4.orig/man/groff_diff.man groff-1.18.1.4/man/groff_diff.man
---- groff-1.18.1.4.orig/man/groff_diff.man     2002-07-05 15:04:22.000000000 +0000
-+++ groff-1.18.1.4/man/groff_diff.man  2006-10-18 18:54:44.000000000 +0000
-@@ -23,6 +23,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup
-diff -Naur groff-1.18.1.4.orig/man/groff_out.man groff-1.18.1.4/man/groff_out.man
---- groff-1.18.1.4.orig/man/groff_out.man      2002-09-12 10:00:17.000000000 +0000
-+++ groff-1.18.1.4/man/groff_out.man   2006-10-18 18:54:44.000000000 +0000
-@@ -19,6 +19,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup
-diff -Naur groff-1.18.1.4.orig/man/groff_tmac.man groff-1.18.1.4/man/groff_tmac.man
---- groff-1.18.1.4.orig/man/groff_tmac.man     2002-08-21 07:37:10.000000000 +0000
-+++ groff-1.18.1.4/man/groff_tmac.man  2006-10-18 18:54:44.000000000 +0000
-@@ -32,6 +32,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup
-diff -Naur groff-1.18.1.4.orig/man/roff.man groff-1.18.1.4/man/roff.man
---- groff-1.18.1.4.orig/man/roff.man   2002-04-23 04:28:59.000000000 +0000
-+++ groff-1.18.1.4/man/roff.man        2006-10-18 18:54:44.000000000 +0000
-@@ -18,6 +18,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup
-diff -Naur groff-1.18.1.4.orig/mdate.sh groff-1.18.1.4/mdate.sh
---- groff-1.18.1.4.orig/mdate.sh       2001-03-09 15:26:30.000000000 +0000
-+++ groff-1.18.1.4/mdate.sh    2006-10-18 18:54:44.000000000 +0000
-@@ -2,41 +2,4 @@
- # Print the modification date of $1 `nicely'.
--# Don't want foreign dates.
--
--LANGUAGE=
--LC_ALL=C; export LC_ALL
--
--
--(date;
--if ls -L /dev/null 1>/dev/null 2>&1; then ls -L -l $1; else ls -l $1; fi
--) | awk '
--BEGIN {
--      full["Jan"] = "January"; number["Jan"] = 1;
--      full["Feb"] = "February"; number["Feb"] = 2;
--      full["Mar"] = "March"; number["Mar"] = 3;
--      full["Apr"] = "April"; number["Apr"] = 4;
--      full["May"] = "May"; number["May"] = 5;
--      full["Jun"] = "June"; number["Jun"] = 6;
--      full["Jul"] = "July"; number["Jul"] = 7;
--      full["Aug"] = "August"; number["Aug"] = 8;
--      full["Sep"] = "September"; number["Sep"] = 9;
--      full["Oct"] = "October"; number["Oct"] = 10;
--      full["Nov"] = "November"; number["Nov"] = 11;
--      full["Dec"] = "December"; number["Dec"] = 12;
--}
--
--NR == 1 {
--      month = $2;
--      year = $NF;
--}
--
--NR == 2 {
--      if ($(NF-1) ~ /:/) {
--              if (number[$(NF-3)] > number[month])
--                      year--;
--      }
--      else
--              year = $(NF-1);
--      print $(NF-2), full[$(NF-3)], year
--}'
-+perl -MPOSIX -le 'print strftime("%d %B %Y", localtime((stat $ARGV[0])[9]))' $1
-diff -Naur groff-1.18.1.4.orig/src/devices/grodvi/dvi.cc groff-1.18.1.4/src/devices/grodvi/dvi.cc
---- groff-1.18.1.4.orig/src/devices/grodvi/dvi.cc      2002-03-01 01:15:36.000000000 +0000
-+++ groff-1.18.1.4/src/devices/grodvi/dvi.cc   2006-10-18 18:54:44.000000000 +0000
-@@ -21,6 +21,7 @@
- #include "driver.h"
- #include "nonposix.h"
-+#include "encoding.h" 
- extern "C" const char *Version_string;
-@@ -104,6 +105,9 @@
- struct output_font {
-   dvi_font *f;
-   int point_size;
-+#ifdef        ENABLE_MULTIBYTE
-+  const char *sf;             // subfont name
-+#endif
-   output_font() : f(0) { }
- };
-@@ -121,6 +125,9 @@
-   output_font output_font_table[FONTS_MAX];
-   font *cur_font;
-   int cur_point_size;
-+#ifdef ENABLE_MULTIBYTE
-+  const char *cur_subfont;
-+#endif
-   color cur_color;
-   int pushed;
-   int pushed_h;
-@@ -341,9 +348,18 @@
-   if (*env->col != cur_color)
-     set_color(env->col);
-   int code = f->get_code(index);
-+#ifdef ENABLE_MULTIBYTE
-+  const char *sf = f->get_subfont_name(index);
-+  if (env->size != cur_point_size || f != cur_font ||
-+     (sf != cur_subfont && strcmp(sf, cur_subfont))) {
-+#else
-   if (env->size != cur_point_size || f != cur_font) {
-+#endif
-     cur_font = f;
-     cur_point_size = env->size;
-+#ifdef ENABLE_MULTIBYTE
-+    cur_subfont = sf;
-+#endif
-     int i;
-     for (i = 0;; i++) {
-       if (i >= FONTS_MAX) {
-@@ -352,9 +368,16 @@
-       if (output_font_table[i].f == 0) {
-       output_font_table[i].f = (dvi_font *)cur_font;
-       output_font_table[i].point_size = cur_point_size;
-+#ifdef        ENABLE_MULTIBYTE
-+      output_font_table[i].sf = cur_subfont;
-+#endif
-       define_font(i);
-       }
-       if (output_font_table[i].f == cur_font
-+#ifdef        ENABLE_MULTIBYTE
-+        && (output_font_table[i].sf == cur_subfont ||
-+            strcmp(output_font_table[i].sf, cur_subfont) == 0)
-+#endif
-         && output_font_table[i].point_size == cur_point_size)
-       break;
-     }
-@@ -398,7 +421,13 @@
-   out4(f->checksum);
-   out4(output_font_table[i].point_size*RES_7227);
-   out4(int((double(f->design_size)/(1<<20))*RES_7227*100 + .5));
-+#ifdef        ENABLE_MULTIBYTE
-+  const char *nm;
-+  if (!(nm = output_font_table[i].sf))
-+    nm = f->get_internal_name();
-+#else
-   const char *nm = f->get_internal_name();
-+#endif
-   out1(0);
-   out_string(nm);
- }
-@@ -889,6 +918,7 @@
-   program_name = argv[0];
-   static char stderr_buf[BUFSIZ];
-   setbuf(stderr, stderr_buf);
-+  init_encoding_handler();
-   int c;
-   static const struct option long_options[] = {
-     { "help", no_argument, 0, CHAR_MAX + 1 },
-diff -Naur groff-1.18.1.4.orig/src/devices/grohtml/html.h groff-1.18.1.4/src/devices/grohtml/html.h
---- groff-1.18.1.4.orig/src/devices/grohtml/html.h     2002-02-17 17:05:53.000000000 +0000
-+++ groff-1.18.1.4/src/devices/grohtml/html.h  2006-10-18 18:54:44.000000000 +0000
-@@ -49,6 +49,9 @@
- class simple_output {
- public:
-   simple_output(FILE *, int max_line_length);
-+#ifdef ENABLE_MULTIBYTE
-+  simple_output &put_string(const wchar *, int);
-+#endif
-   simple_output &put_string(const char *, int);
-   simple_output &put_string(const char *s);
-   simple_output &put_string(const string &s);
-diff -Naur groff-1.18.1.4.orig/src/devices/grohtml/post-html.cc groff-1.18.1.4/src/devices/grohtml/post-html.cc
---- groff-1.18.1.4.orig/src/devices/grohtml/post-html.cc       2006-10-14 12:32:59.000000000 +0000
-+++ groff-1.18.1.4/src/devices/grohtml/post-html.cc    2006-10-18 18:54:44.000000000 +0000
-@@ -29,6 +29,7 @@
- #include "html.h"
- #include "html-text.h"
- #include "html-table.h"
-+#include "encoding.h" // XXX: ukai
- #include <time.h>
-@@ -280,6 +281,9 @@
- public:
-   char_buffer();
-   ~char_buffer();
-+#ifdef ENABLE_MULTIBYTE
-+  char  *add_string(const wchar *, unsigned int);
-+#endif
-   char  *add_string(const char *, unsigned int);
-   char  *add_string(const string &);
- private:
-@@ -301,6 +305,43 @@
-   }
- }
-+#ifdef ENABLE_MULTIBYTE
-+char *char_buffer::add_string (const wchar *s, unsigned int length)
-+{
-+  int i=0;
-+  unsigned int old_used;
-+
-+  if (tail == 0) {
-+    tail = new char_block;
-+    head = tail;
-+  } else {
-+    if (tail->used + length*2 + 1 > char_block::SIZE) {
-+      tail->next = new char_block;
-+      tail       = tail->next;
-+    }
-+  }
-+  // at this point we have a tail which is ready for the string.
-+  if (tail->used + length*2 + 1 > char_block::SIZE) {
-+    fatal("need to increase char_block::SIZE");
-+  }
-+
-+  old_used = tail->used;
-+  do {
-+    length -= output_encoding->put_wchar(s[i], (unsigned char *)tail->buffer, &tail->used, length*2);
-+    i++;
-+  } while (length>0);
-+
-+  // add terminating nul character
-+
-+  tail->buffer[tail->used] = '\0';
-+  tail->used++;
-+
-+  // and return start of new string
-+
-+  return( &tail->buffer[old_used] );
-+}
-+#endif
-+
- char *char_buffer::add_string (const char *s, unsigned int length)
- {
-   int i=0;
-@@ -320,6 +361,7 @@
-   }
-   old_used = tail->used;
-+  /* XXX: encoding - ukai */
-   do {
-     tail->buffer[tail->used] = s[i];
-     tail->used++;
-@@ -1917,6 +1959,15 @@
-     current_paragraph->do_para(&html, "", indentation, pageoffset, linelength);
-   }
-+#if 0 // def ENABLE_MULTIBYTE /* XXX */
-+  else if (strcmp(fontname, "M") == 0) {
-+    current_paragraph->done_bold();
-+    current_paragraph->done_italic();
-+    current_paragraph->done_tt();
-+  } else if (strcmp(fontname, "G") == 0) {
-+    current_paragraph->do_bold();
-+  }
-+#endif
- }
- void html_printer::determine_header_level (int level)
-@@ -2948,6 +2999,11 @@
-     current_paragraph->done_italic();
-     current_paragraph->done_tt();
-   }
-+#ifdef ENABLE_MULTIBYTE
-+  else if (strcmp(fontname, "G") == 0) {
-+    current_paragraph->done_bold();
-+  }
-+#endif
- }
- /*
-@@ -2992,6 +3048,15 @@
-     current_paragraph->do_italic();
-     current_paragraph->do_bold();
-   }
-+#ifdef ENABLE_MULTIBYTE
-+  else if (strcmp(fontname, "M") == 0) {
-+    current_paragraph->done_bold();
-+    current_paragraph->done_italic();
-+    current_paragraph->done_tt();
-+  } else if (strcmp(fontname, "G") == 0) {
-+    current_paragraph->do_bold();
-+  }
-+#endif
- }
- /*
-@@ -3331,7 +3396,23 @@
-   last_sbuf_length = sbuf.length();
-   if (html_glyph == NULL)
-+#ifdef ENABLE_MULTIBYTE
-+    {
-+      if (is_wchar_code(code)) {
-+      int mblen = output_encoding->max_wchar_len();
-+      unsigned char *wbuf = new unsigned char[mblen];
-+      int i = 0, j = 0;
-+      output_encoding->put_wchar(code, wbuf, &j, mblen);
-+      for (i = 0; i < j; i++) {
-+        sbuf += wbuf[i];
-+      }
-+      }
-+      else
-+      sbuf += ((char)code);
-+    }
-+#else
-     sbuf += ((char)code);
-+#endif
-   else
-     sbuf += html_glyph;
- }
-@@ -3445,12 +3526,12 @@
-     return;
-   
-   flush_sbuf();
-+  sbuf_style = sty; /* XXX? */
-   add_to_sbuf(i, name);
-   sbuf_end_hpos = env->hpos + w;
-   sbuf_start_hpos = env->hpos;
-   sbuf_prev_hpos = env->hpos;
-   sbuf_vpos = env->vpos;
--  sbuf_style = sty;
-   sbuf_kern = 0;
- }
-@@ -3659,6 +3740,7 @@
-   program_name = argv[0];
-   static char stderr_buf[BUFSIZ];
-   setbuf(stderr, stderr_buf);
-+  init_encoding_handler();
-   int c;
-   static const struct option long_options[] = {
-     { "help", no_argument, 0, CHAR_MAX + 1 },
-diff -Naur groff-1.18.1.4.orig/src/devices/grops/ps.cc groff-1.18.1.4/src/devices/grops/ps.cc
---- groff-1.18.1.4.orig/src/devices/grops/ps.cc        2002-06-19 21:07:33.000000000 +0000
-+++ groff-1.18.1.4/src/devices/grops/ps.cc     2006-10-18 18:54:44.000000000 +0000
-@@ -24,6 +24,7 @@
- #include "cset.h"
- #include "nonposix.h"
- #include "paper.h"
-+#include "encoding.h"
- #include "ps.h"
- #include <time.h>
-@@ -193,12 +194,23 @@
-   return *this;
- }
-+#ifdef ENABLE_MULTIBYTE
-+ps_output &ps_output::put_string(const wchar *s, int n)
-+#else
- ps_output &ps_output::put_string(const char *s, int n)
-+#endif
- {
-   int len = 0;
-   int i;
-   for (i = 0; i < n; i++) {
-+#ifdef ENABLE_MULTIBYTE
-+    wchar wc = s[i];
-+    char c = 0;
-+    if (is_wchar_singlebyte(wc))
-+      c = wchar_singlebyte(wc);
-+#else
-     char c = s[i];
-+#endif
-     if (is_ascii(c) && csprint(c)) {
-       if (c == '(' || c == ')' || c == '\\')
-       len += 2;
-@@ -224,8 +236,13 @@
-       putc('\n', fp);
-       col = 0;
-       }
-+#ifdef        ENABLE_MULTIBYTE
-+      int nb = output_encoding->put_wchar(s[i], fp, "%02x");
-+      col += nb * 2;
-+#else
-       fprintf(fp, "%02x", s[i] & 0377);
-       col += 2;
-+#endif
-     }
-     putc('>', fp);
-     col++;
-@@ -396,6 +413,9 @@
-   int encoding_index;
-   char *encoding;
-   char *reencoded_name;
-+#ifdef ENABLE_MULTIBYTE
-+  char *encodingname;
-+#endif
-   ~ps_font();
-   void handle_unknown_font_command(const char *command, const char *arg,
-                                  const char *filename, int lineno);
-@@ -414,6 +434,9 @@
- ps_font::ps_font(const char *nm)
- : font(nm), encoding_index(-1), encoding(0), reencoded_name(0)
-+#ifdef ENABLE_MULTIBYTE
-+  , encodingname(0)
-+#endif
- {
- }
-@@ -421,6 +444,9 @@
- {
-   a_delete encoding;
-   a_delete reencoded_name;
-+#ifdef ENABLE_MULTIBYTE
-+  a_delete encodingname;
-+#endif
- }
- void ps_font::handle_unknown_font_command(const char *command, const char *arg,
-@@ -433,6 +459,15 @@
-     else
-       encoding = strsave(arg);
-   }
-+#ifdef ENABLE_MULTIBYTE
-+  if (strcmp(command, "encodingname") == 0) {
-+    if (arg == 0)
-+      error_with_file_and_line(filename, lineno,
-+                             "`encodingname' command requires an argument");
-+    else
-+      encodingname = strsave(arg);
-+  }
-+#endif
- }
- static void handle_unknown_desc_command(const char *command, const char *arg,
-@@ -487,7 +522,11 @@
-   int paper_length;
-   int equalise_spaces;
-   enum { SBUF_SIZE = 256 };
-+#ifdef        ENABLE_MULTIBYTE
-+  wchar sbuf[SBUF_SIZE];
-+#else
-   char sbuf[SBUF_SIZE];
-+#endif
-   int sbuf_len;
-   int sbuf_start_hpos;
-   int sbuf_vpos;
-@@ -606,7 +645,11 @@
- {
-   if (i == space_char_index || invis_count > 0)
-     return;
-+#ifdef        ENABLE_MULTIBYTE
-+  wchar code = f->get_code(i);
-+#else
-   unsigned char code = f->get_code(i);
-+#endif
-   style sty(f, env->size, env->height, env->slant);
-   if (sty.slant != 0) {
-     if (sty.slant > 80 || sty.slant < -80) {
-@@ -763,6 +806,14 @@
-     if (sty == defined_styles[i]) {
-       sprintf(buf, "F%d", i);
-       out.put_symbol(buf);
-+#ifdef ENABLE_MULTIBYTE
-+      char *encodingname = ((ps_font *)sty.f)->encodingname;
-+      if (encodingname != 0) {
-+      select_output_encoding_handler(encodingname);
-+      } else {
-+      select_output_encoding_handler("LATIN1");
-+      }
-+#endif
-       return;
-     }
-   if (ndefined_styles >= MAX_DEFINED_STYLES)
-@@ -772,6 +823,14 @@
-   const char *psname = sty.f->get_internal_name();
-   if (psname == 0)
-     fatal("no internalname specified for font `%1'", sty.f->get_name());
-+#ifdef ENABLE_MULTIBYTE
-+  char *encodingname = ((ps_font *)sty.f)->encodingname;
-+  if (encodingname != 0) {
-+    select_output_encoding_handler(encodingname);
-+  } else {
-+    select_output_encoding_handler("LATIN1");
-+  }
-+#endif
-   char *encoding = ((ps_font *)sty.f)->encoding;
-   if (encoding != 0) {
-     char *s = ((ps_font *)sty.f)->reencoded_name;
-@@ -1555,6 +1614,7 @@
-   string env;
-   static char stderr_buf[BUFSIZ];
-   setbuf(stderr, stderr_buf);
-+  init_encoding_handler();
-   int c;
-   static const struct option long_options[] = {
-     { "help", no_argument, 0, CHAR_MAX + 1 },
-diff -Naur groff-1.18.1.4.orig/src/devices/grops/ps.h groff-1.18.1.4/src/devices/grops/ps.h
---- groff-1.18.1.4.orig/src/devices/grops/ps.h 2002-01-24 22:37:32.000000000 +0000
-+++ groff-1.18.1.4/src/devices/grops/ps.h      2006-10-18 18:54:44.000000000 +0000
-@@ -18,10 +18,16 @@
- with groff; see the file COPYING.  If not, write to the Free Software
- Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+#include "encoding.h" // XXX
-+
- class ps_output {
- public:
-   ps_output(FILE *, int max_line_length);
-+#ifdef        ENABLE_MULTIBYTE
-+  ps_output &put_string(const wchar *, int);
-+#else
-   ps_output &put_string(const char *, int);
-+#endif
-   ps_output &put_number(int);
-   ps_output &put_fix_number(int);
-   ps_output &put_float(double);
-diff -Naur groff-1.18.1.4.orig/src/devices/grotty/grotty.man groff-1.18.1.4/src/devices/grotty/grotty.man
---- groff-1.18.1.4.orig/src/devices/grotty/grotty.man  2002-10-01 19:01:45.000000000 +0000
-+++ groff-1.18.1.4/src/devices/grotty/grotty.man       2006-10-18 18:54:44.000000000 +0000
-@@ -50,7 +50,9 @@
- command
- with a
- .BR \-Tascii ,
--.B \-Tlatin1
-+.BR \-Tascii8 ,
-+.BR \-Tlatin1 ,
-+.B \-Tnippon
- or
- .B \-Tutf8
- option on ASCII based systems, and with
-@@ -235,8 +237,10 @@
- .I name
- is the name of the device, usually
- .BR ascii ,
-+.BR ascii8 ,
- .BR latin1 ,
- .BR utf8 ,
-+.B  nippon
- or
- .BR cp1047 .
- .TP
-@@ -315,10 +319,20 @@
- device.
- .
- .TP
-+.B @FONTDIR@/devascii8/DESC
-+Device description file for
-+.B ascii8
-+device.
-+.TP
- .B @FONTDIR@/devlatin1/DESC
- Device description file for
- .B latin1
- device.
-+.TP
-+.B @FONTDIR@/devnippon/DESC
-+Device description file for
-+.B nippon
-+device.
- .
- .TP
- .BI @FONTDIR@/devlatin1/ F
-diff -Naur groff-1.18.1.4.orig/src/devices/grotty/tty.cc groff-1.18.1.4/src/devices/grotty/tty.cc
---- groff-1.18.1.4.orig/src/devices/grotty/tty.cc      2002-06-19 21:31:15.000000000 +0000
-+++ groff-1.18.1.4/src/devices/grotty/tty.cc   2006-10-18 18:54:44.000000000 +0000
-@@ -20,6 +20,7 @@
- #include "driver.h"
- #include "device.h"
-+#include "encoding.h"
- extern "C" const char *Version_string;
-@@ -51,8 +52,18 @@
-   HDRAW_MODE = 0x08,
-   CU_MODE = 0x10,
-   COLOR_CHANGE = 0x20
-+#ifdef ENABLE_MULTIBYTE
-+  , WCHAR_MODE = 0x100
-+#endif
- };
-+#ifdef ENABLE_MULTIBYTE
-+# ifdef putchar
-+#  undef putchar
-+# endif
-+#define putchar(wc)   output_encoding->put_wchar((wc), stdout)
-+#endif
-+
- // Mode to use for bold-underlining.
- static unsigned char bold_underline_mode = BOLD_MODE|UNDERLINE_MODE;
-@@ -89,6 +100,7 @@
-   static tty_font *load_tty_font(const char *);
- };
-+
- tty_font *tty_font::load_tty_font(const char *s)
- {
-   tty_font *f = new tty_font(s);
-@@ -98,8 +110,26 @@
-   }
-   const char *num = f->get_internal_name();
-   long n;
-+#ifdef ENABLE_MULTIBYTE
-+  if (num != 0) {
-+    n = strtol(num, 0, 0);
-+    switch (n) {
-+    case 1:
-+      f->mode = int(UNDERLINE_MODE);
-+      break;
-+    case 2:
-+    case 5:
-+      f->mode = int(BOLD_MODE);
-+      break;
-+    case 3:
-+      f->mode = int(BOLD_MODE|UNDERLINE_MODE);
-+      break;
-+    }
-+  }
-+#else
-   if (num != 0 && (n = strtol(num, 0, 0)) != 0)
-     f->mode = int(n & (BOLD_MODE|UNDERLINE_MODE));
-+#endif
-   if (!underline_flag)
-     f->mode &= ~UNDERLINE_MODE;
-   if (!bold_flag)
-@@ -135,6 +165,9 @@
-   short hpos;
-   unsigned int code;
-   unsigned char mode;
-+#ifdef ENABLE_MULTIBYTE
-+  short cols;
-+#endif
-   unsigned char back_color_idx;
-   unsigned char fore_color_idx;
-   void *operator new(size_t);
-@@ -184,7 +217,7 @@
-   void make_underline();
-   void make_bold(unsigned int);
-   unsigned char color_to_idx(color *col);
--  void add_char(unsigned int, int, int, color *, color *, unsigned char);
-+  void add_char(unsigned int, int, int, color *, color *, font *, unsigned char);
- public:
-   tty_printer(const char *device);
-   ~tty_printer();
-@@ -193,7 +226,7 @@
-   void special(char *arg, const environment *env, char type);
-   void change_color(const environment *env);
-   void change_fill_color(const environment *env);
--  void put_char(unsigned int);
-+  int put_char(unsigned int);
-   void put_color(unsigned char, int);
-   void begin_page(int) { }
-   void end_page(int page_length);
-@@ -203,6 +236,10 @@
- tty_printer::tty_printer(const char *device) : cached_v(0)
- {
-   is_utf8 = !strcmp(device, "utf8");
-+#ifdef ENABLE_MULTIBYTE
-+  if (is_utf8)
-+      select_output_encoding_handler("UTF-8");
-+#endif
-   tty_colors[0].set_rgb(0,                    // black
-                       0,
-                       0);
-@@ -242,8 +279,18 @@
- void tty_printer::make_underline()
- {
-   if (old_drawing_scheme) {
-+#if 0 /* def ENABLE_MULTIBYTE XXX: not necessary? */
-+    if ((p->mode & WCHAR_MODE)) {
-+      putchar('_'); putchar('_');
-+      putchar('\b'); putchar('\b');
-+    } else {
-+      putchar('_');
-+      putchar('\b');
-+    }
-+#else
-     putchar('_');
-     putchar('\b');
-+#endif
-   }
-   else {
-     if (!is_underline) {
-@@ -285,17 +332,25 @@
- void tty_printer::set_char(int i, font *f, const environment *env,
-                          int w, const char *name)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  if (is_wchar_code(i)) {
-+    add_char(wchar_code(i), env->hpos, env->vpos, env->col, env->fill, 
-+           f, ((tty_font *)f)->get_mode());
-+    return;
-+  }
-+#endif
-   if (w != font::hor)
-     fatal("width of character not equal to horizontal resolution");
-   add_char(f->get_code(i),
-          env->hpos, env->vpos,
-          env->col, env->fill,
--         ((tty_font *)f)->get_mode());
-+         f, ((tty_font *)f)->get_mode());
- }
- void tty_printer::add_char(unsigned int c,
-                          int h, int v,
-                          color *fore, color *back,
-+                         font *curfont,
-                          unsigned char mode)
- {
- #if 0
-@@ -338,6 +393,16 @@
-   g->code = c;
-   g->fore_color_idx = color_to_idx(fore);
-   g->back_color_idx = color_to_idx(back);
-+#ifdef ENABLE_MULTIBYTE
-+  if (is_wchar_code(c))
-+    mode |= WCHAR_MODE;
-+  if (curfont && curfont->contains(c)) {
-+      int gw0 = curfont->get_space_width(font::unitwidth);
-+      int gw = curfont->get_width(c, font::unitwidth);
-+      g->cols = gw/gw0;
-+  } else
-+      g->cols = 1;    /* XXX */
-+#endif
-   g->mode = mode;
-   // The list will be reversed later.  After reversal, it must be in
-@@ -357,7 +422,7 @@
- void tty_printer::special(char *arg, const environment *env, char type)
- {
-   if (type == 'u') {
--    add_char(*arg - '0', env->hpos, env->vpos, env->col, env->fill, CU_MODE);
-+    add_char(*arg - '0', env->hpos, env->vpos, env->col, env->fill, get_font_from_index(env->fontno), CU_MODE);
-     return;
-   }
-   if (type != 'p')
-@@ -395,12 +460,12 @@
- void tty_printer::change_color(const environment *env)
- {
--  add_char(0, env->hpos, env->vpos, env->col, env->fill, COLOR_CHANGE);
-+  add_char(0, env->hpos, env->vpos, env->col, env->fill, get_font_from_index(env->fontno), COLOR_CHANGE);
- }
- void tty_printer::change_fill_color(const environment *env)
- {
--  add_char(0, env->hpos, env->vpos, env->col, env->fill, COLOR_CHANGE);
-+  add_char(0, env->hpos, env->vpos, env->col, env->fill, get_font_from_index(env->fontno), COLOR_CHANGE);
- }
- void tty_printer::draw(int code, int *p, int np, const environment *env)
-@@ -420,7 +485,7 @@
-       len = -len;
-     }
-     while (len >= 0) {
--      add_char('|', env->hpos, v, env->col, env->fill, VDRAW_MODE);
-+      add_char('|', env->hpos, v, env->col, env->fill, get_font_from_index(env->fontno), VDRAW_MODE);
-       len -= font::vert;
-       v += font::vert;
-     }
-@@ -434,18 +499,24 @@
-       len = -len;
-     }
-     while (len >= 0) {
--      add_char('-', h, env->vpos, env->col, env->fill, HDRAW_MODE);
-+      add_char('-', h, env->vpos, env->col, env->fill, get_font_from_index(env->fontno), HDRAW_MODE);
-       len -= font::hor;
-       h += font::hor;
-     }
-   }
- }
--void tty_printer::put_char(unsigned int wc)
-+int tty_printer::put_char(unsigned int wc)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  if (wc >= 0x80) {
-+    return output_encoding->put_wchar(make_wchar(wc), stdout);
-+  }
-+#else
-   if (is_utf8 && wc >= 0x80) {
-     char buf[6 + 1];
-     int count;
-+    int len;
-     char *p = buf;
-     if (wc < 0x800)
-       count = 1, *p = (unsigned char)((wc >> 6) | 0xc0);
-@@ -458,14 +529,18 @@
-     else if (wc <= 0x7fffffff)
-       count = 5, *p = (unsigned char)((wc >> 30) | 0xfC);
-     else
--      return;
-+      return 0;
-+    len = count;
-     do *++p = (unsigned char)(((wc >> (6 * --count)) & 0x3f) | 0x80);
-       while (count > 0);
-     *++p = '\0';
-     putstring(buf);
-+    return len;
-   }
-+#endif
-   else
-     putchar(wc);
-+  return 1;
- }
- void tty_printer::put_color(unsigned char color_index, int back)
-@@ -629,7 +704,11 @@
-       }
-       }
-       put_char(p->code);
-+#ifdef ENABLE_MULTIBYTE
-+      hpos += p->cols;
-+#else
-       hpos++;
-+#endif
-     }
-     if (!old_drawing_scheme
-       && (is_bold || is_underline
-@@ -667,6 +746,7 @@
-   if (getenv("GROFF_NO_SGR"))
-     old_drawing_scheme = 1;
-   setbuf(stderr, stderr_buf);
-+  init_encoding_handler();
-   int c;
-   static const struct option long_options[] = {
-     { "help", no_argument, 0, CHAR_MAX + 1 },
-diff -Naur groff-1.18.1.4.orig/src/include/config.h groff-1.18.1.4/src/include/config.h
---- groff-1.18.1.4.orig/src/include/config.h   1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/src/include/config.h        2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,187 @@
-+/* src/include/config.h.  Generated by configure.  */
-+/* src/include/config.hin.  Generated from configure.ac by autoheader.  */
-+
-+/* Define if your C++ doesn't understand `delete []'. */
-+/* #undef ARRAY_DELETE_NEEDS_SIZE */
-+
-+/* Define if you want to use multibyte extension. */
-+#define ENABLE_MULTIBYTE 1
-+
-+/* Define if you have a C++ <limits.h>. */
-+#define HAVE_CC_LIMITS_H 1
-+
-+/* Define if you have a C++ <osfcn.h>. */
-+/* #undef HAVE_CC_OSFCN_H */
-+
-+/* Define to 1 if you have the <dirent.h> header file. */
-+#define HAVE_DIRENT_H 1
-+
-+/* Define to 1 if you have the `fmod' function. */
-+#define HAVE_FMOD 1
-+
-+/* Define to 1 if you have the `getcwd' function. */
-+#define HAVE_GETCWD 1
-+
-+/* Define to 1 if you have the `getpagesize' function. */
-+#define HAVE_GETPAGESIZE 1
-+
-+/* Define to 1 if you have the `gettimeofday' function. */
-+#define HAVE_GETTIMEOFDAY 1
-+
-+/* Define to 1 if you have the <inttypes.h> header file. */
-+#define HAVE_INTTYPES_H 1
-+
-+/* Define to 1 if you have the `isatty' function. */
-+#define HAVE_ISATTY 1
-+
-+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-+#define HAVE_LANGINFO_CODESET 1
-+
-+/* Define to 1 if you have the <limits.h> header file. */
-+#define HAVE_LIMITS_H 1
-+
-+/* Define to 1 if you have the <math.h> header file. */
-+#define HAVE_MATH_H 1
-+
-+/* Define to 1 if you have the <memory.h> header file. */
-+#define HAVE_MEMORY_H 1
-+
-+/* Define if you have mkstemp(). */
-+#define HAVE_MKSTEMP 1
-+
-+/* Define to 1 if you have a working `mmap' system call. */
-+#define HAVE_MMAP 1
-+
-+/* Define to 1 if you have the `putenv' function. */
-+#define HAVE_PUTENV 1
-+
-+/* Define to 1 if you have the `rename' function. */
-+#define HAVE_RENAME 1
-+
-+/* Define to 1 if you have the `snprintf' function. */
-+#define HAVE_SNPRINTF 1
-+
-+/* Define to 1 if you have the <stdint.h> header file. */
-+#define HAVE_STDINT_H 1
-+
-+/* Define to 1 if you have the <stdlib.h> header file. */
-+#define HAVE_STDLIB_H 1
-+
-+/* Define to 1 if you have the `strcasecmp' function. */
-+#define HAVE_STRCASECMP 1
-+
-+/* Define to 1 if you have the `strerror' function. */
-+#define HAVE_STRERROR 1
-+
-+/* Define to 1 if you have the <strings.h> header file. */
-+#define HAVE_STRINGS_H 1
-+
-+/* Define to 1 if you have the <string.h> header file. */
-+#define HAVE_STRING_H 1
-+
-+/* Define to 1 if you have the `strncasecmp' function. */
-+#define HAVE_STRNCASECMP 1
-+
-+/* Define to 1 if you have the `strsep' function. */
-+#define HAVE_STRSEP 1
-+
-+/* Define to 1 if you have the `strtol' function. */
-+#define HAVE_STRTOL 1
-+
-+/* Define if <math.h> defines struct exception. */
-+#define HAVE_STRUCT_EXCEPTION 1
-+
-+/* Define to 1 if you have the <sys/dir.h> header file. */
-+#define HAVE_SYS_DIR_H 1
-+
-+/* Define if you have sys_errlist in <errno.h> or in <stdio.h>. */
-+#define HAVE_SYS_ERRLIST 1
-+
-+/* Define if you have sysnerr in <errno.h> or <stdio.h>. */
-+#define HAVE_SYS_NERR 1
-+
-+/* Define to 1 if you have the <sys/stat.h> header file. */
-+#define HAVE_SYS_STAT_H 1
-+
-+/* Define to 1 if you have the <sys/time.h> header file. */
-+#define HAVE_SYS_TIME_H 1
-+
-+/* Define to 1 if you have the <sys/types.h> header file. */
-+#define HAVE_SYS_TYPES_H 1
-+
-+/* Define to 1 if you have the <unistd.h> header file. */
-+#define HAVE_UNISTD_H 1
-+
-+/* Define if the host's encoding is EBCDIC. */
-+/* #undef IS_EBCDIC_HOST */
-+
-+/* Define if localtime() takes a long * not a time_t *. */
-+/* #undef LONG_FOR_TIME_T */
-+
-+/* Define if your C++ doesn't declare gettimeofday(). */
-+/* #undef NEED_DECLARATION_GETTIMEOFDAY */
-+
-+/* Define if your C++ doesn't declare hypot(). */
-+/* #undef NEED_DECLARATION_HYPOT */
-+
-+/* Define if your C++ doesn't declare pclose(). */
-+/* #undef NEED_DECLARATION_PCLOSE */
-+
-+/* Define if your C++ doesn't declare popen(). */
-+/* #undef NEED_DECLARATION_POPEN */
-+
-+/* Define if your C++ doesn't declare putenv(). */
-+/* #undef NEED_DECLARATION_PUTENV */
-+
-+/* Define if your C++ doesn't declare strcasecmp(). */
-+/* #undef NEED_DECLARATION_STRCASECMP */
-+
-+/* Define if your C++ doesn't declare strncasecmp(). */
-+/* #undef NEED_DECLARATION_STRNCASECMP */
-+
-+/* Define to the address where bug reports for this package should be sent. */
-+#define PACKAGE_BUGREPORT ""
-+
-+/* Define to the full name of this package. */
-+#define PACKAGE_NAME ""
-+
-+/* Define to the full name and version of this package. */
-+#define PACKAGE_STRING ""
-+
-+/* Define to the one symbol short name of this package. */
-+#define PACKAGE_TARNAME ""
-+
-+/* Define to the version of this package. */
-+#define PACKAGE_VERSION ""
-+
-+/* Define if the printer's page size is A4. */
-+#define PAGEA4 1
-+
-+/* Define as the return type of signal handlers (`int' or `void'). */
-+#define RETSIGTYPE void
-+
-+/* Define if srand() returns void not int. */
-+#define RET_TYPE_SRAND_IS_VOID 1
-+
-+/* Define to 1 if you have the ANSI C header files. */
-+#define STDC_HEADERS 1
-+
-+/* Define to 1 if `sys_siglist' is declared by <signal.h> or <unistd.h>. */
-+#define SYS_SIGLIST_DECLARED 1
-+
-+/* Define if your C++ compiler uses a traditional (Reiser) preprocessor. */
-+/* #undef TRADITIONAL_CPP */
-+
-+/* Define if the 0200 bit of the status returned by wait() indicates whether a
-+   core image was produced for a process that was terminated by a signal. */
-+/* #undef WCOREFLAG */
-+
-+/* Define if -D_POSIX_SOURCE is necessary. */
-+/* #undef _POSIX_SOURCE */
-+
-+/* Define if you have ISC 3.x or 4.x. */
-+/* #undef _SYSV3 */
-+
-+/* Define uintmax_t to `unsigned long' or `unsigned long long' if <inttypes.h>
-+   does not exist. */
-+/* #undef uintmax_t */
-diff -Naur groff-1.18.1.4.orig/src/include/config.hin groff-1.18.1.4/src/include/config.hin
---- groff-1.18.1.4.orig/src/include/config.hin 2002-09-06 07:32:26.000000000 +0000
-+++ groff-1.18.1.4/src/include/config.hin      2006-10-18 18:54:44.000000000 +0000
-@@ -1,84 +1,96 @@
--/* src/include/config.hin.  Generated automatically from configure.ac by autoheader.  */
-+/* src/include/config.hin.  Generated from configure.ac by autoheader.  */
- /* Define if your C++ doesn't understand `delete []'. */
- #undef ARRAY_DELETE_NEEDS_SIZE
-+/* Define if you want to use multibyte extension. */
-+#undef ENABLE_MULTIBYTE
-+
- /* Define if you have a C++ <limits.h>. */
- #undef HAVE_CC_LIMITS_H
- /* Define if you have a C++ <osfcn.h>. */
- #undef HAVE_CC_OSFCN_H
--/* Define if you have the <dirent.h> header file. */
-+/* Define to 1 if you have the <dirent.h> header file. */
- #undef HAVE_DIRENT_H
--/* Define if you have the `fmod' function. */
-+/* Define to 1 if you have the `fmod' function. */
- #undef HAVE_FMOD
--/* Define if you have the `getcwd' function. */
-+/* Define to 1 if you have the `getcwd' function. */
- #undef HAVE_GETCWD
--/* Define if you have the `getpagesize' function. */
-+/* Define to 1 if you have the `getpagesize' function. */
- #undef HAVE_GETPAGESIZE
--/* Define if you have the `gettimeofday' function. */
-+/* Define to 1 if you have the `gettimeofday' function. */
- #undef HAVE_GETTIMEOFDAY
--/* Define if you have the <limits.h> header file. */
-+/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H
-+
-+/* Define to 1 if you have the `isatty' function. */
-+#undef HAVE_ISATTY
-+
-+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-+#undef HAVE_LANGINFO_CODESET
-+
-+/* Define to 1 if you have the <limits.h> header file. */
- #undef HAVE_LIMITS_H
--/* Define if you have the <math.h> header file. */
-+/* Define to 1 if you have the <math.h> header file. */
- #undef HAVE_MATH_H
-+/* Define to 1 if you have the <memory.h> header file. */
-+#undef HAVE_MEMORY_H
-+
- /* Define if you have mkstemp(). */
- #undef HAVE_MKSTEMP
--/* Define if you have a working `mmap' system call. */
-+/* Define to 1 if you have a working `mmap' system call. */
- #undef HAVE_MMAP
--/* Define if you have the `putenv' function. */
-+/* Define to 1 if you have the `putenv' function. */
- #undef HAVE_PUTENV
--/* Define if you have the `rename' function. */
-+/* Define to 1 if you have the `rename' function. */
- #undef HAVE_RENAME
--/* Define if you have the `snprintf' function. */
-+/* Define to 1 if you have the `snprintf' function. */
- #undef HAVE_SNPRINTF
--/* Define if you have the `isatty' function. */
--#undef HAVE_ISATTY
--
--/* Define if you have the <stdint.h> header file. */
-+/* Define to 1 if you have the <stdint.h> header file. */
- #undef HAVE_STDINT_H
--/* Define if you have the <stdlib.h> header file. */
-+/* Define to 1 if you have the <stdlib.h> header file. */
- #undef HAVE_STDLIB_H
--/* Define if you have the `strcasecmp' function. */
-+/* Define to 1 if you have the `strcasecmp' function. */
- #undef HAVE_STRCASECMP
--/* Define if you have the `strerror' function. */
-+/* Define to 1 if you have the `strerror' function. */
- #undef HAVE_STRERROR
--/* Define if you have the <strings.h> header file. */
-+/* Define to 1 if you have the <strings.h> header file. */
- #undef HAVE_STRINGS_H
--/* Define if you have the <string.h> header file. */
-+/* Define to 1 if you have the <string.h> header file. */
- #undef HAVE_STRING_H
--/* Define if you have the `strncasecmp' function. */
-+/* Define to 1 if you have the `strncasecmp' function. */
- #undef HAVE_STRNCASECMP
--/* Define if you have the `strsep' function. */
-+/* Define to 1 if you have the `strsep' function. */
- #undef HAVE_STRSEP
--/* Define if you have the `strtol' function. */
-+/* Define to 1 if you have the `strtol' function. */
- #undef HAVE_STRTOL
- /* Define if <math.h> defines struct exception. */
- #undef HAVE_STRUCT_EXCEPTION
--/* Define if you have the <sys/dir.h> header file. */
-+/* Define to 1 if you have the <sys/dir.h> header file. */
- #undef HAVE_SYS_DIR_H
- /* Define if you have sys_errlist in <errno.h> or in <stdio.h>. */
-@@ -87,10 +99,16 @@
- /* Define if you have sysnerr in <errno.h> or <stdio.h>. */
- #undef HAVE_SYS_NERR
--/* Define if you have the <sys/time.h> header file. */
-+/* Define to 1 if you have the <sys/stat.h> header file. */
-+#undef HAVE_SYS_STAT_H
-+
-+/* Define to 1 if you have the <sys/time.h> header file. */
- #undef HAVE_SYS_TIME_H
--/* Define if you have the <unistd.h> header file. */
-+/* Define to 1 if you have the <sys/types.h> header file. */
-+#undef HAVE_SYS_TYPES_H
-+
-+/* Define to 1 if you have the <unistd.h> header file. */
- #undef HAVE_UNISTD_H
- /* Define if the host's encoding is EBCDIC. */
-@@ -120,6 +138,21 @@
- /* Define if your C++ doesn't declare strncasecmp(). */
- #undef NEED_DECLARATION_STRNCASECMP
-+/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT
-+
-+/* Define to the full name of this package. */
-+#undef PACKAGE_NAME
-+
-+/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING
-+
-+/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME
-+
-+/* Define to the version of this package. */
-+#undef PACKAGE_VERSION
-+
- /* Define if the printer's page size is A4. */
- #undef PAGEA4
-@@ -129,7 +162,10 @@
- /* Define if srand() returns void not int. */
- #undef RET_TYPE_SRAND_IS_VOID
--/* Define if `sys_siglist' is declared by <signal.h> or <unistd.h>. */
-+/* Define to 1 if you have the ANSI C header files. */
-+#undef STDC_HEADERS
-+
-+/* Define to 1 if `sys_siglist' is declared by <signal.h> or <unistd.h>. */
- #undef SYS_SIGLIST_DECLARED
- /* Define if your C++ compiler uses a traditional (Reiser) preprocessor. */
-diff -Naur groff-1.18.1.4.orig/src/include/device.h groff-1.18.1.4/src/include/device.h
---- groff-1.18.1.4.orig/src/include/device.h   2000-02-06 09:36:30.000000000 +0000
-+++ groff-1.18.1.4/src/include/device.h        2006-10-18 18:54:44.000000000 +0000
-@@ -18,4 +18,9 @@
- with groff; see the file COPYING.  If not, write to the Free Software
- Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+#ifndef _DEVICE_H
-+#define _DEVICE_H
-+
- extern const char *device;
-+
-+#endif /* _DEVICE_H */
-diff -Naur groff-1.18.1.4.orig/src/include/driver.h groff-1.18.1.4/src/include/driver.h
---- groff-1.18.1.4.orig/src/include/driver.h   2002-02-17 17:05:53.000000000 +0000
-+++ groff-1.18.1.4/src/include/driver.h        2006-10-18 18:54:44.000000000 +0000
-@@ -27,6 +27,7 @@
- #include <errno.h>
- #include <assert.h>
- #include <math.h>
-+#include "encoding.h" // XXX: ukai
- #include "errarg.h"
- #include "error.h"
- #include "font.h"
-diff -Naur groff-1.18.1.4.orig/src/include/encoding.h groff-1.18.1.4/src/include/encoding.h
---- groff-1.18.1.4.orig/src/include/encoding.h 1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/src/include/encoding.h      2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,175 @@
-+// -*- C++ -*-
-+/* Copyright (c) 2001 Fumitoshi UKAI <ukai@debian.or.jp>
-+
-+This file is part of groff.
-+
-+groff 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, or (at your option) any later
-+version.
-+
-+groff 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 */
-+
-+#ifndef ENCODING_H
-+#define ENCODING_H
-+
-+#include <config.h>
-+
-+#ifdef ENABLE_MULTIBYTE
-+typedef int wchar;    // negative is used for charcode & index
-+#else
-+typedef char wchar;
-+#endif
-+
-+#include <stdio.h>
-+
-+#ifdef __cplusplus
-+class encoding_istream {
-+public:
-+  encoding_istream() {};
-+  virtual ~encoding_istream() {};
-+  virtual int getbyte() = 0;
-+  virtual int peekbyte() = 0;
-+  virtual void ungetbyte(int ch) = 0;
-+};
-+
-+class encoding_istream_str: public encoding_istream {
-+private:
-+  const unsigned char *s;
-+  int *i;
-+  encoding_istream_str() {};
-+public:
-+  encoding_istream_str(const unsigned char *s0, int *i0) : s(s0), i(i0) {};
-+  ~encoding_istream_str() {};
-+  inline int getbyte() { return s[(*i)++]; };
-+  inline int peekbyte() { return s[(*i)]; };
-+  inline void ungetbyte(int ch) { --(*i); };
-+};
-+
-+class encoding_istream_fp: public encoding_istream {
-+private:
-+  FILE *fp;
-+public:
-+  encoding_istream_fp(FILE *fp0) : fp(fp0) {};
-+  ~encoding_istream_fp() {};
-+  inline int getbyte() { return fgetc(fp); };
-+  inline int peekbyte() { int ch = fgetc(fp); ungetc(ch, fp); return ch; };
-+  inline void ungetbyte(int ch) { ungetc(ch, fp); };
-+};
-+
-+class encoding_ostream {
-+public:
-+  encoding_ostream() {};
-+  virtual ~encoding_ostream() {};
-+  virtual void putbyte(unsigned char ch) = 0;
-+};
-+
-+class encoding_ostream_str: public encoding_ostream {
-+private:
-+  unsigned char *s;
-+  int *i;
-+  int len;
-+  encoding_ostream_str() {};
-+public:
-+  encoding_ostream_str(unsigned char *s0, int *i0, int max) : s(s0), i(i0), len(max) {};
-+  ~encoding_ostream_str() {};
-+  inline void putbyte(unsigned char ch) {
-+    if (*i < len)
-+      s[(*i)++] = ch;
-+  }
-+};
-+
-+class encoding_ostream_fp: public encoding_ostream {
-+private:
-+  FILE *fp;
-+  const char *format;
-+public:
-+  encoding_ostream_fp(FILE *ofp, const char *fmt = "%c") : fp(ofp), format(fmt) {};
-+  ~encoding_ostream_fp() {};
-+  inline void putbyte(unsigned char ch) {
-+    fprintf(fp, format, ch);
-+  }
-+};
-+
-+class encoding_handler {
-+public:
-+  encoding_handler() {};
-+  virtual ~encoding_handler() {};
-+
-+  // name of this encoding_handler
-+  virtual const char *name() { return ""; };
-+
-+  // check if this byte is byte in multibyte character in this encoding?
-+  virtual int is_wchar_byte(unsigned char c) { return 0; };
-+
-+  // make new wchar from c0 (beginning of multibytes) and rest from `in'
-+  virtual wchar make_wchar(unsigned char c0, encoding_istream& in) { 
-+    return wchar(c0);
-+  }
-+  // make new wchar from c0 (beginning of multibytes) and rest from `fp'
-+  virtual wchar make_wchar(unsigned char c0, FILE *fp) {
-+    encoding_istream_fp in(fp);
-+    return make_wchar(c0, in);
-+  }
-+  // make new wchar from c0 (beginning of multibtyes) and rest from
-+  // s[*i], *i will be changed to point the byte of next character.
-+  virtual wchar make_wchar(unsigned char c0, const unsigned char *s, int *i) {
-+    encoding_istream_str in(s, i);
-+    return make_wchar(c0, in);
-+  }
-+
-+  // put wchar to outputstream
-+  // returns number of bytes written
-+  virtual int put_wchar(wchar wc, encoding_ostream& eos) {
-+    eos.putbyte((unsigned char)wc);
-+    return 1;
-+  }
-+  // put wchar to `fp' using `fmt'
-+  // returns number of bytes written
-+  virtual int put_wchar(wchar wc, FILE *fp, const char *fmt = "%c") {
-+    encoding_ostream_fp out(fp, fmt);
-+    return put_wchar(wc, out);
-+  }
-+  // put wchar to s[*i] (until maxlen)
-+  // *i will be changed to point the byte of next character.
-+  virtual int put_wchar(wchar wc, unsigned char *s, int *i, int maxlen) {
-+    encoding_ostream_str out(s, i, maxlen);
-+    return put_wchar(wc, out);
-+  }
-+
-+  // maximum number of bytes of multibyte character in this encoding
-+  virtual int max_wchar_len() { return 1; };
-+
-+};
-+
-+encoding_handler* select_input_encoding_handler(const char* encoding_name);
-+encoding_handler* select_output_encoding_handler(const char* encoding_name);
-+extern encoding_handler* input_encoding;
-+extern encoding_handler* output_encoding;
-+void init_encoding_handler();
-+
-+// check if wc is wchar?
-+int is_wchar_code(wchar wc);
-+
-+// check if wc is wchar & can be represented in single byte?
-+int is_wchar_singlebyte(wchar wc);
-+
-+// get singlebyte representation of wchar (if is_wchar_singlebyte(wc))
-+unsigned char wchar_singlebyte(wchar wc);
-+
-+// get actual wide character code
-+int wchar_code(wchar wc);
-+
-+// make wchar from wide character code
-+int make_wchar(int w);
-+
-+#endif
-+
-+#endif /* ENCODING_H */
-diff -Naur groff-1.18.1.4.orig/src/include/font.h groff-1.18.1.4/src/include/font.h
---- groff-1.18.1.4.orig/src/include/font.h     2002-07-09 07:57:02.000000000 +0000
-+++ groff-1.18.1.4/src/include/font.h  2006-10-18 18:54:44.000000000 +0000
-@@ -18,11 +18,17 @@
- with groff; see the file COPYING.  If not, write to the Free Software
- Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+#include "encoding.h"
-+
- typedef void (*FONT_COMMAND_HANDLER)(const char *, const char *,
-                                    const char *, int);
- struct font_kern_list;
- struct font_char_metric;
-+#ifdef ENABLE_MULTIBYTE
-+struct fontset_list;
-+struct font_wchar_metric;
-+#endif
- struct font_widths_cache;
- class font {
-@@ -53,6 +59,9 @@
-   const char *get_special_device_encoding(int index);
-   const char *get_name();
-   const char *get_internal_name();
-+#ifdef        ENABLE_MULTIBYTE
-+  const char *get_subfont_name(int index);
-+#endif
-   static int scan_papersize(const char *, const char **, double *, double *);
-@@ -62,6 +71,9 @@
-   static int load_desc();
-   static int name_to_index(const char *);
-   static int number_to_index(int);
-+#ifdef        ENABLE_MULTIBYTE
-+  static int wchar_index(wchar);
-+#endif
-   static FONT_COMMAND_HANDLER
-     set_unknown_desc_command_handler(FONT_COMMAND_HANDLER);
-@@ -76,6 +88,11 @@
-   static int spare2;
-   static int sizescale;
-   static int tcommand;
-+#ifdef        ENABLE_MULTIBYTE
-+  // XXX: should be in charinfo or font_wchar_metric?
-+  static int lowerwchar;
-+  static int wcharkern;
-+#endif
-   static int pass_filenames;
-   static int use_charnames_in_special;
-@@ -83,13 +100,27 @@
-   static const char **style_table;
-   static const char *family;
-   static int *sizes;
-+#ifdef        ENABLE_MULTIBYTE
-+  // fontsets - sub font list
-+  static fontset_list *fontsets;
-+  // get fontset for `wc' in current font `fname'
-+  static int get_fontset_font(const char *fname, wchar wc);
-+  // is the fontno's font load on demand?
-+  static int is_on_demand(int fontno);
-+#endif
- private:
-   unsigned ligatures;
-   font_kern_list **kern_hash_table;
-   int space_width;
--  short *ch_index;
-+  short *ch_index;    /* XXX: this is used unless font_wchar_metric. */
-   int nindices;
-   font_char_metric *ch;
-+#ifdef ENABLE_MULTIBYTE
-+  // font metric for wchar
-+  font_wchar_metric *wch;
-+  // get font metric for wchar indexed by c
-+  font_wchar_metric *get_font_wchar_metric(int c);
-+#endif
-   int ch_used;
-   int ch_size;
-   int special;
-diff -Naur groff-1.18.1.4.orig/src/include/lib.h groff-1.18.1.4/src/include/lib.h
---- groff-1.18.1.4.orig/src/include/lib.h      2002-03-08 07:33:49.000000000 +0000
-+++ groff-1.18.1.4/src/include/lib.h   2006-10-18 18:54:44.000000000 +0000
-@@ -88,8 +88,15 @@
- extern char invalid_char_table[];
-+#include "encoding.h" /* XXX: ukai */
-+
- inline int invalid_input_char(int c)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  if (input_encoding->is_wchar_byte(c))
-+      return 0;
-+  else
-+#endif
-   return c >= 0 && invalid_char_table[c];
- }
-diff -Naur groff-1.18.1.4.orig/src/include/printer.h groff-1.18.1.4/src/include/printer.h
---- groff-1.18.1.4.orig/src/include/printer.h  2002-04-14 10:22:57.000000000 +0000
-+++ groff-1.18.1.4/src/include/printer.h       2006-10-18 18:54:44.000000000 +0000
-@@ -38,6 +38,8 @@
- #include "color.h"
-+#include "encoding.h"
-+
- struct environment {
-   int fontno;
-   int size;
-@@ -63,6 +65,9 @@
-   printer();
-   virtual ~printer();
-   void load_font(int i, const char *name);
-+#ifdef        ENABLE_MULTIBYTE
-+  void set_wchar_char(wchar c, char *s, int i0, int len, const environment *env, int *widthp = 0);
-+#endif
-   void set_ascii_char(unsigned char c, const environment *env,
-                     int *widthp = 0);
-   void set_special_char(const char *nm, const environment *env,
-diff -Naur groff-1.18.1.4.orig/src/libs/libdriver/input.cc groff-1.18.1.4/src/libs/libdriver/input.cc
---- groff-1.18.1.4.orig/src/libs/libdriver/input.cc    2002-09-06 08:10:38.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libdriver/input.cc 2006-10-18 18:54:44.000000000 +0000
-@@ -250,6 +250,7 @@
- #include "driver.h"
- #include "device.h"
-+#include "encoding.h"
- #include <stdlib.h>
- #include <errno.h>
-@@ -1439,6 +1440,19 @@
-   char *subcmd_str = get_string_arg();
-   char subcmd = subcmd_str[0];
-   switch (subcmd) {
-+#ifdef ENABLE_MULTIBYTE
-+  case 'e':                   // x encoding: select encoding
-+    {
-+      char *str_arg = get_string_arg();
-+      if (str_arg == 0)
-+      warning("empty argument for `x encoding' command");
-+      else {
-+      select_input_encoding_handler(str_arg);
-+      delete str_arg;
-+      }
-+      break;
-+    }
-+#endif
-   case 'f':                   // x font: mount font
-     {
-       IntArg n = get_integer_arg();
-@@ -1517,7 +1531,7 @@
-   return stopped;
- }
--
-+////////////////////////////////////////////////////////////////
- /**********************************************************************
-                      exported part (by driver.h)
-  **********************************************************************/
-@@ -1625,6 +1639,18 @@
-     if (str_arg[0] != 'i')
-       fatal("the third command must be `x init'");
-     delete str_arg;
-+#ifdef ENABLE_MULTIBYTE
-+    Char c = get_char();
-+    while (is_space_or_tab(c) && c != Char('\n') && c != Char(EOF))
-+      c = get_char();
-+    unget_char(c);
-+    if (c != Char('\n') && c != Char(EOF)) {
-+      const char *tmp_encoding = get_string_arg();
-+      if (tmp_encoding && *tmp_encoding)
-+          select_input_encoding_handler(tmp_encoding);
-+      delete tmp_encoding;
-+    }
-+#endif
-     skip_line_x();
-   }
-@@ -1763,6 +1789,18 @@
-       size_t i = 0;
-       while ((c = str_arg[i++]) != '\0') {
-         EnvInt w;
-+#ifdef        ENABLE_MULTIBYTE
-+        if (input_encoding->is_wchar_byte(c)) {
-+          int i0 = i - 1;
-+          wchar wc = input_encoding->make_wchar(c, (const unsigned char *)str_arg, (int *)&i);
-+          if (is_wchar_code(wc)) {
-+            /* XXX: singlebyte check? */
-+            pr->set_wchar_char(wc, str_arg, i0, i - i0, current_env, &w);
-+          } else {
-+            pr->set_ascii_char((unsigned char) c, current_env, &w);
-+          }
-+        } else
-+#endif
-         pr->set_ascii_char((unsigned char) c, current_env, &w);
-         current_env->hpos += w;
-       }
-diff -Naur groff-1.18.1.4.orig/src/libs/libdriver/printer.cc groff-1.18.1.4/src/libs/libdriver/printer.cc
---- groff-1.18.1.4.orig/src/libs/libdriver/printer.cc  2002-04-14 10:22:57.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libdriver/printer.cc       2006-10-18 18:54:44.000000000 +0000
-@@ -27,6 +27,7 @@
- */
- #include "driver.h"
-+#include "encoding.h"
- printer *pr = 0;
-@@ -138,6 +139,24 @@
-   }
- }
-+#ifdef        ENABLE_MULTIBYTE
-+void printer::set_wchar_char(wchar c, char *s, int i0, int len, const environment *env, int *widthp)
-+{
-+  unsigned char *buf = new unsigned char[len+1];
-+  memset(buf, 0, len+1);
-+  memcpy(buf, s+i0, len);
-+  font *f;
-+  int w;
-+  int i = set_char_and_width((const char *)buf, env, &w, &f);
-+  if (i != -1) {
-+      set_char(c, f, env, w, (const char *)buf);
-+      if (widthp)
-+        *widthp = w;
-+  }
-+  delete [] buf;
-+}
-+#endif
-+
- void printer::set_special_char(const char *nm, const environment *env,
-                              int *widthp)
- {
-diff -Naur groff-1.18.1.4.orig/src/libs/libgroff/Makefile.sub groff-1.18.1.4/src/libs/libgroff/Makefile.sub
---- groff-1.18.1.4.orig/src/libs/libgroff/Makefile.sub 2002-08-23 07:04:40.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libgroff/Makefile.sub      2006-10-18 18:54:44.000000000 +0000
-@@ -6,6 +6,7 @@
-   color.$(OBJEXT) \
-   cset.$(OBJEXT) \
-   device.$(OBJEXT) \
-+  encoding.$(OBJEXT) \
-   errarg.$(OBJEXT) \
-   error.$(OBJEXT) \
-   fatal.$(OBJEXT) \
-@@ -45,6 +46,7 @@
-   $(srcdir)/color.cc \
-   $(srcdir)/cset.cc \
-   $(srcdir)/device.cc \
-+  $(srcdir)/encoding.cc \
-   $(srcdir)/errarg.cc \
-   $(srcdir)/error.cc \
-   $(srcdir)/fatal.cc \
-diff -Naur groff-1.18.1.4.orig/src/libs/libgroff/encoding.cc groff-1.18.1.4/src/libs/libgroff/encoding.cc
---- groff-1.18.1.4.orig/src/libs/libgroff/encoding.cc  1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libgroff/encoding.cc       2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,441 @@
-+// -*- C++ -*-
-+/* Copyright (C) 2001 Fumitoshi UKAI <ukai@debian.or.jp>
-+
-+This file is part of groff.
-+
-+groff 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, or (at your option) any later
-+version.
-+
-+groff 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 "encoding.h"
-+#include "device.h"
-+
-+#include <string.h>
-+#ifdef ENABLE_MULTIBYTE
-+#include <locale.h>
-+#include <wchar.h>
-+#ifdef HAVE_LANGINFO_CODESET
-+#include <langinfo.h>
-+#else
-+#include <stdlib.h>
-+#endif
-+#endif
-+
-+class ascii8_handler : public encoding_handler {
-+  // encoding handler for 8bit ascii
-+  // no multibyte support
-+public:
-+  ascii8_handler() {}
-+  ~ascii8_handler() {}
-+
-+  const char *name() { return "C"; }; /* ??? */
-+
-+  inline int is_wchar_byte(unsigned char c) { return 0; }
-+  inline wchar make_wchar(unsigned char c0, encoding_istream& eis) {
-+    return wchar(c0);
-+  }
-+  inline int put_wchar(wchar wc, encoding_ostream& eos) {
-+    eos.putbyte((unsigned char)wchar_code(wc));
-+    return 1;
-+  }
-+  inline int max_wchar_len() { return 1; };
-+
-+};
-+
-+#ifdef ENABLE_MULTIBYTE
-+class utf8_handler: public encoding_handler {
-+public:
-+  utf8_handler() { } 
-+  ~utf8_handler() { }
-+
-+  const char *name() { return "UTF-8"; };
-+
-+  inline int is_wchar_byte(unsigned char c) {
-+    return (c >= 0x80);
-+  }
-+
-+  /*
-+   0000 0000-0000 007F   0xxxxxxx
-+   0000 0080-0000 07FF   110xxxxx 10xxxxxx
-+   0000 0800-0000 FFFF   1110xxxx 10xxxxxx 10xxxxxx
-+
-+   0001 0000-001F FFFF   11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-+   0020 0000-03FF FFFF   111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
-+   0400 0000-7FFF FFFF   1111110x 10xxxxxx ... 10xxxxxx
-+  */
-+
-+  inline wchar make_wchar(unsigned char c0, encoding_istream& eis) {
-+    wchar wc = 0;
-+    int count = 0;
-+    if (! is_wchar_byte(c0)) {
-+      return c0;
-+    }
-+    if ((c0 & 0xFC) == 0xFC) {
-+      wc = c0 & 0x01;
-+      count = 5;
-+    } else if ((c0 & 0xF8) == 0xF8) {
-+      wc = c0 & 0x03;
-+      count = 4;
-+    } else if ((c0 & 0xF0) == 0xF0) {
-+      wc = c0 & 0x07;
-+      count = 3;
-+    } else if ((c0 & 0xE0) == 0xE0) {
-+      wc = c0 & 0x0F;
-+      count = 2;
-+    } else if ((c0 & 0xC0) == 0xC0) {
-+      wc = c0 & 0x1F;
-+      count = 1;
-+    }
-+    for (; count > 0; count--) {
-+      wc <<= 6;
-+      int c1 = eis.getbyte();
-+      if (! is_wchar_byte(c1)) {
-+      /* illegal utf8 sequence? */
-+      }
-+      wc |= (c1 & 0x3F);
-+    }
-+    return -wc;       // XXX: negative
-+  }
-+
-+  inline int put_wchar(wchar wc, encoding_ostream& eos) {
-+    int count = 0;
-+    if (! is_wchar_code(wc)) {
-+      eos.putbyte(wc);
-+      return 1;
-+    }
-+    wc = -wc; // XXX: negative -> character code
-+
-+    if (wc < 0x800) {
-+      count = 1; eos.putbyte((wc >> 6) | 0xC0);
-+    } else if (wc < 0x10000) {
-+      count = 2; eos.putbyte((wc >> 12) | 0xE0);
-+    } else if (wc < 0x200000) {
-+      count = 3; eos.putbyte((wc >> 18) | 0xF0);
-+    } else if (wc < 0x4000000) {
-+      count = 4; eos.putbyte((wc >> 24) | 0xf8);
-+    } else if (wc <= 0x7fffffff) {
-+      count = 5; eos.putbyte((wc >> 30) | 0xFC);
-+    }
-+    for (int i = 0; i < count; i++) {
-+      eos.putbyte(((wc >> 6 * (count - i - 1)) & 0x3f) | 0x80);
-+    }
-+    return count;
-+  }
-+  inline int max_wchar_len() { return 6; }; /* XXX 3?*/
-+
-+};
-+
-+#define USE_ICONV
-+#ifdef USE_ICONV
-+#include <iconv.h>
-+#include <errno.h>
-+
-+class iconv_handler : public encoding_handler {
-+private:
-+  iconv_t icd, ocd;
-+  const char *encoding_name;
-+  static iconv_handler *ih_header;
-+
-+public:
-+  iconv_handler *next;
-+
-+  static iconv_handler *new_iconv_handler(const char *ename) {
-+    iconv_handler *ip;
-+    // if already created, use it.
-+    for (ip = ih_header; ip != NULL; ip = ip->next) {
-+      if (strcmp(ip->name(), ename) == 0) {
-+      return ip;
-+      }
-+    }
-+    // not found, create new one.
-+    ip = new iconv_handler(ename);
-+    ip->next = ih_header;
-+    ih_header = ip;
-+    return ip;
-+  }
-+  iconv_handler(const char *ename) : encoding_name(ename) {
-+    // internal code is UCS-2BE
-+    icd = iconv_open("UCS-2BE", encoding_name);
-+    ocd = iconv_open(encoding_name, "UCS-2BE");
-+  };
-+  ~iconv_handler() {};
-+
-+  const char *name() { return encoding_name; };
-+
-+  inline int is_wchar_byte(unsigned char c) {
-+    return (c >= 0x80); /* ??? */
-+  }
-+
-+  inline wchar make_wchar(unsigned char c0, encoding_istream& eis) {
-+    wchar wc = 0;
-+    char inbuf[8], outbuf[8];
-+    char *inp, *outp;
-+    size_t inbytesleft, outbytesleft;
-+    int i = 0;
-+    
-+    if (! is_wchar_byte(c0)) {
-+      return c0;
-+    }
-+    for (inbuf[i++] = c0; ;inbuf[i++] = eis.getbyte()) {
-+      inbytesleft = i;
-+      outbytesleft = sizeof(outbuf);
-+      inp = inbuf;
-+      outp = outbuf;
-+      size_t r = iconv(icd, &inp, &inbytesleft, &outp, &outbytesleft);
-+      if (r == (size_t)-1) {
-+      if (errno == EILSEQ) {
-+        /* illegal sequence? */
-+        return '?';
-+      } else if (errno == EINVAL) {
-+        /* incomplete sequence? */
-+        continue;
-+      } else if (errno == E2BIG) {
-+        /* no room to output? */
-+        return '?';
-+      }
-+      }
-+      /* ok */
-+      /* UCS-2 is 2 bytes */
-+      wc = ((outbuf[0] & 0x0ff) << 8) | (outbuf[1] & 0x0ff);
-+      return -wc;     // XXX: negative
-+    }
-+  }
-+
-+
-+  inline int put_wchar(wchar wc, encoding_ostream& eos) {
-+    char inbuf[4], outbuf[4];
-+    char *inp, *outp;
-+    size_t inbytesleft, outbytesleft;
-+
-+    if (!is_wchar_code(wc)) {
-+      eos.putbyte(wc & 0x0ff);
-+      return 1;
-+    }
-+    wc = -wc; // XXX: negative -> character code
-+
-+    inbuf[0] = (wc >> 8) & 0x0ff;
-+    inbuf[1] = (wc >> 0) & 0x0ff;
-+    inbuf[2] = 0;
-+    inbytesleft = 2;
-+    outbytesleft = 4;
-+    inp = inbuf;
-+    outp = outbuf;
-+    size_t r = iconv(ocd, &inp, &inbytesleft, &outp, &outbytesleft);
-+    if (r == (size_t)-1) {
-+      if (errno == EILSEQ) {
-+      /* illegal sequence? */;
-+      } else if (errno == EINVAL) {
-+      /* incomplete sequence? */;
-+      } else if (errno == E2BIG) {
-+      /* no room to output? */;
-+      }
-+      eos.putbyte('?');
-+      return 1;
-+    }
-+    char *op = outbuf;
-+    int n = 0;
-+    for (; op < outp; op++, n++) {
-+      eos.putbyte(*op & 0x0ff);
-+    }
-+    return outp - outbuf;
-+  }
-+  inline int max_wchar_len() { return 6; }; /* XXX */
-+
-+};
-+#else
-+class euc_handler : public encoding_handler {
-+  static const int WCTABLE_OFFSET = 0xa1;
-+  static const int WCTABLE_SIZE = 94;
-+  static const int EUCMASK = 0x8080;
-+
-+public:
-+  euc_handler() {}
-+  ~euc_handler() {};
-+
-+  const char *name() { return "EUC-JP"; };
-+
-+  inline int is_wchar_byte(unsigned char c) {
-+    return (c >= 0xa1 && c <= 0xfe);
-+  }
-+
-+  inline wchar make_wchar(unsigned char c0, encoding_istream& eis) {
-+    wchar wc;
-+    if (! is_wchar_byte(c0)) {
-+      return c0;
-+    }
-+    int c1 = eis.peekbyte();
-+    if (! is_wchar_byte(c1)) {
-+      eis.ungetbyte(c1);
-+      return c0;
-+    }
-+    c1 = eis.getbyte();
-+    wc = (c0 & 0xff) << 8;
-+    wc |= (c1 & 0xff);
-+
-+    if (wc == 0xa1a1)
-+      return ' ';
-+    return -wc;
-+  }
-+
-+  inline int put_wchar(wchar wc, encoding_ostream& eos) {
-+    if (is_wchar_code(wc)) {
-+      wc = -wc;
-+      eos.putbyte((wc >> 8) & 0x0ff);
-+      eos.putbyte((wc >> 0) & 0x0ff);
-+      return 2;    
-+    } else {
-+      eos.putbyte(wc & 0x0ff);
-+      return 1;
-+    }
-+  }
-+  inline int max_wchar_len() { return 2; }; /* XXX */
-+};
-+#endif /* USE_ICONV */
-+#endif
-+
-+static ascii8_handler ascii8;
-+#ifdef ENABLE_MULTIBYTE
-+static utf8_handler utf8;
-+#ifdef USE_ICONV
-+iconv_handler *iconv_handler::ih_header = NULL;
-+#else
-+static euc_handler eucjp;
-+#endif
-+#endif
-+
-+encoding_handler *input_encoding = &ascii8;
-+encoding_handler *output_encoding = &ascii8;
-+
-+static void
-+new_encoding_handler(encoding_handler **eptr, const char *encoding_name)
-+{
-+  if (!encoding_name) {
-+    *eptr = &ascii8;
-+    return;
-+  }
-+#ifdef ENABLE_MULTIBYTE
-+  if (strcmp(encoding_name, "UTF-8") == 0) {
-+    *eptr = &utf8;
-+    return;
-+  }
-+#ifdef USE_ICONV
-+  if (strcmp(encoding_name, "C") != 0) {
-+    *eptr = iconv_handler::new_iconv_handler(encoding_name);
-+    return;
-+  }
-+#else
-+  // printf("encoding request: [%s]\n", encoding_name);
-+  if (strcmp(encoding_name, "EUC-JP") == 0) {
-+    // printf("encoding: [EUC-JP]\n");
-+    *eptr = &eucjp;
-+    return;
-+  }
-+#endif
-+#endif
-+  // default
-+  *eptr = &ascii8;
-+  return;
-+}
-+
-+encoding_handler *
-+select_input_encoding_handler(const char *encoding_name)
-+{
-+  new_encoding_handler(&input_encoding, encoding_name);
-+  return input_encoding;
-+}
-+
-+encoding_handler *
-+select_output_encoding_handler(const char *encoding_name)
-+{
-+  new_encoding_handler(&output_encoding, encoding_name);
-+  return output_encoding;
-+}
-+
-+void
-+init_encoding_handler()
-+{
-+#ifdef ENABLE_MULTIBYTE
-+  const char *locale, *charset;
-+  // groff 1 defines ISO-8859-1 as the input encoding, so this is required
-+  // for compatibility. groff 2 will define UTF-8 (or possibly officially
-+  // allow it to be switchable?)
-+  select_input_encoding_handler("ISO-8859-1");
-+  select_output_encoding_handler("C");
-+
-+  locale = setlocale(LC_ALL, "");
-+  if (locale == NULL ||
-+      strcmp(locale, "C") == 0 || strcmp(locale, "POSIX") == 0) {
-+    return;
-+  }
-+  /* check LC_CTYPE is C or POSIX */
-+  locale = setlocale(LC_CTYPE, NULL);
-+  if (strcmp(locale, "C") == 0 || strcmp(locale, "POSIX") == 0) {
-+    return;
-+  }
-+  /* otherwise */
-+#if HAVE_LANGINFO_CODESET
-+  charset = nl_langinfo(CODESET);
-+#else
-+  charset = strchr(locale, '.');
-+  if (charset)
-+    ++charset;
-+  else
-+    charset = "";
-+#endif
-+  if (strncmp(locale, "ja", 2) == 0 || strncmp(locale, "zh", 2) == 0 ||
-+      (strncmp(locale, "ko", 2) == 0 && strcmp(charset, "UTF-8") == 0)) {
-+    select_input_encoding_handler(charset);
-+    select_output_encoding_handler(charset);
-+  } else if ((!device || strcmp(device, "ascii8") == 0)) {
-+    select_input_encoding_handler(NULL);
-+    select_output_encoding_handler(NULL);
-+  }
-+#endif
-+  return;
-+}
-+
-+int
-+is_wchar_code(wchar wc)
-+{
-+  return (wc < 0);
-+}
-+
-+int
-+is_wchar_singlebyte(wchar wc)
-+{
-+    return ((-256 < wc) && (wc < 0));
-+}
-+
-+unsigned char
-+wchar_singlebyte(wchar wc)
-+{
-+    if (wc >= 0)
-+      return (unsigned char)wc;
-+    else
-+      return (unsigned char)-wc;
-+}
-+
-+int
-+wchar_code(wchar wc)
-+{
-+    if (wc >= 0)
-+      return wc;
-+    else
-+      return -wc;
-+}
-+
-+int
-+make_wchar(int w)
-+{
-+    return -w;
-+}
-diff -Naur groff-1.18.1.4.orig/src/libs/libgroff/font.cc groff-1.18.1.4/src/libs/libgroff/font.cc
---- groff-1.18.1.4.orig/src/libs/libgroff/font.cc      2002-07-23 23:50:52.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libgroff/font.cc   2006-10-18 18:54:44.000000000 +0000
-@@ -25,6 +25,7 @@
- #include <assert.h>
- #include <math.h>
- #include <stdlib.h>
-+#include "encoding.h" // XXX: ukai
- #include "errarg.h"
- #include "error.h"
- #include "cset.h"
-@@ -43,8 +44,39 @@
-   int italic_correction;
-   int subscript_correction;
-   char *special_device_coding;
-+#ifdef ENABLE_MULTIBYTE
-+  char *subfont_name;
-+#endif
- };
-+#ifdef ENABLE_MULTIBYTE
-+struct fontset_list {
-+  struct fontset_list *next;
-+  char *primary_font_name;
-+  int fontset_font;
-+  wchar start_code;
-+  wchar end_code;
-+  int on_demand;
-+};
-+
-+fontset_list *font::fontsets = NULL;
-+
-+struct font_wchar_metric {
-+  struct font_wchar_metric *next;
-+  char type;
-+  int start_code;
-+  int end_code;
-+  int width;
-+  int height;
-+  int depth;
-+  int pre_math_space;
-+  int italic_correction;
-+  int subscript_correction;
-+  char *special_device_coding;
-+  char *subfont_name;
-+};
-+#endif
-+
- struct font_kern_list {
-   int i1;
-   int i2;
-@@ -149,7 +181,11 @@
- font::font(const char *s)
- : ligatures(0), kern_hash_table(0), space_width(0), ch_index(0), nindices(0),
--  ch(0), ch_used(0), ch_size(0), special(0), widths_cache(0)
-+  ch(0), 
-+#ifdef ENABLE_MULTIBYTE
-+  wch(0),
-+#endif
-+  ch_used(0), ch_size(0), special(0), widths_cache(0)
- {
-   name = new char[strlen(s) + 1];
-   strcpy(name, s);
-@@ -183,6 +219,17 @@
-     widths_cache = widths_cache->next;
-     delete tem;
-   }
-+#ifdef ENABLE_MULTIBYTE
-+  struct font_wchar_metric *wcp, *nwcp;
-+  for (wcp = wch; wcp != NULL; wcp = nwcp) {
-+    nwcp = wcp->next;
-+    if (wcp->special_device_coding)
-+      delete [] wcp->special_device_coding;
-+    if (wcp->subfont_name)
-+      delete [] wcp->subfont_name;
-+    delete wcp;
-+  }
-+#endif
- }
- static int scale_round(int n, int x, int y)
-@@ -244,6 +291,11 @@
- int font::contains(int c)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL)
-+    return 1;
-+#endif
-   return c >= 0 && c < nindices && ch_index[c] >= 0;
- }
-@@ -266,8 +318,31 @@
-   a_delete width;
- }
-+#ifdef ENABLE_MULTIBYTE
-+struct font_wchar_metric *
-+font::get_font_wchar_metric(int c)
-+{
-+  /* XXX: c is font index, not char code... */
-+  /* XXX: we assume wchar_code == font index code for wchars */
-+  /* XXX: does really code conflicts with index? */
-+  struct font_wchar_metric *wcp;
-+  for (wcp = wch; wcp != NULL; wcp = wcp->next) {
-+    if (wcp->start_code <= wchar_code(c) && wchar_code(c) <= wcp->end_code) {
-+      return wcp;
-+    }
-+  }
-+  return NULL;
-+}
-+#endif
-+
- int font::get_width(int c, int point_size)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL) {
-+    return scale(wcp->width, point_size);
-+  }
-+#endif
-   assert(c >= 0 && c < nindices);
-   int i = ch_index[c];
-   assert(i >= 0);
-@@ -299,30 +374,60 @@
- int font::get_height(int c, int point_size)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL) {
-+    return scale(wcp->height, point_size);
-+  }
-+#endif
-   assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-   return scale(ch[ch_index[c]].height, point_size);
- }
- int font::get_depth(int c, int point_size)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL) {
-+    return scale(wcp->depth, point_size);
-+  }
-+#endif
-   assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-   return scale(ch[ch_index[c]].depth, point_size);
- }
- int font::get_italic_correction(int c, int point_size)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL) {
-+    return scale(wcp->italic_correction, point_size);
-+  }
-+#endif
-   assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-   return scale(ch[ch_index[c]].italic_correction, point_size);
- }
- int font::get_left_italic_correction(int c, int point_size)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL) {
-+    return scale(wcp->pre_math_space, point_size);
-+  }
-+#endif
-   assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-   return scale(ch[ch_index[c]].pre_math_space, point_size);
- }
- int font::get_subscript_correction(int c, int point_size)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL) {
-+    return scale(wcp->subscript_correction, point_size);
-+  }
-+#endif
-   assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-   return scale(ch[ch_index[c]].subscript_correction, point_size);
- }
-@@ -371,12 +476,24 @@
- int font::get_character_type(int c)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL) {
-+    return wcp->type;
-+  }
-+#endif
-   assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-   return ch[ch_index[c]].type;
- }
- int font::get_code(int c)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL) {
-+    return c;
-+  }
-+#endif
-   assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-   return ch[ch_index[c]].code;
- }
-@@ -393,10 +510,26 @@
- const char *font::get_special_device_encoding(int c)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL)
-+    return wcp->special_device_coding;
-+#endif
-   assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-   return( ch[ch_index[c]].special_device_coding );
- }
-+#ifdef        ENABLE_MULTIBYTE
-+const char *font::get_subfont_name(int c)
-+{
-+  font_wchar_metric *wcp = get_font_wchar_metric(c);
-+  if (wcp != NULL)
-+    return wcp->subfont_name;
-+  assert(c >= 0 && c < nindices && ch_index[c] >= 0);
-+  return ch[ch_index[c]].subfont_name;
-+}
-+#endif
-+
- void font::alloc_ch_index(int index)
- {
-   if (nindices == 0) {
-@@ -554,9 +687,11 @@
-   return 0;
- }
-+
- // If the font can't be found, then if not_found is non-NULL, it will be set
- // to 1 otherwise a message will be printed.
-+
- int font::load(int *not_found)
- {
-   char *path;
-@@ -570,7 +705,7 @@
-   }
-   text_file t(fp, path);
-   t.skip_comments = 1;
--  char *p;
-+  char *p = NULL;
-   for (;;) {
-     if (!t.next()) {
-       t.error("missing charset command");
-@@ -681,6 +816,9 @@
-     }
-     else if (strcmp(command, "charset") == 0) {
-       had_charset = 1;
-+#ifdef ENABLE_MULTIBYTE
-+      int had_range = 0;
-+#endif
-       int last_index = -1;
-       for (;;) {
-       if (!t.next()) {
-@@ -695,6 +833,11 @@
-         command = nm;
-         break;
-       }
-+#ifdef ENABLE_MULTIBYTE
-+      int start_code = 0;
-+      int end_code = 0;
-+      int nrange = sscanf(nm, "u%X..u%X", &start_code, &end_code);
-+#endif
-       if (p[0] == '"') {
-         if (last_index == -1) {
-           t.error("first charset entry is duplicate");
-@@ -711,7 +854,64 @@
-         }
-         copy_entry(index, last_index);
-       }
-+#ifdef ENABLE_MULTIBYTE
-+      else if (nrange == 2) {
-+        had_range = 1;
-+        font_wchar_metric *wcp = new font_wchar_metric;
-+        wcp->start_code = start_code;
-+        wcp->end_code = end_code;
-+        wcp->height = 0;
-+        wcp->depth = 0;
-+        wcp->pre_math_space = 0;
-+        wcp->italic_correction = 0;
-+        wcp->subscript_correction = 0;
-+        int nparms = sscanf(p, "%d,%d,%d,%d,%d,%d",
-+                            &wcp->width, &wcp->height, &wcp->depth,
-+                            &wcp->italic_correction,
-+                            &wcp->pre_math_space,
-+                            &wcp->subscript_correction);
-+        if (nparms < 1) {
-+          t.error("bad width for `%1'", nm);
-+          return 0;
-+        }
-+        p = strtok(0, WS);
-+        if (p == 0) {
-+          t.error("missing character type for `%1'", nm);
-+          return 0;
-+        }
-+        int type;
-+        if (sscanf(p, "%d", &type) != 1) {
-+          t.error("bad character type for `%1'", nm);
-+          return 0;
-+        }
-+        if (type < 0 || type > 255) {
-+          t.error("character type `%1' out of range", type);
-+          return 0;
-+        }
-+        wcp->type = type;
-+
-+        p = strtok(0, WS);
-+        if ((p == 0) || (strcmp(p, "--") == 0)) {
-+          wcp->subfont_name = NULL;
-+        } else {
-+          wcp->subfont_name = new char[strlen(p) + 1];
-+          strcpy(wcp->subfont_name, p);
-+        }
-+
-+        p = strtok(0, WS);
-+        if ((p == NULL) || (strcmp(p, "--") == 0)) {
-+          wcp->special_device_coding = NULL;
-+        } else {
-+          wcp->special_device_coding = new char[strlen(p) + 1];
-+          strcpy(wcp->special_device_coding, p);
-+        }
-+        wcp->next = wch;
-+        wch = wcp;
-+        p = NULL;
-+      }
-+#endif
-       else {
-+        
-         font_char_metric metric;
-         metric.height = 0;
-         metric.depth = 0;
-@@ -747,6 +947,16 @@
-           t.error("missing code for `%1'", nm);
-           return 0;
-         }
-+#ifdef        ENABLE_MULTIBYTE
-+        char *subp = strchr(p, ':');
-+        if (subp) {
-+          *subp++ = '\0';
-+          metric.subfont_name = new char[strlen(subp) + 1];
-+          strcpy(metric.subfont_name, subp);
-+        } else {
-+          metric.subfont_name = NULL;
-+        }
-+#endif
-         char *ptr;
-         metric.code = (int)strtol(p, &ptr, 0);
-         if (metric.code == 0 && ptr == p) {
-@@ -777,7 +987,11 @@
-         }
-       }
-       }
-+#ifdef ENABLE_MULTIBYTE
-+      if (!had_range && last_index == -1) {
-+#else
-       if (last_index == -1) {
-+#endif
-       t.error("I didn't seem to find any characters");
-       return 0;
-       }
-@@ -811,6 +1025,11 @@
-   { "biggestfont", &font::biggestfont },
-   { "spare2", &font::spare2 },
-   { "sizescale", &font::sizescale }
-+#ifdef        ENABLE_MULTIBYTE
-+  ,
-+  { "lowerwchar", &font::lowerwchar },
-+  { "wcharkern", &font::wcharkern }
-+#endif
-   };
- int font::load_desc()
-@@ -981,6 +1200,67 @@
-       tcommand = 1;
-     else if (strcmp("use_charnames_in_special", p) == 0)
-       use_charnames_in_special = 1;
-+#ifdef        ENABLE_MULTIBYTE
-+    else if (strcmp("fontset", p) == 0) {
-+      /* fontset <primary-fontname> <fontname> <code>..<code> [ondemand] */
-+      p = strtok(0, WS);
-+      if (p == NULL) {
-+      t.error("no primary font for fontset");
-+      return 0;
-+      }
-+      char *pfont = NULL;
-+      if (strcmp(p, "-") != 0) {
-+      pfont = new char[strlen(p)+1];
-+      strcpy(pfont, p);
-+      }
-+      p = strtok(0, WS);
-+      if (p == NULL) {
-+      t.error("no fontset font for `%1'", 
-+              pfont ? pfont : "-");
-+      return 0;
-+      }
-+      int fontset_font = 0;
-+      for (int i = 0; i < nfonts; i++) {
-+      if (strcmp(p, font_name_table[i]) == 0) {
-+        fontset_font = i;
-+        break;
-+      }
-+      }
-+      if (fontset_font == nfonts) {
-+      t.error("fontset font `%1' for font `%2' not defined", 
-+              p, pfont ? pfont : "-");
-+      return 0;
-+      }
-+      p = strtok(0, WS);
-+      if (p == NULL) {
-+      t.error("no range for fontset font `%1' for font `%2'",
-+              font_name_table[fontset_font],
-+              pfont ? pfont : "-");
-+      return 0;
-+      }
-+      wchar start_code = 0;
-+      wchar end_code = 0;
-+      int nparms = sscanf(p, "%x..%x", &start_code, &end_code);
-+      if (nparms != 2) {
-+      t.error("invalid range format `%1'", p);
-+      return 0;
-+      }
-+      p = strtok(0, WS);
-+      int on_demand = 0;
-+      if (p != NULL && strcmp(p, "ondemand") == 0) {
-+      on_demand = 1;
-+      }
-+      /* XXX */
-+      fontset_list *fl = new fontset_list;
-+      fl->primary_font_name = pfont;
-+      fl->fontset_font = fontset_font;
-+      fl->start_code = start_code;
-+      fl->end_code = end_code;
-+      fl->on_demand = on_demand;
-+      fl->next = fontsets;
-+      fontsets = fl;
-+    }
-+#endif
-     else if (strcmp("charset", p) == 0)
-       break;
-     else if (unknown_desc_command_handler) {
-@@ -1020,6 +1300,39 @@
-   return 1;
- }      
-+#ifdef ENABLE_MULTIBYTE
-+int
-+font::get_fontset_font(const char *fname, wchar wc) {
-+  fontset_list *fl;
-+  int avail_fontno = -1;
-+  wc = wchar_code(wc);
-+  for (fl = fontsets; fl != NULL; fl = fl->next) {
-+    if (fl->primary_font_name == NULL) {
-+      if (fl->start_code <= wc && wc <= fl->end_code) {
-+      avail_fontno = fl->fontset_font;
-+      }
-+    }
-+    else if (fname && strcmp(fl->primary_font_name, fname) == 0) {
-+      if (fl->start_code <= wc && wc <= fl->end_code) {
-+      return fl->fontset_font;
-+      }
-+    }
-+  }
-+  return avail_fontno;
-+}
-+
-+int
-+font::is_on_demand(int fontno) {
-+  fontset_list *fl;
-+  for (fl = fontsets; fl != NULL; fl = fl->next) {
-+    if (fl->fontset_font == fontno) {
-+      return fl->on_demand;
-+    }
-+  }
-+  return 0;
-+}
-+#endif
-+
- void font::handle_unknown_font_command(const char *, const char *,
-                                      const char *, int)
- {
-diff -Naur groff-1.18.1.4.orig/src/libs/libgroff/fontfile.cc groff-1.18.1.4/src/libs/libgroff/fontfile.cc
---- groff-1.18.1.4.orig/src/libs/libgroff/fontfile.cc  2002-05-31 14:31:01.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libgroff/fontfile.cc       2006-10-18 18:54:44.000000000 +0000
-@@ -24,6 +24,7 @@
- #include <assert.h>
- #include <stdlib.h>
- #include <errno.h>
-+#include "encoding.h" // XXX: ukai
- #include "font.h"
- #include "searchpath.h"
- #include "device.h"
-@@ -36,6 +37,10 @@
- int font::res = 0;
- int font::hor = 1;
- int font::vert = 1;
-+#ifdef        ENABLE_MULTIBYTE
-+int font::lowerwchar = 0;
-+int font::wcharkern = 0;
-+#endif
- int font::unitwidth = 0;
- int font::paperwidth = 0;
- int font::paperlength = 0;
-diff -Naur groff-1.18.1.4.orig/src/libs/libgroff/nametoindex.cc groff-1.18.1.4/src/libs/libgroff/nametoindex.cc
---- groff-1.18.1.4.orig/src/libs/libgroff/nametoindex.cc       2002-04-05 20:55:38.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libgroff/nametoindex.cc    2006-10-18 18:54:44.000000000 +0000
-@@ -24,6 +24,7 @@
- #include <ctype.h>
- #include <assert.h>
- #include <stdlib.h>
-+#include "encoding.h" // XXX: ukai
- #include "errarg.h"
- #include "error.h"
- #include "font.h"
-@@ -37,6 +38,9 @@
-   character_indexer();
-   ~character_indexer();
-   int ascii_char_index(unsigned char);
-+#ifdef        ENABLE_MULTIBYTE
-+  int wchar_index(wchar);
-+#endif
-   int named_char_index(const char *);
-   int numbered_char_index(int);
- private:
-@@ -68,6 +72,13 @@
-   return ascii_index[c];
- }
-+#ifdef        ENABLE_MULTIBYTE
-+int character_indexer::wchar_index(wchar wc)
-+{
-+  return wc; /* XXX: wchar code == index */
-+}
-+#endif
-+
- int character_indexer::numbered_char_index(int n)
- {
-   if (n >= 0 && n < NSMALL) {
-@@ -103,6 +114,30 @@
- int font::name_to_index(const char *s)
- {
-   assert(s != 0 && s[0] != '\0' && s[0] != ' ');
-+#ifdef        ENABLE_MULTIBYTE
-+ {
-+   int i = 1;
-+   wchar wc = input_encoding->make_wchar(s[0], (const unsigned char *)s, &i);
-+   /* XXX 
-+    * if wchar can be represented in single byte (<256),
-+    * it should be the same as char<wc>.
-+    */
-+   if (is_wchar_singlebyte(wc)) {
-+       return indexer.ascii_char_index(wchar_singlebyte(wc));
-+   }
-+   if (is_wchar_code(wc)) {
-+    return indexer.wchar_index(wc);
-+   }
-+   /* XXX: uA1A1 and \xa1a1 are synonyms */
-+   if (s[0] == 'u') {
-+     char *res;
-+     long n = strtol(s + 1, &res, 16);
-+     if (res != s + 1 && *res == '\0') {
-+       return indexer.wchar_index(n);
-+     }
-+   }
-+ }
-+#endif
-   if (s[1] == '\0')
-     return indexer.ascii_char_index(s[0]);
-   /* char128 and \200 are synonyms */
-@@ -115,3 +150,9 @@
-   return indexer.named_char_index(s);
- }
-+#ifdef        ENABLE_MULTIBYTE
-+int font::wchar_index(wchar wc)
-+{
-+  return indexer.wchar_index(wc);
-+}
-+#endif
-diff -Naur groff-1.18.1.4.orig/src/libs/libgroff/searchpath.cc groff-1.18.1.4/src/libs/libgroff/searchpath.cc
---- groff-1.18.1.4.orig/src/libs/libgroff/searchpath.cc        2001-08-19 21:32:28.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libgroff/searchpath.cc     2006-10-18 18:54:44.000000000 +0000
-@@ -19,6 +19,7 @@
- with groff; see the file COPYING.  If not, write to the Free Software
- Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+#include "encoding.h"
- #include "lib.h"
- #include <stdlib.h>
-diff -Naur groff-1.18.1.4.orig/src/libs/libgroff/tmpfile.cc groff-1.18.1.4/src/libs/libgroff/tmpfile.cc
---- groff-1.18.1.4.orig/src/libs/libgroff/tmpfile.cc   2002-09-06 07:50:42.000000000 +0000
-+++ groff-1.18.1.4/src/libs/libgroff/tmpfile.cc        2006-10-18 18:54:44.000000000 +0000
-@@ -24,6 +24,7 @@
- #include <errno.h>
- #include <stdlib.h>
-+#include "encoding.h"
- #include "posix.h"
- #include "errarg.h"
- #include "error.h"
-diff -Naur groff-1.18.1.4.orig/src/preproc/eqn/box.cc groff-1.18.1.4/src/preproc/eqn/box.cc
---- groff-1.18.1.4.orig/src/preproc/eqn/box.cc 2002-04-04 14:04:45.000000000 +0000
-+++ groff-1.18.1.4/src/preproc/eqn/box.cc      2006-10-18 18:54:44.000000000 +0000
-@@ -80,7 +80,7 @@
- int nroff = 0;                        // should we grok ndefine or tdefine?
--struct {
-+struct S {
-   const char *name;
-   int *ptr;
- } param_table[] = {
-diff -Naur groff-1.18.1.4.orig/src/preproc/eqn/eqn.y groff-1.18.1.4/src/preproc/eqn/eqn.y
---- groff-1.18.1.4.orig/src/preproc/eqn/eqn.y  2000-02-06 09:38:01.000000000 +0000
-+++ groff-1.18.1.4/src/preproc/eqn/eqn.y       2006-10-18 18:54:44.000000000 +0000
-@@ -21,6 +21,7 @@
- #include <string.h>
- #include <stdlib.h>
-+#include "encoding.h" /* XXX */
- #include "lib.h"
- #include "box.h"
- extern int non_empty_flag;
-diff -Naur groff-1.18.1.4.orig/src/preproc/eqn/lex.cc groff-1.18.1.4/src/preproc/eqn/lex.cc
---- groff-1.18.1.4.orig/src/preproc/eqn/lex.cc 2002-02-10 01:22:11.000000000 +0000
-+++ groff-1.18.1.4/src/preproc/eqn/lex.cc      2006-10-18 18:54:44.000000000 +0000
-@@ -23,6 +23,7 @@
- #include "eqn_tab.h"
- #include "stringclass.h"
- #include "ptable.h"
-+#include "encoding.h"
- struct definition {
-   char is_macro;
-@@ -375,6 +376,11 @@
-       lex_error("invalid input character code %1", c);
-       else {
-       line += char(c);
-+#ifdef        ENABLE_MULTIBYTE
-+      if (input_encoding->is_wchar_byte(c)) {
-+        line += char(getc(fp));
-+      }
-+#endif
-       if (c == '\n') 
-         break;
-       }
-diff -Naur groff-1.18.1.4.orig/src/preproc/eqn/main.cc groff-1.18.1.4/src/preproc/eqn/main.cc
---- groff-1.18.1.4.orig/src/preproc/eqn/main.cc        2002-02-19 16:28:31.000000000 +0000
-+++ groff-1.18.1.4/src/preproc/eqn/main.cc     2006-10-18 18:54:44.000000000 +0000
-@@ -258,6 +258,7 @@
-   program_name = argv[0];
-   static char stderr_buf[BUFSIZ];
-   setbuf(stderr, stderr_buf);
-+  init_encoding_handler();
-   int opt;
-   int load_startup_file = 1;
-   static const struct option long_options[] = {
-diff -Naur groff-1.18.1.4.orig/src/preproc/eqn/text.cc groff-1.18.1.4/src/preproc/eqn/text.cc
---- groff-1.18.1.4.orig/src/preproc/eqn/text.cc        2000-02-06 09:38:06.000000000 +0000
-+++ groff-1.18.1.4/src/preproc/eqn/text.cc     2006-10-18 18:54:44.000000000 +0000
-@@ -21,13 +21,20 @@
- #include "eqn.h"
- #include "pbox.h"
- #include "ptable.h"
-+#include "encoding.h"
- class char_box : public simple_box {
-   unsigned char c;
-+#ifdef        ENABLE_MULTIBYTE
-+  wchar wc;
-+#endif
-   char next_is_italic;
-   char prev_is_italic;
- public:
-   char_box(unsigned char);
-+#ifdef        ENABLE_MULTIBYTE
-+  char_box(unsigned char, wchar);
-+#endif
-   void debug_print();
-   void output();
-   int is_char();
-@@ -165,11 +172,22 @@
- }
- char_box::char_box(unsigned char cc)
--: c(cc), next_is_italic(0), prev_is_italic(0)
-+: c(cc),
-+#ifdef        ENABLE_MULTIBYTE
-+  wc(cc),
-+#endif
-+  next_is_italic(0), prev_is_italic(0)
- {
-   spacing_type = char_table[c].spacing_type;
- }
-+#ifdef        ENABLE_MULTIBYTE
-+char_box::char_box(unsigned char cc, wchar wc)
-+: c(cc), wc(wc), next_is_italic(0), prev_is_italic(0)
-+{
-+}
-+#endif
-+
- void char_box::hint(unsigned flags)
- {
-   if (flags & HINT_PREV_IS_ITALIC)
-@@ -188,7 +206,11 @@
-   if (c == '\\')
-     fputs("\\e", stdout);
-   else
-+#ifdef        ENABLE_MULTIBYTE
-+    output_encoding->put_wchar(wc, stdout);
-+#else
-     putchar(c);
-+#endif
-   if (!next_is_italic)
-     fputs("\\/", stdout);
-   else
-@@ -497,6 +519,14 @@
-       break;
-     default:
-     normal_char:
-+#ifdef        ENABLE_MULTIBYTE
-+      if (input_encoding->is_wchar_byte(c)) {
-+        int i = 1;
-+      wchar wc = input_encoding->make_wchar(c, (unsigned char *)s, &i);
-+      b = new char_box('A', wc); // char_info of wc is same the 'A'.
-+      s += i;
-+      } else
-+#endif
-       b = new char_box(c);
-       break;
-     }
-diff -Naur groff-1.18.1.4.orig/src/preproc/html/pre-html.cc groff-1.18.1.4/src/preproc/html/pre-html.cc
---- groff-1.18.1.4.orig/src/preproc/html/pre-html.cc   2002-09-05 23:37:01.000000000 +0000
-+++ groff-1.18.1.4/src/preproc/html/pre-html.cc        2006-10-18 18:54:44.000000000 +0000
-@@ -63,6 +63,10 @@
- #define DEFAULT_IMAGE_RES        100   // number of pixels per inch resolution
- #define IMAGE_BOARDER_PIXELS       0
- #define INLINE_LEADER_CHAR      '\\'
-+#define A4_LENGTH             841890   // taken from devps/Makefile.sub
-+#define LETTER_LENGTH         792000   // taken from devps/Makefile.sub
-+#define A4_OFFSET                  0
-+#define LETTER_OFFSET             50   // 50/72 of an inch
- #define TRANSPARENT  "-background white -transparent white"
- #define MIN_ALPHA_BITS             0
-@@ -104,6 +108,7 @@
- static char *macroset_template= NULL;           // image template passed to troff by -D
- static int   troff_arg        = 0;              // troff arg index
- static char *image_dir        = NULL;           // user specified image directory
-+static char *gsPaper          = NULL;           // the paper size that gs must use
- static int   textAlphaBits    = MAX_ALPHA_BITS;
- static int   graphicAlphaBits = MAX_ALPHA_BITS;
- static char *antiAlias        = NULL;           // antialias arguments we pass to gs.
-@@ -211,6 +216,54 @@
- }
- /*
-+ *  get_papersize - returns an integer determining the paper length from
-+ *  devps/DESC
-+ */
-+
-+static int get_papersize (void)
-+{
-+  char *pathp;
-+  FILE *f;
-+  int res;
-+  f = font_path.open_file("devps/DESC", &pathp);
-+  if (f == 0)
-+    fatal("can't open devps/DESC");
-+  while (get_line(f)) {
-+    int n = sscanf(linebuf, "paperlength %d", &res);
-+    if (n >= 1) {
-+      fclose(f);
-+      return res;
-+    }
-+    if (!strncmp(linebuf, "papersize", 9)) {
-+      double length;
-+      char *p = linebuf + 9;
-+      while (*p == ' ' || *p == '\t')
-+        p++;
-+      for (p = strtok(p, " \t"); p; p = strtok(0, " \t")) {
-+        if (font::scan_papersize(p, 0, &length, 0)) {
-+          fclose(f);
-+          return int(length * postscriptRes + 0.5);
-+        }
-+      }
-+      fatal("bad argument to `papersize' keyword in devps/DESC");
-+    }
-+  }
-+  fatal("can't find `papersize' or `paperlength' keyword in devps/DESC");
-+  return 0;
-+}
-+
-+/*
-+ *  determine_vertical_offset - works out the default vertical offset from
-+ *                              the page length
-+ */
-+
-+static void determine_vertical_offset (void)
-+{
-+  vertical_offset = ((A4_LENGTH-get_papersize())*72)/postscriptRes;
-+  gsPaper = "-sPAPERSIZE=a4";
-+}
-+
-+/*
-  *  html_system - a wrapper for system()
-  */
-@@ -1469,6 +1522,7 @@
-   int ok=1;
-   postscriptRes = get_resolution();
-+  determine_vertical_offset();
-   i = scanArguments(argc, argv);
-   setupAntiAlias();
-   checkImageDir();
-diff -Naur groff-1.18.1.4.orig/src/preproc/refer/command.cc groff-1.18.1.4/src/preproc/refer/command.cc
---- groff-1.18.1.4.orig/src/preproc/refer/command.cc   2002-02-10 01:22:12.000000000 +0000
-+++ groff-1.18.1.4/src/preproc/refer/command.cc        2006-10-18 18:54:44.000000000 +0000
-@@ -632,7 +632,7 @@
- ? means that the previous argument is optional, * means that the
- previous argument can occur any number of times. */
--struct {
-+struct S {
-   const char *name;
-   command_t func;
-   const char *arg_types;
-diff -Naur groff-1.18.1.4.orig/src/roff/groff/groff.cc groff-1.18.1.4/src/roff/groff/groff.cc
---- groff-1.18.1.4.orig/src/roff/groff/groff.cc        2002-09-22 08:35:48.000000000 +0000
-+++ groff-1.18.1.4/src/roff/groff/groff.cc     2006-10-18 18:54:44.000000000 +0000
-@@ -107,6 +107,7 @@
-   program_name = argv[0];
-   static char stderr_buf[BUFSIZ];
-   setbuf(stderr, stderr_buf);
-+  init_encoding_handler();
-   assert(NCOMMANDS <= MAX_COMMANDS);
-   string Pargs, Largs, Fargs;
-   int vflag = 0;
-diff -Naur groff-1.18.1.4.orig/src/roff/groff/groff.man groff-1.18.1.4/src/roff/groff/groff.man
---- groff-1.18.1.4.orig/src/roff/groff/groff.man       2002-07-13 09:28:17.000000000 +0000
-+++ groff-1.18.1.4/src/roff/groff/groff.man    2006-10-18 18:54:44.000000000 +0000
-@@ -15,6 +15,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff-base/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup
-@@ -118,7 +122,7 @@
- .c --------------------------------------------------------------------
- .c ShortOpt ([char [punct]])
- .c
--.c `-c' somwhere in the text 
-+.c `-c' somewhere in the text 
- .c second arg is punctuation
- .c
- .de ShortOpt
-@@ -130,7 +134,7 @@
- .c --------------------------------------------------------------------
- .c LongOpt  ([name [punct]])
- .c
--.c `--name' somwhere in the text 
-+.c `--name' somewhere in the text 
- .c second arg is punctuation
- .c
- .de LongOpt
-@@ -314,7 +318,7 @@
- .B groff
- program allows to control the whole
- .I groff
--system by comand line options.
-+system by command line options.
- .
- This is a great simplification in comparison to the classical case (which
- uses pipes only).
-@@ -610,7 +614,7 @@
- .
- .
- .\" --------------------------------------------------------------------
--.SS Tranparent Options
-+.SS Transparent Options
- .\" --------------------------------------------------------------------
- .
- The following options are transparently handed over to the formatter
-@@ -695,7 +699,7 @@
- is much easier than
- .IR "classical roff" .
- .
--This section gives an overview of the parts that consitute the groff
-+This section gives an overview of the parts that constitute the groff
- system.
- .
- It complements
-@@ -948,6 +952,10 @@
- Text output using the EBCDIC code page IBM cp1047 (e.g. OS/390 Unix).
- .
- .TP
-+.B nippon
-+Text output using the Japanese-EUC character set.
-+.
-+.TP
- .B dvi
- TeX DVI format.
- .
-@@ -956,6 +964,12 @@
- HTML output.
- .
- .TP
-+.B ascii8
-+For typewriter-like devices.  Unlike
-+.BR ascii ,
-+this device is 8 bit clean.  This device is intended to be used
-+for codesets other than ASCII and ISO-8859-1.
-+.TP
- .B latin1
- Text output using the ISO Latin-1 (ISO 8859-1) character set; see
- .BR iso_8859_1 (7).
-@@ -1031,7 +1045,7 @@
- .
- .P
- Today, most printing or drawing hardware is handled by the operating
--system, by device drivers, or by software interfaces, usally accepting
-+system, by device drivers, or by software interfaces, usually accepting
- PostScript.
- .
- Consequently, there isn't an urgent need for more hardware device
-diff -Naur groff-1.18.1.4.orig/src/roff/nroff/nroff.man groff-1.18.1.4/src/roff/nroff/nroff.man
---- groff-1.18.1.4.orig/src/roff/nroff/nroff.man       2002-02-07 08:36:54.000000000 +0000
-+++ groff-1.18.1.4/src/roff/nroff/nroff.man    2006-10-18 18:54:44.000000000 +0000
-@@ -53,8 +53,10 @@
- command using groff.
- Only 
- .BR ascii ,
-+.BR ascii8 ,
- .BR latin1 ,
- .BR utf8 ,
-+.BR nippon ,
- and
- .B cp1047
- are valid arguments for the
-diff -Naur groff-1.18.1.4.orig/src/roff/nroff/nroff.sh groff-1.18.1.4/src/roff/nroff/nroff.sh
---- groff-1.18.1.4.orig/src/roff/nroff/nroff.sh        2002-02-07 08:36:54.000000000 +0000
-+++ groff-1.18.1.4/src/roff/nroff/nroff.sh     2006-10-18 18:54:44.000000000 +0000
-@@ -12,6 +12,8 @@
-     T=-Tlatin1 ;;
-   IBM-1047)
-     T=-Tcp1047 ;;
-+  EUC-JP)
-+    T=-Tnippon ;;
-   *)
-     case "${LC_ALL-${LC_CTYPE-${LANG}}}" in
-       *.UTF-8)
-@@ -20,6 +22,8 @@
-         T=-Tlatin1 ;;
-       *.IBM-1047)
-         T=-Tcp1047 ;;
-+      ja_JP.ujis | ja_JP.eucJP)
-+      T=-Tnippon ;;
-       *)
-         case "$LESSCHARSET" in
-           utf-8)
-@@ -28,8 +32,10 @@
-             T=-Tlatin1 ;;
-           cp1047)
-             T=-Tcp1047 ;;
-+          japanese)
-+          T=-Tnippon ;;
-           *)
--            T=-Tascii ;;
-+            T=-Tascii8 ;;
-           esac ;;
-      esac ;;
- esac
-@@ -52,7 +58,7 @@
-       exit 1 ;;
-     -[iptSUC] | -[mrno]*)
-       opts="$opts $1" ;;
--    -Tascii | -Tlatin1 | -Tutf8 | -Tcp1047)
-+    -Tascii | -Tlatin1 | -Tutf8 | -Tcp1047 | -Tascii8 | -Tnippon)
-       T=$1 ;;
-     -T*)
-       # ignore other devices
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/charinfo.h groff-1.18.1.4/src/roff/troff/charinfo.h
---- groff-1.18.1.4.orig/src/roff/troff/charinfo.h      2002-03-22 16:11:18.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/charinfo.h   2006-10-18 18:54:44.000000000 +0000
-@@ -29,9 +29,16 @@
-   macro *mac;
-   unsigned char special_translation;
-   unsigned char hyphenation_code;
-+#ifdef ENABLE_MULTIBYTE
-+  unsigned short flags;
-+#else
-   unsigned char flags;
-+#endif
-   unsigned char ascii_code;
-   unsigned char asciify_code;
-+#ifdef ENABLE_MULTIBYTE
-+  wchar wchar_code;
-+#endif
-   char not_found;
-   char transparent_translate; // non-zero means translation applies
-                               // to transparent throughput
-@@ -47,6 +54,11 @@
-     OVERLAPS_VERTICALLY = 16,
-     TRANSPARENT = 32,
-     NUMBERED = 64
-+#ifdef        ENABLE_MULTIBYTE
-+    ,
-+    DONT_BREAK_BEFORE = 0x100,        // 256, pre kinsoku
-+    DONT_BREAK_AFTER = 0x200  // 512, post kinsoku
-+#endif
-     };
-   enum {
-     TRANSLATE_NONE,
-@@ -74,7 +86,11 @@
-   int get_translation_input();
-   charinfo *get_translation(int = 0);
-   void set_translation(charinfo *, int, int);
-+#ifdef ENABLE_MULTIBYTE
-+  void set_flags(unsigned short);
-+#else
-   void set_flags(unsigned char);
-+#endif
-   void set_special_translation(int, int);
-   int get_special_translation(int = 0);
-   macro *set_macro(macro *, int = 0);
-@@ -84,6 +100,12 @@
-   int get_number();
-   int numbered();
-   int is_fallback();
-+#ifdef        ENABLE_MULTIBYTE
-+  wchar get_wchar_code();
-+  void set_wchar_code(wchar);
-+  int cannot_break_before(); // pre kinsoku
-+  int cannot_break_after(); // post kinsoku
-+#endif
-   symbol *get_symbol();
- };
-@@ -131,6 +153,18 @@
-   return fallback;
- }
-+#ifdef        ENABLE_MULTIBYTE
-+inline int charinfo::cannot_break_before()
-+{
-+  return flags & DONT_BREAK_BEFORE;
-+}
-+
-+inline int charinfo::cannot_break_after()
-+{
-+  return flags & DONT_BREAK_AFTER;
-+}
-+#endif
-+
- inline charinfo *charinfo::get_translation(int transparent_throughput)
- {
-   return (transparent_throughput && !transparent_translate
-@@ -153,7 +187,18 @@
-   return (translate_input ? asciify_code : 0);
- }
-+#ifdef        ENABLE_MULTIBYTE
-+inline wchar charinfo::get_wchar_code()
-+{
-+  return wchar_code;
-+}
-+#endif
-+
-+#ifdef        ENABLE_MULTIBYTE
-+inline void charinfo::set_flags(unsigned short c)
-+#else
- inline void charinfo::set_flags(unsigned char c)
-+#endif
- {
-   flags = c;
- }
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/env.cc groff-1.18.1.4/src/roff/troff/env.cc
---- groff-1.18.1.4.orig/src/roff/troff/env.cc  2002-10-03 15:53:06.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/env.cc       2006-10-18 18:54:44.000000000 +0000
-@@ -32,6 +32,7 @@
- #include "charinfo.h"
- #include "macropath.h"
- #include "input.h"
-+#include "font.h" // ENABLE_MULTIBYTE only?
- #include <math.h>
- symbol default_family("T");
-@@ -264,6 +265,13 @@
- void environment::add_char(charinfo *ci)
- {
-   int s;
-+#ifdef ENABLE_MULTIBYTE
-+  int fontno = get_font(); // current font #
-+  int fontset_font = get_fontset_fontno(fontno, ci->get_wchar_code());
-+  if (fontno >= 0 && fontno != fontset_font) {
-+    change_curfont(fontset_font);
-+  }
-+#endif
-   if (interrupted)
-     ;
-   // don't allow fields in dummy environments
-@@ -286,11 +294,95 @@
-   else {
-     if (line == 0)
-       start_line();
-+#ifdef        ENABLE_MULTIBYTE
-+    /* 
-+     * XXX: NEED REWRITE TO BE MORE GENERIC
-+     * This code is based on jgroff
-+     * about kerning between ASCII and EUC-JP 
-+     */
-+    if (!ci->get_wchar_code()) {
-+      /*
-+       * This node is a ASCII character node.
-+       */
-+      if (!pre_char_is_ascii && enable_wcharkern && !hwkern.is_zero()) {
-+      /*
-+       * Insert a little space node between EUC and ASCII.
-+       */
-+      word_space_node *ws;
-+
-+      if (ci->ends_sentence() || ci->transparent() || ci->cannot_break_before())
-+        ws = new unbreakable_space_node(hwkern.to_units(), get_fill_color());
-+      else
-+        ws = new word_space_node(hwkern.to_units(),
-+                                 get_fill_color(),
-+                                 new width_list(env_space_width(this),
-+                                                env_sentence_space_width(this)));
-+      curenv->add_node(ws);
-+      }
-+      pre_char_is_ascii = 1;
-+      pre_wchar_cannot_break_after = 0;
-+    } else {
-+      /*
-+       * This node is a EUC charcater node.
-+       */
-+      if (!pre_char_is_ascii && line->get_node_type() == NODE_NEWLINE_SPACE) {
-+      /*
-+       * remove a newline-node.
-+       */
-+      node *ns_node = line;
-+      line = line->next;
-+      width_total -= ns_node->width();
-+      space_total -= ns_node->nspaces();
-+      delete ns_node;
-+      }
-+
-+      if (!pre_wchar_cannot_break_after && !ci->cannot_break_before()) {
-+      /*
-+       * add a zero-width-space-node before EUC charcater node.
-+       */
-+      add_node(new kword_space_node(get_fill_color()));
-+      met_with_kword_space = 1;
-+      }
-+      pre_wchar_cannot_break_after = ci->cannot_break_after();
-+
-+      if (pre_char_is_ascii && enable_wcharkern && !hwkern.is_zero()) {
-+      /*
-+       * Insert a little space node between ASCII and EUC.
-+       */
-+      unbreakable_space_node *ws =
-+        new unbreakable_space_node(hwkern.to_units(), get_fill_color());
-+      curenv->add_node(ws);
-+      }
-+      pre_char_is_ascii = 0;
-+
-+      if (!vlower.is_zero()) {
-+      /*
-+       * Lower a EUC charcater node.
-+       */
-+      curenv->add_node(new vmotion_node(vlower.to_units(), 
-+                                        get_fill_color())); // lower
-+      }
-+    }
-+#endif
-     if (ci != hyphen_indicator_char)
-       line = line->add_char(ci, this, &width_total, &space_total);
-     else
-       line = line->add_discretionary_hyphen();
-+#ifdef        ENABLE_MULTIBYTE
-+    enable_wcharkern = 1;
-+    if (!vlower.is_zero() && ci->get_wchar_code()) {
-+      /*
-+       * Raise a EUC charcater node.
-+       */
-+      curenv->add_node(new vmotion_node(-vlower.to_units(), 
-+                                      get_fill_color())); // raise
-+    }
-+#endif
-   }
-+#ifdef ENABLE_MULTIBYTE
-+  if (fontset_font >= 0 && fontno != fontset_font)
-+      change_curfont(fontno); /* restore saved font # */
-+#endif
- }
- node *environment::make_char_node(charinfo *ci)
-@@ -394,7 +486,11 @@
-     width_total += x;
-     return;
-   }
-+#ifdef ENABLE_MULTIBYTE
-+  add_node(new newline_space_node(x, get_fill_color())); // This node may be removed
-+#else
-   add_node(new word_space_node(x, get_fill_color(), w));
-+#endif
-   possibly_break_line(0, spread_flag);
-   spread_flag = 0;
- }
-@@ -480,6 +576,35 @@
-     warning(WARN_FONT, "bad font number");
- }
-+#ifdef        ENABLE_MULTIBYTE
-+void environment::change_curfont(symbol nm)
-+{
-+  int n = symbol_fontno(nm);
-+  if (n < 0) {
-+    n = next_available_font_position();
-+    if (!mount_font(n, nm))
-+      return;
-+  }
-+  fontno = n;
-+}
-+
-+void environment::change_curfont(int n)
-+{
-+  if (is_good_fontno(n))
-+    fontno = n;
-+  else
-+    error("bad font number");
-+}
-+
-+void environment::set_encoding(symbol enc)
-+{
-+  if (enc.is_null() || enc.is_empty())
-+    return;
-+  select_input_encoding_handler(enc.contents());
-+  select_output_encoding_handler(enc.contents());
-+}
-+#endif /* ENABLE_MULTIBYTE */
-+
- void environment::set_family(symbol fam)
- {
-   if (interrupted)
-@@ -649,6 +774,16 @@
-   control_char('.'),
-   no_break_control_char('\''),
-   hyphen_indicator_char(0)
-+#ifdef        ENABLE_MULTIBYTE
-+  ,
-+  stretch_threshold(0),
-+  pre_wchar_cannot_break_after(0),
-+  pre_char_is_ascii(-1),
-+  enable_wcharkern(0),
-+  met_with_kword_space(0),
-+  hwkern(font::wcharkern),
-+  vlower(font::lowerwchar)
-+#endif
- {
-   prev_family = family = lookup_family(default_family);
-   prev_fontno = fontno = 1;
-@@ -739,6 +874,16 @@
-   control_char(e->control_char),
-   no_break_control_char(e->no_break_control_char),
-   hyphen_indicator_char(e->hyphen_indicator_char)
-+#ifdef        ENABLE_MULTIBYTE
-+  ,
-+  stretch_threshold(e->stretch_threshold),
-+  pre_wchar_cannot_break_after(0),
-+  pre_char_is_ascii(-1),
-+  enable_wcharkern(0),
-+  met_with_kword_space(0),
-+  hwkern(font::wcharkern),
-+  vlower(font::lowerwchar)
-+#endif
- {
- }
-@@ -1781,6 +1926,9 @@
-   target_text_length = line_length - saved_indent;
-   width_total = H0;
-   space_total = 0;
-+#ifdef        ENABLE_MULTIBYTE
-+  enable_wcharkern = 0;
-+#endif
- }
- hunits environment::get_hyphenation_space()
-@@ -1819,6 +1967,23 @@
-   skip_line();
- }
-+#ifdef ENABLE_MULTIBYTE
-+void stretch_threshold_request()
-+{
-+  int n;
-+  if (has_arg() && get_integer(&n)) {
-+      if (n < 0 || n > 100) {
-+        warning(WARN_RANGE, "stretch threshold value %1 out of range", n);
-+      } else {
-+        curenv->stretch_threshold = n;
-+      }
-+  } else {
-+      curenv->stretch_threshold = 0;
-+  }
-+  skip_line();
-+}
-+#endif
-+
- breakpoint *environment::choose_breakpoint()
- {
-   hunits x = width_total;
-@@ -2014,6 +2179,30 @@
-            // When a macro follows a paragraph in fill mode, the
-            // current line should not be empty.
-            || (width_total - line->width()) > target_text_length)) {
-+#ifdef ENABLE_MULTIBYTE
-+    if (met_with_kword_space) {
-+      node *linep = line;
-+      node *prep = 0;
-+      while (linep->next) {
-+      if (linep->next->get_node_type() == NODE_GLYPH)
-+        prep = 0;
-+      else if (linep->next->get_node_type() == NODE_KWORD_SPACE)
-+        prep = linep;
-+        linep = linep->next;
-+      }
-+      if (prep) {
-+        /*
-+         * delete a kword_space_node which is in the top of line.
-+         */
-+        linep = prep->next;
-+        prep->next = linep->next;
-+        width_total -= linep->width();
-+        space_total -= linep->nspaces();
-+        delete linep;
-+      }
-+      met_with_kword_space = 0;
-+    }
-+#endif
-     hyphenate_line(start_here);
-     breakpoint *bp = choose_breakpoint();
-     if (bp == 0)
-@@ -2026,6 +2215,15 @@
-     bp->nd->split(bp->index, &pre, &post);
-     *ndp = post;
-     hunits extra_space_width = H0;
-+#ifdef ENABLE_MULTIBYTE
-+    int sv_adjust_mode = adjust_mode;
-+    if (stretch_threshold) {
-+      int ratio = bp->width * 100 / target_text_length;
-+      if (ratio < stretch_threshold) {
-+          adjust_mode = ADJUST_LEFT;
-+      }
-+    }
-+#endif
-     switch(adjust_mode) {
-     case ADJUST_BOTH:
-       if (bp->nspaces != 0)
-@@ -2041,6 +2239,9 @@
-       saved_indent += target_text_length - bp->width;
-       break;
-     }
-+#ifdef ENABLE_MULTIBYTE
-+    adjust_mode = sv_adjust_mode;
-+#endif
-     distribute_space(pre, bp->nspaces, extra_space_width);
-     hunits output_width = bp->width + extra_space_width;
-     input_line_start -= output_width;
-@@ -3237,6 +3438,9 @@
-   init_request("hys", hyphenation_space_request);
-   init_request("hym", hyphenation_margin_request);
-   init_request("pvs", post_vertical_spacing);
-+#ifdef ENABLE_MULTIBYTE
-+  init_request("stt", stretch_threshold_request);
-+#endif
-   init_int_env_reg(".f", get_font);
-   init_int_env_reg(".b", get_bold);
-   init_hunits_env_reg(".i", get_indent);
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/env.h groff-1.18.1.4/src/roff/troff/env.h
---- groff-1.18.1.4.orig/src/roff/troff/env.h   2002-09-20 14:39:32.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/env.h        2006-10-18 18:54:44.000000000 +0000
-@@ -213,6 +213,15 @@
-   unsigned char control_char;
-   unsigned char no_break_control_char;
-   charinfo *hyphen_indicator_char;
-+#ifdef        ENABLE_MULTIBYTE
-+  int stretch_threshold;
-+  int pre_wchar_cannot_break_after;
-+  int pre_char_is_ascii;
-+  int enable_wcharkern;
-+  int met_with_kword_space;
-+  hunits hwkern;
-+  vunits vlower;
-+#endif
-   
-   environment(symbol);
-   environment(const environment *);   // for temporary environment
-@@ -279,6 +288,10 @@
-   void wrap_up_tab();
-   void set_font(int);
-   void set_font(symbol);
-+#ifdef        ENABLE_MULTIBYTE
-+  void change_curfont(int);
-+  void change_curfont(symbol);
-+#endif
-   void set_family(symbol);
-   void set_size(int);
-   void set_char_height(int);
-@@ -309,6 +322,9 @@
-   const char *get_point_size_string();
-   const char *get_requested_point_size_string();
-   void output_pending_lines();
-+#ifdef ENABLE_MULTIBYTE
-+  void set_encoding(symbol);
-+#endif
-   
-   friend void title_length();
-   friend void space_size();
-@@ -347,6 +363,9 @@
- #ifdef WIDOW_CONTROL
-   friend void widow_control_request();
- #endif /* WIDOW_CONTROL */
-+#ifdef        ENABLE_MULTIBYTE
-+  friend void stretch_threshold_request();
-+#endif
-   friend void do_divert(int append, int boxing);
- };
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/input.cc groff-1.18.1.4/src/roff/troff/input.cc
---- groff-1.18.1.4.orig/src/roff/troff/input.cc        2002-10-03 15:52:20.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/input.cc     2006-10-18 18:54:44.000000000 +0000
-@@ -35,6 +35,7 @@
- #include "macropath.h"
- #include "defs.h"
- #include "input.h"
-+#include "encoding.h" // XXX: ukai
- // Needed for getpid() and isatty()
- #include "posix.h"
-@@ -89,6 +90,11 @@
- charinfo *charset_table[256];
- unsigned char hpf_code_table[256];
-+#ifdef        ENABLE_MULTIBYTE
-+charinfo *wcharset_table_entry(wchar wc);
-+
-+#endif /* ENABLE_MULTIBYTE */
-+
- static int warning_mask = DEFAULT_WARNING_MASK;
- static int inhibit_errors = 0;
- static int ignoring = 0;
-@@ -148,6 +154,20 @@
- input_iterator *make_temp_iterator(const char *);
- const char *input_char_description(int);
-+#ifdef ENABLE_MULTIBYTE
-+static void
-+select_encoding()
-+{
-+    symbol e = get_long_name(1);
-+    if (e.is_null()) {
-+      skip_line();
-+      return;
-+    }
-+    curenv->set_encoding(e);
-+    skip_line();
-+    
-+}
-+#endif
- void set_escape_char()
- {
-@@ -1524,6 +1544,19 @@
-   type = TOKEN_NEWLINE;
- }
-+#ifdef ENABLE_MULTIBYTE
-+class encoding_istream_input : public encoding_istream {
-+private:
-+  node **np;
-+public:
-+  encoding_istream_input(node **n) : np(n) {};
-+  ~encoding_istream_input() {};
-+  int getbyte() { return input_stack::get(np); };
-+  int peekbyte() { return input_stack::peek(); };
-+  void ungetbyte(int ch) { return; };
-+};
-+#endif
-+
- void token::next()
- {
-   if (nd) {
-@@ -1533,6 +1566,10 @@
-   units x;
-   for (;;) {
-     node *n;
-+#ifdef ENABLE_MULTIBYTE
-+    encoding_istream_input einput(&n);
-+#endif
-+
-     int cc = input_stack::get(&n);
-     if (cc != escape_char || escape_char == 0) {
-     handle_normal_char:
-@@ -1686,8 +1723,22 @@
-       }
-       return;
-       default:
-+#ifdef        ENABLE_MULTIBYTE
-+      wc = input_encoding->make_wchar(cc, einput);
-+      if (is_wchar_code(wc)) {
-+        type = TOKEN_WCHAR;
-+        c = 0;
-+      } else if (wc == ' ') {
-+        type = TOKEN_SPACE;
-+        c = cc;
-+      } else {
-+        type = TOKEN_CHAR;
-+        c = cc;
-+      }
-+#else
-       type = TOKEN_CHAR;
-       c = cc;
-+#endif
-       return;
-       }
-     }
-@@ -2057,6 +2108,10 @@
-   switch(type) {
-   case TOKEN_CHAR:
-     return c == t.c;
-+#ifdef        ENABLE_MULTIBYTE
-+  case TOKEN_WCHAR:
-+    return wc == t.wc;
-+#endif
-   case TOKEN_SPECIAL:
-     return nm == t.nm;
-   case TOKEN_NUMBERED_CHAR:
-@@ -2563,6 +2618,27 @@
-       }
-       break;
-       }
-+#ifdef        ENABLE_MULTIBYTE
-+    case token::TOKEN_WCHAR:
-+      {
-+      wchar wch = tok.wc;
-+
-+      if (possibly_handle_first_page_transition())
-+        ;
-+      else {
-+        for (;;) {
-+          curenv->add_char(wcharset_table_entry(wch));
-+          tok.next();
-+          if (tok.type != token::TOKEN_WCHAR)
-+            break;
-+          wch = tok.wc;
-+        }
-+        suppress_next = 1;
-+        bol = 0;
-+      }
-+      break;
-+      }
-+#endif        /* ENABLE_MULTIBYTE */
-     case token::TOKEN_TRANSPARENT:
-       {
-       if (bol) {
-@@ -6018,6 +6094,10 @@
- {
-   if (type == TOKEN_CHAR)
-     return charset_table[c];
-+#ifdef        ENABLE_MULTIBYTE
-+  if (type == TOKEN_WCHAR)
-+    return wcharset_table_entry(wc);
-+#endif
-   if (type == TOKEN_SPECIAL)
-     return get_charinfo(nm);
-   if (type == TOKEN_NUMBERED_CHAR)
-@@ -6070,6 +6150,11 @@
-   case TOKEN_CHAR:
-     *pp = (*pp)->add_char(charset_table[c], curenv, &w, &s);
-     break;
-+#ifdef        ENABLE_MULTIBYTE
-+  case TOKEN_WCHAR:
-+    *pp = (*pp)->add_char(wcharset_table_entry(wc), curenv, &w, &s);
-+    break;
-+#endif
-   case TOKEN_DUMMY:
-     n = new dummy_node;
-     break;
-@@ -6142,6 +6227,11 @@
-   case TOKEN_CHAR:
-     curenv->add_char(charset_table[c]);
-     break;
-+#ifdef        ENABLE_MULTIBYTE
-+  case TOKEN_WCHAR:
-+    curenv->add_char(wcharset_table_entry(wc));
-+    break;
-+#endif
-   case TOKEN_DUMMY:
-     curenv->add_node(new dummy_node);
-     break;
-@@ -6900,6 +6990,7 @@
-   if (!safer_flag)
-     mac_path = &macro_path;
-   set_string(".T", device);
-+  init_encoding_handler();
-   init_charset_table();
-   init_hpf_code_table();
-   if (!font::load_desc())
-@@ -6924,6 +7015,9 @@
-     // In the DESC file a font name of 0 (zero) means leave this
-     // position empty.
-     if (strcmp(font::font_name_table[i], "0") != 0)
-+#ifdef ENABLE_MULTIBYTE
-+      if (!font::is_on_demand(i))
-+#endif
-       mount_font(j, symbol(font::font_name_table[i]));
-   curdiv = topdiv = new top_level_diversion;
-   if (nflag)
-@@ -7081,6 +7175,9 @@
-   init_request("ecs", save_escape_char);
-   init_request("el", else_request);
-   init_request("em", end_macro);
-+#ifdef ENABLE_MULTIBYTE
-+  init_request("encoding", select_encoding);
-+#endif
-   init_request("eo", escape_off);
-   init_request("ex", exit_request);
-   init_request("fchar", define_fallback_character);
-@@ -7533,12 +7630,92 @@
- dictionary charinfo_dictionary(501);
-+#ifdef ENABLE_MULTIBYTE
-+struct charinfo_list {
-+  struct charinfo_list *next;
-+  charinfo *ci;
-+} *wcharset_table = NULL;
-+
-+/* XXX: use more efficient method? */
-+static charinfo*
-+lookup_wcharset_table(wchar wc)
-+{
-+  struct charinfo_list *cl;
-+  for (cl = wcharset_table; cl; cl = cl->next) {
-+    if (cl->ci && cl->ci->get_wchar_code() == wc)
-+      return cl->ci;
-+  }
-+  return NULL;
-+}
-+
-+static void
-+add_wcharset_table(charinfo *ci)
-+{
-+  struct charinfo_list *cl = new struct charinfo_list;
-+  cl->next = wcharset_table;
-+  cl->ci = ci;
-+  wcharset_table = cl;
-+}
-+
-+charinfo *wcharset_table_entry(wchar wc)
-+{
-+  if (! is_wchar_code(wc))
-+    return NULL;
-+  charinfo *cp = lookup_wcharset_table(wc);
-+  if (cp == NULL) {
-+    int i = wchar_code(wc);
-+    char buf[16];
-+    if (i > 0x100)
-+      sprintf(buf, "u%04X", i);
-+    else {
-+      cp = get_charinfo_by_number(i);
-+      if (cp != NULL)
-+      return cp;
-+      sprintf(buf, "char%d", i); // ???
-+    }
-+    symbol nm = symbol(buf);
-+    cp = new charinfo(nm);
-+    (void)charinfo_dictionary.lookup(nm, cp);
-+    cp->set_wchar_code(wc);
-+    add_wcharset_table(cp);
-+  }
-+  return cp;
-+}
-+
-+static charinfo *
-+wchar_charinfo(symbol nm)
-+{
-+  const char *p = nm.contents();
-+  if (*p != 'u') {
-+    return NULL;
-+  }
-+  char *pp;
-+  wchar wc = make_wchar(strtol(p + 1, &pp, 16));
-+  if (pp < p + 5)
-+      return NULL;
-+  charinfo *cp = lookup_wcharset_table(wc);
-+  if (cp)
-+    return cp;
-+  /* create on demand */
-+  cp = new charinfo(nm);
-+  cp->set_wchar_code(wc);
-+  add_wcharset_table(cp);
-+  return cp;
-+}
-+#endif
-+
- charinfo *get_charinfo(symbol nm)
- {
-   void *p = charinfo_dictionary.lookup(nm);
-   if (p != 0)
-     return (charinfo *)p;
-+#ifdef ENABLE_MULTIBYTE
-+  charinfo *cp = wchar_charinfo(nm);
-+  if (cp == NULL)
-+    cp = new charinfo(nm);
-+#else
-   charinfo *cp = new charinfo(nm);
-+#endif
-   (void)charinfo_dictionary.lookup(nm, cp);
-   return cp;
- }
-@@ -7548,6 +7725,9 @@
- charinfo::charinfo(symbol s)
- : translation(0), mac(0), special_translation(TRANSLATE_NONE),
-   hyphenation_code(0), flags(0), ascii_code(0), asciify_code(0),
-+#ifdef ENABLE_MULTIBYTE
-+  wchar_code(0),
-+#endif
-   not_found(0), transparent_translate(1), translate_input(0),
-   fallback(0), nm(s)
- {
-@@ -7592,6 +7772,14 @@
-   asciify_code = c;
- }
-+#ifdef ENABLE_MULTIBYTE
-+void charinfo::set_wchar_code(wchar wc)
-+{
-+  wchar_code = wc;
-+  index = wc; /* XXX: wchar code == index */
-+}
-+#endif
-+
- macro *charinfo::set_macro(macro *m, int f)
- {
-   macro *tem = mac;
-@@ -7647,6 +7835,13 @@
- int font::name_to_index(const char *nm)
- {
-   charinfo *ci;
-+#ifdef        ENABLE_MULTIBYTE
-+  int i = 1;
-+  wchar wc = input_encoding->make_wchar(nm[0], (const unsigned char *)nm, &i);
-+  if (is_wchar_code(wc)) {
-+    ci = wcharset_table_entry(wc);
-+  } else
-+#endif
-   if (nm[1] == 0)
-     ci = charset_table[nm[0] & 0xff];
-   else if (nm[0] == '\\' && nm[2] == 0)
-@@ -7663,3 +7858,10 @@
- {
-   return get_charinfo_by_number(n)->get_index();
- }
-+
-+#ifdef        ENABLE_MULTIBYTE
-+int font::wchar_index(wchar wc)
-+{
-+  return(wcharset_table_entry(wc)->get_index());
-+}
-+#endif
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/node.cc groff-1.18.1.4/src/roff/troff/node.cc
---- groff-1.18.1.4.orig/src/roff/troff/node.cc 2002-10-03 21:55:09.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/node.cc      2006-10-18 18:54:44.000000000 +0000
-@@ -38,6 +38,7 @@
- #include "input.h"
- #include "div.h"
- #include "geometry.h"
-+#include "encoding.h"
- #include "nonposix.h"
-@@ -745,8 +746,15 @@
-   int current_font_number;
-   symbol *font_position;
-   int nfont_positions;
-+#ifdef ENABLE_MULTIBYTE
-+  const char *current_encoding;
-+#endif
-   enum { TBUF_SIZE = 256 };
-+#ifdef        ENABLE_MULTIBYTE
-+  wchar tbuf[TBUF_SIZE];
-+#else
-   char tbuf[TBUF_SIZE];
-+#endif
-   int tbuf_len;
-   int tbuf_kern;
-   int begun_page;
-@@ -756,6 +764,9 @@
-   void put(int i);
-   void put(unsigned int i);
-   void put(const char *s);
-+#ifdef        ENABLE_MULTIBYTE
-+  void putw(const wchar wc);
-+#endif
-   void set_font(tfont *tf);
-   void flush_tbuf();
- public:
-@@ -799,6 +810,13 @@
-   putc(c, fp);
- }
-+#ifdef        ENABLE_MULTIBYTE
-+inline void troff_output_file::putw(wchar wc)
-+{
-+  output_encoding->put_wchar(wc, fp);
-+}
-+#endif
-+
- inline void troff_output_file::put(unsigned char c)
- {
-   putc(c, fp);
-@@ -956,7 +974,11 @@
-   check_output_limits(hpos, vpos - current_size);
-   for (int i = 0; i < tbuf_len; i++)
-+#ifdef ENABLE_MULTIBYTE
-+    putw(tbuf[i]);
-+#else
-     put(tbuf[i]);
-+#endif
-   put('\n');
-   tbuf_len = 0;
- }
-@@ -988,7 +1010,13 @@
-     flush_tbuf();
-     set_font(tf);
-   }
-+#ifdef ENABLE_MULTIBYTE
-+  wchar c = ci->get_wchar_code();
-+  if (c == '\0')
-+    c = ci->get_ascii_code();
-+#else
-   char c = ci->get_ascii_code();
-+#endif
-   if (c == '\0') {
-     flush_tbuf();
-     do_motion();
-@@ -1014,7 +1042,8 @@
-   }
-   else if (tcommand_flag) {
-     if (tbuf_len > 0 && hpos == output_hpos && vpos == output_vpos
--      && gcol == current_glyph_color && fcol == current_fill_color
-+      && (!gcol || gcol == current_glyph_color)
-+      && (!fcol || fcol == current_fill_color)
-       && kk == tbuf_kern
-       && tbuf_len < TBUF_SIZE) {
-       check_charinfo(tf, ci);
-@@ -1039,17 +1068,26 @@
-     check_charinfo(tf, ci);
-     // check_output_limits(output_hpos, output_vpos);
-     if (vpos == output_vpos
--      && gcol == current_glyph_color && fcol == current_fill_color
-+      && (!gcol || gcol == current_glyph_color)
-+      && (!fcol || fcol == current_fill_color)
-       && n > 0 && n < 100 && !force_motion) {
-       put(char(n/10 + '0'));
-       put(char(n%10 + '0'));
-+#ifdef ENABLE_MULTIBYTE
-+      putw(c);
-+#else
-       put(c);
-+#endif
-       output_hpos = hpos;
-     }
-     else {
-       do_motion();
-       put('c');
-+#ifdef ENABLE_MULTIBYTE
-+      putw(c);
-+#else
-       put(c);
-+#endif
-     }
-     hpos += w.to_units() + kk;
-   }
-@@ -1063,7 +1101,13 @@
-     return;
-   if (tf != current_tfont)
-     set_font(tf);
-+#ifdef        ENABLE_MULTIBYTE
-+  wchar c = ci->get_wchar_code();
-+  if (c == '\0')
-+    c = ci->get_ascii_code();
-+#else
-   char c = ci->get_ascii_code();
-+#endif
-   if (c == '\0') {
-     do_motion();
-     glyph_color(gcol);
-@@ -1087,11 +1131,16 @@
-   else {
-     int n = hpos - output_hpos;
-     if (vpos == output_vpos
--      && gcol == current_glyph_color && fcol == current_fill_color
-+      && (!gcol || gcol == current_glyph_color)
-+      && (!fcol || fcol == current_fill_color)
-       && n > 0 && n < 100) {
-       put(char(n/10 + '0'));
-       put(char(n%10 + '0'));
-+#ifdef ENABLE_MULTIBYTE
-+      putw(c);
-+#else
-       put(c);
-+#endif
-       output_hpos = hpos;
-     }
-     else {
-@@ -1099,13 +1148,26 @@
-       glyph_color(gcol);
-       fill_color(fcol);
-       put('c');
-+#ifdef ENABLE_MULTIBYTE
-+      putw(c);
-+#else
-       put(c);
-+#endif
-     }
-   }
- }
- void troff_output_file::set_font(tfont *tf)
- {
-+#ifdef ENABLE_MULTIBYTE
-+  /* XXX */
-+  if (current_encoding != output_encoding->name()) {
-+    put("x encoding ");
-+    put(output_encoding->name());
-+    put('\n');
-+    current_encoding = output_encoding->name();
-+  }
-+#endif
-   if (current_tfont == tf)
-     return;
-   int n = tf->get_input_position();
-@@ -1162,7 +1224,7 @@
- void troff_output_file::fill_color(color *col)
- {
--  if ((current_fill_color == col) || !color_flag)
-+  if (!col || current_fill_color == col || !color_flag)
-     return;
-   flush_tbuf();
-   put("DF");
-@@ -1210,7 +1272,7 @@
- void troff_output_file::glyph_color(color *col)
- {
--  if ((current_glyph_color == col) || !color_flag)
-+  if (!col || current_glyph_color == col || !color_flag)
-     return;
-   flush_tbuf();
-   put("m");
-@@ -1497,7 +1559,17 @@
-   put(' ');
-   put(vresolution);
-   put('\n');
-+#ifdef ENABLE_MULTIBYTE
-+  current_encoding = output_encoding->name();
-+  put("x init");
-+  if (current_encoding && *current_encoding != '\0') {
-+      put(' ');
-+      put(current_encoding);
-+  }
-+  put('\n');
-+#else
-   put("x init\n");
-+#endif
- }
- /* output_file */
-@@ -1777,6 +1849,9 @@
-   int same(node *);
-   const char *type();
-   int force_tprint();
-+#ifdef        ENABLE_MULTIBYTE
-+  node_type get_node_type();
-+#endif
- };
- glyph_node *glyph_node::free_list = 0;
-@@ -1802,6 +1877,9 @@
-   int same(node *);
-   const char *type();
-   int force_tprint();
-+#ifdef        ENABLE_MULTIBYTE
-+  node_type get_node_type();
-+#endif
- };
- class kern_pair_node : public node {
-@@ -5225,6 +5303,55 @@
-   return 0;
- }
-+#ifdef        ENABLE_MULTIBYTE
-+kword_space_node::kword_space_node(color *c, node *x) : word_space_node(0, c, new width_list(0, 0), x)
-+{}
-+
-+node *kword_space_node::copy()
-+{
-+    return new kword_space_node(col);
-+}
-+newline_space_node::newline_space_node(hunits d, color *c, node *x) : word_space_node(d, c, new width_list(0, 0), x)
-+{}
-+
-+node *newline_space_node::copy()
-+{
-+    return new newline_space_node(n, col);
-+}
-+
-+const char *kword_space_node::type()
-+{
-+  return "kword_space_node";
-+}
-+const char *newline_space_node::type()
-+{
-+  return "newline_space_node";
-+}
-+
-+node_type node::get_node_type()
-+{
-+    return NODE_ANOTHER;
-+}
-+node_type glyph_node::get_node_type()
-+{
-+    return NODE_GLYPH;
-+}
-+
-+node_type ligature_node::get_node_type()
-+{
-+    return NODE_ANOTHER;
-+}
-+
-+node_type kword_space_node::get_node_type()
-+{
-+    return NODE_KWORD_SPACE;
-+}
-+node_type newline_space_node::get_node_type()
-+{
-+    return NODE_NEWLINE_SPACE;
-+}
-+#endif
-+
- int unbreakable_space_node::same(node *nd)
- {
-   return n == ((unbreakable_space_node *)nd)->n
-@@ -5625,6 +5752,28 @@
-     return 0;
- }
-+#ifdef ENABLE_MULTIBYTE
-+int get_fontset_fontno(int n, wchar wc)
-+{
-+  if (n >= 0 && n < font_table_size && font_table[n] != 0) {
-+    /* XXX: external_name should be used? */
-+    int fn = font::get_fontset_font(font_table[n]->get_name().contents(), wc);
-+    if (fn >= 0) {
-+      symbol nm(font::font_name_table[fn]);
-+      int nn = symbol_fontno(nm);
-+      if (nn < 0) {
-+      nn = next_available_font_position();
-+      if (!mount_font(nn, nm)) {
-+        return -1; /* XXX */
-+      }
-+      }
-+      return nn;
-+    }
-+  }
-+  return n;
-+}
-+#endif
-+
- hunits env_digit_width(environment *env)
- {
-   node *n = make_glyph_node(charset_table['0'], env);
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/node.h groff-1.18.1.4/src/roff/troff/node.h
---- groff-1.18.1.4.orig/src/roff/troff/node.h  2002-10-02 14:23:28.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/node.h       2006-10-18 18:54:44.000000000 +0000
-@@ -20,6 +20,8 @@
- Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-+#include "config.h"
-+
- struct hyphen_list {
-   unsigned char hyphen;
-   unsigned char breakable;
-@@ -31,6 +33,9 @@
- void hyphenate(hyphen_list *, unsigned);
- enum hyphenation_type { HYPHEN_MIDDLE, HYPHEN_BOUNDARY, HYPHEN_INHIBIT };
-+#ifdef        ENABLE_MULTIBYTE
-+enum node_type {NODE_GLYPH, NODE_KWORD_SPACE, NODE_NEWLINE_SPACE, NODE_ANOTHER};
-+#endif
- class ascii_output_file;
-@@ -106,6 +111,9 @@
-   virtual int same(node *) = 0;
-   virtual const char *type() = 0;
-+#ifdef        ENABLE_MULTIBYTE
-+  virtual node_type get_node_type();
-+#endif
- };
- inline node::node()
-@@ -212,6 +220,24 @@
-   int force_tprint();
- };
-+#ifdef        ENABLE_MULTIBYTE
-+class kword_space_node : public word_space_node {
-+public:
-+  kword_space_node(color *, node * = 0);
-+  node *copy();
-+  const char *type();
-+  node_type get_node_type();
-+};
-+
-+class newline_space_node : public word_space_node {
-+public:
-+  newline_space_node(hunits, color *, node * = 0);
-+  node *copy();
-+  const char *type();
-+  node_type get_node_type();
-+};
-+#endif
-+
- class unbreakable_space_node : public word_space_node {
-   unbreakable_space_node(hunits, int, color *, node * = 0);
- public:
-@@ -538,6 +564,9 @@
- node *copy_node_list(node *);
- int get_bold_fontno(int f);
-+#ifdef ENABLE_MULTIBYTE
-+int get_fontset_fontno(int f, wchar wc);
-+#endif
- inline hyphen_list::hyphen_list(unsigned char code, hyphen_list *p)
- : hyphen(0), breakable(0), hyphenation_code(code), next(p)
-@@ -595,3 +624,4 @@
- font_family *lookup_family(symbol);
- symbol get_font_name(int, environment *);
-+
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/token.h groff-1.18.1.4/src/roff/troff/token.h
---- groff-1.18.1.4.orig/src/roff/troff/token.h 2002-06-22 21:31:41.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/token.h      2006-10-18 18:54:44.000000000 +0000
-@@ -28,12 +28,18 @@
-   symbol nm;
-   node *nd;
-   unsigned char c;
-+#ifdef        ENABLE_MULTIBYTE
-+  wchar wc;
-+#endif
-   int val;
-   units dim;
-   enum token_type {
-     TOKEN_BACKSPACE,
-     TOKEN_BEGIN_TRAP,
-     TOKEN_CHAR,                       // a normal printing character
-+#ifdef        ENABLE_MULTIBYTE
-+    TOKEN_WCHAR,              // a multibyte character
-+#endif
-     TOKEN_DUMMY,              // \&
-     TOKEN_EMPTY,              // this is the initial value
-     TOKEN_END_TRAP,
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/troff.h groff-1.18.1.4/src/roff/troff/troff.h
---- groff-1.18.1.4.orig/src/roff/troff/troff.h 2002-06-19 13:20:18.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/troff.h      2006-10-18 18:54:44.000000000 +0000
-@@ -28,6 +28,7 @@
- #include <stdlib.h>
- #include <errno.h>
-+#include "encoding.h"
- #include "assert.h"
- #include "color.h"
- #include "device.h"
-diff -Naur groff-1.18.1.4.orig/src/roff/troff/troff.man groff-1.18.1.4/src/roff/troff/troff.man
---- groff-1.18.1.4.orig/src/roff/troff/troff.man       2002-09-16 08:42:45.000000000 +0000
-+++ groff-1.18.1.4/src/roff/troff/troff.man    2006-10-18 18:54:44.000000000 +0000
-@@ -22,6 +22,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff-base/copyright.
-+..
- .
- .
- .\" --------------------------------------------------------------------
-diff -Naur groff-1.18.1.4.orig/src/utils/tfmtodit/tfmtodit.cc groff-1.18.1.4/src/utils/tfmtodit/tfmtodit.cc
---- groff-1.18.1.4.orig/src/utils/tfmtodit/tfmtodit.cc 2001-08-19 21:32:41.000000000 +0000
-+++ groff-1.18.1.4/src/utils/tfmtodit/tfmtodit.cc      2006-10-18 18:54:44.000000000 +0000
-@@ -650,7 +650,7 @@
- gives the groff name of the character, `i' gives its index in
- the encoding, which is filled in later  (-1 if it does not appear). */
--struct {
-+struct S {
-   const char *ch;
-   int i;
- } lig_chars[] = {
-@@ -670,7 +670,7 @@
- // Each possible ligature appears in this table.
--struct {
-+struct S2 {
-   unsigned char c1, c2, res;
-   const char *ch;
- } lig_table[] = {
-diff -Naur groff-1.18.1.4.orig/src/xditview/Dvi.c groff-1.18.1.4/src/xditview/Dvi.c
---- groff-1.18.1.4.orig/src/xditview/Dvi.c     2000-03-01 13:50:49.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/Dvi.c  2006-10-18 18:54:44.000000000 +0000
-@@ -4,6 +4,8 @@
- #endif /* lint */
- #endif /* SABER */
-+#include "config.h"
-+
- /*
-  * Dvi.c - Dvi display widget
-  *
-@@ -49,6 +51,8 @@
- NBI   -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\n\
- S     -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\
- SS    -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\
-+M     -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0\n\
-+G     -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0\
- ";
- #define offset(field) XtOffset(DviWidget, field)
-@@ -94,6 +98,20 @@
- static void           SaveToFile ();
-+/* font.c */
-+extern void ParseFontMap();
-+extern void DestroyFontMap();
-+extern void ForgetFonts();
-+
-+/* page.c */
-+extern void DestroyFileMap();
-+extern int SearchPagePosition();
-+extern void FileSeek();
-+extern void ForgetPagePositions();
-+
-+/* parse.c */
-+extern int ParseInput();
-+
- DviClassRec dviClassRec = {
- {
-       &widgetClassRec,                /* superclass             */    
-@@ -406,6 +424,7 @@
-       return ret;
- }
-+void
- SetDevice (dw, name)
-       DviWidget       dw;
-       char            *name;
-@@ -559,6 +578,9 @@
-       DviWidgetClass super = (DviWidgetClass) wc->core_class.superclass;
-       if (wc->command_class.save == InheritSaveToFile)
-               wc->command_class.save = super->command_class.save;
-+#ifdef ENABLE_MULTIBYTE
-+      DviInitLocale();
-+#endif
- }
-       
- /*
-diff -Naur groff-1.18.1.4.orig/src/xditview/DviChar.c groff-1.18.1.4/src/xditview/DviChar.c
---- groff-1.18.1.4.orig/src/xditview/DviChar.c 2002-04-07 04:48:51.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/DviChar.c      2006-10-18 18:54:44.000000000 +0000
-@@ -5,7 +5,10 @@
-  * font indexes and back
-  */
--#include   "DviChar.h"
-+#include <stdlib.h>
-+#include "config.h"
-+#include "DviChar.h"
-+#include "encoding.h"
- extern char *xmalloc();
-@@ -21,7 +24,7 @@
- static int    standard_maps_loaded = 0;
- static void   load_standard_maps ();
- static int    hash_name ();
--static                dispose_hash(), compute_hash();
-+static void   dispose_hash(), compute_hash();
- DviCharNameMap *
- DviFindMap (encoding)
-@@ -58,7 +61,7 @@
-       compute_hash (map);
- }
--static
-+static void
- dispose_hash (map)
-       DviCharNameMap  *map;
- {
-@@ -88,7 +91,7 @@
-       return i;
- }
--static
-+static void
- compute_hash (map)
-       DviCharNameMap  *map;
- {
-@@ -120,7 +123,10 @@
- {
-       int             i;
-       DviCharNameHash *h;
--
-+#ifdef ENABLE_MULTIBYTE
-+      if (map->char_index)
-+          return (*map->char_index)(map, name);
-+#endif
-       i = hash_name (name) % DVI_HASH_SIZE;
-       for (h = map->buckets[i]; h; h=h->next)
-               if (!strcmp (h->name, name))
-@@ -128,9 +134,47 @@
-       return -1;
- }
-+#ifdef ENABLE_MULTIBYTE
-+#include <X11/Xlib.h>
-+void
-+DviChar2XChar2b(int c, XChar2b *xc)
-+{
-+    /* XXX: can we assume 'c' is EUC-JP ? */
-+      xc->byte1 = (c >> 8) & 0x7f;
-+      xc->byte2 = (c) &0x7f;
-+      return;
-+}
-+
-+int
-+DviCharIndexJISX0208_1983(map, name)
-+      DviCharNameMap  *map;
-+      char            *name;
-+{
-+    /* XXX: can we assume name points EUC-JP chars? */
-+      unsigned char ub = *name, lb = *(name + 1);
-+      int wc;
-+      wc = (name[0] & 0xff) << 8;
-+      wc |= (name[1] & 0xff);
-+      return(wc);
-+}
-+
-+static DviCharNameMap JISX0208_1983_0_map = {
-+      "jisx0208.1983-0",
-+      0,
-+      DviChar2XChar2b,
-+      DviCharIndexJISX0208_1983,
-+{
-+{     "DummyEntry",           /* 0 */},
-+}};
-+#endif
-+
- static DviCharNameMap ISO8859_1_map = {
-       "iso8859-1",
-       0,
-+#ifdef ENABLE_MULTIBYTE
-+      0,
-+      0,
-+#endif
- {
- {     0,                      /* 0 */},
- {     0,                      /* 1 */},
-@@ -393,6 +437,10 @@
- static DviCharNameMap Adobe_Symbol_map = {
-       "adobe-fontspecific",
-       1,
-+#ifdef ENABLE_MULTIBYTE
-+      0,
-+      0,
-+#endif
- {
- {     0,                                      /* 0 */},
- {     0,                                      /* 1 */},
-@@ -659,4 +707,7 @@
-       standard_maps_loaded = 1;
-       DviRegisterMap (&ISO8859_1_map);
-       DviRegisterMap (&Adobe_Symbol_map);
-+#ifdef ENABLE_MULTIBYTE
-+      DviRegisterMap (&JISX0208_1983_0_map);
-+#endif
- }
-diff -Naur groff-1.18.1.4.orig/src/xditview/DviChar.h groff-1.18.1.4/src/xditview/DviChar.h
---- groff-1.18.1.4.orig/src/xditview/DviChar.h 2000-02-06 09:38:57.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/DviChar.h      2006-10-18 18:54:44.000000000 +0000
-@@ -10,6 +10,8 @@
-  * CharSetRegistry from the CharSetEncoding
-  */
-+#include "config.h"
-+
- # define DVI_MAX_SYNONYMS     10
- # define DVI_MAP_SIZE         256
- # define DVI_HASH_SIZE                256
-@@ -23,6 +25,10 @@
- typedef struct _dviCharNameMap {
-     char              *encoding;
-     int                       special;
-+#ifdef ENABLE_MULTIBYTE
-+    void (*char2XChar2b)(/* int c, XChar2b *xc */);
-+    int (*char_index)(/* struct _dviCharNameMap *map, char *name */);
-+#endif
-     char              *dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS];
-     DviCharNameHash   *buckets[DVI_HASH_SIZE];
- } DviCharNameMap;
-diff -Naur groff-1.18.1.4.orig/src/xditview/DviP.h groff-1.18.1.4/src/xditview/DviP.h
---- groff-1.18.1.4.orig/src/xditview/DviP.h    2000-02-06 09:38:57.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/DviP.h 2006-10-18 18:54:44.000000000 +0000
-@@ -8,6 +8,7 @@
- #ifndef _XtDviP_h
- #define _XtDviP_h
-+#include "config.h"
- #include "Dvi.h"
- #include "DviChar.h"
-@@ -89,9 +90,17 @@
- #define DVI_CHAR_CACHE_SIZE   1024
- typedef struct _dviCharCache {
-+#ifdef ENABLE_MULTIBYTE
-+      XTextItem16     cache[DVI_TEXT_CACHE_SIZE];
-+#else
-       XTextItem       cache[DVI_TEXT_CACHE_SIZE];
-+#endif
-       char            adjustable[DVI_TEXT_CACHE_SIZE];
-+#ifdef ENABLE_MULTIBYTE
-+      XChar2b         char_cache[DVI_CHAR_CACHE_SIZE];
-+#else
-       char            char_cache[DVI_CHAR_CACHE_SIZE];
-+#endif
-       int             index;
-       int             max;
-       int             char_index;
-@@ -182,6 +191,7 @@
-       int             word_flag;
- } DviPart;
-+extern int DviGetAndPut();
- #define DviGetIn(dw,cp)\
-     (dw->dvi.tmpFile ? (\
-       DviGetAndPut (dw, cp) \
-@@ -228,6 +238,11 @@
- extern DeviceFont     *QueryDeviceFont ();
- extern char *GetWord(), *GetLine();
-+
-+#ifdef ENABLE_MULTIBYTE
-+extern void DviInitLocale();
-+extern int DviGEtCharacter();
-+#endif
- #endif /* _XtDviP_h */
-diff -Naur groff-1.18.1.4.orig/src/xditview/FontMap.jisx0208 groff-1.18.1.4/src/xditview/FontMap.jisx0208
---- groff-1.18.1.4.orig/src/xditview/FontMap.jisx0208  1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/FontMap.jisx0208       2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,2 @@
-+M     -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0
-+G     -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0
-diff -Naur groff-1.18.1.4.orig/src/xditview/GXditview-ad.h groff-1.18.1.4/src/xditview/GXditview-ad.h
---- groff-1.18.1.4.orig/src/xditview/GXditview-ad.h    2000-02-06 09:39:04.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/GXditview-ad.h 2006-10-18 18:54:44.000000000 +0000
-@@ -50,3 +50,24 @@
- "GXditview.promptShell.promptDialog.cancel.label: Cancel",
- "GXditview.promptShell.promptDialog.cancel.translations: #override \
-       <BtnUp>:        Cancel() unset()",
-+"GXditview*fontMap: \
-+TR    -adobe-times-medium-r-normal--*-100-*-*-*-*-iso8859-1\\n\
-+TI    -adobe-times-medium-i-normal--*-100-*-*-*-*-iso8859-1\\n\
-+TB    -adobe-times-bold-r-normal--*-100-*-*-*-*-iso8859-1\\n\
-+TBI   -adobe-times-bold-i-normal--*-100-*-*-*-*-iso8859-1\\n\
-+CR    -adobe-courier-medium-r-normal--*-100-*-*-*-*-iso8859-1\\n\
-+CI    -adobe-courier-medium-o-normal--*-100-*-*-*-*-iso8859-1\\n\
-+CB    -adobe-courier-bold-r-normal--*-100-*-*-*-*-iso8859-1\\n\
-+CBI   -adobe-courier-bold-o-normal--*-100-*-*-*-*-iso8859-1\\n\
-+HR    -adobe-helvetica-medium-r-normal--*-100-*-*-*-*-iso8859-1\\n\
-+HI    -adobe-helvetica-medium-o-normal--*-100-*-*-*-*-iso8859-1\\n\
-+HB    -adobe-helvetica-bold-r-normal--*-100-*-*-*-*-iso8859-1\\n\
-+HBI   -adobe-helvetica-bold-o-normal--*-100-*-*-*-*-iso8859-1\\n\
-+NR    -adobe-new century schoolbook-medium-r-normal--*-100-*-*-*-*-iso8859-1\\n\
-+NI    -adobe-new century schoolbook-medium-i-normal--*-100-*-*-*-*-iso8859-1\\n\
-+NB    -adobe-new century schoolbook-bold-r-normal--*-100-*-*-*-*-iso8859-1\\n\
-+NBI   -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\\n\
-+S     -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\\n\
-+SS    -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\\n\
-+M     -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0\\n\
-+G     -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0",
-diff -Naur groff-1.18.1.4.orig/src/xditview/GXditview.ad groff-1.18.1.4/src/xditview/GXditview.ad
---- groff-1.18.1.4.orig/src/xditview/GXditview.ad      2000-02-06 09:38:57.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/GXditview.ad   2006-10-18 18:54:44.000000000 +0000
-@@ -55,3 +55,25 @@
- GXditview.promptShell.promptDialog.cancel.label: Cancel
- GXditview.promptShell.promptDialog.cancel.translations: #override \
-       <BtnUp>:        Cancel() unset()
-+
-+GXditview*fontMap: \
-+TR    -adobe-times-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\
-+TI    -adobe-times-medium-i-normal--*-100-*-*-*-*-iso8859-1\n\
-+TB    -adobe-times-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\
-+TBI   -adobe-times-bold-i-normal--*-100-*-*-*-*-iso8859-1\n\
-+CR    -adobe-courier-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\
-+CI    -adobe-courier-medium-o-normal--*-100-*-*-*-*-iso8859-1\n\
-+CB    -adobe-courier-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\
-+CBI   -adobe-courier-bold-o-normal--*-100-*-*-*-*-iso8859-1\n\
-+HR    -adobe-helvetica-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\
-+HI    -adobe-helvetica-medium-o-normal--*-100-*-*-*-*-iso8859-1\n\
-+HB    -adobe-helvetica-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\
-+HBI   -adobe-helvetica-bold-o-normal--*-100-*-*-*-*-iso8859-1\n\
-+NR    -adobe-new century schoolbook-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\
-+NI    -adobe-new century schoolbook-medium-i-normal--*-100-*-*-*-*-iso8859-1\n\
-+NB    -adobe-new century schoolbook-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\
-+NBI   -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\n\
-+S     -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\
-+SS    -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\
-+M     -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0\n\
-+G     -misc-fixed-medium-r-normal--*-100-*-*-*-*-jisx0208.1983-0
-diff -Naur groff-1.18.1.4.orig/src/xditview/XFontName.c groff-1.18.1.4/src/xditview/XFontName.c
---- groff-1.18.1.4.orig/src/xditview/XFontName.c       2000-02-06 09:38:58.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/XFontName.c    2006-10-18 18:54:44.000000000 +0000
-@@ -225,6 +225,7 @@
-       return True;
- }
-+Bool
- XCopyFontName (name1, name2, fontNameAttributes)
-       XFontName       *name1, *name2;
-       unsigned int    fontNameAttributes;
-diff -Naur groff-1.18.1.4.orig/src/xditview/config.h groff-1.18.1.4/src/xditview/config.h
---- groff-1.18.1.4.orig/src/xditview/config.h  1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/config.h       2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,4 @@
-+#ifndef _config_h
-+#include "../include/config.h"
-+#define _config_h
-+#endif
-diff -Naur groff-1.18.1.4.orig/src/xditview/device.c groff-1.18.1.4/src/xditview/device.c
---- groff-1.18.1.4.orig/src/xditview/device.c  2000-12-02 21:12:53.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/device.c       2006-10-18 18:54:44.000000000 +0000
-@@ -2,10 +2,12 @@
- #include <stdio.h>
- #include <ctype.h>
-+#include <stdlib.h>
- #include <X11/Xos.h>
- #include <X11/Intrinsic.h>
-+#include "config.h"
- #include "device.h"
- #ifndef FONTPATH
-@@ -48,6 +50,9 @@
-     Device *dev;
-     struct charinfo *char_table[CHAR_TABLE_SIZE];
-     struct charinfo *code_table[256];
-+#ifdef ENABLE_MULTIBYTE
-+    struct charrange *range;
-+#endif
- };
- struct charinfo {
-@@ -71,6 +76,15 @@
- static struct charinfo *add_char();
- static int read_charset_section();
- static char *canonicalize_name();
-+#ifdef ENABLE_MULTIBYTE
-+struct charrange {
-+      struct charrange *next;
-+      int width;
-+      int start_code;
-+      int end_code;
-+};
-+static void add_charrange();
-+#endif
- static
- Device *new_device(name)
-@@ -256,6 +270,9 @@
-       f->char_table[i] = 0;
-     for (i = 0; i < 256; i++)
-       f->code_table[i] = 0;
-+#ifdef ENABLE_MULTIBYTE
-+    f->range = 0;
-+#endif
-     return f;
- }
-@@ -267,6 +284,15 @@
-     if (!f)
-       return;
-+#ifdef ENABLE_MULTIBYTE
-+    {
-+      struct charrange *cp, *cp2;
-+      for (cp = f->range; cp != NULL; cp = cp2) {
-+              cp2 = cp->next;
-+              XtFree((char *)cp);
-+      }
-+    }
-+#endif
-     XtFree(f->name);
-     for (i = 0; i < CHAR_TABLE_SIZE; i++) {
-       struct charinfo *ptr = f->char_table[i];
-@@ -342,6 +368,20 @@
- {
-     struct charinfo *p;
-+#ifdef ENABLE_MULTIBYTE
-+    int wc;
-+    extern DviWCharP();
-+    if (DviWCharP(name, &wc)) {
-+          struct charrange *rp;
-+          for (rp = f->range; rp != NULL; rp = rp->next) {
-+                  if (rp->start_code <= wc && wc <= rp->end_code) {
-+                          *widthp = scale_round(rp->width, ps, 
-+                                                f->dev->unitwidth);
-+                          return 1;
-+                  }
-+          }
-+    }
-+#endif
-     name = canonicalize_name(name);
-     for (p = f->char_table[hash_name(name) % CHAR_TABLE_SIZE];; p = p->next) {
-       if (!p)
-@@ -424,6 +464,22 @@
-     return ci;
- }
-+#ifdef ENABLE_MULTIBYTE
-+static void
-+add_charrange(f, width, start_code, end_code)
-+    DeviceFont *f;
-+    int width, start_code, end_code;
-+{
-+      struct charrange *ci;
-+      ci = (struct charrange *)XtMalloc(sizeof(struct charrange));
-+      ci->start_code = start_code;
-+      ci->end_code = end_code;
-+      ci->width = width;
-+      ci->next = f->range;
-+      f->range = ci;
-+}
-+#endif
-+
- /* Return non-zero for success. */
- static
-@@ -439,11 +495,31 @@
-       int width;
-       int code;
-       char *p;
-+#ifdef ENABLE_MULTIBYTE
-+      int scode, ecode;
-+#endif
-       current_lineno++;
-       name = strtok(buf, WS);
-       if (!name)
-           continue;           /* ignore blank lines */
-+#ifdef ENABLE_MULTIBYTE
-+      if (sscanf(name, "u%X..u%X", &scode, &ecode) == 2) {
-+              p = strtok((char *)0, WS);
-+              if (!p)
-+                      break;
-+              if (sscanf(p, "%d", &width) != 1) {
-+                      error("bad width field");
-+                      return 0;
-+              }
-+              p = strtok((char *)0, WS);
-+              if (!p) {
-+                      error("missing type field");
-+                      return 0;
-+              }
-+              add_charrange(f, width, scode, ecode); 
-+      } else {
-+#endif
-       p = strtok((char *)0, WS);
-       if (!p)                 /* end of charset section */
-           break;
-@@ -479,6 +555,9 @@
-           }
-           last_charinfo = add_char(f, name, width, code);
-       }
-+#ifdef ENABLE_MULTIBYTE
-+      }
-+#endif
-     }
-     return 1;
- }
-@@ -559,7 +638,7 @@
- FILE *open_device_file(device_name, file_name, result)
-      char *device_name, *file_name, **result;
- {
--  char *buf, *path;
-+  char *buf;
-   FILE *fp;
-   buf = XtMalloc(3 + strlen(device_name) + 1 + strlen(file_name) + 1);
-diff -Naur groff-1.18.1.4.orig/src/xditview/draw.c groff-1.18.1.4/src/xditview/draw.c
---- groff-1.18.1.4.orig/src/xditview/draw.c    2000-02-06 09:39:00.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/draw.c 2006-10-18 18:54:44.000000000 +0000
-@@ -10,6 +10,7 @@
- #include <stdio.h>
- #include <ctype.h>
- #include <math.h>
-+#include "config.h"
- /* math.h on a Sequent doesn't define M_PI, apparently */
- #ifndef M_PI
-@@ -17,6 +18,7 @@
- #endif
- #include "DviP.h"
-+#include "encoding.h" /* XXX */
- #define DeviceToX(dw, n) ((int)((n) * (dw)->dvi.scale_factor + .5))
- #define XPos(dw) (DeviceToX((dw), (dw)->dvi.state->x - \
-@@ -25,6 +27,10 @@
- static int FakeCharacter();
-+/* font.c */
-+extern int MaxFontPosition();
-+
-+void
- HorizontalMove(dw, delta)
-       DviWidget       dw;
-       int             delta;
-@@ -32,6 +38,7 @@
-       dw->dvi.state->x += delta;
- }
-+void
- HorizontalGoto(dw, NewPosition)
-       DviWidget       dw;
-       int             NewPosition;
-@@ -39,6 +46,7 @@
-       dw->dvi.state->x = NewPosition;
- }
-+void
- VerticalMove(dw, delta)
-       DviWidget       dw;
-       int             delta;
-@@ -46,6 +54,7 @@
-       dw->dvi.state->y += delta;
- }
-+void
- VerticalGoto(dw, NewPosition)
-       DviWidget       dw;
-       int             NewPosition;
-@@ -53,6 +62,7 @@
-       dw->dvi.state->y = NewPosition;
- }
-+void
- AdjustCacheDeltas (dw)
-       DviWidget       dw;
- {
-@@ -94,14 +104,21 @@
-               }
- }
-+void
- FlushCharCache (dw)
-       DviWidget       dw;
- {
-       if (dw->dvi.cache.char_index != 0) {
-               AdjustCacheDeltas (dw);
-+#ifdef ENABLE_MULTIBYTE
-+              XDrawText16 (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC,
-+                         dw->dvi.cache.start_x, dw->dvi.cache.start_y,
-+                         dw->dvi.cache.cache, dw->dvi.cache.index + 1);
-+#else
-               XDrawText (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC,
-                          dw->dvi.cache.start_x, dw->dvi.cache.start_y,
-                          dw->dvi.cache.cache, dw->dvi.cache.index + 1);
-+#endif
-       }       
-       dw->dvi.cache.index = 0;
-       dw->dvi.cache.max = DVI_TEXT_CACHE_SIZE;
-@@ -115,6 +132,7 @@
-       dw->dvi.cache.start_y = dw->dvi.cache.y = YPos (dw);
- }
-+void
- Newline (dw)
-       DviWidget       dw;
- {
-@@ -123,6 +141,7 @@
-       dw->dvi.word_flag = 0;
- }
-+void
- Word (dw)
-       DviWidget       dw;
- {
-@@ -135,7 +154,6 @@
-     :\
-       (fi)->max_bounds.width\
- )
-- 
- static
- int charExists (fi, c)
-@@ -152,14 +170,25 @@
-               || p->ascent != 0 || p->descent != 0 || p->attributes != 0);
- }
--static
-+static void
-+#ifdef ENABLE_MULTIBYTE
-+DoCharacter (dw, c, wid, char2xchar2b)
-+#else
- DoCharacter (dw, c, wid)
-+#endif
-       DviWidget dw;
-       int c;
-       int wid;    /* width in device units */
-+#ifdef ENABLE_MULTIBYTE
-+      void (*char2xchar2b)();
-+#endif
- {
-       register XFontStruct    *font;
-+#ifdef ENABLE_MULTIBYTE
-+      register XTextItem16    *text;
-+#else
-       register XTextItem      *text;
-+#endif
-       int     x, y;
-       
-       x = XPos(dw);
-@@ -225,9 +254,25 @@
-                       text->font = None;
-               dw->dvi.cache.x += text->delta;
-       }
-+#ifdef ENABLE_MULTIBYTE
-+      if (charExists(font, c) || char2xchar2b) {
-+#else
-       if (charExists(font, c)) {
-+#endif
-               int w;
-+#ifdef ENABLE_MULTIBYTE
-+              if (char2xchar2b) {
-+                  (*char2xchar2b)(c,
-+                                  &dw->dvi.cache.char_cache[dw->dvi.cache.char_index++]);
-+              } else {
-+                      dw->dvi.cache.char_cache[dw->dvi.cache.char_index].
-+                              byte1 = (unsigned char)'\0';
-+                      dw->dvi.cache.char_cache[dw->dvi.cache.char_index++].
-+                              byte2 = (unsigned char)c;
-+              }
-+#else
-               dw->dvi.cache.char_cache[dw->dvi.cache.char_index++] = (char) c;
-+#endif
-               ++text->nchars;
-               w = charWidth(font, c);
-               dw->dvi.cache.x += w;
-@@ -291,7 +336,11 @@
-       if (map)
-               c = DviCharIndex (map, buf);
-       if (c >= 0)
-+#ifdef ENABLE_MULTIBYTE
-+              DoCharacter (dw, c, wid, map->char2XChar2b);
-+#else
-               DoCharacter (dw, c, wid);
-+#endif
-       else
-               (void) FakeCharacter (dw, buf, wid);
-       dw->dvi.state->font_number = prevFont;
-@@ -345,6 +394,7 @@
-       return 1;
- }
-+void
- PutNumberedCharacter (dw, c)
-       DviWidget dw;
-       int c;
-@@ -368,7 +418,11 @@
-                                  dw->dvi.state->font_size, c, &wid))
-               return;
-       if (dw->dvi.native) {
-+#ifdef ENABLE_MULTIBYTE
-+              DoCharacter (dw, c, wid, NULL);
-+#else
-               DoCharacter (dw, c, wid);
-+#endif
-               return;
-       }
-       map = QueryFontMap (dw, dw->dvi.state->font_number);
-@@ -379,7 +433,11 @@
-            name = device_name_for_code ((DeviceFont *)0, c)) {
-               int code = DviCharIndex (map, name);
-               if (code >= 0) {
-+#ifdef ENABLE_MULTIBYTE
-+                      DoCharacter (dw, code, wid, map->char2XChar2b);
-+#else
-                       DoCharacter (dw, code, wid);
-+#endif
-                       break;
-               }
-               if (FakeCharacter (dw, name, wid))
-@@ -387,13 +445,14 @@
-       }
- }
-+void
- ClearPage (dw)
-       DviWidget       dw;
- {
-       XClearWindow (XtDisplay (dw), XtWindow (dw));
- }
--static
-+static void
- setGC (dw)
-       DviWidget       dw;
- {
-@@ -417,7 +476,7 @@
-       }
- }
--static
-+static void
- setFillGC (dw)
-       DviWidget       dw;
- {
-@@ -444,6 +503,7 @@
-       }
- }
-+void
- DrawLine (dw, x, y)
-       DviWidget       dw;
-       int             x, y;
-@@ -459,6 +519,7 @@
-                  xp + DeviceToX (dw, x), yp + DeviceToX (dw, y));
- }
-+void
- DrawCircle (dw, diam)
-       DviWidget       dw;
-       int             diam;
-@@ -473,6 +534,7 @@
-                 d, d, 0, 64*360);
- }
-+void
- DrawFilledCircle (dw, diam)
-       DviWidget       dw;
-       int             diam;
-@@ -490,6 +552,7 @@
-                 d, d, 0, 64*360);
- }
-+void
- DrawEllipse (dw, a, b)
-       DviWidget       dw;
-       int             a, b;
-@@ -501,6 +564,7 @@
-                 DeviceToX (dw, a), DeviceToX (dw, b), 0, 64*360);
- }
-+void
- DrawFilledEllipse (dw, a, b)
-       DviWidget       dw;
-       int             a, b;
-@@ -515,6 +579,7 @@
-                 DeviceToX (dw, a), DeviceToX (dw, b), 0, 64*360);
- }
-+void
- DrawArc (dw, x0, y0, x1, y1)
-       DviWidget       dw;
-       int             x0, y0, x1, y1;
-@@ -541,6 +606,7 @@
-                 rad*2, rad*2, angle1, angle2);
- }
-+void
- DrawPolygon (dw, v, n)
-       DviWidget       dw;
-       int             *v;
-@@ -572,7 +638,7 @@
-       XtFree((char *)p);
- }
--
-+void
- DrawFilledPolygon (dw, v, n)
-       DviWidget       dw;
-       int             *v;
-@@ -608,7 +674,7 @@
- #define POINTS_MAX 10000
--static
-+static void
- appendPoint(points, pointi, x, y)
-       XPoint  *points;
-       int     *pointi;
-@@ -623,7 +689,7 @@
- #define FLATNESS 1
--static
-+static void
- flattenCurve(points, pointi, x2, y2, x3, y3, x4, y4)
-       XPoint  *points;
-       int     *pointi;
-@@ -659,7 +725,7 @@
-       }
- }
--
-+void
- DrawSpline (dw, v, n)
-       DviWidget       dw;
-       int             *v;
-diff -Naur groff-1.18.1.4.orig/src/xditview/encoding.h groff-1.18.1.4/src/xditview/encoding.h
---- groff-1.18.1.4.orig/src/xditview/encoding.h        1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/encoding.h     2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,31 @@
-+// -*- C++ -*-
-+/* Copyright (c) 2001 Fumitoshi UKAI <ukai@debian.or.jp>
-+
-+This file is part of groff.
-+
-+groff 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, or (at your option) any later
-+version.
-+
-+groff 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 */
-+
-+#ifndef ENCODING_H
-+#define ENCODING_H
-+
-+#include "config.h"
-+
-+#ifdef ENABLE_MULTIBYTE
-+typedef unsigned int wchar;
-+#else
-+typedef char wchar;
-+#endif
-+
-+#endif
-diff -Naur groff-1.18.1.4.orig/src/xditview/font.c groff-1.18.1.4/src/xditview/font.c
---- groff-1.18.1.4.orig/src/xditview/font.c    2000-02-06 09:39:01.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/font.c 2006-10-18 18:54:44.000000000 +0000
-@@ -9,10 +9,16 @@
- #include <X11/StringDefs.h>
- #include <stdio.h>
- #include <ctype.h>
-+#include <stdlib.h>
- #include "DviP.h"
- #include "XFontName.h"
--static DisposeFontSizes();
-+static void DisposeFontSizes();
-+void DestroyFontMap();
-+
-+/* XFontName.c */
-+extern Bool XParseFontName();
-+extern Bool XFormatFontName();
- static char *
- savestr (s)
-@@ -115,7 +121,7 @@
- # define SizePosition         8
- # define EncodingPosition     13
--static
-+static int
- ConvertFontNameToSize (n)
-       char    *n;
- {
-@@ -191,7 +197,7 @@
-       return sizes;
- }
--static
-+static void
- DisposeFontSizes (dw, fs)
-       DviWidget       dw;
-       DviFontSizeList *fs;
-@@ -263,6 +269,7 @@
-       return f;
- }
-+void
- ForgetFonts (dw)
-       DviWidget dw;
- {
-@@ -322,6 +329,7 @@
- }
- #endif
-+void
- ParseFontMap (dw)
-       DviWidget       dw;
- {
-@@ -357,6 +365,7 @@
-       dw->dvi.font_map = fm;
- }
-+void
- DestroyFontMap (font_map)
-       DviFontMap      *font_map;
- {
-@@ -374,6 +383,7 @@
- /* ARGSUSED */
-+void
- SetFontPosition (dw, position, dvi_name, extra)
-       DviWidget       dw;
-       int             position;
-diff -Naur groff-1.18.1.4.orig/src/xditview/lex.c groff-1.18.1.4/src/xditview/lex.c
---- groff-1.18.1.4.orig/src/xditview/lex.c     2000-02-06 09:39:02.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/lex.c  2006-10-18 18:54:44.000000000 +0000
-@@ -2,8 +2,10 @@
- #include <X11/IntrinsicP.h>
- #include <X11/StringDefs.h>
- #include <stdio.h>
-+#include "config.h"
- #include "DviP.h"
-+int
- DviGetAndPut(dw, cp)
-     DviWidget dw;
-     int               *cp;
-@@ -67,6 +69,7 @@
-       return Buffer;
- } 
-+int
- GetNumber(dw)
-       DviWidget       dw;
- {
-@@ -90,6 +93,98 @@
-               DviUngetC(dw, c);
-       return i;
- }
-+
-+#ifdef ENABLE_MULTIBYTE
-+#include <locale.h>
-+#include <langinfo.h>
-+#include <iconv.h>
-+#include <errno.h>
-+
-+static iconv_t icd;
-+void
-+DviInitLocale()
-+{
-+      char *enc;
-+      setlocale(LC_ALL, "");
-+      enc = nl_langinfo(CODESET);
-+      icd = iconv_open("UCS-2BE", enc);
-+}
-+
-+int
-+DviGetCharacter(dw, cp)
-+      DviWidget       dw;
-+      char   *cp;
-+{
-+      char inbuf[8];
-+      char outbuf[8];
-+      char *inp, *outp;
-+      size_t inbytesleft, outbytesleft = 8;
-+      int i = 0;
-+      int j;
-+      int wc = 0;
-+      int c;
-+      size_t r;
-+
-+      while (wc == 0) {
-+              DviGetC(dw, &c);
-+              if (c == EOF)
-+                      return EOF;
-+              inbuf[i++] = c;
-+              inbytesleft = i;
-+              outbytesleft = BUFSIZ;
-+              inp = inbuf;
-+              outp = outbuf;
-+              r = iconv(icd, &inp, &inbytesleft, &outp, &outbytesleft);
-+              if (r == (size_t)-1) {
-+                      if (errno == EILSEQ) {
-+                              /* illegal sequence */
-+                      } else if (errno == EINVAL) {
-+                              /* incomplete sequence */
-+                              continue;
-+                      } else if (errno == E2BIG) {
-+                              /* no room to output? */
-+                              
-+                      }
-+                      DviUngetC(dw, c);
-+              }
-+              /* ok - pass inbuf to cp */
-+              for (j = 0; j < i; j++) {
-+                      cp[j] = inbuf[j];
-+              }
-+              cp[j] = '\0';
-+              return i;
-+      }
-+      /* NOT REACHED */
-+}
-+
-+int
-+DviWCharP(char *name, int *wc)
-+{
-+      char outbuf[BUFSIZ];
-+      char *inp, *outp;
-+      int inbytesleft, outbytesleft;
-+      size_t r;
-+      *wc = 0;
-+      inp = name;
-+      inbytesleft = strlen(name);
-+      outp = outbuf;
-+      outbytesleft = sizeof(outbuf)-1;
-+      r = iconv(icd, &inp, &inbytesleft, &outp, &outbytesleft);
-+      if (r < 0) {
-+              return 0;
-+      }
-+      /* UCS-2 check */
-+      if (outbuf + 2 != outp) {
-+              return 0;
-+      }
-+      for (inp = outbuf; inp < outp; inp++) {
-+              *wc <<= 8;
-+              *wc |= (*inp) & 0x0ff;
-+      }
-+      return 1;
-+}
-+
-+#endif
-       
- /*
- Local Variables:
-diff -Naur groff-1.18.1.4.orig/src/xditview/page.c groff-1.18.1.4/src/xditview/page.c
---- groff-1.18.1.4.orig/src/xditview/page.c    2000-02-06 09:39:02.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/page.c 2006-10-18 18:54:44.000000000 +0000
-@@ -28,6 +28,7 @@
-       return m;
- }
-+void
- DestroyFileMap (m)
-       DviFileMap      *m;
- {
-@@ -39,6 +40,7 @@
-       }
- }
-+void
- ForgetPagePositions (dw)
-       DviWidget       dw;
- {
-@@ -46,6 +48,7 @@
-       dw->dvi.file_map = 0;
- }
-+void
- RememberPagePosition(dw, number)
-       DviWidget       dw;
-       int             number;
-@@ -64,6 +67,7 @@
-               m->position = ftell (dw->dvi.file);
- }
-+int
- SearchPagePosition (dw, number)
-       DviWidget       dw;
-       int             number;
-@@ -75,6 +79,7 @@
-       return m->position;
- }
-+void
- FileSeek(dw, position)
- DviWidget     dw;
- long          position;
-diff -Naur groff-1.18.1.4.orig/src/xditview/parse.c groff-1.18.1.4/src/xditview/parse.c
---- groff-1.18.1.4.orig/src/xditview/parse.c   2002-04-07 04:48:51.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/parse.c        2006-10-18 18:54:44.000000000 +0000
-@@ -9,15 +9,49 @@
- #include <X11/StringDefs.h>
- #include <stdio.h>
- #include <ctype.h>
-+#include "config.h"
- #include "DviP.h"
-+#include "encoding.h"
- static int StopSeen = 0;
--static ParseDrawFunction(), ParseDeviceControl();
--static push_env(), pop_env();
-+static void ParseDrawFunction(), ParseDeviceControl();
-+static void push_env(), pop_env();
-+
-+/* draw.c */
-+extern int PutCharacter();
-+extern int PutNumberedCharacter();
-+extern void HorizontalGoto();
-+extern void Word();
-+extern void VerticalGoto();
-+extern void VerticalMove();
-+extern void FlushCharCache();
-+extern void Newline();
-+extern void DrawLine();
-+extern void DrawCircle();
-+extern void DrawFilledCircle();
-+extern void DrawEllipse();
-+extern void DrawFilledEllipse();
-+extern void DrawArc();
-+extern void DrawPolygon();
-+extern void DrawFilledPolygon();
-+extern void DrawSpline();
-+
-+/* Dvi.c */
-+extern void SetDevice();
-+
-+/* page.c */
-+extern void RememberPagePosition();
-+
-+/* font.c */
-+extern void SetFontPosition();
-+
-+/* lex.c */
-+extern int GetNumber();
- #define HorizontalMove(dw, delta)     ((dw)->dvi.state->x += (delta))
-+int
- ParseInput(dw)
-     register DviWidget        dw;
- {
-@@ -57,11 +91,17 @@
-                                          DviGetC(dw,&otherc)-'0');
-                       /* fall through */
-               case 'c':       /* single ascii character */
-+#ifdef ENABLE_MULTIBYTE
-+                      DviGetCharacter(dw, Buffer);
-+                      if (Buffer[0] == ' ')
-+                          break;
-+#else
-                       DviGetC(dw,&c);
-                       if (c == ' ')
-                           break;
-                       Buffer[0] = c;
-                       Buffer[1] = '\0';
-+#endif
-                       (void) PutCharacter (dw, Buffer);
-                       break;
-               case 'C':
-@@ -69,10 +109,15 @@
-                       (void) PutCharacter (dw, Buffer);
-                       break;
-               case 't':
-+#ifdef ENABLE_MULTIBYTE
-+                      while (DviGetCharacter(dw, Buffer) != EOF
-+                             && Buffer[0] != ' ' && Buffer[0] != '\n') {
-+#else
-                       Buffer[1] = '\0';
-                       while (DviGetC (dw, &c) != EOF
-                              && c != ' ' && c != '\n') {
-                               Buffer[0] = c;
-+#endif
-                               HorizontalMove (dw, PutCharacter (dw, Buffer));
-                       }
-                       break;
-@@ -158,7 +203,7 @@
-       }
- }
--static
-+static void
- push_env(dw)
-       DviWidget       dw;
- {
-@@ -177,7 +222,7 @@
-       dw->dvi.state = new;
- }
--static
-+static void
- pop_env(dw)
-       DviWidget       dw;
- {
-@@ -188,7 +233,7 @@
-       XtFree ((char *) old);
- }
--static
-+static void
- InitTypesetter (dw)
-       DviWidget       dw;
- {
-@@ -200,7 +245,7 @@
- #define DRAW_ARGS_MAX 128
--static
-+static void
- ParseDrawFunction(dw, buf)
- DviWidget     dw;
- char          *buf;
-@@ -284,13 +329,12 @@
-       }
- } 
--static
-+static void
- ParseDeviceControl(dw)                                /* Parse the x commands */
-       DviWidget       dw;
- {
-         char str[20], str1[50];
-       int c, n;
--      extern int LastPage, CurrentPage;
-       GetWord (dw, str, 20);
-       switch (str[0]) {                       /* crude for now */
-diff -Naur groff-1.18.1.4.orig/src/xditview/xditview.c groff-1.18.1.4/src/xditview/xditview.c
---- groff-1.18.1.4.orig/src/xditview/xditview.c        2002-06-23 14:11:55.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/xditview.c     2006-10-18 18:54:44.000000000 +0000
-@@ -46,6 +46,7 @@
- #include <X11/Xaw/SimpleMenu.h>
- #include <X11/Xaw/SmeBSB.h>
-+#include <stdlib.h>
- #include <signal.h>
- #include "Dvi.h"
-@@ -101,7 +102,7 @@
-  * Report the syntax for calling xditview.
-  */
--static
-+static void
- Syntax(call)
-       char *call;
- {
-@@ -126,12 +127,12 @@
-     char    *name;
-     void    (*function)();
- } menuEntries[] = {
--    "nextPage",           NextPage,
--    "previousPage", PreviousPage,
--    "selectPage",   SelectPage,
--    "print",      Print,
--    "openFile",           OpenFile,
--    "quit",       Quit,
-+    {"nextPage",    NextPage},
-+    {"previousPage",PreviousPage},
-+    {"selectPage",  SelectPage},
-+    {"print",     Print},
-+    {"openFile",    OpenFile},
-+    {"quit",      Quit},
- };
- static void   NextPageAction(), PreviousPageAction(), SelectPageAction();
-@@ -139,17 +140,18 @@
- static void   AcceptAction(), CancelAction();
- static void   PrintAction();
- static void   RerasterizeAction();
-+static void     MakePrompt();
- XtActionsRec xditview_actions[] = {
--    "NextPage",           NextPageAction,
--    "PreviousPage", PreviousPageAction,
--    "SelectPage",   SelectPageAction,
--    "Print",      PrintAction,
--    "OpenFile",           OpenFileAction,
--    "Rerasterize",  RerasterizeAction,
--    "Quit",       QuitAction,
--    "Accept",     AcceptAction,
--    "Cancel",     CancelAction,
-+    {"NextPage",     NextPageAction},
-+    {"PreviousPage", PreviousPageAction},
-+    {"SelectPage",   SelectPageAction},
-+    {"Print",      PrintAction},
-+    {"OpenFile",     OpenFileAction},
-+    {"Rerasterize",  RerasterizeAction},
-+    {"Quit",       QuitAction},
-+    {"Accept",             AcceptAction},
-+    {"Cancel",             CancelAction},
- };
- #define MenuNextPage          0
-@@ -318,6 +320,7 @@
- static char fileBuf[1024];
-+static void
- ResetMenuEntry (entry)
-     Widget  entry;
- {
-@@ -516,6 +519,7 @@
-     CancelAction (widget, event, params, num_params);
- }
-+static void
- MakePrompt(centerw, prompt, func, def)
- Widget        centerw;
- char *prompt;
-diff -Naur groff-1.18.1.4.orig/src/xditview/xtotroff.c groff-1.18.1.4/src/xditview/xtotroff.c
---- groff-1.18.1.4.orig/src/xditview/xtotroff.c        2000-03-01 13:50:49.000000000 +0000
-+++ groff-1.18.1.4/src/xditview/xtotroff.c     2006-10-18 18:54:44.000000000 +0000
-@@ -2,6 +2,7 @@
-  * xtotroff
-  *
-  * convert X font metrics into troff font metrics
-+ * XXX: ENABLE_MULTIBYTE may not work yet
-  */
- #include      <X11/Xlib.h>
-@@ -10,6 +11,7 @@
- #include      <unistd.h>
- #include      <stdlib.h>
- #include      <fcntl.h>
-+#include      "config.h"
- #include      "XFontName.h"
- #include      "DviChar.h"
-@@ -171,6 +173,47 @@
-                       fprintf (out, "spacewidth %d\n", w);
-       }
-       fprintf (out, "charset\n");
-+#if 0 /* def  ENABLE_MULTIBYTE */
-+      if (fi->min_byte1 != 0 || fi->max_byte1 != 0) {
-+              /*
-+               * 2 byte code font.
-+               */
-+              int N;
-+              int D = fi->max_char_or_byte2 - fi->min_char_or_byte2 + 1;
-+              int max = (fi->max_byte1 - fi->min_byte1 + 1) *
-+                      (fi->max_char_or_byte2 - fi->min_char_or_byte2 + 1);
-+              unsigned byte1;
-+              unsigned byte2;
-+              unsigned int euc_code;
-+
-+              for (N = 0; N < max; N++) {
-+                      byte1 = N / D + fi->min_byte1;
-+                      byte2 = N % D + fi->min_char_or_byte2;
-+                      euc_code = ((byte1 << 8) | byte2) & 0xffff | 0x8080;
-+                      wid = fi->max_bounds.width;
-+                      fputc(byte1 & 0xff | 0x80, out);/* output EUC code */
-+                      fputc(byte2 & 0xff | 0x80, out);/* output EUC code */
-+                      fprintf (out, "\t%d", wid);
-+                      if (groff_flag) {
-+                              int     param[5];
-+                              param[0] = fi->max_bounds.ascent;
-+                              param[1] = fi->max_bounds.descent;
-+                              param[2] = 0 /* charRBearing (fi, c) - wid */;
-+                              param[3] = 0 /* charLBearing (fi, c) */;
-+                              param[4] = 0; /* XXX */
-+                              for (j = 0; j < 5; j++)
-+                                      if (param[j] < 0)
-+                                              param[j] = 0;
-+                              for (j = 4; j >= 0; j--)
-+                                      if (param[j] != 0)
-+                                              break;
-+                              for (k = 0; k <= j; k++)
-+                                      fprintf (out, ",%d", param[k]);
-+                      }
-+                      fprintf (out, "\t0\t%#x\n", euc_code);
-+              }
-+      } else
-+#endif /* ENABLE_MULTIBYTE */
-       for (c = fi->min_char_or_byte2; c <= fi->max_char_or_byte2; c++) {
-               char *name = DviCharName (char_map,c,0);
-               if (charExists (fi, c) && (groff_flag || name)) {
-diff -Naur groff-1.18.1.4.orig/stamp-h groff-1.18.1.4/stamp-h
---- groff-1.18.1.4.orig/stamp-h        1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/stamp-h     2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1 @@
-+timestamp
-diff -Naur groff-1.18.1.4.orig/tmac/Makefile.sub groff-1.18.1.4/tmac/Makefile.sub
---- groff-1.18.1.4.orig/tmac/Makefile.sub      2002-07-13 20:41:16.000000000 +0000
-+++ groff-1.18.1.4/tmac/Makefile.sub   2006-10-18 18:54:44.000000000 +0000
-@@ -25,15 +25,19 @@
-   html.tmac www.tmac \
-   eqnrc \
-   troffrc troffrc-end \
--  hyphen.us
-+  hyphen.us \
-+  andocj.tmac \
-+  euc-jp.tmac \
-+  gb.tmac big5.tmac
- SPECIALFILES=an.tmac man.tmac s.tmac ms.tmac
--STRIPFILES=e.tmac doc.tmac doc-old.tmac
--MDOCFILES=doc-common doc-ditroff doc-nroff doc-syms
-+STRIPFILES=e.tmac doc.tmac doc-old.tmac docj.tmac
-+MDOCFILES=doc-common doc-ditroff doc-nroff doc-syms docj-ditroff docj-nroff
- mdocdir=$(tmacdir)/mdoc
- CLEANADD=\
-   stamp-wrap stamp-sed *-wrap man.tmac-sed ms.tmac-sed \
-   stamp-strip e.tmac-s doc.tmac-s doc-old.tmac-s \
--  doc-common-s doc-ditroff-s doc-nroff-s doc-syms-s mdoc.local-s
-+  doc-common-s doc-ditroff-s doc-nroff-s doc-syms-s mdoc.local-s \
-+  docj.tmac-s docj-ditroff-s docj-nroff-s
- tmac_s_prefix=
- tmac_an_prefix=
- tmac_wrap=
-diff -Naur groff-1.18.1.4.orig/tmac/andocj.tmac groff-1.18.1.4/tmac/andocj.tmac
---- groff-1.18.1.4.orig/tmac/andocj.tmac       1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/tmac/andocj.tmac    2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,12 @@
-+.\" Load either tmac.an or tmac.doc.
-+.if !\n(.g .ab These macros require groff.
-+.de Dd
-+.rm Dd
-+.do mso tmac.docj
-+\\*(Dd\\
-+..
-+.de TH
-+.rm TH
-+.do mso tmac.an
-+\\*(TH\\
-+..
-diff -Naur groff-1.18.1.4.orig/tmac/big5.tmac groff-1.18.1.4/tmac/big5.tmac
---- groff-1.18.1.4.orig/tmac/big5.tmac 1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/tmac/big5.tmac      2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,15 @@
-+.\" Kinsoku table for the BIG5 encoding of Chinese, recoded from
-+.\" kinsoku.el in Emacs 22.0.50.
-+.\" Needs review by native zh_TW speaker.
-+.\"
-+.cflags 256 ¡B¡C¡A¡D¡G¡F¡H¡I¡Ã¡Ä
-+.cflags 256 ¡²Éi¡X¡þ¡U¡L¡¦¡¨¡^
-+.cflags 256 ¡f¡b¡r¡n¡v¡z¡j¡Ñ¡×¡Õ¡Ø¡Û¡ñ¢X
-+.cflags 256 ¡½¡µ¡¶¡¾¡¿¡°¢E¡÷¡ö¡ô¡ã
-+.cflags 512 ¡Ö¡Ù¡ï¡ð¢X¢C¡ì
-+.cflags 512 ÛÖ¶yÅV¡D¡¶¡ù£H¢}
-+.\"
-+.\" http://tcl.apache.org/sources/tcl/tools/encoding/big5.txt lists U+FF0D
-+.\" as FULLWIDTH HYPHEN-MINUS. Is this correct?
-+.\"
-+.hc ¡Ð
-diff -Naur groff-1.18.1.4.orig/tmac/docj-ditroff groff-1.18.1.4/tmac/docj-ditroff
---- groff-1.18.1.4.orig/tmac/docj-ditroff      1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/tmac/docj-ditroff   2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,305 @@
-+.\" Copyright (c) 1991 The Regents of the University of California.
-+.\" All rights reserved.
-+.\"
-+.\" Redistribution and use in source and binary forms, with or without
-+.\" modification, are permitted provided that the following conditions
-+.\" are met:
-+.\" 1. Redistributions of source code must retain the above copyright
-+.\"    notice, this list of conditions and the following disclaimer.
-+.\" 2. Redistributions in binary form must reproduce the above copyright
-+.\"    notice, this list of conditions and the following disclaimer in the
-+.\"    documentation and/or other materials provided with the distribution.
-+.\" 3. All advertising materials mentioning features or use of this software
-+.\"    must display the following acknowledgement:
-+.\"   This product includes software developed by the University of
-+.\"   California, Berkeley and its contributors.
-+.\" 4. Neither the name of the University nor the names of its contributors
-+.\"    may be used to endorse or promote products derived from this software
-+.\"    without specific prior written permission.
-+.\"
-+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+.\" SUCH DAMAGE.
-+.\"
-+.\"     @(#)doc-ditroff       5.8 (Berkeley) 8/5/91
-+.\"
-+.\" tmac.mdoc-ditroff
-+.if \n(.g .if !rC .nr C 0
-+.ds aD \fI\s10
-+.ds aR \f(CO\s10
-+.ds cM \f(CB\s10
-+.ds dF \fR\s10
-+.ds eM \fI\s10
-+.ds eR \fC\s10
-+.ds eV \fC\s10
-+.ds fA \f(CO\s10
-+.ds fD \f(CB\s10
-+.ds fL \f(CB\s10
-+.ds fN \f(CB\s10
-+.ds fP \fP\s0
-+.ds fS \s0
-+.ds fT \f(CO\s10
-+.ds Hs \fR\s10
-+.ds iC \f(CB\s10
-+.ds lI \fC
-+.ds lP \fR\|(\|\fP\s10
-+.ds lp \fR(\fP\s10
-+.ds rP \fR\|)\|\fP\s10
-+.ds rp \fR)\fP\s10
-+.ds lB \fR\^[\^\fP\s10
-+.ds rB \fR\^]\fP\s10
-+.ds mL \fB\s10
-+.ds nM \f(CB\s10
-+.ds nO \fR\s10
-+.ds nT \s0
-+.ds pA \fC\s10
-+.ds Pu \fR{\ .\ ,\ :\ ;\ (\ )\ [\ ]\ \fR}
-+.ds rA \fR\s10
-+.ds rT \f(CO\s10
-+.ds sH \fB\s10
-+.ds sP \s0
-+.ds sY \fB\s10
-+.ds sX \fR\s10
-+.ds tF \fR
-+.ds tN \s9
-+.ds vA \fI\s10
-+.ds Vs \fR\s10
-+.ds vT \f(CB\s10
-+.ds xR \fC\s10
-+.tr *\(**
-+.nr sI \w\a\fC,\au*5
-+.nr Ti \n(sIu
-+.nr Pp .5v
-+.ds lS \0
-+.nr lS \w'\0'u
-+.nr dI 6n
-+.de pL
-+.nr Hm .5i
-+.nr Fm .5i
-+.nr ll 6.5i
-+.ll 6.5i
-+.nr lt 6.5i
-+.lt 6.5i
-+.nr po 1i
-+.po 1.i
-+.nr dV .5v
-+..
-+.ds <= \(<=
-+.ds >= \(>=
-+.ie \n(.g \{\
-+.     ds Lq \(lq
-+.     ds Rq \(rq
-+.\}
-+.el \{\
-+.     ds Lq \&``
-+.     ds Rq \&''
-+.\}
-+.ds ua \(ua
-+.ds aa \(aa
-+.ds ga \(ga
-+.ds sR \&'
-+.ds sL \&`
-+.ds q \&"
-+.ds Pi \(*p
-+.ds Ne \(!=
-+.ds Le \(<=
-+.ds Ge \(>=
-+.ds Lt <
-+.ds Gt >
-+.ds Pm \(+-
-+.ds If \(if
-+.ds Na \fINaN\fP
-+.ds Ba \fR\&|\fP
-+.nr gX 0
-+.de hK
-+.ds hT \\*(dT
-+.if !"\\*(cH"Null" \{\
-+.       ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
-+.       el .as hT \\|(\\|\\*(cH\\|)
-+.\}
-+.if "\\*(cH"Null" \{\
-+.     if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
-+.\}
-+.wh 0 hM
-+.wh -1.25i fM
-+.nr nL \\n(nl
-+.ie \\n(gX==1 \{\
-+.     rm n1
-+.     bp
-+.\}
-+.el \{\
-+'     bp
-+.\}
-+.if \\n(nL>0 \{\
-+.     if !\\nC \{\
-+.             nr % 1
-+.     \}
-+.\}
-+.nr gX 0
-+.em lM
-+..
-+.nr fW \w\a\fC0\a
-+.de sW
-+.nr sW \w\a\fC\\$1\a
-+.ie \\n(sW>=\\n(fW \{\
-+.       ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
-+.       el .nr sW \\n(sW/\\n(fW
-+.\}
-+.el \{\
-+.     ie \\n(sW>0 .nr sW 1
-+.     el .nr sW 0
-+.\}
-+..
-+.de aW
-+.nr sW \w\a\fC\\*(A\\$1\a
-+.ie \\n(sW>=\\n(fW \{\
-+.       ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
-+.       el .nr sW \\n(sW/\\n(fW
-+.\}
-+.el \{\
-+.     ie \\n(sW>0 .nr sW 1
-+.     el .nr sW 0
-+.\}
-+..
-+.de Ql
-+.if \\n(aC==0  \{\
-+.     ds mN Ql
-+.       ds A1 \\$1
-+.       ds A2 \\$2
-+.       ds A3 \\$3
-+.       ds A4 \\$4
-+.       ds A5 \\$5
-+.       ds A6 \\$6
-+.       ds A7 \\$7
-+.       ds A8 \\$8
-+.     nr fV \\n(.$
-+.     fV
-+.\}
-+.nr aP \\n(aP+1
-+.aW \\n(aP
-+.nr aP \\n(aP-1
-+.if \\n(sW>2 .Li
-+.if \\n(sW<=2 \{\
-+.     if (\\n(aP>0) \{\
-+.             ds A\\n(aP Li
-+.             nr aP \\n(aP -1
-+.     \}              
-+.     if (\\n(aP==0) \{\
-+.             rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9
-+.             rm S1 S2 S3 S4 S5 S6 S7 S8 S9
-+.             rn A8 A9
-+.             rn A7 A8
-+.             rn A6 A7
-+.             rn A5 A6
-+.             rn A4 A5
-+.             rn A3 A4
-+.             rn A2 A3
-+.             rn A1 A2
-+.             ds A1 Li
-+.             nr fV \\n(aC+1
-+.             nr aC 0
-+.             fV
-+.     \}
-+.     ds qL \&\\*(sL
-+.     ds qR \&\\*(sR
-+.     En
-+.\}
-+..
-+.de Sh
-+.nr nS 0
-+.nr sE 0
-+.nr iS 0
-+'ad
-+.ie "\\$1"NAME" \{\
-+.       hK
-+'       in 0
-+.\}
-+.el \{\
-+.     ie "\\$1"̾Á°" \{\
-+.                     hK
-+'             in 0
-+.     \}
-+.     el \{\
-+.             ie "\\$1"̾¾Î" \{\
-+.                     hK
-+'                     in 0
-+.             \}
-+.             el \{\
-+.                     nr nS 0
-+.                     nr nA 0
-+.                     nr nF 0
-+.                     nr nT 0
-+.                     nr nY 0
-+.                     nr oT 0
-+.                     if "\\$1"SYNOPSIS" \{\
-+.                             na
-+.                             nr nS 1
-+.                     \}
-+.                     if "\\$1"½ñ¼°" \{\
-+.                             na
-+.                             nr nS 1
-+.                     \}
-+.                     if "\\$1"DESCRIPTION" \{\
-+.                             nr fY 0
-+.                             nr fZ 0
-+.                             nr fB 0
-+.                             nr Fb 0
-+.                             ds Fb
-+.                     \}
-+.                     if "\\$1"ÀâÌÀ" \{\
-+.                             nr fY 0
-+.                             nr fZ 0
-+.                             nr fB 0
-+.                             nr Fb 0
-+.                             ds Fb
-+.                     \}
-+.                     if "\\$1"²òÀâ" \{\
-+.                             nr fY 0
-+.                             nr fZ 0
-+.                             nr fB 0
-+.                             nr Fb 0
-+.                             ds Fb
-+.                     \}
-+.                     if "\\$1"SEE" \{\
-+.                             nr nA 1
-+.                             na
-+.                     \}
-+.                     if "\\$1"´ØÏ¢¹àÌÜ" \{\
-+.                             nr nA 1
-+.                             na
-+.                     \}
-+.                     if "\\$1"FILES" .nr nF 1
-+.                     if "\\$1"¥Õ¥¡¥¤¥ë" .nr nF 1
-+.                     if "\\$1"´ØÏ¢¥Õ¥¡¥¤¥ë" .nr nF 1
-+.                     if "\\$1"STANDARDS" .nr nT 1
-+.                     if "\\$1"½àµò" .nr nT 1
-+.                     if "\\$1"µ¬³Ê" .nr nT 1
-+.                     if "\\$1"AUTHORS" .nr nY 1
-+.                     if "\\$1"Ãø¼Ô" .nr nY 1
-+.                     if "\\$1"ºî¼Ô" .nr nY 1
-+.                     if "\\$1"SEE" .nr sE 1
-+.                     if "\\$1"´ØÏ¢¹àÌÜ" .nr sE 1
-+.                     in 0
-+.                     nr aN 0
-+.             \}
-+.     \}
-+.\}
-+.pL
-+'sp
-+.ns
-+.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
-+.if !\\n(cR .ne 3
-+'fi
-+\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
-+\&\fP\s0\&
-+.in \\n(.iu+\\n(Tiu
-+.ns
-+..
-diff -Naur groff-1.18.1.4.orig/tmac/docj-nroff groff-1.18.1.4/tmac/docj-nroff
---- groff-1.18.1.4.orig/tmac/docj-nroff        1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/tmac/docj-nroff     2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,247 @@
-+.\" Copyright (c) 1991 The Regents of the University of California.
-+.\" All rights reserved.
-+.\"
-+.\" Redistribution and use in source and binary forms, with or without
-+.\" modification, are permitted provided that the following conditions
-+.\" are met:
-+.\" 1. Redistributions of source code must retain the above copyright
-+.\"    notice, this list of conditions and the following disclaimer.
-+.\" 2. Redistributions in binary form must reproduce the above copyright
-+.\"    notice, this list of conditions and the following disclaimer in the
-+.\"    documentation and/or other materials provided with the distribution.
-+.\" 3. All advertising materials mentioning features or use of this software
-+.\"    must display the following acknowledgement:
-+.\"   This product includes software developed by the University of
-+.\"   California, Berkeley and its contributors.
-+.\" 4. Neither the name of the University nor the names of its contributors
-+.\"    may be used to endorse or promote products derived from this software
-+.\"    without specific prior written permission.
-+.\"
-+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+.\" SUCH DAMAGE.
-+.\"
-+.\"     @(#)doc-nroff 5.6 (Berkeley) 8/5/91
-+.\"
-+.\" tmac.mdoc-nroff
-+.ds aD \fI
-+.ds aR \fI
-+.ds cM \fB
-+.ds dF \fR
-+.ds eM \fI
-+.ds eR \fR
-+.ds eV \fR
-+.ds fA \fI
-+.ds fD \fB
-+.ds fL \fB
-+.ds fN \fB
-+.ds fP \fP
-+.ds fS
-+.ds fT \fI
-+.ds Hs \fR
-+.ds iC \fB
-+.ds lI \fR
-+.ds lP \fR\|(\fP
-+.ds rP \fR\|)\fP
-+.ds lp \fR\|(\fP
-+.ds rp \fR\|)\fP
-+.ds lB \fR\|[\|\fP
-+.ds rB \fR\|]\fP
-+.ds mL \fB
-+.ds nM \fB
-+.ds nO \fR
-+.ds pA \fI
-+.ds Pu {\ .\ ,\ ;\ :\ (\ )\ [\ ]}
-+.ds rA \fR
-+.ds rT \fI
-+.ds sH \fB
-+.ds sP
-+.ds sY \fB
-+.ds sX \fI
-+.ds tF \fR
-+.ds tN
-+.ds vA \fI
-+.ds Vs \fR
-+.ds vT \fB
-+.ds xR \fR
-+.nr sI .5i
-+.nr Ti .5i
-+.nr cR 1
-+.nr Pp 1v
-+.ds lS \0\0
-+.nr lS \w'\0\0'u
-+.nr dI 6n
-+.de pL
-+.ie \\n(cR .nr Hm 0
-+.el .nr Hm .5i
-+.nr Fm .5i
-+.nr ll 78n
-+.ll 78n
-+.nr lt 78n
-+.lt 78n
-+.nr po 0i
-+.po 0i
-+.nr dV 1v
-+.ad l
-+.na
-+..
-+.ds <= \&<\&=
-+.ds >= \&>\&=
-+.ds Rq ''
-+.ds Lq ``
-+.ds ua ^
-+.ds aa \'
-+.ds ga \`
-+.ds sL `
-+.ds sR '
-+.ds q \&"
-+.ds Pi pi
-+.ds Ne !=
-+.ds Le <=
-+.ds Ge >=
-+.ds Lt <
-+.ds Gt >
-+.ds Pm +-
-+.ds If infinity
-+.ds Na \fINaN\fP
-+.ds Ba \fR\&|\fP
-+
-+.de hK
-+.nr % 1
-+.ds hT \\*(dT
-+.if !"\\*(cH"Null" \{\
-+.     ie !"\\*(gP"Null" .as hT \|(\|\\*(cH\\*(gP\|)
-+.     el .as hT \\|(\\|\\*(cH\\|)
-+.\}
-+.if "\\*(cH"Null" .if !"\\*(gP"Null" .as hT \&\|(\|\\*(gP\|)
-+.ie \\n(cR \{\
-+.     hM
-+.     wh -1v fM
-+.\}
-+.el \{\
-+.     wh 0 hM
-+.     wh -1.167i fM
-+.\}
-+.if \\n(nl==0:\\n(nl==-1 'bp
-+.em lM
-+..
-+.nr fW \w'0'
-+.de sW
-+.nr sW \w\a\\$1\a
-+.ie \\n(sW>=\\n(fW \{\
-+.       ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
-+.       el .nr sW \\n(sW/\\n(fW
-+.\}
-+.el .nr sW 0
-+..
-+.de aW
-+.nr sW \w\a\\*(A\\$1\a
-+.ie \\n(sW>=\\n(fW \{\
-+.       ie \\n(sW%\\n(fW .nr sW (\\n(sW/\\n(fW)+1
-+.       el .nr sW \\n(sW/\\n(fW
-+.\}
-+.el .nr sW 0
-+..
-+.de Ql
-+.if \\n(aC==0  \{\
-+.     ds mN Ql
-+.     ds A1 \\$1
-+.     ds A2 \\$2
-+.     ds A3 \\$3
-+.     ds A4 \\$4
-+.     ds A5 \\$5
-+.     ds A6 \\$6
-+.     ds A7 \\$7
-+.     ds A8 \\$8
-+.     ds A9 \\$9
-+.     nr fV \\n(.$
-+.     fV
-+.\}
-+.ds qL \&\\*(sL
-+.ds qR \&\\*(sR
-+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.de Sh
-+.nr nS 0
-+.nr sE 0
-+.nr iS 0
-+.ie "\\$1"NAME" \{\
-+.       hK
-+'       in 0
-+.\}
-+.el \{\
-+.     ie "\\$1"̾Á°" \{\
-+.                     hK
-+'             in 0
-+.     \}
-+.     el \{\
-+.             ie "\\$1"̾¾Î" \{\
-+.                     hK
-+'                     in 0
-+.             \}
-+.             el \{\
-+.                     nr nS 0
-+.                     nr nA 0
-+.                     nr nF 0
-+.                     nr nT 0
-+.                     nr nY 0
-+.                     nr aN 0
-+.                     nr oT 0
-+.                     if "\\$1"SEE" .nr nA 1
-+.                     if "\\$1"´ØÏ¢¹àÌÜ" .nr nA 1
-+.                     if "\\$1"FILES" .nr nF 1
-+.                     if "\\$1"¥Õ¥¡¥¤¥ë" .nr nF 1
-+.                     if "\\$1"´ØÏ¢¥Õ¥¡¥¤¥ë" .nr nF 1
-+.                     if "\\$1"STANDARDS" .nr nT 1
-+.                     if "\\$1"½àµò" .nr nT 1
-+.                     if "\\$1"µ¬³Ê" .nr nT 1
-+.                     if "\\$1"SYNOPSIS" .nr nS 1
-+.                     if "\\$1"½ñ¼°" .nr nS 1
-+.                     if "\\$1"DESCRIPTION" \{\
-+.                             rr fB
-+.                             rr Fb
-+.                             ds Fb
-+.                             nr fY 0
-+.                             nr fZ 0
-+.                             \}
-+.                     if "\\$1"ÀâÌÀ" \{\
-+.                             rr fB
-+.                             rr Fb
-+.                             ds Fb
-+.                             nr fY 0
-+.                             nr fZ 0
-+.                              \}
-+.                     if "\\$1"²òÀâ" \{\
-+.                             rr fB
-+.                             rr Fb
-+.                             ds Fb
-+.                             nr fY 0
-+.                             nr fZ 0
-+.                     \}
-+.                     if "\\$1"AUTHORS" .nr nY 1
-+.                     if "\\$1"Ãø¼Ô" .nr nY 1
-+.                     if "\\$1"ºî¼Ô" .nr nY 1
-+.                             in 0
-+.             \}
-+.     \}
-+.\}
-+.pL
-+'sp
-+.ns
-+.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
-+.if !\\n(cR .ne 3
-+'fi
-+\&\\*(sH\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6 \|\\$7 \|\\$8 \|\\$9
-+\&\fP\s0\&
-+.in \\n(.iu+\\n(Tiu
-+.if "\\$1"SEE" .nr sE 1
-+.ns
-+..
-diff -Naur groff-1.18.1.4.orig/tmac/docj.tmac groff-1.18.1.4/tmac/docj.tmac
---- groff-1.18.1.4.orig/tmac/docj.tmac 1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/tmac/docj.tmac      2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,3427 @@
-+.\" Copyright (c) 1991 The Regents of the University of California.
-+.\" All rights reserved.
-+.\"
-+.\" Redistribution and use in source and binary forms, with or without
-+.\" modification, are permitted provided that the following conditions
-+.\" are met:
-+.\" 1. Redistributions of source code must retain the above copyright
-+.\"    notice, this list of conditions and the following disclaimer.
-+.\" 2. Redistributions in binary form must reproduce the above copyright
-+.\"    notice, this list of conditions and the following disclaimer in the
-+.\"    documentation and/or other materials provided with the distribution.
-+.\" 3. All advertising materials mentioning features or use of this software
-+.\"    must display the following acknowledgement:
-+.\"   This product includes software developed by the University of
-+.\"   California, Berkeley and its contributors.
-+.\" 4. Neither the name of the University nor the names of its contributors
-+.\"    may be used to endorse or promote products derived from this software
-+.\"    without specific prior written permission.
-+.\"
-+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+.\" SUCH DAMAGE.
-+.\"
-+.\"     @(#)doc       5.8 (Berkeley) 8/5/91
-+.\" Modified by jjc@jclark.com as follows: the doc-* files are assumed to be
-+.\" installed as mdoc/doc-* rather than tmac.doc-* (the filename
-+.\" `tmac.doc-common' would be too long); when using groff, the doc-* files
-+.\" are loaded using the `mso' request.
-+.\"   
-+.\" .mdoc-parse - attempt to parse troff request arguments
-+.\"     %beginstrip%
-+.if \n(.g \{\
-+.cp 0
-+.ftr C CR
-+.\}
-+.if \n(.g .ig
-+.de sO
-+.so /usr/share/tmac/\\$1
-+..
-+.if !\n(.g .ig
-+.de sO
-+.mso mdoc/\\$1
-+..
-+.if t \{\
-+.       sO docj-ditroff
-+.\}
-+.if n \{\
-+.       sO docj-nroff
-+.\}
-+.sO doc-common
-+.sO doc-syms
-+.\" NS Db macro - start/stop DEBUG MODE
-+.\" NS Db register DEBUG MODE
-+.\" NS iN register DEBUG MODE (inline if 1, to stderr if 0 (default))
-+.nr Db 0
-+.de Db
-+.ie \\n(.$==0 \{\
-+.     ie \\n(Db==0 \{\
-+.tm DEBUGGING ON
-+.             nr Db 1
-+.     \}
-+.     el \{\
-+.tm DEBUGGING OFF
-+.             nr Db 0
-+.     \}
-+.\}
-+.el \{\
-+.     if "\\$1"on" \{\
-+.tm DEBUGGING ON
-+.             nr Db 1
-+.     \}
-+.     if "\\$1"off" \{\
-+.tm DEBUGGING OFF
-+.             nr Db 0
-+.     \}
-+.\}
-+..
-+.\" NS aV macro - parse argument vector (recursive) (.aV arg ... )
-+.\" NS fV macro - parse argument vector (recursive) (.fV)
-+.\" NS aC register argument counter (aV/fV)
-+.\" NS fV register argument counter (must set to \\n(.$ prior to reuqest) (fV)
-+.\" NS A[0-9] argument vector (aV/fV)
-+.\" NS C[0-9] reg. arg type(1=macro, 2=arg, 3=punct-suf, 4=punct-pre) (aV/fV)
-+.\" NS S[0-9] space vector (sV)
-+.\" NS aP register argument pointer (aV)
-+.\" NS yU local string used for debugging
-+.\" NS iI local register (indent for inline debug mode)
-+.\" NS mN name of calling request (set in each user requestable macro)
-+.de aV
-+.nr aC \\n(aC+1
-+.ie "\\$1"|" \{\
-+.     if "\\*(mN"Op" .ds A\\n(aC \fR\\$1\fP
-+.     if "\\*(mN"Ar" .ds A\\n(aC \fR\\$1\fP
-+.     if "\\*(mN"Fl" .ds A\\n(aC \fR\\$1\fP
-+.     if "\\*(mN"Cm" .ds A\\n(aC \fR\\$1\fP
-+.     if "\\*(mN"It" .ds A\\n(aC \fR\\$1\fP
-+.\}
-+.el .ds A\\n(aC \\$1
-+.aU \\n(aC
-+.nr C\\n(aC \\n(aT
-+.s\\n(aT
-+.if \\n(Db \{\
-+.     if \\n(aT==1 .ds yU Executable
-+.     if \\n(aT==2 .ds yU String
-+.     if \\n(aT==3 .ds yU Closing Punctuation or suffix
-+.     if \\n(aT==4 .ds yU Opening Punctuation or prefix
-+.     if \\n(iN==1 \{\
-+.             br
-+.             nr iI \\n(.iu
-+.             in -\\n(iIu
-+.             if \\n(aC==1 \{\
-+\&\fBDEBUG(argv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c
-+.             \}
-+\&\t\fBArgc:\fP \\n(aC  \fBArgv:\fP `\\*(A\\n(aC'  \fBLength:\fP \\n(sW
-+\&\t\fBSpace:\fP `\\*(S\\n(aC'  \fBClass:\fP \\*(yU
-+.     \}
-+.     if \\n(iN==0 \{\
-+.             if \\n(aC==1 \{\
-+.                     tm DEBUG(argv) MACRO: `.\\*(mN'  Line #: \\n(.c
-+.             \}
-+.             tm \tArgc: \\n(aC  Argv: `\\*(A\\n(aC'  Length: \\n(sW
-+.             tm \tSpace: `\\*(S\\n(aC'  Class: \\*(yU
-+.     \}
-+.\}
-+.ie \\n(.$==1 \{\
-+.     nr aP 0
-+.     ie \\n(dZ==1 \{\
-+.             if \\n(oM>1 .as b1 \\*(S0
-+.     \}
-+.     el \{\
-+.             if \\n(oM>0 \{\
-+.                     if \\n(fC==0 .as b1 \\*(S0
-+.             \}
-+.     \}
-+.     ds S0 \\*(S\\n(aC
-+.     if \\n(Db \{\
-+.             if \\n(iN==1 \{\
-+\&MACRO REQUEST: \t.\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-+.                     br
-+.                     in \\n(iIu
-+.             \}
-+.             if \\n(iN==0 \{\
-+.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-+.             \}
-+.     \}
-+.\}
-+.el .aV \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.de fV
-+.nr aC \\n(aC+1
-+.if "\\*(A\\n(aC"|" \{\
-+.     if "\\*(mN"Op" .ds A\\n(aC \fR\\*(A\\n(aC\fP
-+.     if "\\*(mN"Ar" .ds A\\n(aC \fR\\*(A\\n(aC\fP
-+.     if "\\*(mN"Fl" .ds A\\n(aC \fR\&\\*(A\\n(aC\fP
-+.     if "\\*(mN"Cm" .ds A\\n(aC \fR\\*(A\\n(aC\fP
-+.     if "\\*(mN"It" .ds A\\n(aC \fR\\*(A\\n(aC\fP
-+.\}
-+.aU \\n(aC
-+.nr C\\n(aC \\n(aT
-+.s\\n(aT
-+.if \\n(Db \{\
-+.     if \\n(aT==1 .ds yU Executable
-+.     if \\n(aT==2 .ds yU String
-+.     if \\n(aT==3 .ds yU Closing Punctuation or suffix
-+.     if \\n(aT==4 .ds yU Opening Punctuation or prefix
-+.     if \\n(iN==1 \{\
-+.             br
-+.             nr iI \\n(.iu
-+.             in -\\n(iIu
-+.             if \\n(aC==1 \{\
-+\&\fBDEBUG(fargv) MACRO:\fP `.\\*(mN'  \fBLine #:\fP \\n(.c
-+.             \}
-+\&\t\fBArgc:\fP \\n(aC  \fBArgv:\fP `\\*(A\\n(aC'  \fBLength:\fP \\n(sW
-+\&\t\fBSpace:\fP `\\*(S\\n(aC'  \fBClass:\fP \\*(yU
-+.     \}
-+.     if \\n(iN==0 \{\
-+.             if \\n(aC==1 \{\
-+.                     tm DEBUG(fargv) MACRO: `.\\*(mN'  Line #: \\n(.c
-+.             \}
-+.             tm \tArgc: \\n(aC  Argv: `\\*(A\\n(aC'  Length: \\n(sW
-+.             tm \tSpace: `\\*(S\\n(aC'  Class: \\*(yU
-+.     \}
-+.\}
-+.ie \\n(fV==1 \{\
-+.     nr aP 0
-+.     ie \\n(dZ==1 \{\
-+.             if \\n(oM>1 .as b1 \\*(S0
-+.     \}
-+.     el \{\
-+.             if \\n(oM>0 \{\
-+.                     if \\n(fC==0 .as b1 \\*(S0
-+.             \}
-+.     \}
-+.     ds S0 \\*(S\\n(aC
-+.     nr fV 0
-+.     if \\n(Db \{\
-+.             ie \\n(iN \{\
-+\&\tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-+.                     br
-+.                     in \\n(iIu
-+.             \}
-+.             el \{\
-+.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-+.             \}
-+.     \}
-+.\}
-+.el \{\
-+.     nr fV \\n(fV-1
-+.     fV
-+.\}
-+..
-+.\" NS aX macro - stuff saved strings into `b1' (used by -diag list)
-+.de aX
-+.nr aP \\n(aP+1
-+.as b1 \&\\*(A\\n(aP
-+.ie \\n(fV==1 \{\
-+.     nr aP 0
-+.     nr fV 0
-+.\}
-+.el \{\
-+.     as b1 \&\\*(sV
-+.     nr fV \\n(fV-1
-+.     aX
-+.\}
-+..
-+.\" NS aI macro - append arg to arg vector: .aI [arg] [type] (used by .En only)
-+.de aI
-+.ie \\n(aC<9 \{\
-+.     nr aC \\n(aC+1
-+.     ds A\\n(aC \\$1
-+.     nr C\\n(aC \\$2
-+.     s\\$2
-+.     ds xV S\\n(aC
-+.\}
-+.el \{\
-+.     tm Usage: Too many arguments (maximum of 8 accepted) (#\\n(.c)
-+.     tm \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-+.\}
-+..
-+.\"
-+.\" NS aZ macro - print buffer (pB) and clean up arg vectors (aY)
-+.de aZ
-+.pB
-+.aY
-+..
-+.\" NS aY macro - clean up arg vector
-+.de aY
-+.rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9
-+.rm A0 A1 A2 A3 A4 A5 A6 A7 A8 A9
-+.rm S1 S2 S3 S4 S5 S6 S7 S8 S9
-+.nr aC 0
-+.nr aP 0
-+..
-+.\" NS pB macro - test for end of vector (eol) (print b1 buffer or divert)
-+.de pB
-+.ie \\n(dZ==1 \{\
-+.     if \\n(oM==1 \{\&\\*(b1
-+.             rm S0
-+.             ds b1
-+.     \}
-+.     if \\n(oM==0 \{\
-+.             x2
-+.     \}
-+.\}
-+.el \{\
-+.     ie \\n(oM==0 \{\&\\*(b1
-+.             rm S0
-+.             ds b1
-+.     \}
-+.     el \{\
-+.             if ((\\n(sM==1)&(\\n(tP==0)) \{\
-+.                     x1
-+.             \}
-+.     \}
-+.\}
-+.hy
-+..
-+.\" NS x1 macro - save buffer and divert if tP flag set
-+.\" NS eB diversion string
-+.\" NS b2 string save of buffer
-+.\" NS lK register count of lines read from input file
-+.de x1
-+.nr dZ \\n(dZ+1
-+.ds b2 \\*(b1
-+.ds b1
-+.nr lK \\n(.c
-+.ev 2
-+.fi
-+.di eB
-+..
-+.\"
-+.\" NS x2 macro - end diversion and print
-+.\" NS b0 string local temporary
-+.de x2
-+.br
-+.di
-+.ev
-+.ie (\\n(.c-\\n(lK>1) \{\
-+.     ds b0 \&\\*(eB\\
-+.     ds b1 \\*(b2\\*(b0\\*(b1
-+.\}
-+.el .ds b1 \\*(b2\\*(b1
-+\&\\*(b1
-+.rm eB b2 b0 b1
-+.nr dZ \\n(dZ-1
-+..
-+.\" NS Fl macro - flags (appends - and prints flags)
-+.\" NS cF register save current font
-+.\" NS cZ register save current font size
-+.de Fl
-+.as b1 \&\\*(fL
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$==0 \{\
-+.             as b1 \&\|\-\|\fP\s0
-+.             pB
-+.     \}
-+.     el \{\
-+.             ds mN Fl
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>0 \{\
-+.     ie (\\n(aC-\\n(aP)==0 \{\
-+.             as b1 \&\|\-\fP\s0
-+.             aZ
-+.     \}
-+.     el \{\
-+.             nr aP \\n(aP+1
-+.             ie \\n(C\\n(aP==1 \{\
-+.                     as b1 \&\|\-\fP\s0
-+.                     \\*(A\\n(aP
-+.             \}
-+.             el \{\
-+.                     nr cF \\n(.f
-+.                     nr cZ \\n(.s
-+.                     if \\n(C\\n(aP==3 \{\
-+.                             as b1 \&\|\-\|
-+.                     \}
-+.                     fR
-+.             \}
-+.     \}
-+.\}
-+..
-+.\"
-+.\" NS fR macro - Fl flag recursion routine (special handling)
-+.\" NS jM local register
-+.\" NS jN local register
-+.\"
-+.de fR
-+.hy 0
-+.nr jM \\n(C\\n(aP
-+.ie \\n(jM==1 \{\
-+.     as b1 \&\fP\s0
-+.     \\*(A\\n(aP
-+.\}
-+.el \{\
-+.     nr jN \\n(aP
-+.     ie \\n(jM==2 \{\
-+.             ie !"\\*(A\\n(aP"\\*(Ba" \{\
-+.                     ie !"\\*(A\\n(aP"\fR|\fP" \{\
-+.                            ie "\\*(A\\n(aP"-" .as b1 \&\|\-\^\-\|
-+.                            el .as b1 \&\|\-\\*(A\\n(aP
-+.                     \}
-+.                     el .as b1 \&\\*(A\\n(aP
-+.             \}
-+.             el .as b1 \&\\*(A\\n(aP
-+.     \}
-+.     el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
-+.     ie \\n(aC==\\n(aP \{\
-+.             if \\n(jM==4 .as b1 \&\|\-
-+.             as b1 \&\fP\s0
-+.             aZ
-+.     \}
-+.     el \{\
-+.             nr aP \\n(aP+1
-+.             ie ((\\n(C\\n(aP==3)&(\\n(C\\n(jN==4)) .as b1 \&\|\-
-+.             el .as b1 \&\\*(S\\n(jN
-+.             fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.rr jM jN
-+..
-+.\"
-+.\" NS nR macro - general name recursion routine
-+.\" NS jM local register
-+.\" NS jN local register
-+.de nR
-+.hy 0
-+.nr jM \\n(C\\n(aP
-+.ie \\n(jM==1 \{\
-+.     as b1 \&\f\\n(cF\s\\n(cZ
-+.     \\*(A\\n(aP
-+.\}
-+.el \{\
-+.     nr jN \\n(aP
-+.     ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
-+.     el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
-+.     ie \\n(aC==\\n(aP \{\
-+.             as b1 \&\f\\n(cF\s\\n(cZ
-+.             aZ
-+.     \}
-+.     el \{\
-+.             nr aP \\n(aP+1
-+.             as b1 \&\\*(S\\n(jN
-+.             nR
-+.     \}
-+.\}
-+.rr jM jN
-+..
-+.\" NS Ar macro - command line `argument' macro
-+.\"
-+.de Ar
-+.as b1 \\*(aR
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 \{\
-+.             as b1 file\ ...\fP\s0
-+.             pB
-+.     \}
-+.     el \{\
-+.             ds mN Ar
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>0 \{\
-+.     ie (\\n(aC-\\n(aP)==0 \{\
-+.             as b1 \&file\ ...\fP\s0
-+.             aZ
-+.     \}
-+.     el \{\
-+.             nr aP \\n(aP+1
-+.             ie \\n(C\\n(aP==1 \{\
-+.                     as b1 \&file\ ...\fP\s0
-+.                     \\*(A\\n(aP
-+.               \}
-+.               el \{\
-+.                       nr cF \\n(.f
-+.                     nr cZ \\n(.s
-+.                     if \\n(C\\n(aP==3 \{\
-+.                             as b1 \&file\ ...
-+.                     \}
-+.                       nR
-+.             \}
-+.       \}
-+.\}
-+..
-+.\" NS Ad macro - Addresses
-+.de Ad
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Ad address ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Ad
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(aD
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Cd macro - Config declaration (for section 4 SYNOPSIS) (not callable)
-+.\" needs work - not very translatable
-+.de Cd
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Cd Configuration file declaration (#\\n(.c)
-+.     el \{\
-+.             ds mN Cd
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.br
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(nM
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.     ie \\n(nS \{\
-+.             if "\\*(mN"Cd" \{\
-+.                     rs
-+.                     ie \\n(nS>1 .br
-+.                     el \{\
-+.                             if \\n(iS==0 .nr iS \\n(Dsu
-+.                     \}
-+.                     in +\\n(iSu
-+.                     ti -\\n(iSu
-+.                     nr nS \\n(nS+1
-+.             \}
-+.     nR
-+.     in -\\n(iSu
-+.     \}
-+.     el .nR
-+.\}
-+..
-+.\" NS Cm macro - Interactive command modifier (flag)
-+.de Cm
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Cm Interactive command modifier ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Cm
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(cM
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Dv macro - define variable
-+.de Dv
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Dv define_variable ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Dv
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(eR
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Em macro - Emphasis
-+.de Em
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 \{\
-+.             tm Usage: .Em text ... \\*(Pu (#\\n(.c)
-+.     \}
-+.     el \{\
-+.             ds mN Em
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(eM
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Er macro - Errnotype
-+.de Er
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Er ERRNOTYPE ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Er
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(eR
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Ev macro - Environment variable
-+.de Ev
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Ev ENVIRONMENT_VARIABLE ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Ev
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(eV
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Fd macro - function declaration - not callable (& no err check)
-+.\" NS fD register subroutine test (in synopsis only)
-+.\" NS fY register subroutine count (in synopsis only) (fortran only)
-+.\" NS fZ register also subroutine count (in synopsis only)
-+.de Fd
-+.ds mN Fd
-+.if \\n(nS>0 \{\
-+.\"   if a variable type was the last thing given, want vertical space
-+.     if \\n(fX>0 \{\
-+.             Pp
-+.             nr fX 0
-+.     \}
-+.\"   if a subroutine was the last thing given, want vertical space
-+.     if \\n(fZ>0 \{\
-+.             ie \\n(fD==0 \{\
-+.                     Pp
-+.                     rs
-+.             \}
-+.             el .br
-+.     \}
-+.     nr fD \\n(fD+1
-+.\}
-+.nr cF \\n(.f
-+.nr cZ \\n(.s
-+\&\\*(fD\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.br
-+.ft \\n(cF
-+.fs \\n(cZ
-+..
-+.\" NS Fr macro - function return value - not callable (at the moment)
-+.de Fr
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Fr Function_return_value... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Fr
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(aR
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Ic macro - Interactive command
-+.de Ic
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Ic Interactive command ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Ic
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(iC
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Li macro - literals
-+.de Li
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage .Li argument ... \\*(Pu (#\\n(.c)
-+.       el \{\
-+.             ds mN Li
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.               nr fV \\n(.$
-+.               fV
-+.       \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(lI
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Or macro - Pipe symbol (OR)
-+.de Or
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Or ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Or
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(iC
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Ms macro - Math symbol
-+.de Ms
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Ms Math symbol ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Ms
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(sY
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Nm macro - Name of command or page topic
-+.\" NS n1 string - save first invocation of .Nm
-+.\" NS iS register - indent second command line in a synopsis
-+.de Nm
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$==0 \{\
-+.             ie "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu (#\\n(.c)
-+.             el \&\\*(nM\\*(n1\fP\s0
-+.     \}
-+.     el \{\
-+.             ds mN Nm
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.               nr fV \\n(.$
-+.               fV
-+.       \}
-+.\}
-+.if \\n(aC>0 \{\
-+.     ie \\n(aC==\\n(aP \{\
-+.             as b1 \&\\*(nM\\*(n1\fP\s0
-+.             aZ
-+.     \}
-+.     el \{\
-+.             as b1 \\*(nM
-+.             nr aP \\n(aP+1
-+.             ie \\n(C\\n(aP==1 \{\
-+.                     as b1 \&\\*(n1\fP\s0
-+.                     \\*(A\\n(aP
-+.             \}
-+.             el \{\
-+.                     nr cF \\n(.f
-+.                     nr cZ \\n(.s
-+.                     if \\n(nS \{\
-+.                             if "\\*(mN"Nm" \{\
-+.                                     rs
-+.                                     in -\\n(iSu
-+.                                     ie \\n(nS>1 .br
-+.                                     el \{\
-+.                                             if \\n(iS==0 \{\
-+.                                                     sw \\$1
-+.                                     nr iS ((\\n(sWu+1)*\\n(fW)u
-+.                                             \}
-+.                                     \}
-+.                                     in +\\n(iSu
-+.                                     ti -\\n(iSu
-+.                                     nr nS \\n(nS+1
-+.                             \}
-+.                     \}
-+.                     if "\\*(n1"" .ds n1 \\*(A\\n(aP
-+.                     nR
-+.             \}
-+.     \}
-+.\}
-+..
-+.\" NS Pa macro - Pathname
-+.de Pa
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 \&\\*(pA~\fP\s0
-+.     el \{\
-+.             ds mN Pa
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(pA
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Sy macro - Symbolics
-+.de Sy
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Sy symbolic_text ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Sy
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(sY
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Tn macro - Trade Name Macro
-+.de Tn
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Tn
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(tN\\*(tF
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS nN macro - Trade Name Macro for inside of reference
-+.de nN
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Tn
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(tN
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS Va macro - variable name macro
-+.de Va
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Va variable_name(s) ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Va
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     as b1 \\*(vA
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\"
-+.\" NS No macro - Normal text macro (default text style if mess up)
-+.de No
-+.as b1 \\*(nO
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$==0 .tm Usage: .No must be called with arguments (#\\n(.c)
-+.     el \{\
-+.             ds mN No
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       ie \\n(C\\n(aP==1 \{\
-+.             \\*(A\\n(aP
-+.       \}
-+.       el \{\
-+.             nr cF \\n(.f
-+.             nr cZ \\n(.s
-+.             nR
-+.       \}
-+.\}
-+..
-+.\"------------------------------------------------------------------------
-+.\" NS Op macro - Option Expression
-+.de Op
-+.if \\n(aC==0 \{\
-+.     ds mN Op
-+.\}
-+.\" .ds qL \&\\*(lO
-+.\" .ds qR \&\\*(rO
-+.ds qL \&\\*(lB
-+.ds qR \&\\*(rB
-+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
-+..
-+.\" NS Aq macro - Enclose string in angle brackets
-+.de Aq
-+.if \\n(aC==0 .ds mN Aq
-+.ds qL \&<
-+.ds qR \&>
-+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Bq macro - Enclose string in square brackets
-+.de Bq
-+.if \\n(aC==0 .ds mN Bq
-+.ds qL \&\\*(lB
-+.ds qR \&\\*(rB
-+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Dq macro - Enclose string in double quotes
-+.de Dq
-+.if \\n(aC==0 .ds mN Dq
-+.ds qL \&\\*(Lq
-+.ds qR \&\\*(Rq
-+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Eq macro - Enclose string in double quotes
-+.de Eq
-+.if \\n(aC==0 .ds mN Eq
-+.ds qL \\$1
-+.ds qR \\$2
-+.En \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Pq macro - Enclose string in parenthesis
-+.de Pq
-+.if \\n(aC==0 .ds mN Pq
-+.ds qL \&\\*(lP
-+.ds qR \&\\*(rP
-+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Ql macro - Quoted literal is in file mdocj-[dit|n|g]roff (too large
-+.\" an if-else to carry along recursively for `if n ...')
-+.\"
-+.\" NS Sq macro - Enclose string in single quotes
-+.de Qq
-+.if \\n(aC==0 .ds mN Qq
-+.ds qL \&\\*q
-+.ds qR \&\\*q
-+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Sq macro - Enclose string in single quotes
-+.de Sq
-+.if \\n(aC==0 .ds mN Sq
-+.ds qL \&\\*(sL
-+.ds qR \&\\*(sR
-+.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\"
-+.\" NS Es macro - Set up strings for .En call
-+.de Es
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$>2 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     el \{\
-+.             ds qL \\$1
-+.             ds qR \\$2
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.     ds qL \\*(A\\n(aP
-+.     nr aP \\n(aP+1
-+.     ds qR \\*(A\\n(aP
-+.     ie \\n(aC>\\n(aP .c\\n(C\\n(aP
-+.     el .aZ
-+.\}
-+..
-+.\" .tm En beg arg(A[\\n(aP])==\\*(A\\n(aP;
-+.\" .tm En oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
-+.\" NS En macro - Enclose string with given args (eg [ and ] etc)
-+.\" NS qL string variable set by calling macro
-+.\" NS qR string variable set by calling macro
-+.\" NS aJ register (for vR)
-+.de En
-+.ie \\n(aC==0 \{\
-+.     ie \\n(.$==0 \{\
-+.             as b1 \&\\*(qL\\*(qR
-+.             pB
-+.     \}
-+.     el \{\
-+.\".          as mN (En)
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.             as b1 \&\\*(qL
-+.     \}
-+.\}
-+.el \{\
-+.     as b1 \&\\*(qL
-+.\}
-+.if \\n(aC>0 \{\
-+.     ie (\\n(aC-\\n(aP)==0 \{\
-+.             as b1 \&\\*(qR
-+.             aZ
-+.     \}
-+.     el \{\
-+.             ie \\n(C\\n(aC==3 \{\
-+.                     nr aJ \\n(aC-1
-+.                     vR
-+.                     nr aJ \\n(aJ+1
-+.                     ds A\\n(aJ \&\\*(qR\\*(A\\n(aJ
-+.                     nr aJ 0
-+.             \}
-+.             el .aI \&\\*(qR 3
-+.             nr aP \\n(aP+1
-+.             if \\n(C\\n(aP==1 .\\*(A\\n(aP
-+.             if \\n(C\\n(aP>1 \{\
-+.                     nr aP \\n(aP-1
-+.                     No
-+.             \}
-+.     \}
-+.\}
-+..
-+.\" NS vR macro - vector routine (for En, trace backwards past trail punct)
-+.de vR
-+.if \\n(C\\n(aJ==3 \{\
-+.     nr aJ \\n(aJ-1
-+.     vR
-+.\}
-+..
-+.\"------------------------------------------------------------------------
-+.\" NS Ao macro - Angle open
-+.de Ao
-+.if \\n(aC==0 .ds mN Ao
-+.ds qL \&<
-+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Ac macro - Angle close
-+.de Ac
-+.if \\n(aC==0 .ds mN Ac
-+.ds qR \&>
-+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Bo macro - Bracket open
-+.de Bo
-+.if \\n(aC==0 .ds mN Bo
-+.ds qL \&[
-+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Bc macro - Bracket close
-+.de Bc
-+.if \\n(aC==0 .ds mN Bc
-+.ds qR \&]
-+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Do macro - Double Quote open
-+.de Do
-+.if \\n(aC==0 .ds mN Do
-+.ds qL \&\\*(Lq
-+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Dc macro - Double Quote close
-+.de Dc
-+.if \\n(aC==0 .ds mN Dc
-+.ds qR \&\\*(Rq
-+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Eo macro - Enclose open
-+.de Eo
-+.if \\n(aC==0 .ds mN Eo
-+.ds qL \\$1
-+.eO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Ec macro - Enclose close
-+.de Ec
-+.if \\n(aC==0 .ds mN Ec
-+.ds qR \\$1
-+.eC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Oo macro - Option open
-+.de Oo
-+.if \\n(aC==0 .ds mN Oo
-+.ds qL \&[
-+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Oc macro - Option close
-+.de Oc
-+.if \\n(aC==0 .ds mN Oc
-+.ds qR \&]
-+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Po macro - Parenthesis open
-+.de Po
-+.if \\n(aC==0 .ds mN Po
-+.ds qL \&(
-+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Pc macro - Parenthesis close
-+.de Pc
-+.if \\n(aC==0 .ds mN Pc
-+.ds qR \&)
-+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Qo macro - Straight Double Quote open
-+.de Qo
-+.if \\n(aC==0 .ds mN Qo
-+.ds qL \&\\*q
-+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Qc macro - Straight Double Quote close
-+.de Qc
-+.if \\n(aC==0 .ds mN Qc
-+.ds qR \&\\*q
-+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS So macro - Single Quote open
-+.de So
-+.if \\n(aC==0 .ds mN So
-+.ds qL \&\\*(sL
-+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Sc macro - Single Quote close
-+.de Sc
-+.if \\n(aC==0 .ds mN Sc
-+.ds qR \&\\*(sR
-+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Xo macro - Extend open (continue)
-+.de Xo
-+.if \\n(aC==0 .ds mN Xo
-+.\" .nr mN 1
-+.ds qL
-+.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS Xe macro - Extend close (end)
-+.de Xc
-+.\" .nr mN 0
-+.if \\n(aC==0 .ds mN Xc
-+.ds qR
-+.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS eO macro - enclose string open
-+.\" NS oM register (extension possible)
-+.de eO
-+.nr oM \\n(oM+1
-+.\" .tm eO last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
-+.ie \\n(aC==0 \{\
-+.       ie \\n(.$>0 \{\
-+.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.             as b1 \\*(qL
-+.       \}
-+.     el \{\
-+.             as b1 \\*(qL
-+.             if (\\n(dZ==0)&(\\n(sM==1) \{\
-+.                     nr dZ \\n(dZ+1
-+.                     ds b2 \\*(b1
-+.                     ds b1
-+.                     nr lK \\n(.c
-+.                     ev 2
-+.                     fi
-+.                     di eB
-+.             \}
-+.     \}
-+.\}
-+.el \{\
-+.     as b1 \\*(qL
-+.\}
-+.ie \\n(aC>0 \{\
-+.     if \\n(aC>\\n(aP \{\
-+.             nr aP \\n(aP+1
-+.             ie \\n(C\\n(aP==1 .\\*(A\\n(aP
-+.             el  \{\
-+.                     nr aP \\n(aP-1
-+.                     No
-+.             \}
-+.     \}
-+.     if \\n(aC==\\n(aP \{\
-+.             if \\n(tP==1 \{\
-+.\" .tm SETTING Xt!!!
-+.                     nr Xt 1
-+.             \}
-+.\".\" .              ds S0
-+.\"CHANGED            ds S0 \\*(iV
-+.             aY
-+.     \}
-+.\}
-+.el \{\
-+.     if \\n(oM>1 .as b1 \\*(sV
-+.\}
-+..
-+.\"
-+.\" NS eC macro - enclose string close
-+.\" NS aa local register
-+.de eC
-+.nr oM \\n(oM-1
-+.\" tm eC last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
-+.as b1 \\*(qR
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$>0 \{\
-+.               aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.       \}
-+.     el \{\
-+.             ie "\\*(xB"" \{\
-+.                     pB
-+.             \}
-+.             el \{\
-+.                     pB
-+.\\*(L\\n(lC
-+.                     nr Xt 0
-+.                     ds xB
-+.             \}
-+.     \}
-+.\}
-+.if \\n(aC>0 \{\
-+.     ie \\n(aC==\\n(aP \{\
-+.             ie \\n(oM==0 \{\
-+.                     aZ
-+.             \}
-+.             el .aY
-+.     \}
-+.     el \{\
-+.             nr aa \\n(aP+1
-+.             if \\n(C\\n(aa==2 .as b1 \\*(S\\n(aC
-+.\" tm CURRENT arg (aP==\\*(A\\n(aP and ap+1==\\*(A\\n(aa) tP==\\n(tP Xt==\\n(Xt
-+.             rr aa
-+.             if \\n(tP>0 \{\
-+.\" tm UNSETTING Xt==\\n(Xt!!!!
-+.                     if \\n(Xt>0 .nr Xt \\n(Xt-1
-+.\" tm NOW Xt==\\n(Xt!!!!
-+.             \}
-+.             No
-+.     \}
-+.\}
-+..
-+.\"------------------------------------------------------------------------
-+.\" NS Pf macro - Prefix (calls .pF)
-+.de Pf
-+.if \\n(aC==0 .ds mN Pf
-+.ds qL \&\\$1
-+.pF \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\" NS pF macro - Prefix (for prefixing open quotes, brackets etc)
-+.de pF
-+.ie \\n(aC==0 \{\
-+.     as b1 \&\\*(qL
-+.     ie \\n(.$<2 \{\
-+.             tm Warning: Missing arguments - prefix .Pf)
-+.             pB
-+.     \}
-+.     el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.\}
-+.el \{\
-+.     ie (\\n(aC-\\n(aP)>1 \{\
-+.             nr aP \\n(aP+1
-+.             as b1 \&\\*(A\\n(aP
-+.     \}
-+.     el .tm Warning: .Pf: trailing prefix (#\\n(.c)
-+.\}
-+.if \\n(aC>0 \{\
-+.     ie (\\n(aC-\\n(aP)==0 .aZ
-+.     el \{\
-+.             nr aP \\n(aP+1
-+.             c\\n(C\\n(aP
-+.     \}
-+.\}
-+..
-+.\" NS Ns macro - remove space (space remove done by .aV or .fV)
-+.de Ns
-+.if \\n(aC==0 \{\
-+.     ds mN Ns
-+.     ie \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     el .tm Usage: .Ns must be called with arguments (#\\n(.c)
-+.\}
-+.No
-+..
-+.de Ap
-+.if \\n(aC==0 \{\
-+.     ds mN Ap
-+.     tm Usage: Ap "cannot be first request on a line (no .Ap)" (#\\n(.c)
-+.\}
-+.as b1 \&'
-+.No
-+..
-+.\" NS Hv macro - Hard (unpaddable) Space vector
-+.\" NS iV string inter-vector space
-+.\" NS sV string inter-argument space
-+.de Hv
-+.ds iV \\*(sV
-+.ds sV \\*(hV
-+..
-+.\" NS Sv macro - Soft Space vector (troff limitation)
-+.de Sv
-+.ds sV \\*(iV
-+..
-+.\" NS Tv macro - Tab Space vector
-+.de Tv
-+.ds sV \\*(tV
-+..
-+.\" NS Sm macro - Space mode
-+.\" NS sM register - default is one (space mode on)
-+.nr sM 1
-+.de Sm
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$==0 .tm "Usage: .Sm [off | on]" (#\\n(.c)
-+.     el \{\
-+.             ds mN Sm
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>0 \{\
-+.     nr aP \\n(aP+1
-+.     if "\\*(A\\n(aP"on" \{\
-+.             ds sV \\*(iV
-+.             nr sM 1
-+.     \}
-+.     if "\\*(A\\n(aP"off" \{\
-+.             ds sV
-+.             rm S0 S1 S2 S3 S4 S5 S6 S7 S8 S9
-+.             nr sM 0
-+.     \}
-+.     ie \\n(aC>\\n(aP \{\
-+.             No
-+.     \}
-+.     el .aY
-+.\}
-+..
-+.\"------------------------------------------------------------------------
-+.\" Size and Argument type macros
-+.\" NS aT macro - argument type
-+.\" NS aU macro - argument type (same as .aT but uses A[1-9] strings
-+.\" NS aT register argument type
-+.if \n(.g \{\
-+.de aT
-+.nr aT 0
-+.ie \\n(sW>2:(\A'\\$1'==0) \{\
-+.     nr aT 2
-+.\}
-+.el \{\
-+.     if \\n(sW==1 \{\
-+.             ie \\n(z\\$1>2 \{\
-+.                     nr aT \\n(z\\$1
-+.             \}
-+.             el .nr aT 2
-+.     \}
-+.     if \\n(sW==2 \{\
-+.             ie \\n(\\$1 \{\
-+.                     nr aT 1
-+.             \}
-+.             el .nr aT 2
-+.     \}
-+.\}
-+..
-+.de aU
-+.nr aT 0
-+.aW \\$1
-+.ie \\n(sW>2:(\A'\\*(A\\$1'==0) .nr aT 2
-+.el \{\
-+.     if \\n(sW==1 \{\
-+.             ie \\n(z\\*(A\\$1>2 \{\
-+.                     nr aT \\n(z\\*(A\\$1
-+.             \}
-+.             el .nr aT 2
-+.     \}
-+.     if \\n(sW==2 \{\
-+.             ie (\\n(\\*(A\\$1) \{\
-+.                     nr aT 1
-+.             \}
-+.             el .nr aT 2
-+.     \}
-+.\}
-+..
-+.\}
-+.if !\n(.g \{\
-+.de aT
-+.nr aT 0
-+.ie \\n(sW>2 \{\
-+.     nr aT 2
-+.\}
-+.el \{\
-+.     if \\n(sW==1 \{\
-+.             ie \\n(z\\$1>2 \{\
-+.                     nr aT \\n(z\\$1
-+.             \}
-+.             el .nr aT 2
-+.     \}
-+.     if \\n(sW==2 \{\
-+.             ie \\n(\\$1 \{\
-+.                     nr aT 1
-+.             \}
-+.             el .nr aT 2
-+.     \}
-+.\}
-+..
-+.de aU
-+.nr aT 0
-+.aW \\$1
-+.ie \\n(sW>2 .nr aT 2
-+.el \{\
-+.     if \\n(sW==1 \{\
-+.             ie \\n(z\\*(A\\$1>2 \{\
-+.                     nr aT \\n(z\\*(A\\$1
-+.             \}
-+.             el .nr aT 2
-+.     \}
-+.     if \\n(sW==2 \{\
-+.             ie (\\n(\\*(A\\$1) \{\
-+.                     nr aT 1
-+.             \}
-+.             el .nr aT 2
-+.     \}
-+.\}
-+..
-+.\}
-+.\" NS s1 macro - set spacing for class type 1
-+.\" NS s2 macro - set spacing for class type 2
-+.\" NS s3 macro - set spacing for class type 3
-+.\" NS s1 macro - set spacing for class type 1
-+.\" NS s2 macro - set spacing for class type 2
-+.\" NS s3 macro - set spacing for class type 3
-+.\" NS s4 macro - set spacing for class type 4
-+.\" NS S[0-9] string spacing
-+.\" NS xX local register
-+.\" NS aa local register
-+.de s0
-+.tm MDOC-ERROR: bogus type 0 (can't set space '\\*(A\\n(aC') (#\\n(.c)
-+..
-+.de s1
-+.if \\n(\\*(A\\n(aC==3 \{\
-+.     nr xX \\n(aC-1
-+.     rm S\\n(xX
-+.     ds S\\n(aC \\*(sV
-+.\}
-+.if \\n(\\*(A\\n(aC==2 \{\
-+.     nr xX \\n(aC-1
-+.\" this kludge can probably go away, but need to double check first
-+.     ie "\\*(A\\n(aC"Nb" .ds S\\n(xX \\*(hV
-+.     el .rm S\\n(xX
-+.\}
-+..
-+.de s2
-+.ds S\\n(aC \\*(sV
-+..
-+.de s3
-+.if \\n(aC>1 \{\
-+.     nr xX \\n(aC-1
-+.     rm S\\n(xX
-+.\}
-+.ds S\\n(aC \\*(sV
-+..
-+.de s4
-+.nr aa 0
-+..
-+.\" Class switches (on current argument aP)
-+.\" NS c0 macro - catch errors (non-existent class type 0)
-+.\" NS c1 macro - call request if type 1
-+.\" NS c2 macro - call .No if type 2
-+.\" NS c3 macro - call .No if type 3
-+.\" NS c4 macro - call .No if type 4
-+.de c0
-+.tm MDOC-ERROR: bogus class 0 (can't determine '\\*(A\\n(aC') (#\\n(.c)
-+..
-+.de c1
-+.\\*(A\\n(aP
-+..
-+.de c2
-+.nr aP \\n(aP-1
-+.No
-+..
-+.de c3
-+.nr aP \\n(aP-1
-+.No
-+..
-+.de c4
-+.nr aP \\n(aP-1
-+.No
-+..
-+.\" NS y1 macro - ignore if class 1
-+.\" NS y2 macro - ignore if class 2
-+.\" NS y3 macro - append if type 3
-+.\" NS y4 macro - append if type 4
-+.de y1
-+.nr aa 1
-+..
-+.de y2
-+.nr aa 1
-+..
-+.de y3
-+.as b1 \\*(A\\n(aP
-+.nr aP \\n(aP+1
-+.n\\C\\n(aP
-+..
-+.de y4
-+.as b1 \\*(A\\n(aP
-+.nr aP \\n(aP+1
-+.n\\C\\n(aP
-+..
-+.\"--------------------------------------------------------------------------
-+.\" Ns Bf macro - Begin Font Mode (will be begin-mode/end-mode in groff & TeX)
-+.\" Ns Ef macro - End Font Mode
-+.de Bf
-+.ds mN Bf
-+.ie \\n(.$>0 \{\
-+.     nr bF \\n(.f
-+.     nr bZ \\n(.s
-+.     if "\\$1"Em" \&\\*(eM\c
-+.     if "\\$1"Li" \&\\*(lI\c
-+.     if "\\$1"Sy" \&\\*(sY\c
-+.     if "\\$1"-emphasis" \&\\*(eM\c
-+.     if "\\$1"-literal" \&\\*(lI\c
-+.     if "\\$1"-symbolic" \&\\*(sY\c
-+.\}
-+.el .tm Usage .Bf [Em | emphasis | Li | literal | Sy | symbolic] (#\\n(.c)
-+..
-+.de Ef
-+.ds mN Ef
-+.ie \\n(.$>0 .tm Usage .Ef (does not take arguments) (#\\n(.c)
-+.el \&\f\\n(bF\s\\n(bZ
-+..
-+.\" Ns Bk macro - Begin Keep
-+.\" Ns Ek macro - End Keep
-+.\" Ns kS string - keep type
-+.de Bk
-+.ds mN Bk
-+.ie \\n(.$==0 \{\
-+.tm Usage: .Bk [-lines | -words] (#\\n(.c)
-+.\}
-+.el \{\
-+.     if !"\\*(kS"" .tm .Bk: nesting keeps not implemented yet. (#\\n(.c)
-+.     if "\\$1"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
-+.     if "\\$1"-words" .Hv
-+.     ds kS \\$1
-+.\}
-+..
-+.de Ek
-+.ds mN Ek
-+.ie \\n(.$>0 .tm Usage .Ek (does not take arguments) (#\\n(.c)
-+.el \{\
-+.     if "\\*(kS"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
-+.     if "\\*(kS"-words" .Sv
-+.     rm kS
-+.\}
-+..
-+.\" NS Bd macro - Begin Display display-type [offset string]
-+.\" NS Ed macro - end Display
-+.\" NS O[0-9] registers - stack of indent
-+.\" NS d[0-9] registers - display-type stack
-+.de Bd
-+.ds mN Bd
-+.ie \\n(.$==0 \{\
-+.tm Usage: .Bd [-literal | -filled | -ragged | -unfilled] [-offset [string]] [-compact] (#\\n(.c)
-+.\}
-+.el \{\
-+.     ds aa
-+.     nr bV 0
-+.       nr iD 0
-+.     nr dP \\n(dP+1
-+.       if "\\$1"-literal" \{\
-+.             nr iD \\n(iD+1
-+.               ds d\\n(dP dL
-+.             nr cF \\n(.f
-+.             nr cZ \\n(.s
-+.             ie t \{\&\\*(lI
-+'                     ta 9n 18n 27n 36n 45n 54n 63n 72n
-+.             \}
-+.             el \{\
-+'                     ta 8n 16n 24n 32n 40n 48n 56n 64n 72n
-+.             \}
-+.             nf
-+.       \}
-+.       if "\\$1"-filled" \{\
-+.             nr iD \\n(iD+1
-+.               ds d\\n(dP dF
-+.             br
-+.       \}
-+.       if "\\$1"-ragged" \{\
-+.             nr iD \\n(iD+1
-+.               ds d\\n(dP dR
-+.             na
-+.       \}
-+.       if "\\$1"-unfilled" \{\
-+.             nr iD \\n(iD+1
-+.               ds d\\n(dP dU
-+.             nf
-+.       \}
-+.\" .tm Here is argc: \\n(.$ and here is iD \\n(iD
-+.       if ((\\n(iD>=1)&(\\n(.$>\\n(iD)) \{\
-+.             bV \\$2 \\$3 \\$4
-+.     \}
-+.     if \\n(O\\n(dP>0 'in \\n(.iu+\\n(O\\n(dPu
-+.     if (\\n(bV==0) \{\
-+.             if (\\n(nS==0) \{\
-+.                     ie "\\*(d\\n(dP"dR" .sp \\n(dVu
-+.                     el 'sp \\n(dVu
-+.             \}
-+.     \}
-+.     if \\n(cR==0 .ne 2v
-+.     nr bV 0
-+.     nr iD 0
-+.\}
-+..
-+.\" NS bV macro - resolve remaining .Bd arguments
-+.de bV
-+.\" .tm in bV with args: \\$1 \\$2 \\$3
-+.nr iD 1
-+.ds bY
-+.if "\\$1"-offset" \{\
-+.     ds bY \\$2
-+.     if "\\*(bY"left" \{\
-+.             nr iD \\n(iD+1
-+.             nr O\\n(dP 0
-+.     \}
-+.     if "\\*(bY"right" \{\
-+.             nr iD \\n(iD+1
-+.             nr O\\n(dP (\\n(.l/3)u
-+.     \}
-+.     if "\\*(bY"center" \{\
-+.             nr iD \\n(iD+1
-+.             nr O\\n(dP (\\n(.l-\\n(.i)/4u
-+.     \}
-+.     if "\\*(bY"indent" \{\
-+.             nr iD \\n(iD+1
-+.             nr O\\n(dP \\n(dIu
-+.     \}
-+.     if "\\*(bY"indent-two" \{\
-+.             nr iD \\n(iD+1
-+.             nr O\\n(dP \\n(dIu+\\n(dIu
-+.     \}
-+.     if \\n(iD==1 \{\
-+.             nr iD \\n(iD+1
-+.             sW "\\*(bY"
-+.             ie \\n(sW>2 \{\
-+.                     ie ((\\*(bY>9n)&(\\*(bY<100n)) \{\
-+.                             nr O\\n(dP \\*(bY
-+.                     \}
-+.                     el .nr O\\n(dP (\\n(sW)*\\n(fWu
-+.             \}
-+.             el \{\
-+.                     if \\n(sW==2 .aT \\*(bY
-+.                     ie \\n(aT==1 \{\
-+.                             nr O\\n(dP \\n(\\*(bY
-+.                     \}
-+.                     el .nr O\\n(dP \\*(bY
-+.             \}
-+.     \}
-+.\}
-+.if "\\$1"-compact" \{\
-+.     nr bV 1
-+.\}
-+.if \\n(iD<\\n(.$ \{\
-+.     ie "\\*(bY"" \{\
-+.             bV \\$2 \\$3
-+.     \}
-+.     el \{\
-+.             bV \\$3
-+.     \}
-+.\}
-+..
-+.\" NS Ed macro - end display
-+.de Ed
-+.ds mN Ed
-+.br
-+.if \\n(dP==0 .tm mdoc: Extraneous .Ed
-+.if "\\*(d\\n(dP"dL" \{\
-+.     ft \\n(cF
-+.     fz \\n(cZ
-+.\}
-+.in \\n(.iu-\\n(O\\n(dPu
-+.rr O\\n(dP
-+.rm d\\n(dP
-+.nr dP \\n(dP-1
-+.fi
-+.if t .ad
-+..
-+.\"--------------------------------------------------------------------------
-+.\" NS Bl macro - begin list (.Bl list-type)
-+.\" NS L[0-9] registers - stack of list types
-+.de Bl
-+.ie \\n(.$==0 \{\
-+.tm Usage: .Bl [[-hang | -tag] [-width]] [ -item | -enum | -bullet | -diag] (#\\n(.c)
-+.\}
-+.el \{\
-+.     ds mN Bl
-+.     nr aP 0
-+.     nr lC \\n(lC+1
-+.     ds A1 \\$2
-+.     ds A2 \\$3
-+.     ds A3 \\$4
-+.     ds A4 \\$5
-+.     ds A5 \\$6
-+.     ds A6 \\$7
-+.     ds A7 \\$8
-+.     ds A8 \\$9
-+.     nr fV \\n(.$-1
-+.     if "\\$1"-hang" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC hL
-+.             nr w\\n(lC 6n
-+.             nr tC  1
-+.     \}
-+.     if "\\$1"-tag" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC tL
-+.             nr tC  1
-+.     \}
-+.     if "\\$1"-item" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC iT
-+.             nr tC  1
-+.     \}
-+.     if "\\$1"-enum" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC nU
-+.             nr w\\n(lC 3n
-+.             nr tC  1
-+.     \}
-+.     if "\\$1"-bullet" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC bU
-+.             nr w\\n(lC 2n
-+.             nr tC  1
-+.     \}
-+.     if "\\$1"-dash" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC hU
-+.             nr w\\n(lC 2n
-+.             nr tC  1
-+.     \}
-+.     if "\\$1"-hyphen" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC hU
-+.             nr w\\n(lC 2n
-+.             nr tC  1
-+.     \}
-+.     if "\\$1"-inset" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC lL
-+.             nr tC  1
-+.     \}
-+.     if "\\$1"-diag" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC mL
-+.             nr mL 1
-+.     \}
-+.     if "\\$1"-ohang" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC oL
-+.             nr tC 1
-+.     \}
-+.     if "\\$1"-column" \{\
-+.             nr aP \\n(aP+1
-+.             ds L\\n(lC cL
-+.     \}
-+.     ie \\n(aP==0 \{\
-+.     tm \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     tm Usage: .Bl [[-inset|-tag] -width] [-item|-enum|-bullet|-diag] (#\\n(.c)
-+.     \}
-+.     el \{\
-+.             tY
-+.             if (\\n(aP==1)&(\\n(aP<\\n(.$) \{\
-+.                     nr aP 0
-+.                     lV
-+.                     if "\\*(L\\n(lC"cL" \{\
-+.                             W\\n(wV
-+.                             nr w\\n(lC 0
-+'                             in -\\n(eWu
-+.                             ie \\n(v\\n(lC==1 \{\
-+.                                    nr aa 0
-+.                             \}
-+.                             el \{\
-+.                                     sp \\n(dVu
-+.                             \}
-+.                             nf
-+.                             nr wV 0
-+.                     \}
-+.             \}
-+.     \}
-+.     nr aP 0
-+.\" . ds b1
-+.     aY
-+.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
-+.\}
-+..
-+.if \n(.g \{\
-+.     nr i 10
-+.     while \ni<100 \{\
-+.          nr num!\nin 1
-+.          nr i +1
-+.     \}
-+.\}
-+.\" NS lV macro - resolve remaining .Bl arguments
-+.de lV
-+.nr aP \\n(aP+1
-+.if \\n(fV>=\\n(aP \{\
-+.     nr iD 0
-+.     if "\\*(A\\n(aP"-compact" \{\
-+.             nr iD 1
-+.             nr v\\n(lC 1
-+.     \}
-+.     if "\\*(A\\n(aP"-width" \{\
-+.             nr iD 1
-+.             nr aP \\n(aP+1
-+.             nr tW 1
-+.             ds t\\n(lC TagwidtH
-+.             ds tS \\*(A\\n(aP
-+.             aW \\n(aP
-+.             ie \\n(sW>2 \{\
-+.                     nr w\\n(lC (\\n(sW)*\\n(fWu
-+.                     if \\n(sW==3 \{\
-+.                             ie \\n(.g \{\
-+.                                     if \A'\\*(tS' .if r num!\\*(tS \{\
-+.                                             nr w\\n(lC \\*(tS
-+.                                     \}
-+.                             \}
-+.                             el \{\
-+.                                     if (\\*(tS>9n)&(\\*(tS<99n) \{\
-+.                                             nr w\\n(lC \\*(tSu
-+.                                     \}
-+.                             \}
-+.                     \}
-+.             \}
-+.             el \{\
-+.                     aT \\*(tS
-+.                     ie \\n(aT==1 \{\
-+.                             nr w\\n(lC \\n(\\*(tS
-+.                     \}
-+.                     el \{\
-+.                             nr w\\n(lC \\*(tSu
-+.                     \}
-+.             \}
-+.     \}
-+.     if "\\*(A\\n(aP"-offset" \{\
-+.             nr iD 1
-+.             nr aP \\n(aP+1
-+.             ie "\\*(A\\n(aP"indent" \{\
-+.                     nr o\\n(lC \\n(Dsu
-+.             \}
-+.             el \{\
-+.                     ds tS \\*(A\\n(aP
-+.                     aW \\n(aP
-+.                     ie \\n(sW>2 \{\
-+.                             nr o\\n(lC (\\n(sW)*\\n(fWu
-+.                             ie \\n(.g \{\
-+.                                     if \A'\\*(tS' .if r num!\\*(tS \{\
-+.                                             nr o\\n(lC \\*(tS
-+.                                     \}
-+.                             \}
-+.                             el \{\
-+.                                     if (\\*(tS>9n)&(\\*(tS<100n) \{\
-+.                                             nr o\\n(lC \\*(tS
-+.                                     \}
-+.                             \}
-+.                     \}
-+.                     el \{\
-+.                             ie \\n(C\\n(aP==1 .nr o\\n(lC \\n(\\*(tS
-+.                             el .nr o\\n(lC \\*(tS
-+.                     \}
-+.             \}
-+.     \}
-+.     if \\n(iD==0 \{\
-+.             if "\\*(L\\n(lC"cL" \{\
-+.                     nr wV \\n(wV+1
-+.                     ds A\\n(wV \\*(A\\n(aP
-+.             \}
-+.     \}
-+.     if \\n(fV>\\n(aP .lV
-+.\}
-+..
-+.\" NS El macro - end list
-+.\" NS iD local register
-+.de El
-+.ie \\n(.$>0 \{\
-+.     tm Usage: .El (#\\n(.c)
-+.\}
-+.el \{\
-+.     ds mN El
-+.     nr iD 0
-+.     if "\\*(L\\n(lC"cL" \{\
-+.             nr iD 1
-+.             cC
-+.     \}
-+.     if "\\*(L\\n(lC"nU" \{\
-+.             nr nU 0
-+.     \}
-+.     if \\n(mL>0 \{\
-+.             nr iD 1
-+.             nr mL 0
-+.             tZ
-+.             nr lC \\n(lC-1
-+.             tY
-+.     \}
-+.     if "\\*(L\\n(lC"iT" \{\
-+'             in \\n(.iu-\\n(o\\n(lCu
-+.             tZ
-+.             nr lC \\n(lC-1
-+.             tY
-+.             nr iD 1
-+.     \}
-+.     if "\\*(L\\n(lC"oL" \{\
-+'             in \\n(.iu-\\n(o\\n(lCu
-+.             tZ
-+.             nr lC \\n(lC-1
-+.             tY
-+.             nr iD 1
-+.     \}
-+.     if "\\*(L\\n(lC"lL" \{\
-+'             in \\n(.iu-\\n(o\\n(lCu
-+.             tZ
-+.             nr lC \\n(lC-1
-+.             tY
-+.             nr iD 1
-+.     \}
-+.     if \\n(iD==0 \{\
-+.             lE
-+.     \}
-+.     br
-+.     nr iD 0
-+.\}
-+..
-+.\" NS It macro - list item
-+.\" NS iD local register
-+.\" NS aA save pA font string for section FILES (no underline if nroff)
-+.de It
-+.if "\\*(L\\n(lC"" \{\
-+.     tm Usage .Bl -list-type [-width [string] | -compact | -offset [string]] (#\\n(.c)
-+.     tm .It \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
-+.\}
-+.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
-+.ne 3v
-+.ie \\n(.$>0 \{\
-+.     ds mN It
-+.     ds b1
-+.     nr iD 0
-+.     ds A1 \\$1
-+.     ds A2 \\$2
-+.     ds A3 \\$3
-+.     ds A4 \\$4
-+.     ds A5 \\$5
-+.     ds A6 \\$6
-+.     ds A7 \\$7
-+.     ds A8 \\$8
-+.     ds A9 \\$9
-+.     nr fV \\n(.$
-+.     if "\\*(L\\n(lC"mL" \{\
-+.             nr iD 1
-+.             nr aP 0
-+.             aX
-+.             \\*(L\\n(lC
-+.     \}
-+.     if "\\*(L\\n(lC"cL" \{\
-+.             ds b1
-+.             nr aP 0
-+.             nr iD 1
-+.             \\*(L\\n(lC
-+.     \}
-+.     if "\\*(L\\n(lC"iT" \{\
-+.             nr aP 0
-+.             nr iD 1
-+.             \\*(L\\n(lC
-+.     \}
-+.     if \\n(iD==0 \{\
-+.             fV
-+.\" tm ------------------------------------------------------------------------
-+.\" tm It list-type==\\*(L\\n(lC, aP==\\n(aP
-+.\" tm It beg arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
-+.             nr oM \\n(oM+1
-+.             nr tP 1
-+.             nr aP \\n(aP+1
-+.             nr tX \\n(C\\n(aP
-+.             ds tX \\*(A\\n(aP
-+.             if \\n(nF==1 \{\
-+.                     ds aA \\*(pA
-+.                     if n .ds pA \\*(nO
-+.             \}
-+.             ie \\n(C\\n(aP==1 \{\
-+.                     \\*(A\\n(aP
-+.             \}
-+.             el \{\
-+.                     nr aP \\n(aP-1
-+.                     No
-+.             \}
-+.\" tm in It here is b1==\\*(b1
-+.\" tm It mid arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
-+.             ie \\n(Xt==1 .ds xB \&\\*(L\\n(lC
-+.             el .\\*(L\\n(lC
-+.     \}
-+.     nr iD 0
-+.\}
-+.el .\\*(L\\n(lC
-+..
-+.\" NS lL macro - .It item of list-type inset
-+.de lL
-+.lY
-+.br
-+\&\\*(b1
-+.nr oM \\n(oM-1
-+.nr tP 0
-+.ds b1
-+.aY
-+'fi
-+..
-+.\" NS hL macro - .It item of list-type hanging label (as opposed to tagged)
-+.de hL
-+.lX
-+.nr bb \\n(w\\n(lCu+\\n(lSu
-+.ti -\\n(bbu
-+.ie \w\a\\*(b1\au>=(\\n(w\\n(lCu) \&\\*(b1
-+.el \&\\*(b1\h'|\\n(bbu'\c
-+.nr oM \\n(oM-1
-+.ds b1
-+.nr tP 0
-+.aY
-+'fi
-+..
-+.\" NS oL macro - .It item of list-type overhanging label
-+.de oL
-+.lY
-+\&\\*(b1
-+.br
-+.nr oM \\n(oM-1
-+.ds b1
-+.nr tP 0
-+.aY
-+'fi
-+..
-+.\" NS iT macro - .It item of list-type [empty label]
-+.de iT
-+.lY
-+.br
-+.\" .ds b1
-+.aY
-+'fi
-+..
-+.\" NS nU macro - Enumerated list
-+.\" NS nU register count
-+.\" NS hU macro - Hyphen paragraph list (sub bullet list)
-+.\" NS bU macro - Bullet paragraph list
-+.de nU
-+.nr oM \\n(oM+1
-+.nr nU \\n(nU+1
-+.ds b1 \&\\n(nU.
-+.uL
-+..
-+.de bU
-+.nr oM \\n(oM+1
-+.nr bU \\n(bU+1
-+.ds b1 \&\\*(sY\&\(bu\fP
-+.uL
-+..
-+.de hU
-+.nr oM \\n(oM+1
-+.nr bU \\n(bU+1
-+.ds b1 \&\\*(sY\&\-\fP
-+.uL
-+..
-+.\" NS uL macro - .It item of list-type enum/bullet/hyphen
-+.de uL
-+.lX
-+.nr bb \\n(w\\n(lCu+\\n(lSu
-+.ti -\\n(bbu
-+.ie \w\a\\*(b1\au>=(\\n(w\\n(lCu) \&\\*(b1
-+.el \&\\*(b1\h'|\\n(bbu'\c
-+.nr oM \\n(oM-1
-+.\" .nr dZ \\n(dZ+1
-+.ds b1
-+.nr tP 0
-+.aY
-+'fi
-+..
-+.\" NS mL macro - .It item of list-type diagnostic-message
-+.de mL
-+.nr cF \\n(.f
-+.nr cZ \\n(.s
-+.ie \\n(mL==1 \{\
-+.     nr zB \\n(.c
-+.     ie (\\n(zB-\\n(zA)>1 .Pp
-+.     el .br
-+.     nr zA \\n(zB
-+.     nr zB 0
-+.\}
-+.el \{\
-+.     nr zA \\n(.c
-+.     br
-+.\}
-+\&\\*(sY\\*(b1\f\\n(cF\s\\n(cZ\\*(lS\c
-+.aY
-+.ds b1
-+'fi
-+..
-+.\" NS tL macro - .It item of list-type "tag"
-+.de tL
-+.\" tm in tL here is b1==\\*(b1
-+.if \\n(tW==0 .lW
-+.lX
-+.nr bb \\n(w\\n(lCu+\\n(lSu
-+.ti -\\n(bbu
-+.ie (\w\a\\*(b1\au)>(\\n(w\\n(lCu) \{\&\\*(b1
-+.       br
-+.\}
-+.el \&\\*(b1\h'|\\n(bbu'\c
-+.if \\n(nF==1 \{\
-+.     if n .ds pA \\*(aA
-+.\}
-+.nr oM \\n(oM-1
-+.nr tP 0
-+.\" .nr dZ \\n(dZ+1
-+.ds b1
-+.aY
-+'fi
-+..
-+.\" NS lW macro - resolve unknown label/tag width (if .Bl [inset | tag] only)
-+.de lW
-+.if !"TagwidtH"\\*(t\\n(lC" \{\
-+.       ie \\n(tX==1 \{\
-+.               ds t\\n(lN \\*(tX
-+.               nr w\\n(lN \\n(\\*(tX
-+.       \}
-+.       el \{\
-+.               ds t\\n(lN No
-+.               nr w\\n(lN \\n(No
-+.       \}
-+.       if !"\\*(t\\n(lC"\\*(t\\n(lN" .nr tC 1
-+.\}
-+..
-+.\" NS lX macro - set up vertical spacing (if compact) and offset+indent (all)
-+.de lX
-+.ie \\n(tC \{\
-+.       nr tC 0
-+.       nr tW 0
-+.       if \\n(v\\n(lC==0 .sp \\n(dVu
-+.       in \\n(.iu+\\n(w\\n(lCu+\\n(o\\n(lCu+\\n(lSu
-+.\}
-+.el \{\
-+.     ie \\n(v\\n(lC==1 \{\
-+.            nr aa 0
-+.     \}
-+.     el \{\
-+.             sp \\n(dVu
-+.     \}
-+.\}
-+.if !\\n(cR .ne 2v
-+..
-+.\" NS lY macro - set up vertical spacing (if compact) and offset+indent (all)
-+.de lY
-+.ie \\n(tC \{\
-+.       nr tC 0
-+.       nr tW 0
-+.       if \\n(v\\n(lC==0 .sp \\n(dVu
-+.       in \\n(.iu+\\n(o\\n(lCu
-+.\}
-+.el \{\
-+.     ie \\n(v\\n(lC==1 \{\
-+.            nr aa 0
-+.     \}
-+.     el \{\
-+.             sp \\n(dVu
-+.     \}
-+.\}
-+.if !\\n(cR .ne 2v
-+..
-+.\" NS tS temporary string
-+.\" NS hL macro - hanging list function
-+.\" NS tS temporary string
-+.\" NS hL macro - hanging list function
-+.\" NS lT macro - tagged list function
-+.\" NS lE macro - list end function
-+.\" NS tX string (initial string)
-+.\" NS tX register (initial class)
-+.\" NS tC parameter change flag
-+.\" NS Xt save current list-type flag
-+.\" NS lC register - list type stack counter
-+.\" NS tP register tag flag (for diversions)
-+.\" NS w[0-9] register tag stack (nested tags)
-+.\" NS t[0-9] register tag string stack (nested tags)
-+.\" NS o[0-9] register offset stack (nested tags)
-+.\" NS v[0-9] register vertical tag break stack
-+.\" NS h[0-9] register horizontal tag stack (continuous if 1, break if 0)
-+.nr lC 0
-+.nr wV 0
-+.nr w1 0
-+.nr o1 0
-+.nr v1 0
-+.nr h1 0
-+.ds t\n(lC
-+.de lE
-+.\" IN lC o[\\n(lC]==\\n(o\\n(lC, w[\\n(lC]==\\n(w\\n(lC,
-+.ie \\n(o\\n(lC>0 \{\
-+'     in \\n(.iu-(\\n(w\\n(lCu)-(\\n(o\\n(lCu)-\\n(lSu
-+.     rr o\\n(lC
-+.\}
-+.el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu
-+.if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c)
-+.tZ
-+.nr lC \\n(lC-1
-+.tY
-+..
-+.\" NS tY macro - set up next block for list
-+.\" NS tZ macro - decrement stack
-+.\" NS tY register (next possible lC value)
-+.de tY
-+.nr tY (\\n(lC+1)
-+.nr w\\n(tY 0
-+.nr h\\n(tY 0
-+.nr o\\n(tY 0
-+.ds t\\n(tY \\*(t\\n(lC
-+.ds L\\n(tY
-+.nr v\\n(tY 0
-+..
-+.de tZ
-+.rm L\\n(tY
-+.rr w\\n(tY
-+.rr h\\n(tY
-+.rr o\\n(tY
-+.rm t\\n(tY
-+.rr v\\n(tY
-+.nr tY \\n(tY-1
-+..
-+.\" initial values
-+.nr w1 0
-+.nr o1 0
-+.nr h1 0
-+.ds t1
-+.nr v1 0
-+.nr tY 1
-+.\" NS Xr macro - cross reference (man page only)
-+.de Xr
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Xr
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.     ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ie \\n(C\\n(aP>2 .y\\n(C\\n(aP
-+.             el \{\
-+.                     as b1 \&\\*(xR\\*(A\\n(aP\fP\s0
-+.                     if \\n(aC>\\n(aP \{\
-+.                             nr aP \\n(aP+1
-+.                             if \\n(C\\n(aP==2 \{\
-+.                                     as b1 \&(\\*(A\\n(aP)
-+.                                     nr aP \\n(aP+1
-+.                             \}
-+.                             if \\n(aC>=\\n(aP \{\
-+.                                     c\\n(C\\n(aP
-+.                             \}
-+.                     \}
-+.             \}
-+.             aZ
-+.       \}
-+.\}
-+..
-+.\" NS Sx macro - cross section reference
-+.de Sx
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Sx
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.     as b1 \\*(sX
-+.     nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.     nR
-+.\}
-+..
-+.\" NS cC macro - column-list end-list
-+.\" NS eW macro - column indent width
-+.\" NS cI register - column indent width
-+.\" NS W[1-5] macro - establish tabs for list-type column
-+.de cC
-+'in \\n(.iu-\\n(o\\n(lCu-\\n(w\\n(lCu
-+.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
-+.fi
-+.tZ
-+.nr lC \\n(lC-1
-+.tY
-+..
-+.de W1
-+.ta \w\a\\*(A1    \au
-+.nr eW \w\a\\*(A1    \au
-+'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-+..
-+.de W2
-+.ta \w\a\\*(A1    \au +\w\a\\*(A2    \au
-+.nr eW \w\a\\*(A1    \au+\w\a\\*(A2    \au
-+'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-+..
-+.de W3
-+.ta \w\a\\*(A1    \au +\w\a\\*(A2    \au +\w\a\\*(A3    \au
-+.nr eW \w\a\\*(A1    \au+\w\a\\*(A2    \au+\w\a\\*(A3    \au
-+'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-+..
-+.de W4
-+.ta \w\a\\*(A1    \au +\w\a\\*(A2    \au +\w\a\\*(A3    \au +\w\a\\*(A4    \au
-+.nr eW \w\a\\*(A1    \au+\w\a\\*(A2    \au +\w\a\\*(A3    \au +\w\a\\*(A4    \au
-+'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-+..
-+.de W5
-+.ta \w\a\\*(A1   \au +\w\a\\*(A2   \au +\w\a\\*(A3   \au +\w\a\\*(A4   \au +\w\a\\*(A5   \au
-+.nr eW \w\a\\*(A1   \au +\w\a\\*(A2   \au +\w\a\\*(A3   \au +\w\a\\*(A4   \au +\w\a\\*(A5   \au
-+'     in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-+..
-+.\" This is packed abnormally close, intercol width should be an option
-+.de W6
-+.ta \w\a\\*(A1 \au +\w\a\\*(A2 \au +\w\a\\*(A3 \au +\w\a\\*(A4 \au +\w\a\\*(A5 \au +\w\a\\*(A6
-+.nr eW \w\a\\*(A1 \au +\w\a\\*(A2 \au +\w\a\\*(A3 \au +\w\a\\*(A4 \au +\w\a\\*(A5 \au +\w\a\\*(A6
-+'     in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-+..
-+.\" NS cL macro - column items
-+.de cL
-+.if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu
-+.if \\n(.u==0 \{\
-+.     fi
-+'     in \\n(.iu+\\n(eWu
-+.\}
-+.ti -\\n(eWu
-+.fV
-+.nr aP \\n(aP+1
-+.ie \\n(aC>=\\n(aP  \{\
-+.     if "\\*(A\\n(aP"Ta" \{\
-+.             nr jJ \\n(aP-1
-+.             rm S\\n(jJ
-+.             rr jJ
-+.     \}
-+.     c\\n(C\\n(aP
-+.\}
-+.el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c)
-+..
-+.\" NS Ta macro - append tab (\t)
-+.de Ta
-+.ie \\n(aC>0 \{\
-+.     nr aP \\n(aP+1
-+.     ie \\n(aC>=\\n(aP \{\
-+.             if "\\*(A\\n(aP"Ta" \{\
-+.                     nr jJ \\n(aP-1
-+.                     rm S\\n(jJ
-+.                     rr jJ
-+.             \}
-+.             as b1 \\t
-+.             c\\n(C\\n(aP
-+.     \}
-+.     el \{\
-+.             as b1 \\t\\c
-+.             rm S\\n(aP
-+.             pB
-+.             aY
-+.\" .         ds b1
-+.     \}
-+.\}
-+.el \{\
-+.     tm Usage: Ta must follow column entry: e.g. (#\\n(.c)
-+.     tm .It column_string [Ta [column_string ...] ]
-+.\}
-+..
-+.\"
-+.\" NS Dl macro - display (one line) literal
-+.de Dl
-+'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
-+.in \\n(.iu+\\n(Dsu
-+.ie \\n(aC==0 \{\
-+.     ie \\n(.$==0 \{\
-+.             tm Usage: .Dl argument ... (#\\n(.c)
-+.     \}
-+.     el \{\
-+.             ds mN Dl
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.             Li
-+.     \}
-+.\}
-+.el \{\
-+.     tm Usage: .Dl not callable by other macros (#\\n(.c)
-+.\}
-+.in \\n(.iu-\\n(Dsu
-+..
-+.\"
-+.\" NS D1 macro - display (one line)
-+.de D1
-+'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
-+.in \\n(.iu+\\n(Dsu
-+.ie \\n(aC==0 \{\
-+.     ie \\n(.$==0 \{\
-+.             tm Usage: .D1 argument ... (#\\n(.c)
-+.     \}
-+.     el \{\
-+.             ds mN D1
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.             nr aP \\n(aP+1
-+.             ie \\n(C\\n(aP==1 .\\*(A\\n(aP
-+.             el .No
-+.     \}
-+.\}
-+.el \{\
-+.     tm Usage: .D1 not callable by other macros (#\\n(.c)
-+.\}
-+.in \\n(.iu-\\n(Dsu
-+..
-+.\" NS Ex macro - DEFUNCT
-+.de Ex
-+.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\"
-+.\" NS Ex macro - DEFUNCT
-+.de Ex
-+.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+..
-+.\"
-+.\" NS Vt macro - Variable type (for forcing old style variable declarations)
-+.\" this is not done in the same manner as .Ot for fortrash - clean up later
-+.de Vt
-+.\" if a function declaration was the last thing given, want vertical space
-+.if \\n(fD>0 \{\
-+.     Pp
-+.     nr fD 0
-+.\}
-+.\"   if a subroutine was the last thing given, want vertical space
-+.if \\n(fZ>0 \{\
-+.     ie \\n(fX==0 \{\
-+.             Pp
-+.             rs
-+.     \}
-+.     el .br
-+.\}
-+.nr fX \\n(fX+1
-+.nr cF \\n(.f
-+.nr cZ \\n(.s
-+\\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.ie \\n(oT==0 .br
-+.el \&\ \&
-+.ft \\n(cF
-+.fs \\n(cZ
-+..
-+.\"
-+.\" NS Ft macro - Function type
-+.nr fZ 0
-+.de Ft
-+.if \\n(nS>0 \{\
-+.     if \\n(fZ>0 \{\
-+.             Pp
-+.             nr fD 0
-+.             nr fX 0
-+.     \}
-+.     if \\n(fD>0 \{\
-+.             Pp
-+.             nr fD 0
-+.             nr fX 0
-+.     \}
-+.     if \\n(fX>0 \{\
-+.             Pp
-+.             nr fX 0
-+.     \}
-+.     nr fY 1
-+.\}
-+.nr cF \\n(.f
-+.nr cZ \\n(.s
-+\&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.ft \\n(cF
-+.fs \\n(cZ
-+.\" .br
-+..
-+.\"
-+.\" NS Ot macro - Old Function type (fortran - no newline)
-+.\" Ns oT register
-+.nr oT 0
-+.de Ot
-+.nr oT 1
-+.if \\n(nS>0 \{\
-+.     if \\n(fZ>0 \{\
-+.             Pp
-+.             nr fD 0
-+.             nr fX 0
-+.     \}
-+.     if \\n(fD>0 \{\
-+.             Pp
-+.             nr fD 0
-+.             nr fX 0
-+.     \}
-+.     if \\n(fX>0 \{\
-+.             Pp
-+.             nr fX 0
-+.     \}
-+.     nr fY 1
-+.\}
-+.if \\n(.$==4 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 \\$4
-+.if \\n(.$==3 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3
-+.if \\n(.$==2 .as b1 \&\\*(fT\&\\$1 \\$2
-+.if \\n(.$==1 .as b1 \&\\*(fT\&\\$1
-+.as b1 \&\ \fP
-+..
-+.\"
-+.\" NS Fa macro - Function arguments
-+.de Fa
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c)
-+.       el \{\
-+.             ds mN Fa
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.ie \\n(fC>0 \{\
-+.     fC
-+.\}
-+.el \{\
-+.     if \\n(aC>\\n(aP \{\
-+.             as b1 \\*(fA
-+.             nr aP \\n(aP+1
-+.             nr cF \\n(.f
-+.             nr cZ \\n(.s
-+.             nR
-+.             if \\n(nS>0 \{\
-+.                     if \\n(fZ>0 .br
-+.             \}
-+.     \}
-+.\}
-+..
-+.\" NS fC macro - interal .Fa for .FO and .Fc
-+.de fC
-+.ie \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.\" . nr aa \\n(aP
-+.\" . if \\n(nS>0 \{\
-+.             ds Fb
-+.             nr fB 0
-+.             nr Fb 0
-+.             fB \\*(A\\n(aP
-+.             if \\n(fB>1 \{\
-+.                     rm A\\n(aP
-+.                     rn Fb A\\n(aP
-+.             \}
-+.\" . \}
-+.     if \\n(fC>1 \{\
-+.             as b1 \&\f\\n(cF\s\\n(cZ,\\*(S\\n(aP\\*(fA\\*(A\\n(aP\fP\s0
-+.\" .         as b1 \&\\,\\*(S\\n(aP\fP\s0\\*(fA\\*(A\\n(aP\fP\s0
-+.     \}
-+.     if \\n(fC==1 \{\
-+.             as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0
-+.     \}
-+.     nr fC \\n(fC+1
-+.     fC
-+.\}
-+.el  \{\
-+.     aY
-+.\}
-+..
-+.\" NS Fn macro - functions
-+.\" NS fY register - dick with old style function declarations (fortran)
-+.\" NS fZ register - break a line when more than one function in a synopsis
-+.\"
-+.de Fn
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN Fn
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(nS>0 \{\
-+.\" if there is/has been more than one subroutine declaration
-+.     if \\n(fY==0 \{\
-+.             if \\n(fZ>0 \{\
-+.                     Pp
-+.                     nr fX 0
-+.                     nr fD 0
-+.             \}
-+.     \}
-+.     if \\n(fY==1 \{\
-+.             br
-+.             nr fX 0
-+.             nr fD 0
-+.             nr fY 0
-+.     \}
-+.     if \\n(fD>0 \{\
-+.             Pp
-+.             nr fX 0
-+.     \}
-+.     if \\n(fX>0 \{\
-+.             Pp
-+.             nr fD 0
-+.     \}
-+.     nr fZ \\n(fZ+1
-+.     nr fY 0
-+.     rs
-+.     ie \\n(nS>1 .br
-+.     el \{\
-+.             if \\n(iS==0 \{\
-+.                     nr iS ((8)*\\n(fW)u
-+.             \}
-+.     \}
-+.     in +\\n(iSu
-+.     ti -\\n(iSu
-+.     nr nS \\n(nS+1
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.     nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.     as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
-+.     ie \\n(aC>\\n(aP \{\
-+.             as b1 \\*(fA
-+.             nr aP \\n(aP+1
-+.             f\\n(C\\n(aP
-+.     \}
-+.     el \{\
-+.             as b1 \|\\*(rp
-+.             aZ
-+.     \}
-+.     if \\n(nS>0 \{\
-+.             in -\\n(iSu
-+.     \}
-+.\}
-+..
-+.\"
-+.\" NS f1 macro - class switch
-+.\" NS f2 macro - handle function arguments
-+.\" NS f3 macro - punctuation
-+.\" NS f4 macro - write out function
-+.de f1
-+.as b1 \\*(rp\f\\n(cF\s\\n(cZ
-+.\\*(A\\n(aP
-+..
-+.de f2
-+.if \\n(nS>0 \{\
-+.     ds Fb
-+.     nr fB 0
-+.     nr Fb 0
-+.     fB \\*(A\\n(aP
-+.     if \\n(fB>1 \{\
-+.             rm A\\n(aP
-+.             rn Fb A\\n(aP
-+.     \}
-+.\}
-+.as b1 \\*(A\\n(aP
-+.ie \\n(aC>\\n(aP \{\
-+.     nr aa \\n(aP
-+.     nr aP \\n(aP+1
-+.     if \\n(C\\n(aP==2 \{\
-+.             as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\|
-+.     \}
-+.     f\\n(C\\n(aP
-+.\}
-+.el  \{\
-+.     as b1 \\*(rp\f\\n(cF\s\\n(cZ
-+.     aZ
-+.\}
-+..
-+.de f3
-+.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP
-+.ie \\n(aC>\\n(aP \{\
-+.     No
-+.\}
-+.el .aZ
-+..
-+.de f4
-+.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP
-+.ie \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.     No
-+.\}
-+.el .aZ
-+..
-+.de Fo
-+.hy 0
-+.if \\n(aC==0 \{\
-+.     ie \\n(.$==0 .tm Usage: .Fo function_name
-+.     el \{\
-+.             ds mN Fo
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(nS>0 \{\
-+.\" if there is/has been more than one subroutine declaration
-+.     if \\n(fY==0 \{\
-+.             if \\n(fZ>0 \{\
-+.                     Pp
-+.                     nr fX 0
-+.                     nr fD 0
-+.             \}
-+.     \}
-+.     if \\n(fY==1 \{\
-+.             br
-+.             nr fX 0
-+.             nr fD 0
-+.             nr fY 0
-+.     \}
-+.     if \\n(fD>0 \{\
-+.             Pp
-+.             nr fX 0
-+.     \}
-+.     if \\n(fX>0 \{\
-+.             Pp
-+.             nr fD 0
-+.     \}
-+.     nr fZ \\n(fZ+1
-+.     nr fY 0
-+.     rs
-+.     ie \\n(nS>1 .br
-+.     el \{\
-+.             if \\n(iS==0 \{\
-+.                     nr iS ((8)*\\n(fW)u
-+.             \}
-+.     \}
-+.     in +\\n(iSu
-+.     ti -\\n(iSu
-+.     nr nS \\n(nS+1
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr oM \\n(oM+1
-+.     nr fC 1
-+.     nr aP \\n(aP+1
-+.     nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.     as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
-+.     aY
-+.\}
-+..
-+.de Fc
-+.if \\n(aC==0 \{\
-+.     if \\n(.$>0 \{\
-+.             ds mN Fo
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.nr fC 0
-+.nr oM \\n(oM-1
-+.as b1 \|\\*(rp
-+.ie \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.     \\*(A\\n(aP
-+.\}
-+.el \{\
-+.     aZ
-+.\}
-+.if \\n(nS>0 \{\
-+.     in -\\n(iSu
-+.\}
-+.hy
-+..
-+.\" NS fb macro - if SYNOPSIS, set hard space inbetween function args
-+.\" NS fb register - count of words in a function argument
-+.\" NS Fb register - counter
-+.\" NS Fb string - temporary string
-+.de fB
-+.\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6
-+.if \\n(fB==0 \{\
-+.     nr fB \\n(.$
-+.     nr Fb 0
-+.     ds Fb
-+.\}
-+.nr Fb \\n(Fb+1
-+.as Fb \&\\$1
-+.if \\n(Fb<\\n(fB \{\
-+.     as Fb \&\\*(hV
-+.     fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.\}
-+..
-+.\" NS Fc - Function close - not implemented yet
-+.\" NS Fo - Function open - not implemented yet
-+.\"
-+.\" Very crude references, stash all reference info into strings (usual
-+.\" use of b1 buffer, then b1 contents copied to string of retrievable
-+.\" naming convention), print out reference on .Re request and clean up.
-+.\" Ordering very limited, no fancy citations, but can do articles, journals
-+.\" and books - need to add several missing options (like city etc).
-+.\" should be able to grab a refer entry, massage it a wee bit (prefix
-+.\" a `.' to the %[A-Z]) and not worry (ha!)
-+.\"
-+.\" NS Rs macro - Reference Start
-+.\" NS rS register - Reference Start flag
-+.\" NS rS string - Reference Start buffer name for next save (of b1 buffer)
-+.de Rs
-+.nr rS 1
-+.rC
-+.if \\n(nA==1 .Pp
-+.nr Kl 0
-+..
-+.\" NS Re macro - Reference End
-+.de Re
-+.rZ
-+.rC
-+.nr rS 0
-+..
-+.\" NS rC macro - reference cleanup
-+.de rC
-+.nr uK 0
-+.nr jK 0
-+.nr nK 0
-+.nr oK 0
-+.nr qK 0
-+.nr rK 0
-+.nr tK 0
-+.nr vK 0
-+.nr dK 0
-+.nr pK 0
-+.nr bK 0
-+.ds rS
-+.rm U1 U2 U3 U4 U5 U6 U7 U8
-+.rm uK jK nK oK rK qK tK vK dK pK bK
-+..
-+.\" NS rZ macro - reference print
-+.de rZ
-+.if \\n(uK \{\&\\*(U1,
-+.     nr aK 1
-+.     if (\\n(uK>1 \{\
-+.             aK
-+.     \}
-+.     nr Kl -\\n(uK
-+.\}
-+.if \\n(tK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \{\
-+.             ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q.
-+.             \}
-+.             el \{\&\\*(eM\\*(tK\\*(nO.
-+.             \}
-+.     \}
-+.     if \\n(Kl>0 \{\
-+.             ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q,
-+.             \}
-+.             el \{\&\\*(eM\\*(tK\\*(nO,
-+.             \}
-+.     \}
-+.\}
-+.if \\n(bK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO.
-+.     if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO,
-+.\}
-+.if \\n(jK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO.
-+.     if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO,
-+.\}
-+.if \\n(rK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(rK.
-+.     if \\n(Kl>0 \&\\*(rK,
-+.\}
-+.if \\n(nK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(nK.
-+.     if \\n(Kl>0 \&\\*(nK,
-+.\}
-+.if \\n(vK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(vK.
-+.     if \\n(Kl>0 \&\\*(vK,
-+.\}
-+.if \\n(pK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(pK.
-+.     if \\n(Kl>0 \&\\*(pK,
-+.\}
-+.if \\n(qK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(qK.
-+.     if \\n(Kl>0 \&\\*(qK,
-+.\}
-+.if \\n(dK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(dK.
-+.     if \\n(Kl>0 \&\\*(dK,
-+.\}
-+.if \\n(oK \{\
-+.     nr Kl \\n(Kl-1
-+.     if \\n(Kl==0 \&\\*(oK.
-+.     if \\n(Kl>0 \&\\*(oK,
-+.\}
-+.if \\n(Kl>0 .tm unresolved reference problem
-+..
-+.\" NS aK macro - print out reference authors
-+.de aK
-+.nr aK \\n(aK+1
-+.ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK,
-+.\}
-+.el \{\&\\*(U\\n(aK,
-+.     aK
-+.\}
-+..
-+.\" NS %A macro - reference author(s)
-+.\" NS uK register - reference author(s) counter
-+.\" NS U[1-9] strings - reference author(s) names
-+.de %A
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c)
-+.     el \{\
-+.             nr uK \\n(uK+1
-+.             nr Kl \\n(Kl+1
-+.             ds rS U\\n(uK
-+.             ds mN %A
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS %B macro - [reference] Book Name
-+.\" NS bK string - Book Name
-+.\" NS bK register - Book Name flag
-+.de %B
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c)
-+.       el \{\
-+.             ds mN %B
-+.             if \\n(rS>0 \{\
-+.                     nr bK \\n(bK+1
-+.                     nr Kl \\n(Kl+1
-+.                     ds rS bK
-+.             \}
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.     ie \\n(rS==0 \{\
-+.             as b1 \&\\*(eM
-+.             nR
-+.     \}
-+.     el .rR
-+.\}
-+..
-+.\" NS %D macro - [reference] Date
-+.\" NS dK string - Date String
-+.\" NS dK register - Date flag
-+.de %D
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c)
-+.       el \{\
-+.             ds mN %D
-+.             nr dK \\n(dK+1
-+.             nr Kl \\n(Kl+1
-+.             ds rS dK
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS %J macro - [reference] Journal Name
-+.\" NS jK register - [reference] Journal Name flag
-+.\" NS jK string - [reference] Journal Name
-+.de %J
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c)
-+.       el \{\
-+.             ds mN %J
-+.             nr jK \\n(jK+1
-+.             ds rS jK
-+.             nr Kl \\n(Kl+1
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS %N macro - [reference] issue number
-+.\" NS nK register - [reference] issue number flag
-+.\" NS nK string - [reference] issue number
-+.de %N
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c)
-+.     el \{\
-+.             nr nK \\n(nK+1
-+.             nr Kl \\n(Kl+1
-+.             ds rS nK
-+.             ds mN %N
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS %O macro - [reference] optional information
-+.\" NS oK register - [reference] optional information flag
-+.\" NS oK string - [reference] optional information
-+.de %O
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c)
-+.       el \{\
-+.             ds mN %O
-+.             nr oK \\n(oK+1
-+.             nr Kl \\n(Kl+1
-+.             ds rS oK
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS %P macro - [reference] page numbers
-+.\" NS pK register - [reference] page number flag
-+.\" NS pK string - [reference] page number
-+.de %P
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c)
-+.       el \{\
-+.             ds mN %P
-+.             nr pK \\n(pK+1
-+.             nr Kl \\n(Kl+1
-+.             ds rS pK
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS %Q macro - Corporate or Foreign Author
-+.\" NS qK string - Corporate or Foreign Author
-+.\" NS qK register - Corporate or Foreign Author flag
-+.de %Q
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c)
-+.       el \{\
-+.             ds mN %Q
-+.             nr qK \\n(qK+1
-+.             nr Kl \\n(Kl+1
-+.             ds rS qK
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS %R macro - [reference] report name
-+.\" NS rK string - [reference] report name
-+.\" NS rK register - [reference] report flag
-+.de %R
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c)
-+.       el \{\
-+.             ds mN %R
-+.             nr rK \\n(rK+1
-+.             nr Kl \\n(Kl+1
-+.             ds rS rK
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS %T macro - reference title
-+.\" NS tK string - reference title
-+.\" NS tK register - reference title flag
-+.de %T
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%T (#\\n(.c)
-+.       el \{\
-+.             ds mN %T
-+.             if \\n(rS>0 \{\
-+.                     nr tK \\n(tK+1
-+.                     nr Kl \\n(Kl+1
-+.                     ds rS tK
-+.             \}
-+.               ds A1 \\$1
-+.               ds A2 \\$2
-+.               ds A3 \\$3
-+.               ds A4 \\$4
-+.               ds A5 \\$5
-+.               ds A6 \\$6
-+.               ds A7 \\$7
-+.               ds A8 \\$8
-+.               ds A9 \\$9
-+.             nr fV \\n(.$
-+.             fV
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.\" . ie \\n(jS==1 \{\
-+.\" .         nr cF \\n(.f
-+.\" .         nr cZ \\n(.s
-+.\" .         ds qL \&\\*(Lq\\*(rA
-+.\" .         ds qR \&\\*(Rq\f\\n(cF\s\\n(cZ
-+.\" .         En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.\" . \}
-+.\" . el \{\
-+.             nr aP \\n(aP+1
-+.             nr cF \\n(.f
-+.             nr cZ \\n(.s
-+.             ie \\n(rS==0 \{\
-+.                     as b1 \&\\*(eM
-+.                     nR
-+.             \}
-+.             el .rR
-+.\" . \}
-+.\}
-+..
-+.\" NS %V macro - reference volume
-+.\" NS vK string - reference volume
-+.\" NS vK register - reference volume flag
-+.de %V
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN %V
-+.             nr vK \\n(vK+1
-+.             nr Kl \\n(Kl+1
-+.             ds rS vK
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       rR
-+.\}
-+..
-+.\" NS rR macro - reference recursion routine
-+.\" NS jM local register
-+.\" NS jN local register
-+.de rR
-+.hy 0
-+.nr jM \\n(C\\n(aP
-+.ie \\n(jM==1 \{\
-+.\" . as b1 \&\f\\n(cF\s\\n(cZ
-+.     ie "\\*(A\\n(aP"Tn" \{\
-+.             nN
-+.     \}
-+.     el \{\
-+.             if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c)
-+.             aI rR 1
-+.             \\*(A\\n(aP
-+.     \}
-+.\}
-+.el \{\
-+.     nr jN \\n(aP
-+.     ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
-+.     el .as b1 \&\\*(A\\n(aP
-+.\" . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
-+.     ie \\n(aC==\\n(aP \{\
-+.\" .         as b1 \&\f\\n(cF\s\\n(cZ
-+.             rD
-+.     \}
-+.     el \{\
-+.             nr aP \\n(aP+1
-+.             as b1 \&\\*(S\\n(jN
-+.             rR
-+.     \}
-+.\}
-+.rr jM jN
-+..
-+.\" NS rD macro - save b1 buffer in to appropriate name
-+.de rD
-+.as \\*(rS \\*(b1
-+.ds b1
-+.ds rS
-+.aY
-+..
-+.\" NS Hf macro - source include header files.
-+.de Hf
-+.Pp
-+File:
-+.Pa \\$1
-+.Pp
-+.nr cF \\n(.f
-+.nr cZ \\n(.s
-+.ie t \{\
-+\&\\*(lI
-+.br
-+.ta +9n 18n 27n 36n 45n 54n 63n 72n
-+.\}
-+.el \{\
-+.ta +8n 16n 24n 32n 40n 48n 56n 64n 72n
-+.\}
-+.nf
-+.so  \\$1
-+.fi
-+.ft \\n(cF
-+.fz \\n(cZ
-+.Pp
-+..
-+.\" NS An macro - author name
-+.\" NS aN register
-+.nr aN 0
-+.de An
-+.if \\n(nY==1 \{\
-+.     ie \\n(aN==1 \{\
-+.             br
-+.     \}
-+.     el \{\
-+.             nr aN 1
-+.     \}
-+.\}
-+.if \\n(aC==0 \{\
-+.       ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c)
-+.     el \{\
-+.             ds mN An
-+.             aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-+.     \}
-+.\}
-+.if \\n(aC>\\n(aP \{\
-+.     nr aP \\n(aP+1
-+.       nr cF \\n(.f
-+.     nr cZ \\n(.s
-+.       nR
-+.\}
-+..
-+.\" NS Sf macro -defunct
-+.de Sf
-+.tm .Sf defunct, use prefix or Ns
-+..
-+.ds rV "function returns the value 0 if successful; otherwise the value -1 is returned and the global variable \\*(vAerrno\fP is set to indicate the error.
-+.\" Ns Rv macro - return values
-+.\" Ns rV string - standard return message
-+.de Rv
-+.ie \\n(.$==0 \{\
-+.tm Usage: .Rv [-std] (#\\n(.c)
-+.\}
-+.el \{\
-+.     ds mN Rv
-+.\" . nr aP 0
-+.\" . nr lR \\n(lR+1
-+.\" . ds A1 \\$2
-+.\" . ds A2 \\$3
-+.\" . ds A3 \\$4
-+.\" . ds A4 \\$5
-+.\" . ds A5 \\$6
-+.\" . ds A6 \\$7
-+.\" . ds A7 \\$8
-+.\" . ds A8 \\$9
-+.\" . nr fV \\n(.$-1
-+.     if "\\$1"-std" \{\
-+.     nr cH \\*(cH
-+.     if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only
-+.             br
-+\&The
-+.Fn \\$2
-+\&\\*(rV
-+.     \}
-+.\}
-+..
-diff -Naur groff-1.18.1.4.orig/tmac/euc-jp.tmac groff-1.18.1.4/tmac/euc-jp.tmac
---- groff-1.18.1.4.orig/tmac/euc-jp.tmac       1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/tmac/euc-jp.tmac    2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,7 @@
-+.\" euc-jp.tmac
-+.\"
-+.cflags 256 ,:;>}
-+.cflags 256 ¡¢¡£¡¤¡¥¡¦¡§¡¨¡©¡ª¡Ë¡Í¡Ï¡Ñ¡×¡Ù¡Û¤¡¤£¤¥¤§¤©¤Ã¤ã¤å¤ç¡¼
-+.cflags 256 ¥¡¥£¥¥¥§¥©¥Ã¥ã¥å¥ç
-+.cflags 512 ¡Ê¡Ì¡Î¡Ð¡Ö¡Ø¡Ú
-+.hc ¡¾
-diff -Naur groff-1.18.1.4.orig/tmac/gb.tmac groff-1.18.1.4/tmac/gb.tmac
---- groff-1.18.1.4.orig/tmac/gb.tmac   1970-01-01 00:00:00.000000000 +0000
-+++ groff-1.18.1.4/tmac/gb.tmac        2006-10-18 18:54:44.000000000 +0000
-@@ -0,0 +1,15 @@
-+.\" Kinsoku table for the GB2312 encoding of Chinese, recoded from
-+.\" kinsoku.el in Emacs 22.0.50.
-+.\" Checked by Simon Law, who reckons this is "mostly right". That will
-+.\" probably do for now ...
-+.\"
-+.cflags 256 ¡¢¡££®£¬¡¤¡¥¡¦¡§¡¨¡©¡ª¡«¡¬¡­¡¯¡±£©¡³¡µ¡·¡¹¡»¡½
-+.cflags 256 ¡¿£»£º£¿£¡¡À¡Á¡Â¡Ã¡ã¡ä¡å¡æ£¯£Ü£¢£ß£þ£ü¨å
-+.cflags 512 ¨Å¨Æ¨Ç¨È¨É¨Ê¨Ë¨Ì¨Í¨Î¨Ï¨Ð¨Ñ¨Ò¨Ó¨Ô¨Õ¨Ö¨×¨Ø¨Ù¨è
-+.\" Simon Law supplied these.
-+.cflags 512 £¨¡®¡°¡²¡´¡¶¡¸¡º¡¼¡¾
-+.\"
-+.\" http://tcl.apache.org/sources/tcl/tools/encoding/gb2312.txt lists U+FF0D
-+.\" as FULLWIDTH HYPHEN-MINUS. Is this correct?
-+.\"
-+.hc £­
-diff -Naur groff-1.18.1.4.orig/tmac/groff_trace.man groff-1.18.1.4/tmac/groff_trace.man
---- groff-1.18.1.4.orig/tmac/groff_trace.man   2002-07-13 20:52:47.000000000 +0000
-+++ groff-1.18.1.4/tmac/groff_trace.man        2006-10-18 18:54:44.000000000 +0000
-@@ -31,6 +31,10 @@
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
- ..
-+.ig
-+A copy of the GNU Free Documentation License is also available in this
-+Debian package as /usr/share/doc/groff/copyright.
-+..
- .
- .\" --------------------------------------------------------------------
- .\" Setup
-diff -Naur groff-1.18.1.4.orig/tmac/troffrc groff-1.18.1.4/tmac/troffrc
---- groff-1.18.1.4.orig/tmac/troffrc   2002-03-02 16:30:46.000000000 +0000
-+++ groff-1.18.1.4/tmac/troffrc        2006-10-18 18:54:44.000000000 +0000
-@@ -13,7 +13,9 @@
- .do ds troffrc!X100 X.tmac
- .do ds troffrc!X100-12 X.tmac
- .do ds troffrc!ascii tty.tmac
-+.do ds troffrc!ascii8 tty.tmac
- .do ds troffrc!latin1 tty.tmac
-+.do ds troffrc!nippon tty.tmac
- .do ds troffrc!utf8 tty.tmac
- .do ds troffrc!cp1047 tty.tmac
- .do ds troffrc!lj4 lj4.tmac
-@@ -36,4 +38,13 @@
- .\" Load hyphenation patterns from `hyphen.us' (in the tmac directory).
- .do hpf hyphen.us
- .
-+.\" For CJK hack. The hardcoded list of locales is especially nasty, but
-+.\" getting the locale charmap requires a troff extension.
-+.ie     "\V[LANG]"ja_JP.eucJP" .do mso euc-jp.tmac
-+.el .ie "\V[LANG]"zh_CN"       .do mso gb.tmac
-+.el .ie "\V[LANG]"zh_CN.GBK"   .do mso gb.tmac
-+.el .ie "\V[LANG]"zh_SG"       .do mso gb.tmac
-+.el .ie "\V[LANG]"zh_SG.GBK"   .do mso gb.tmac
-+.el .if "\V[LANG]"zh_TW"       .do mso big5.tmac
-+.
- .\" Don't let blank lines creep in here.
-diff -Naur groff-1.18.1.4.orig/tmac/tty.tmac groff-1.18.1.4/tmac/tty.tmac
---- groff-1.18.1.4.orig/tmac/tty.tmac  2002-04-20 14:51:11.000000000 +0000
-+++ groff-1.18.1.4/tmac/tty.tmac       2006-10-18 18:54:44.000000000 +0000
-@@ -68,7 +68,7 @@
- .ie '\*(.T'cp1047' \
- .  do mso cp1047.tmac
- .el \
--.  if '\*(.T'latin1' \
-+.  if !'\*(.T'ascii' \
- .    do mso latin1.tmac
- .
- .\" If you want the character definitions in tty-char.tmac to be loaded
index 59893e2bcc3bcf27e1c2b26b316465395950caf5..cd3974347ceb303eba38eaf0a0bd21adea54b848 100644 (file)
@@ -5,7 +5,7 @@
 
 name       = grub
 version    = 2.00
-release    = 4
+release    = 5.1
 sup_arches = x86_64 i686
 
 groups     = System/Boot
@@ -60,6 +60,7 @@ build
                --disable-werror \
                CFLAGS="$(echo %{CFLAGS} | sed \
                        -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' \
+                       -e 's/-fstack-protector-strong//g' \
                        -e 's/-fstack-protector-all//g' \
                        -e 's/-fstack-protector//g' \
                        -e 's/-fPIC//g' \
@@ -97,6 +98,9 @@ build
                paxctl -mpes \
                        %{BUILDROOT}%{sbindir}/grub-bios-setup \
                        %{BUILDROOT}%{sbindir}/grub-probe
+
+               paxctl -mpex \
+                       %{BUILDROOT}%{bindir}/grub-script-check
        end
 
        debuginfo_strict_build_id = false
index 3b54d4661c1b1e8b383160eeb9445b023a07dd43..9c5e3ea259a8bb7f2dd7ce67fe01365c6c078721 100644 (file)
@@ -4,8 +4,9 @@
 ###############################################################################
 
 name       = help2man
-version    = 1.40.4
-release    = 2
+version    = 1.46.4
+release    = 1
+arch       = noarch
 
 groups     = Development/Tools
 url        = http://www.gnu.org/software/help2man
@@ -21,25 +22,22 @@ description
        still providing some useful information.
 end
 
-source_dl  =
+source_dl  = ftp://ftp.gnu.org/gnu/%{name}/
+sources    = %{thisapp}.tar.xz
 
 build
        requires
-               perl
+               %{bindir}/perl
        end
 
        configure_options += \
                --disable-nls \
-               --libdir=/usr/lib/help2man
+               --libdir=%{prefix}/lib/help2man
 
-       make_install_targets += install_l10n
+       make_install_targets += \
+               install_l10n
 end
 
 packages
        package %{name}
-       end
-
-       package %{name}-debuginfo
-               template DEBUGINFO
-       end
 end
diff --git a/ibod/ibod.nm b/ibod/ibod.nm
deleted file mode 100644 (file)
index 964881b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-###############################################################################
-# IPFire.org    - An Open Source Firewall Solution                            #
-# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
-###############################################################################
-
-name       = ibod
-version    = 1.4
-release    = 2
-
-groups     = Networking/Tools
-url        = http://www.datenwelt.net/oss/ibod/
-license    = GPLv2
-summary    = An ISDN bandwidth monitor.
-
-description
-       Ibod is a daemon program for GNU/Linux that constantly monitors \
-       the ISDN interface for inbound and outbound traffic throughput.
-end
-
-sources    = %{thisapp}.tar.bz2
-
-build
-       build
-               gcc %{CFLAGS} ibod.c -o ibod
-       end
-
-       install
-               mkdir -pv %{BUILDROOT}/usr/bin
-               mkdir -pv %{BUILDROOT}/usr/share/man/man{1,4}
-               mkdir -pv %{BUILDROOT}/etc/isdn
-               install -m 0755 ibod %{BUILDROOT}/usr/bin
-               install -m 0644 ibod.1 %{BUILDROOT}/usr/share/man/man1
-               install -m 0644 ibod.cf.4 %{BUILDROOT}/usr/share/man/man4
-               install -m 0644 ibod.cf %{BUILDROOT}/etc/isdn
-       end
-end
-
-packages
-       package %{name}
-               configfiles
-                       /etc/isdn/ibod.cf
-               end
-
-               prerequires += systemd-units
-
-               # There isn't any chance at the moment to determine the names of
-               # spawned instances by a systemd service file.
-               #
-               # So we aren't able to stop any ibod process before uninstalling the package.
-               script postin
-                       /bin/systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script postun
-                       /bin/systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script postup
-                       /bin/systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-       end
-
-       package %{name}-debuginfo
-               template DEBUGINFO
-       end
-end
diff --git a/ibod/patches/ibod-1.4-config.patch b/ibod/patches/ibod-1.4-config.patch
deleted file mode 100644 (file)
index 6c92ddc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- isdn4k-utils-07022001/ibod.h.orig  Wed Nov  1 21:06:07 2000
-+++ isdn4k-utils-07022001/ibod.h       Wed Nov  1 21:06:29 2000
-@@ -10,7 +10,7 @@
- #define STAYUP                        0
- #define STAYUP_TIME           30
--#define IBOD_DEFAULT_DIR      "/etc/ppp"
-+#define IBOD_DEFAULT_DIR      "/etc/isdn"
- #define MAX_STR_LEN           512
- #define ISDN_INFO_DEV         "/dev/isdninfo"
- #define ISDN_CTLR_DEV         "/dev/isdnctrl"
diff --git a/ibod/patches/ibod-1.4-configuration-cli.patch b/ibod/patches/ibod-1.4-configuration-cli.patch
deleted file mode 100644 (file)
index 656d479..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-Author: Michael Tremer <michael.tremer@ipfire.org>
-
-diff -Nur ibod-1.4/ibod.c ibod-1.4-conf/ibod.c
---- ibod-1.4/ibod.c    2000-04-11 05:34:17.000000000 +0000
-+++ ibod-1.4-conf/ibod.c       2011-11-11 18:50:45.510054466 +0000
-@@ -23,7 +23,7 @@
- static void get_if_state();
- static int bring_up_slave();
- static int bring_down_slave();
--static char *home;
-+static char *config_file;
- static Conf cf;
- static struct timeval timeout, tv_last, tv_up;
- static int usageflags[ISDN_MAX_CHANNELS];
-@@ -48,12 +48,16 @@
-     channels_last = -1;
-+
-     /* Find out where to look for configuration file */
--    if ((home = getenv("IBOD_HOME")) == NULL)
--        home = IBOD_DEFAULT_DIR;
-+    if (argc > 1) {
-+        config_file = argv[1];
-+    } else {
-+        config_file = IBOD_DEFAULT_CONF;
-+    }
-     /* Setup initial attributes */
--    if (setattr(home) == -1) {
-+    if (setattr(config_file) == -1) {
-         closelog();
-         exit(1);
-     }
-@@ -185,10 +189,9 @@
- }
--static int setattr(char *home)
-+static int setattr(char *config_filename)
- {
-     FILE *fd;
--    char config_filename[MAX_STR_LEN];
-     char linebuf[MAX_STR_LEN];
-     char *key, *value;
-     int  val;
-@@ -202,7 +205,6 @@
-     cf.stayup_time = STAYUP_TIME;
-     /* Open config file */
--    sprintf(config_filename, "%s/ibod.cf", home);
-     if ((fd = fopen(config_filename, "r")) == NULL) {
-         syslog(LOG_ERR, "%s: %s\n", config_filename, strerror(errno));
-         return -1;
-@@ -288,7 +290,7 @@
- static void reread(int sig)
- {
--    (void) setattr(home);
-+    (void) setattr(config_file);
-     setinterval();
-diff -Nur ibod-1.4/ibod.h ibod-1.4-conf/ibod.h
---- ibod-1.4/ibod.h    2011-11-11 19:00:45.623454321 +0000
-+++ ibod-1.4-conf/ibod.h       2011-11-11 18:45:39.703353901 +0000
-@@ -11,6 +11,7 @@
- #define STAYUP_TIME           30
- #define IBOD_DEFAULT_DIR      "/etc/isdn"
-+#define IBOD_DEFAULT_CONF     IBOD_DEFAULT_DIR "/ibod.cf"
- #define MAX_STR_LEN           512
- #define ISDN_INFO_DEV         "/dev/isdninfo"
- #define ISDN_CTLR_DEV         "/dev/isdnctrl"
diff --git a/ibod/patches/ibod-1.4-license.patch b/ibod/patches/ibod-1.4-license.patch
deleted file mode 100644 (file)
index df72fb8..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-diff -Nur ibod/LICENSE ibod-1.5.0/LICENSE
---- ibod/LICENSE       1970-01-01 01:00:00.000000000 +0100
-+++ ibod-1.5.0/LICENSE 2001-01-10 11:16:33.000000000 +0100
-@@ -0,0 +1,342 @@
-+                  GNU GENERAL PUBLIC LICENSE
-+                     Version 2, June 1991
-+
-+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-+ Everyone is permitted to copy and distribute verbatim copies
-+ of this license document, but changing it is not allowed.
-+
-+                          Preamble
-+
-+  The licenses for most software are designed to take away your
-+freedom to share and change it.  By contrast, the GNU General Public
-+License is intended to guarantee your freedom to share and change free
-+software--to make sure the software is free for all its users.  This
-+General Public License applies to most of the Free Software
-+Foundation's software and to any other program whose authors commit to
-+using it.  (Some other Free Software Foundation software is covered by
-+the GNU Library General Public License instead.)  You can apply it to
-+your programs, too.
-+
-+  When we speak of free software, we are referring to freedom, not
-+price.  Our General Public Licenses are designed to make sure that you
-+have the freedom to distribute copies of free software (and charge for
-+this service if you wish), that you receive source code or can get it
-+if you want it, that you can change the software or use pieces of it
-+in new free programs; and that you know you can do these things.
-+
-+  To protect your rights, we need to make restrictions that forbid
-+anyone to deny you these rights or to ask you to surrender the rights.
-+These restrictions translate to certain responsibilities for you if you
-+distribute copies of the software, or if you modify it.
-+
-+  For example, if you distribute copies of such a program, whether
-+gratis or for a fee, you must give the recipients all the rights that
-+you have.  You must make sure that they, too, receive or can get the
-+source code.  And you must show them these terms so they know their
-+rights.
-+
-+  We protect your rights with two steps: (1) copyright the software, and
-+(2) offer you this license which gives you legal permission to copy,
-+distribute and/or modify the software.
-+
-+  Also, for each author's protection and ours, we want to make certain
-+that everyone understands that there is no warranty for this free
-+software.  If the software is modified by someone else and passed on, we
-+want its recipients to know that what they have is not the original, so
-+that any problems introduced by others will not reflect on the original
-+authors' reputations.
-+
-+  Finally, any free program is threatened constantly by software
-+patents.  We wish to avoid the danger that redistributors of a free
-+program will individually obtain patent licenses, in effect making the
-+program proprietary.  To prevent this, we have made it clear that any
-+patent must be licensed for everyone's free use or not licensed at all.
-+
-+  The precise terms and conditions for copying, distribution and
-+modification follow.
-+\f
-+                  GNU GENERAL PUBLIC LICENSE
-+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-+
-+  0. This License applies to any program or other work which contains
-+a notice placed by the copyright holder saying it may be distributed
-+under the terms of this General Public License.  The "Program", below,
-+refers to any such program or work, and a "work based on the Program"
-+means either the Program or any derivative work under copyright law:
-+that is to say, a work containing the Program or a portion of it,
-+either verbatim or with modifications and/or translated into another
-+language.  (Hereinafter, translation is included without limitation in
-+the term "modification".)  Each licensee is addressed as "you".
-+
-+Activities other than copying, distribution and modification are not
-+covered by this License; they are outside its scope.  The act of
-+running the Program is not restricted, and the output from the Program
-+is covered only if its contents constitute a work based on the
-+Program (independent of having been made by running the Program).
-+Whether that is true depends on what the Program does.
-+
-+  1. You may copy and distribute verbatim copies of the Program's
-+source code as you receive it, in any medium, provided that you
-+conspicuously and appropriately publish on each copy an appropriate
-+copyright notice and disclaimer of warranty; keep intact all the
-+notices that refer to this License and to the absence of any warranty;
-+and give any other recipients of the Program a copy of this License
-+along with the Program.
-+
-+You may charge a fee for the physical act of transferring a copy, and
-+you may at your option offer warranty protection in exchange for a fee.
-+
-+  2. You may modify your copy or copies of the Program or any portion
-+of it, thus forming a work based on the Program, and copy and
-+distribute such modifications or work under the terms of Section 1
-+above, provided that you also meet all of these conditions:
-+
-+    a) You must cause the modified files to carry prominent notices
-+    stating that you changed the files and the date of any change.
-+
-+    b) You must cause any work that you distribute or publish, that in
-+    whole or in part contains or is derived from the Program or any
-+    part thereof, to be licensed as a whole at no charge to all third
-+    parties under the terms of this License.
-+
-+    c) If the modified program normally reads commands interactively
-+    when run, you must cause it, when started running for such
-+    interactive use in the most ordinary way, to print or display an
-+    announcement including an appropriate copyright notice and a
-+    notice that there is no warranty (or else, saying that you provide
-+    a warranty) and that users may redistribute the program under
-+    these conditions, and telling the user how to view a copy of this
-+    License.  (Exception: if the Program itself is interactive but
-+    does not normally print such an announcement, your work based on
-+    the Program is not required to print an announcement.)
-+\f
-+These requirements apply to the modified work as a whole.  If
-+identifiable sections of that work are not derived from the Program,
-+and can be reasonably considered independent and separate works in
-+themselves, then this License, and its terms, do not apply to those
-+sections when you distribute them as separate works.  But when you
-+distribute the same sections as part of a whole which is a work based
-+on the Program, the distribution of the whole must be on the terms of
-+this License, whose permissions for other licensees extend to the
-+entire whole, and thus to each and every part regardless of who wrote it.
-+
-+Thus, it is not the intent of this section to claim rights or contest
-+your rights to work written entirely by you; rather, the intent is to
-+exercise the right to control the distribution of derivative or
-+collective works based on the Program.
-+
-+In addition, mere aggregation of another work not based on the Program
-+with the Program (or with a work based on the Program) on a volume of
-+a storage or distribution medium does not bring the other work under
-+the scope of this License.
-+
-+  3. You may copy and distribute the Program (or a work based on it,
-+under Section 2) in object code or executable form under the terms of
-+Sections 1 and 2 above provided that you also do one of the following:
-+
-+    a) Accompany it with the complete corresponding machine-readable
-+    source code, which must be distributed under the terms of Sections
-+    1 and 2 above on a medium customarily used for software interchange; or,
-+
-+    b) Accompany it with a written offer, valid for at least three
-+    years, to give any third party, for a charge no more than your
-+    cost of physically performing source distribution, a complete
-+    machine-readable copy of the corresponding source code, to be
-+    distributed under the terms of Sections 1 and 2 above on a medium
-+    customarily used for software interchange; or,
-+
-+    c) Accompany it with the information you received as to the offer
-+    to distribute corresponding source code.  (This alternative is
-+    allowed only for noncommercial distribution and only if you
-+    received the program in object code or executable form with such
-+    an offer, in accord with Subsection b above.)
-+
-+The source code for a work means the preferred form of the work for
-+making modifications to it.  For an executable work, complete source
-+code means all the source code for all modules it contains, plus any
-+associated interface definition files, plus the scripts used to
-+control compilation and installation of the executable.  However, as a
-+special exception, the source code distributed need not include
-+anything that is normally distributed (in either source or binary
-+form) with the major components (compiler, kernel, and so on) of the
-+operating system on which the executable runs, unless that component
-+itself accompanies the executable.
-+
-+If distribution of executable or object code is made by offering
-+access to copy from a designated place, then offering equivalent
-+access to copy the source code from the same place counts as
-+distribution of the source code, even though third parties are not
-+compelled to copy the source along with the object code.
-+\f
-+  4. You may not copy, modify, sublicense, or distribute the Program
-+except as expressly provided under this License.  Any attempt
-+otherwise to copy, modify, sublicense or distribute the Program is
-+void, and will automatically terminate your rights under this License.
-+However, parties who have received copies, or rights, from you under
-+this License will not have their licenses terminated so long as such
-+parties remain in full compliance.
-+
-+  5. You are not required to accept this License, since you have not
-+signed it.  However, nothing else grants you permission to modify or
-+distribute the Program or its derivative works.  These actions are
-+prohibited by law if you do not accept this License.  Therefore, by
-+modifying or distributing the Program (or any work based on the
-+Program), you indicate your acceptance of this License to do so, and
-+all its terms and conditions for copying, distributing or modifying
-+the Program or works based on it.
-+
-+  6. Each time you redistribute the Program (or any work based on the
-+Program), the recipient automatically receives a license from the
-+original licensor to copy, distribute or modify the Program subject to
-+these terms and conditions.  You may not impose any further
-+restrictions on the recipients' exercise of the rights granted herein.
-+You are not responsible for enforcing compliance by third parties to
-+this License.
-+
-+  7. If, as a consequence of a court judgment or allegation of patent
-+infringement or for any other reason (not limited to patent issues),
-+conditions are imposed on you (whether by court order, agreement or
-+otherwise) that contradict the conditions of this License, they do not
-+excuse you from the conditions of this License.  If you cannot
-+distribute so as to satisfy simultaneously your obligations under this
-+License and any other pertinent obligations, then as a consequence you
-+may not distribute the Program at all.  For example, if a patent
-+license would not permit royalty-free redistribution of the Program by
-+all those who receive copies directly or indirectly through you, then
-+the only way you could satisfy both it and this License would be to
-+refrain entirely from distribution of the Program.
-+
-+If any portion of this section is held invalid or unenforceable under
-+any particular circumstance, the balance of the section is intended to
-+apply and the section as a whole is intended to apply in other
-+circumstances.
-+
-+It is not the purpose of this section to induce you to infringe any
-+patents or other property right claims or to contest validity of any
-+such claims; this section has the sole purpose of protecting the
-+integrity of the free software distribution system, which is
-+implemented by public license practices.  Many people have made
-+generous contributions to the wide range of software distributed
-+through that system in reliance on consistent application of that
-+system; it is up to the author/donor to decide if he or she is willing
-+to distribute software through any other system and a licensee cannot
-+impose that choice.
-+
-+This section is intended to make thoroughly clear what is believed to
-+be a consequence of the rest of this License.
-+\f
-+  8. If the distribution and/or use of the Program is restricted in
-+certain countries either by patents or by copyrighted interfaces, the
-+original copyright holder who places the Program under this License
-+may add an explicit geographical distribution limitation excluding
-+those countries, so that distribution is permitted only in or among
-+countries not thus excluded.  In such case, this License incorporates
-+the limitation as if written in the body of this License.
-+
-+  9. The Free Software Foundation may publish revised and/or new versions
-+of the General Public License from time to time.  Such new versions will
-+be similar in spirit to the present version, but may differ in detail to
-+address new problems or concerns.
-+
-+Each version is given a distinguishing version number.  If the Program
-+specifies a version number of this License which applies to it and "any
-+later version", you have the option of following the terms and conditions
-+either of that version or of any later version published by the Free
-+Software Foundation.  If the Program does not specify a version number of
-+this License, you may choose any version ever published by the Free Software
-+Foundation.
-+
-+  10. If you wish to incorporate parts of the Program into other free
-+programs whose distribution conditions are different, write to the author
-+to ask for permission.  For software which is copyrighted by the Free
-+Software Foundation, write to the Free Software Foundation; we sometimes
-+make exceptions for this.  Our decision will be guided by the two goals
-+of preserving the free status of all derivatives of our free software and
-+of promoting the sharing and reuse of software generally.
-+
-+                          NO WARRANTY
-+
-+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-+REPAIR OR CORRECTION.
-+
-+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-+POSSIBILITY OF SUCH DAMAGES.
-+
-+                   END OF TERMS AND CONDITIONS
-+\f
-+          How to Apply These Terms to Your New Programs
-+
-+  If you develop a new program, and you want it to be of the greatest
-+possible use to the public, the best way to achieve this is to make it
-+free software which everyone can redistribute and change under these terms.
-+
-+  To do so, attach the following notices to the program.  It is safest
-+to attach them to the start of each source file to most effectively
-+convey the exclusion of warranty; and each file should have at least
-+the "copyright" line and a pointer to where the full notice is found.
-+
-+    <one line to give the program's name and a brief idea of what it does.>
-+    Copyright (C) <year>  <name of author>
-+
-+    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 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
-+
-+
-+Also add information on how to contact you by electronic and paper mail.
-+
-+If the program is interactive, make it output a short notice like this
-+when it starts in an interactive mode:
-+
-+    Gnomovision version 69, Copyright (C) year name of author
-+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-+    This is free software, and you are welcome to redistribute it
-+    under certain conditions; type `show c' for details.
-+
-+The hypothetical commands `show w' and `show c' should show the appropriate
-+parts of the General Public License.  Of course, the commands you use may
-+be called something other than `show w' and `show c'; they could even be
-+mouse-clicks or menu items--whatever suits your program.
-+
-+You should also get your employer (if you work as a programmer) or your
-+school, if any, to sign a "copyright disclaimer" for the program, if
-+necessary.  Here is a sample; alter the names:
-+
-+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-+
-+  <signature of Ty Coon>, 1 April 1989
-+  Ty Coon, President of Vice
-+
-+This General Public License does not permit incorporating your program into
-+proprietary programs.  If your program is a subroutine library, you may
-+consider it more useful to permit linking proprietary applications with the
-+library.  If this is what you want to do, use the GNU Library General
-+Public License instead of this License.
-+
-+
diff --git a/ibod/systemd/ibod@.service b/ibod/systemd/ibod@.service
deleted file mode 100644 (file)
index a2fde5c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=ibod on %I
-BindTo=dev-%I.device
-After=dev-%I.device network.service
-Requires=network.service
-
-[Service]
-ExecStart=/usr/bin/ibod /run/network/isdn/%I/ibod.cf
-UtmpIdentifier=%I
-KillMode=process
diff --git a/isdn4k-utils/capi20.conf b/isdn4k-utils/capi20.conf
deleted file mode 100644 (file)
index c0ac223..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# libcapi20 features autodetection of connected CAPI
-# devices. In case you need to select a special device
-# use the remote configuration file:
-#   ~/.capi20rc
-# if it doesn't exist look for
-#   /etc/capi20.conf
-# 
-# To set the remote machine, the above file need to have
-# the following line
-#   REMOTE <driver> <remote hostname|ip-address> <remote port>
-#  
-# Drivers:
-#      * fritzbox      - Remote CAPI via FRITZ!Box
-#      * rcapi         - Melware Remote CAPI
-# 
-# If this doesn't exist, the library tries the old, normal way
-# of using the local /dev/isdn/capi20.
-# REMOTE fritzbox 192.168.178.1 5031
diff --git a/isdn4k-utils/isdn4k-utils.nm b/isdn4k-utils/isdn4k-utils.nm
deleted file mode 100644 (file)
index c176834..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-###############################################################################
-# IPFire.org    - An Open Source Firewall Solution                            #
-# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
-###############################################################################
-
-name       = isdn4k-utils
-version    = 3.2
-devel_ver  = CVS-2010-05-01
-release    = 8
-thisapp    = %{name}-%{devel_ver}-patched
-
-groups     = Networking/Tools
-url        =
-license    = GPLv2+ and GPL+ and MIT and BSD and zlib
-summary    = Utilities for configuring an ISDN subsystem.
-
-description
-       The isdn4k-utils package contains a collection of utilities needed
-       for configuring and running an ISDN subsystem.
-end
-
-source_dl  = ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/
-sources    = %{thisapp}.tar.bz2
-
-build
-       requires
-               autoconf
-               automake
-               libpcap-devel
-               libtool
-               ncurses-devel
-               ppp-devel
-               perl
-       end
-
-       CFLAGS += \
-               -D_FILE_OFFSET_BITS=64 \
-               -D_LARGEFILE_SOURCE
-
-       prepare_cmds
-               # remove useless files
-               find -type d -name CVS | xargs rm -rf
-
-               # enable capi20.new
-               rm -rf capi20 && mv capi20.new capi20
-
-               # Reconfigure the whole package
-               for i in */configure; do
-                       cd `dirname $i`
-                       autoreconf --force --install || exit 1
-                       cd ..
-               done
-
-               # Set configuration
-               mv .config.rpm .config
-               sed -e "s/^CONFIG_BUILDX11=.*/#&/" -i .config
-               sed -e "s/^CONFIG_VBOX=.*/#&/" -i .config
-               sed -e "s/^CONFIG_XMONISDN=.*/#&/" -i .config
-               sed -e "s/^CONFIG_XISDNLOAD=.*/#&/" -i .config
-               echo "CONFIG_GENMAN=y" >> .config
-               echo "CONFIG_FAQ=y" >> .config
-               echo "CONFIG_FAQDIR='%{datadir}/doc/isdn4k-utils'" >> .config
-               echo "CONFIG_DATADIR='%{datadir}/isdn'" >> .config
-               echo "LIBDIR='%{libdir}'" >> .config
-               echo "CONFIG_FIRMWAREDIR='%{datadir}/isdn'" >> .config
-               echo "CONFIG_CARD_SBINDIR='%{sbindir}'" >> .config
-               sed -e "s,',,g" .config > .config.h
-       end
-
-       build
-               make subconfig
-
-               make CFLAGS="%{CFLAGS}"
-       end
-
-       install
-               mkdir -pv %{BUILDROOT}/usr/sbin
-               make install CFLAGS="%{CFLAGS}" LIBDIR="%{libdir}" DESTDIR="%{BUILDROOT}"
-
-               # Install config files for capi.
-               mkdir -pv %{BUILDROOT}/etc
-               install -m 644 capiinit/capi.conf %{BUILDROOT}/etc
-               install -m 644 %{DIR_SOURCE}/capi20.conf %{BUILDROOT}/etc
-
-               # Install ipppd configuration files.
-               mkdir -pv %{BUILDROOT}/etc/ppp
-               touch %{BUILDROOT}/etc/ppp/ioptions
-       end
-end
-
-packages
-       package %{name}
-               prerequires += systemd-units
-
-               conflicts
-                       filesystem < 002
-               end
-
-               configfiles
-                       /etc/capi.conf
-                       /etc/capi20.conf
-                       /etc/ppp/ioptions
-               end
-
-               script postin
-                       /bin/systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script preun
-                       /bin/systemctl --no-reload disable capi.service isdn.service >/dev/null 2>&1 || :
-                       /bin/systemctl stop capi.service isdn.service >/dev/null 2>&1 || :
-               end
-
-               script postun
-                       /bin/systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script postup
-                       /bin/systemctl daemon-reload >/dev/null 2>&1 || :
-                       /bin/systemctl try-restart capi.service isdn.service >/dev/null 2>&1 || :
-               end
-       end
-
-       package %{name}-devel
-               template DEVEL
-       end
-
-       package %{name}-debuginfo
-               template DEBUGINFO
-       end
-end
diff --git a/isdn4k-utils/patches/001-isdn4k-utils-0202131200-true.patch b/isdn4k-utils/patches/001-isdn4k-utils-0202131200-true.patch
deleted file mode 100644 (file)
index 33ef17c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- isdn4k-utils/imon/imon.c.orig      Fri Feb 22 17:24:54 2002
-+++ isdn4k-utils/imon/imon.c   Fri Feb 22 17:28:00 2002
-@@ -63,6 +63,10 @@
- #include <linux/isdn.h>
-+#ifndef TRUE
-+#define TRUE 1
-+#endif
-+
- #define KEY_Q                81
- #define KEY_q               113
diff --git a/isdn4k-utils/patches/002-isdn4k-utils-CVS-2004-11-18-autoconf25x.patch b/isdn4k-utils/patches/002-isdn4k-utils-CVS-2004-11-18-autoconf25x.patch
deleted file mode 100644 (file)
index fa8dd31..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
---- isdn4k-utils-CVS-2004-11-18/vbox/configure.in.ac25x        1998-11-23 10:18:04.000000000 +0100
-+++ isdn4k-utils-CVS-2004-11-18/vbox/configure.in      2004-11-18 17:47:52.638741078 +0100
-@@ -17,9 +17,9 @@
- AC_PREFIX_DEFAULT()
--AC_DEFINE_UNQUOTED(PACKAGE, "${PACKAGE}")
--AC_DEFINE_UNQUOTED(VERSION, "${VERSION}")
--AC_DEFINE_UNQUOTED(VERDATE, "${VERDATE}")
-+AC_DEFINE_UNQUOTED(PACKAGE, "${PACKAGE}", [package])
-+AC_DEFINE_UNQUOTED(VERSION, "${VERSION}", [version])
-+AC_DEFINE_UNQUOTED(VERDATE, "${VERDATE}", [verdate])
- AC_SUBST(PACKAGE)
- AC_SUBST(VERSION)
-@@ -87,7 +87,7 @@
- AC_MSG_RESULT(${VBOX_SPOOLDIR})
--AC_DEFINE_UNQUOTED(SPOOLDIR, "${VBOX_SPOOLDIR}")
-+AC_DEFINE_UNQUOTED(SPOOLDIR, "${VBOX_SPOOLDIR}", [spool dir])
- AC_SUBST(VBOX_SPOOLDIR)
-    dnl #===============#
-@@ -105,7 +105,7 @@
- AC_MSG_RESULT(${VBOX_LOGDIR})
--AC_DEFINE_UNQUOTED(LOGFILEDIR, "${VBOX_LOGDIR}")
-+AC_DEFINE_UNQUOTED(LOGFILEDIR, "${VBOX_LOGDIR}", [log dir])
- AC_SUBST(VBOX_LOGDIR)
-    dnl #===============#
-@@ -123,7 +123,7 @@
- AC_MSG_RESULT(${VBOX_PIDDIR})
--AC_DEFINE_UNQUOTED(PIDFILEDIR, "${VBOX_PIDDIR}")
-+AC_DEFINE_UNQUOTED(PIDFILEDIR, "${VBOX_PIDDIR}", [pid dir])
- AC_SUBST(VBOX_PIDDIR)
-    dnl #================#
-@@ -141,7 +141,7 @@
- AC_MSG_RESULT(${VBOX_LCKDIR})
--AC_DEFINE_UNQUOTED(LCKFILEDIR, "${VBOX_LCKDIR}")
-+AC_DEFINE_UNQUOTED(LCKFILEDIR, "${VBOX_LCKDIR}", [lock dir])
- AC_SUBST(VBOX_LCKDIR)
-    dnl #===================#
-@@ -159,7 +159,7 @@
- AC_MSG_RESULT(${ISDN_GLOBAL_CONFIG})
--AC_DEFINE_UNQUOTED(I4LCONFDIR, "${ISDN_GLOBAL_CONFIG}")
-+AC_DEFINE_UNQUOTED(I4LCONFDIR, "${ISDN_GLOBAL_CONFIG}", [global config])
- dnl #------------------------------------------------------------------------#
- dnl # Check and optimize compiler flags:                                     #
---- isdn4k-utils-CVS-2004-11-18/vbox/acinclude.m4.ac25x        2002-07-06 02:11:19.000000000 +0200
-+++ isdn4k-utils-CVS-2004-11-18/vbox/acinclude.m4      2004-11-18 17:47:52.639740930 +0100
-@@ -49,23 +49,23 @@
-          cos,
-          AC_CHECK_LIB(dl,
-             dlerror,
--            [AC_CHECK_LIB(${gnd_1st_tcl_lib_test},
-+            AC_CHECK_LIB(${gnd_1st_tcl_lib_test},
-                Tcl_CreateInterp,
-                LINK_TCL_LIBS="${gnd_tcl_lib_dir} -l${gnd_1st_tcl_lib_test} -lm -ldl",
--               [AC_CHECK_LIB(${gnd_2nd_tcl_lib_test},
-+               AC_CHECK_LIB(${gnd_2nd_tcl_lib_test},
-                   Tcl_CreateInterp,
-                   LINK_TCL_LIBS="${gnd_tcl_lib_dir} -l${gnd_2nd_tcl_lib_test} -lm -ldl",
--                  [AC_CHECK_LIB(${gnd_3rd_tcl_lib_test},
-+                  AC_CHECK_LIB(${gnd_3rd_tcl_lib_test},
-                      Tcl_CreateInterp,
-                      LINK_TCL_LIBS="${gnd_tcl_lib_dir} -l${gnd_3rd_tcl_lib_test} -lm -ldl",
-                      ,
-                      ${gnd_tcl_lib_dir} -lm -ldl
--                  )],
-+                  ),
-                   ${gnd_tcl_lib_dir} -lm -ldl
--               )],
-+               ),
-                ${gnd_tcl_lib_dir} -lm -ldl
--            )],
--         )],
-+            ),
-+         ),
-       )
-       if (test "${LINK_TCL_LIBS}" != "")
-@@ -154,7 +154,7 @@
-          AC_CHECK_LIB(ncurses,
-             resizeterm,
--            AC_DEFINE(HAVE_RESIZETERM)
-+            AC_DEFINE(HAVE_RESIZETERM, 1, [have resizeterm])
- )
-       fi
---- isdn4k-utils-CVS-2004-11-18/vbox/aclocal.m4.ac25x  2002-07-06 02:11:19.000000000 +0200
-+++ isdn4k-utils-CVS-2004-11-18/vbox/aclocal.m4        2004-11-18 17:47:52.640740782 +0100
-@@ -61,23 +61,23 @@
-          cos,
-          [AC_CHECK_LIB(dl,
-             dlerror,
--            [AC_CHECK_LIB(${gnd_1st_tcl_lib_test},
-+            AC_CHECK_LIB(${gnd_1st_tcl_lib_test},
-                Tcl_CreateInterp,
-                LINK_TCL_LIBS="${gnd_tcl_lib_dir} -l${gnd_1st_tcl_lib_test} -lm -ldl",
--               [AC_CHECK_LIB(${gnd_2nd_tcl_lib_test},
-+               AC_CHECK_LIB(${gnd_2nd_tcl_lib_test},
-                   Tcl_CreateInterp,
-                   LINK_TCL_LIBS="${gnd_tcl_lib_dir} -l${gnd_2nd_tcl_lib_test} -lm -ldl",
--                  [AC_CHECK_LIB(${gnd_3rd_tcl_lib_test},
-+                  AC_CHECK_LIB(${gnd_3rd_tcl_lib_test},
-                      Tcl_CreateInterp,
-                      LINK_TCL_LIBS="${gnd_tcl_lib_dir} -l${gnd_3rd_tcl_lib_test} -lm -ldl",
-                      ,
-                      ${gnd_tcl_lib_dir} -lm -ldl
--                  )],
-+                  ),
-                   ${gnd_tcl_lib_dir} -lm -ldl
--               )],
-+               ),
-                ${gnd_tcl_lib_dir} -lm -ldl
--            )],
--         )],
-+            ),
-+         ),
-       )
-       if (test "${LINK_TCL_LIBS}" != "")
-@@ -103,15 +103,7 @@
-                HAVE_TCL_INCL="y"
-                LINK_TCL_INCL="${gnd_tcl_inc_dir}"
--            fi
--         else
--            AC_MSG_CHECKING("for tcl header in /usr/include/tcl8.3/tcl.h")
--            if (test -e "/usr/include/tcl8.3/tcl.h")
--            then
--               AC_MSG_RESULT("yes")
--               HAVE_TCL_INCL="y"
--               LINK_TCL_INCL="-I/usr/include/tcl8.3"
--            else
-+                      else
-                AC_MSG_RESULT("no")
-             fi
-          fi
---- isdn4k-utils-CVS-2004-11-18/ipppd/configure.in.ac25x       2004-08-30 16:56:36.000000000 +0200
-+++ isdn4k-utils-CVS-2004-11-18/ipppd/configure.in     2004-11-18 17:55:56.899083430 +0100
-@@ -17,21 +17,21 @@
- AC_PROG_CC
- dnl Checks for libraries.
--AC_CHECK_LIB(bsd, daemon,HAVE_LIBBSD=1; AC_DEFINE(HAVE_LIBBSD),
-+AC_CHECK_LIB(bsd, daemon,HAVE_LIBBSD=1; AC_DEFINE(HAVE_LIBBSD,1,[libbsd]),
-       [AC_MSG_WARN(Could not find libbsd, build disabled)])
- dnl Replace `main' with a function in -lcrypt:
--AC_CHECK_LIB(crypt, main,HAVE_LIBCRYPT=1; AC_DEFINE(HAVE_LIBCRYPT))
--AC_CHECK_LIB(des, des_ecb_encrypt, HAVE_LIBDES=1; AC_DEFINE(HAVE_LIBDES))
--AC_CHECK_LIB(ssl, DES_ecb_encrypt, HAVE_LIBSSL=1; AC_DEFINE(HAVE_LIBSSL))
-+AC_CHECK_LIB(crypt, main,HAVE_LIBCRYPT=1; AC_DEFINE(HAVE_LIBCRYPT,1,[libcrypt]))
-+AC_CHECK_LIB(des, des_ecb_encrypt, HAVE_LIBDES=1; AC_DEFINE(HAVE_LIBDES,1,[libdes]))
-+AC_CHECK_LIB(ssl, DES_ecb_encrypt, HAVE_LIBSSL=1; AC_DEFINE(HAVE_LIBSSL,1,[libssl]))
- dnl Checks for header files.
- AC_HEADER_STDC
- AC_HEADER_SYS_WAIT
- AC_CHECK_HEADERS(fcntl.h limits.h paths.h sys/file.h sys/ioctl.h sys/time.h syslog.h unistd.h)
--AC_CHECK_HEADER(shadow.h, HAVE_SHADOW_H=1; AC_DEFINE(HAVE_SHADOW_H))
--AC_CHECK_HEADER(linux/isdn_lzscomp.h, HAVE_LZSCOMP_H=1; AC_DEFINE(HAVE_LZSCOMP_H))
--AC_CHECK_HEADER(pcap-bpf.h, [HAVE_PCAP_BPF_H=1; AC_DEFINE(HAVE_PCAP_BPF_H)],
--      [AC_CHECK_HEADER(net/bpf.h, [HAVE_NET_BPF_H=1; AC_DEFINE(HAVE_NET_BPF_H)],
-+AC_CHECK_HEADER(shadow.h, HAVE_SHADOW_H=1; AC_DEFINE(HAVE_SHADOW_H,1,[have shadow.h]))
-+AC_CHECK_HEADER(linux/isdn_lzscomp.h, HAVE_LZSCOMP_H=1; AC_DEFINE(HAVE_LZSCOMP_H,1,[isdn_lzscomp.h]))
-+AC_CHECK_HEADER(pcap-bpf.h, [HAVE_PCAP_BPF_H=1; AC_DEFINE(HAVE_PCAP_BPF_H,1,[pcap-bpf.h])],
-+      [AC_CHECK_HEADER(net/bpf.h, [HAVE_NET_BPF_H=1; AC_DEFINE(HAVE_NET_BPF_H,1,[net/bpf.h])],
-               [AC_MSG_ERROR(Could not find pcap header file)])])
- dnl Checks for typedefs, structures, and compiler characteristics.
-@@ -51,62 +51,63 @@
- AC_ARG_WITH(sbin,
-       [  --with-sbin=DIR         Set directory where ipppd is istalled. [/sbin]],
-       CONFIG_SBINDIR="${withval}"
--      AC_DEFINE(CONFIG_SBINDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_SBINDIR,"${withval}",[sbin dir]),
- )
- dnl Optional man directory
- AC_ARG_WITH(sbin,
-       [  --with-man=DIR          Set manpage directory. [/usr/man]],
-       CONFIG_MANDIR="${withval}"
--      AC_DEFINE(CONFIG_MANDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_MANDIR,"${withval}",[man dir]),
- )
- dnl Optional /var/run directory
- AC_ARG_WITH(sbin,
-       [  --with-varrun=DIR       Set directory for .pid files. [/var/run]],
-       CONFIG_RUNDIR="${withval}"
--      AC_DEFINE(CONFIG_RUNDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_RUNDIR,"${withval}",[/var/run dir]),
- )
- dnl Optional MSCHAP
- AC_ARG_ENABLE(mschap,
-       [  --enable-mschap         Enable Microsoft chap authentication [no]],
-       CONFIG_IPPPD_MSCHAP="y"
--      AC_DEFINE(CONFIG_IPPPD_MSCHAP,"y"),
-+      AC_DEFINE(CONFIG_IPPPD_MSCHAP,"y",[support M$-chap]),
- )
- dnl Optional RADIUS
- AC_ARG_ENABLE(radius,
-       [  --enable-radius         Enable RADIUS authentication [no]],
-       CONFIG_IPPPD_RADIUS="y"
--      AC_DEFINE(CONFIG_IPPPD_RADIUS,"y"),
-+      AC_DEFINE(CONFIG_IPPPD_RADIUS,"y",[support radius]),
- )
- dnl Optional radiusclient config file
- AC_ARG_WITH(radiusclient_config,
-       [  --with-radiusclient=FILE Set filename for radiusclient configuration],
-       RADIUS_CLIENT_CONFIG_FILE="${withval}"
--      AC_DEFINE(RADIUS_CLIENT_CONFIG_FILE,"${withval}"),
-+      AC_DEFINE(RADIUS_CLIENT_CONFIG_FILE,"${withval}",[radius config]),
- )
- dnl Optional RADIUS_WTMP_LOGGING
- AC_ARG_ENABLE(radius_wtmp_logging,
-       [  --enable-radius-wtmp       Enable RADIUS_WTMP_LOGGING authentication [no]],
-       CONFIG_IPPPD_RADIUS_WTMP_LOGGING="y"
--      AC_DEFINE(CONFIG_IPPPD_RADIUS_WTMP_LOGGING,"y"),
-+      AC_DEFINE(CONFIG_IPPPD_RADIUS_WTMP_LOGGING,"y",[radius logging]),
- )
- dnl Optional DEBUGGING
- AC_ARG_ENABLE(debug,
-       [  --enable-debug          Enable debugging [no]],
-       CONFIG_IPPPD_DEBUGFLAGS="-DDEBUGALL"
--      AC_DEFINE(CONFIG_IPPPD_DEBUGFLAGS,"-DDEBUGALL"),
-+      AC_DEFINE(CONFIG_IPPPD_DEBUGFLAGS,"-DDEBUGALL",[options]),
- )
- AC_ARG_ENABLE(ippp-filter,
-       [  --enable-ippp-filter    Enable IPPP Filters (needs kernel supports) [no]],
-       CONFIG_IPPP_FILTER="y"
-       AC_DEFINE(CONFIG_IPPP_FILTER,"y"),
-+      AC_DEFINE(CONFIG_IPPP_FILTER,"y", [ipppd filter]),
- )
- AC_SUBST(I4LVERSION)
---- isdn4k-utils-CVS-2004-11-18/isdnlog/configure.in.ac25x     2004-10-28 03:53:29.000000000 +0200
-+++ isdn4k-utils-CVS-2004-11-18/isdnlog/configure.in   2004-11-18 17:47:52.642740487 +0100
-@@ -79,45 +79,46 @@
- dnl To make it possible to set variables in policy.h
- dnl they have to be defined with AC_DEFINE...
- dnl
--AC_DEFINE_UNQUOTED(OLDCONFDIR,"$OLDCONFDIR")
--AC_DEFINE_UNQUOTED(OLDCONFFILE,"$OLDCONFFILE")
--AC_DEFINE_UNQUOTED(DATADIR,"$datadir")
--AC_DEFINE_UNQUOTED(SERV_PORT,$SERV_PORT)
--AC_DEFINE_UNQUOTED(USERFILE,"$USERFILE")
--AC_DEFINE_UNQUOTED(LOGFILE,"$LOGFILE")
--AC_DEFINE_UNQUOTED(CHARGEFILE,"$CHARGEFILE")
--AC_DEFINE_UNQUOTED(RELOADCMD,"$RELOADCMD")
--AC_DEFINE_UNQUOTED(STOPCMD,"$STOPCMD")
--AC_DEFINE_UNQUOTED(REBOOTCMD,"$REBOOTCMD")
-+AC_DEFINE_UNQUOTED(OLDCONFDIR,"$OLDCONFDIR", [old config dir])
-+AC_DEFINE_UNQUOTED(OLDCONFFILE,"$OLDCONFFILE", [old config file])
-+AC_DEFINE_UNQUOTED(DATADIR,"$datadir", [data dir])
-+AC_DEFINE_UNQUOTED(SERV_PORT,$SERV_PORT, [server port])
-+AC_DEFINE_UNQUOTED(USERFILE,"$USERFILE", [user file])
-+AC_DEFINE_UNQUOTED(LOGFILE,"$LOGFILE", [log file])
-+AC_DEFINE_UNQUOTED(CHARGEFILE,"$CHARGEFILE", [charge file])
-+AC_DEFINE_UNQUOTED(RELOADCMD,"$RELOADCMD", [reload command])
-+AC_DEFINE_UNQUOTED(STOPCMD,"$STOPCMD", [stop command])
-+AC_DEFINE_UNQUOTED(REBOOTCMD,"$REBOOTCMD", [reboot command])
-+
- if test "$CONFIG_ISDN_LOG_DE" = "y" ; then
-       NATION="de"
-       NATION_MACRO="ISDN_DE"
--      AC_DEFINE(ISDN_DE)
-+      AC_DEFINE(ISDN_DE, 1, [German ISDN])
- fi
- if test "$CONFIG_ISDN_LOG_AT" = "y" ; then
-       NATION="at"
-       NATION_MACRO="ISDN_AT"
--      AC_DEFINE(ISDN_AT)
-+      AC_DEFINE(ISDN_AT, 1, [Austrian ISDN])
- fi
- if test "$CONFIG_ISDN_LOG_CH" = "y" ; then
-       NATION="ch"
-       NATION_MACRO="ISDN_CH"
--      AC_DEFINE(ISDN_CH)
-+      AC_DEFINE(ISDN_CH, 1, [Swiss ISDN])
- fi
- if test "$CONFIG_ISDN_LOG_NL" = "y" ; then
-       NATION="nl"
-       NATION_MACRO="ISDN_NL"
--      AC_DEFINE(ISDN_NL)
-+      AC_DEFINE(ISDN_NL, 1, [Dutch ISDN])
- fi
- if test "$CONFIG_ISDN_LOG_LU" = "y" ; then
-       NATION="lu"
-       NATION_MACRO="ISDN_LU"
--      AC_DEFINE(ISDN_LU)
-+      AC_DEFINE(ISDN_LU, 1, [Luxembourg ISDN])
- fi
- if test "$CONFIG_ISDN_LOG_XX" = "y" ; then
-       NATION=$CONFIG_ISDN_LOG_CC
-       NATION_MACRO="ISDN_XX"
--      AC_DEFINE(ISDN_XX)
-+      AC_DEFINE(ISDN_XX, 1, [Other country])
- fi
- dnl Checks for programs.
-@@ -130,17 +131,17 @@
- dnl Checks for libraries.
- if test -e tools/cdb/i4l_cdb.c  ; then
--    AC_DEFINE(USE_CDB)
-+    AC_DEFINE(USE_CDB, 1, [Use CDB])
-     CDBEXTRALIBS="tools/cdb/i4l_cdb.a"
-     DBEXT=".cdb"
-     RDBEXT=".cdb"
-     AC_MSG_RESULT(Using 'cdb' as database)
- else
--AC_CHECK_LIB(gdbm, gdbm_open, DBMLIB=-lgdbm; AC_DEFINE(HAVE_LIBGDBM),
--      [AC_CHECK_LIB(dbm, dbm_open, DBMLIB=-ldbm; AC_DEFINE(HAVE_LIBDBM),
--              [AC_CHECK_LIB(db, dbm_open, DBMLIB=-ldb; AC_DEFINE(HAVE_LIBDB))])])
-+AC_CHECK_LIB(gdbm, gdbm_open, DBMLIB=-lgdbm; AC_DEFINE(HAVE_LIBGDBM, 1, [Use libgdbm]),
-+      AC_CHECK_LIB(dbm, dbm_open, DBMLIB=-ldbm; AC_DEFINE(HAVE_LIBDBM, 1, [Use libdbm]),
-+              AC_CHECK_LIB(db, dbm_open, DBMLIB=-ldb; AC_DEFINE(HAVE_LIBDB, 1, [use libdb]))))
- fi
--AC_DEFINE_UNQUOTED(RDBEXT,"$RDBEXT")
-+AC_DEFINE_UNQUOTED(RDBEXT,"$RDBEXT",[rdb extension])
- dnl log database support
- AC_CHECK_POSTGRES
-@@ -158,7 +159,7 @@
- dnl Manual config
- AC_ARG_WITH(isdnlib,
-       [  --with-isdnlib=DIR      Set isdn library [../lib]],
--      LIBISDNDIR=$withval; AC_DEFINE_UNQUOTED(LIBISDNDIR,"$withval"))
-+      LIBISDNDIR=$withval; AC_DEFINE_UNQUOTED(LIBISDNDIR,"$withval",[libisdn dir]))
- AC_ARG_WITH(area-lib,
-       [  --with-area-lib=STRING  Set area library type [area]],
-       ALIB=$withval)
-@@ -167,16 +168,16 @@
-       CHARGECOUNTRY=$withval)
- AC_ARG_WITH(oldconfdir,
-       [  --with-oldconfdir=DIR   Set old config directory [/etc/isdnlog]],
--      OLDCONFDIR=$withval; AC_DEFINE_UNQUOTED(OLDCONFDIR,"$withval"))
-+      OLDCONFDIR=$withval; AC_DEFINE_UNQUOTED(OLDCONFDIR,"$withval", [old config dir]))
- AC_ARG_WITH(oldconf,
-       [  --with-oldconf=NAME     Set old config file name [isdnlog.conf]],
--      OLDCONFFILE=$withval; AC_DEFINE_UNQUOTED(OLDCONFFILE,"$withval"))
-+      OLDCONFFILE=$withval; AC_DEFINE_UNQUOTED(OLDCONFFILE,"$withval", [old config file]))
- AC_ARG_WITH(datadir,
-         [  --with-datadir=DIR      Set data directory [/usr/lib/isdn]],
--        datadir=$withval; AC_DEFINE_UNQUOTED(DATADIR,"$withval"))
-+        datadir=$withval; AC_DEFINE_UNQUOTED(DATADIR,"$withval", [data dir]))
- AC_ARG_WITH(sport,
-       [  --with-sport=INT        Set server port [20011]],
--      SERV_PORT=$withval; AC_DEFINE_UNQUOTED(SERV_PORT,$withval))
-+      SERV_PORT=$withval; AC_DEFINE_UNQUOTED(SERV_PORT,$withval, [server port]))
- dnl Checks for typedefs, structures, and compiler characteristics.
- AC_C_CONST
-@@ -196,28 +197,28 @@
- if test "$ALIB" = "area" ; then
-       LIBAREA=1
--      AC_DEFINE(LIBAREA)
-+      AC_DEFINE(LIBAREA, 1, [libarea])
- fi
- case "$CHARGECOUNTRY" in
-       DE)
-               NATION="de"
-               NATION_MACRO="ISDN_DE"
--              AC_DEFINE(ISDN_DE)
-+              AC_DEFINE(ISDN_DE, 1, [German ISDN])
-               ;;
-       AT)
-               NATION="at"
-               NATION_MACRO="ISDN_AT"
--              AC_DEFINE(ISDN_AT)
-+              AC_DEFINE(ISDN_AT, 1, [Austrian ISDN])
-               ;;
-       CH)
-               NATION="ch"
-               NATION_MACRO="ISDN_CH"
--              AC_DEFINE(ISDN_CH)
-+              AC_DEFINE(ISDN_CH, 1, [Swiss ISDN])
-               ;;
-       NL)
-               NATION="nl"
-               NATION_MACRO="ISDN_NL"
--              AC_DEFINE(ISDN_NL)
-+              AC_DEFINE(ISDN_NL, 1, [Dutch ISDN])
-               ;;
- esac
---- isdn4k-utils-CVS-2004-11-18/isdnlog/aclocal.m4.ac25x       2002-07-19 21:03:55.000000000 +0200
-+++ isdn4k-utils-CVS-2004-11-18/isdnlog/aclocal.m4     2004-11-18 17:47:52.643740339 +0100
-@@ -45,13 +45,13 @@
-       if test "$pqdir" != "no" ; then
-               AC_MSG_RESULT("yes")
-               POSTGRES=1
--              AC_DEFINE_UNQUOTED(POSTGRES,1)
-+              AC_DEFINE_UNQUOTED(POSTGRES,1,[postgres support])
-       else
-               AC_MSG_RESULT("no POSTGRES DISABLED")
-               pqdir=""
-       fi
-       POSTGRESDIR="$pqdir"
--      AC_DEFINE_UNQUOTED(POSTGRESDIR,"$pqdir")
-+      AC_DEFINE_UNQUOTED(POSTGRESDIR,"$pqdir",[postgres dir])
-       AC_SUBST(POSTGRES)
-       AC_SUBST(POSTGRESDIR)
- ])
-@@ -108,13 +108,13 @@
-       if test "$mydir" != "no" ; then
-               AC_MSG_RESULT("yes")
-               MYSQLDB=1
--              AC_DEFINE_UNQUOTED(MYSQLDB,1)
-+              AC_DEFINE_UNQUOTED(MYSQLDB,1,[MySQL support])
-       else
-               AC_MSG_RESULT("no MYSQL DISABLED")
-               mydir=""
-       fi
-       MYSQLDIR="$mydir"
--      AC_DEFINE_UNQUOTED(MYSQLDIR,"$mydir")
-+      AC_DEFINE_UNQUOTED(MYSQLDIR,"$mydir",[MySQL dir])
-       AC_SUBST(MYSQLDB)
-       AC_SUBST(MYSQLDIR)
- ])
-@@ -134,7 +134,7 @@
-       if test "$oradir" != "no" ; then
-               AC_MSG_RESULT("yes")
-               ORACLE=1
--              AC_DEFINE_UNQUOTED(ORACLE,1)
-+              AC_DEFINE_UNQUOTED(ORACLE,1,[oracle support, unsupported])
-       else
-               AC_MSG_RESULT("no ORACLE DISABLED")
-       fi
---- isdn4k-utils-CVS-2004-11-18/vbox3/configure.in.ac25x       1998-11-10 19:36:19.000000000 +0100
-+++ isdn4k-utils-CVS-2004-11-18/vbox3/configure.in     2004-11-18 17:47:52.644740191 +0100
-@@ -17,11 +17,9 @@
- ## programs ###############################################################
- AC_PROG_CC
--AC_PROG_CC_WORKS
--AC_PROG_CC_GNU
- AC_PROG_RANLIB
--AM_PROG_INSTALL
-+AC_PROG_INSTALL
- ## libraries ##############################################################
---- isdn4k-utils-CVS-2004-11-18/vbox3/vboxgetty/Makefile.am.ac25x      1998-11-10 19:36:25.000000000 +0100
-+++ isdn4k-utils-CVS-2004-11-18/vbox3/vboxgetty/Makefile.am    2004-11-18 17:47:52.644740191 +0100
-@@ -12,7 +12,7 @@
- ## vboxgetty ##############################################################
--DEFS                 += -DSYSCONFDIR='"$(sysconfdir)"' -DPKGDATADIR='"$(pkgdatadir)"' -DLOGDIR='"$(packagelogdir)"' -DLOCKDIR='"$(packagelockdir)"' -DPIDDIR='"$(packagepiddir)"'
-+DEFS                  = -DSYSCONFDIR='"$(sysconfdir)"' -DPKGDATADIR='"$(pkgdatadir)"' -DLOGDIR='"$(packagelogdir)"' -DLOCKDIR='"$(packagelockdir)"' -DPIDDIR='"$(packagepiddir)"'
- INCLUDES              = $(all_includes) $(tcl_include)
---- isdn4k-utils-CVS-2004-11-18/isdnctrl/configure.in.ac25x    2002-07-19 23:23:54.000000000 +0200
-+++ isdn4k-utils-CVS-2004-11-18/isdnctrl/configure.in  2004-11-18 17:47:52.645740043 +0100
-@@ -30,21 +30,21 @@
- AC_ARG_WITH(sbin,
-       [  --with-sbin=DIR         Set dir where binary is istalled. [/sbin]],
-       CONFIG_SBINDIR="${withval}"
--      AC_DEFINE(CONFIG_SBINDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_SBINDIR,"${withval}",[sbin dir]),
- )
- dnl Optional man directory
- AC_ARG_WITH(man,
-       [  --with-man=DIR          Set manpage dir. [/usr/man]],
-       CONFIG_MANDIR="${withval}"
--      AC_DEFINE(CONFIG_MANDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_MANDIR,"${withval}",[man dir]),
- )
- dnl Optional config-file-option
- AC_ARG_ENABLE(cfile,
-       [  --enable-cfile          Enable configfile option [no]],
-       CONFIG_ISDNCTRL_CONF=y
--      AC_DEFINE(CONFIG_ISDNCTRL_CONF,y),
-+      AC_DEFINE(CONFIG_ISDNCTRL_CONF,y,[enable config file]),
- )
- AC_SUBST(INSTALL)
---- isdn4k-utils-CVS-2004-11-18/imon/configure.in.ac25x        2002-07-19 21:03:53.000000000 +0200
-+++ isdn4k-utils-CVS-2004-11-18/imon/configure.in      2004-11-18 17:47:52.646739895 +0100
-@@ -38,14 +38,14 @@
- AC_ARG_WITH(sbin,
-       [  --with-sbin=DIR         Set dir where binary is istalled. [/sbin]],
-       CONFIG_SBINDIR="${withval}"
--      AC_DEFINE(CONFIG_SBINDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_SBINDIR,"${withval}",[kernel directory]),
- )
- dnl Optional man directory
- AC_ARG_WITH(man,
--      [  --with-man=DIR          Set manpage dir. [/usr/man]],
-+      [  --with-man=DIR          Set manpage dir. [/usr/share/man]],
-       CONFIG_MANDIR="${withval}"
--      AC_DEFINE(CONFIG_MANDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_MANDIR,"${withval}",[man directory]),
- )
- AC_SUBST(INSTALL)
---- isdn4k-utils-CVS-2004-11-18/eicon/configure.in.ac25x       2002-07-19 20:42:01.000000000 +0200
-+++ isdn4k-utils-CVS-2004-11-18/eicon/configure.in     2004-11-18 17:47:52.646739895 +0100
-@@ -35,21 +35,21 @@
- AC_ARG_WITH(firmware,
-       [  --with-firmware=DIR     Set dir where firmware istalled. [/usr/lib/isdn]],
-       CONFIG_DATADIR="${withval}"
--      AC_DEFINE(CONFIG_DATADIR,"${withval}"),
-+      AC_DEFINE(CONFIG_DATADIR,"${withval}",[data dir]),
- )
- dnl Optional sbin directory
- AC_ARG_WITH(sbin,
-       [  --with-sbin=DIR         Set dir where binary is istalled. [/sbin]],
-       CONFIG_SBINDIR="${withval}"
--      AC_DEFINE(CONFIG_SBINDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_SBINDIR,"${withval}",[sbin dir]),
- )
- dnl Optional man directory
- AC_ARG_WITH(man,
-       [  --with-man=DIR          Set manpage dir. [/usr/man]],
-       CONFIG_MANDIR="${withval}"
--      AC_DEFINE(CONFIG_MANDIR,"${withval}"),
-+      AC_DEFINE(CONFIG_MANDIR,"${withval}",[man dir]),
- )
- dnl Check, if user wants dump option for debugging
-@@ -58,10 +58,10 @@
-       CONFIG_EICONCTRL_DEBUG="y"
- )
--AC_DEFINE(HAVE_XLOG)
-+AC_DEFINE(HAVE_XLOG,1,[define if you have xlog])
- AC_SUBST(HAVE_XLOG)
--AC_DEFINE(HAVE_TRACE)
-+AC_DEFINE(HAVE_TRACE,1,[define if you have trace])
- AC_SUBST(HAVE_TRACE)
- AC_SUBST(HAVE_NPCI)
diff --git a/isdn4k-utils/patches/003-isdn4k-utils-CVS-2006-07-20-capi.patch b/isdn4k-utils/patches/003-isdn4k-utils-CVS-2006-07-20-capi.patch
deleted file mode 100644 (file)
index e0283fe..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up isdn4k-utils-CVS-2006-07-20/capi20/capidyn.c.orig isdn4k-utils-CVS-2006-07-20/capi20/capidyn.c
---- isdn4k-utils-CVS-2006-07-20/capi20/capidyn.c.orig  2009-01-19 15:18:10.000000000 +0100
-+++ isdn4k-utils-CVS-2006-07-20/capi20/capidyn.c       2009-01-19 15:19:30.000000000 +0100
-@@ -26,7 +26,7 @@
- #include <dlfcn.h>
--#define LIBCAPI       "libcapi20.so"
-+#define LIBCAPI       "libcapi20.so.3"
- static int loadlib(void);
- /* ---------------------------------------------------------------------- */
diff --git a/isdn4k-utils/patches/004-isdn4k-utils-CVS-2009-10-20-ipfire.patch b/isdn4k-utils/patches/004-isdn4k-utils-CVS-2009-10-20-ipfire.patch
deleted file mode 100644 (file)
index 4e28211..0000000
+++ /dev/null
@@ -1,808 +0,0 @@
---- isdn4k-utils-CVS-2003-09-23/act2000/Makefile.in.redhat     2002-07-19 21:03:49.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/act2000/Makefile.in    2003-09-30 17:44:24.000000000 +0200
-@@ -5,8 +5,8 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2
--INCLUDES              = -I.
-+CFLAGS                        = $(CFLAGS)
-+INCLUDES              = -I. -I@CONFIG_KERNELDIR@/include -I@CONFIG_KERNELDIR@/drivers/isdn/act2000
- DEFS                  =
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAM                       = actctrl
-@@ -18,9 +18,9 @@
- MANDIR                        = @CONFIG_MANDIR@
- MAN8DIR                       = $(MANDIR)/man8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_DATA  = $(INSTALL) -o 0 -g 0 -m 0644
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_DATA  = $(INSTALL) -m 0644
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- CC                            = @CC@
---- isdn4k-utils-CVS-2003-09-23/areacode/Makefile.in.redhat    1999-06-19 11:39:59.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/areacode/Makefile.in   2003-09-30 17:44:24.000000000 +0200
-@@ -12,7 +12,7 @@
-       # only ones that _really_ exist on _every_ system.
-       #
-       BUILDOPTS   := $(DATAOPTS)
--      INSTALLOPTS := $(DATAOPTS) INSTALL="install -o 0 -g 0 -m 644"
-+      INSTALLOPTS := $(DATAOPTS) INSTALL="install -m 644"
- endif
- all: .depend
---- isdn4k-utils-CVS-2003-09-23/avmb1/Makefile.in.redhat       2002-07-19 21:03:50.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/avmb1/Makefile.in      2003-09-30 17:44:24.000000000 +0200
-@@ -5,7 +5,7 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2
-+CFLAGS                        = $(CFLAGS)
- LDFLAGS                       = -L../lib @LIBS@
- INCLUDES              = -I.
- PROGRAMS              = avmcapictrl
-@@ -15,8 +15,8 @@
- MANDIR                        = @CONFIG_MANDIR@
- MAN8DIR                       = $(MANDIR)/man8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- CC                            = @CC@
---- isdn4k-utils-CVS-2003-09-23/capifax/Makefile.am.redhat     2000-03-03 16:54:12.000000000 +0100
-+++ isdn4k-utils-CVS-2003-09-23/capifax/Makefile.am    2003-09-30 17:44:24.000000000 +0200
-@@ -8,7 +8,7 @@
-                         stamp-h.in
- INCLUDES = -I../capi20 $(all_includes)
--CFLAGS = -Wall -O2
-+CFLAGS = -Wall $(CFLAGS)
- LDFLAGS = -L../capi20/.libs -L../capi20 $(all_libraries)
- LDADD = -lcapi20
---- isdn4k-utils-CVS-2003-09-23/capiinfo/Makefile.am.redhat    2000-10-20 19:14:20.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/capiinfo/Makefile.am   2003-09-30 17:44:24.000000000 +0200
-@@ -8,7 +8,7 @@
-                         stamp-h.in comperr
- INCLUDES = -I../capi20 $(all_includes)
--CFLAGS = -Wall -O2
-+CFLAGS = -Wall $(CFLAGS)
- LDFLAGS = -L../capi20/.libs -L../capi20 $(all_libraries)
- LDADD = -lcapi20
---- isdn4k-utils-CVS-2003-09-23/capiinit/Makefile.am.redhat    2000-03-17 17:19:43.000000000 +0100
-+++ isdn4k-utils-CVS-2003-09-23/capiinit/Makefile.am   2003-09-30 17:44:24.000000000 +0200
-@@ -8,7 +8,7 @@
-                         stamp-h.in comperr core
- INCLUDES = $(all_includes)
--CFLAGS = -Wall -O2 -D_GNU_SOURCE # -g
-+CFLAGS = -Wall -D_GNU_SOURCE $(CFLAGS)
- LDFLAGS = $(all_libraries)
- LDADD = 
---- isdn4k-utils-CVS-2003-09-23/divertctrl/Makefile.in.redhat  2002-07-19 21:03:51.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/divertctrl/Makefile.in 2003-09-30 17:44:24.000000000 +0200
-@@ -5,16 +5,16 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2
--INCLUDES              = -I.
-+CFLAGS                        = -Wall $(CFLAGS)
-+INCLUDES              = -I. -I@CONFIG_KERNELDIR@/include -I@CONFIG_KERNELDIR@/drivers/isdn/divert
- DEFS                  =
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAM                       = divertctrl
- MODULES                       = divertctrl.o
- MANPAGE                       = divertctrl.8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- ifeq (../.config,$(wildcard ../.config))
---- isdn4k-utils-CVS-2003-09-23/doc/Makefile.in.redhat 1999-12-24 15:14:50.000000000 +0100
-+++ isdn4k-utils-CVS-2003-09-23/doc/Makefile.in        2003-09-30 17:44:24.000000000 +0200
-@@ -9,7 +9,7 @@
- SED                           = @SED@
- MANDIR                        = @CONFIG_MANDIR@
- MANPAGES              = ttyI.4 isdninfo.4 isdn_audio.4 isdnctrl.4 isdn_cause.7
--INSTALL_MAN           = @INSTALL@ -o 0 -g 0 -m 0644
-+INSTALL_MAN           = @INSTALL@ -m 0644
- prefix                        = @prefix@
- %.1: %.man
---- isdn4k-utils-CVS-2003-09-23/eicon/Makefile.in.redhat       2002-07-19 20:42:01.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/eicon/Makefile.in      2003-09-30 17:44:24.000000000 +0200
-@@ -7,8 +7,8 @@
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2 -DUNIX -DLINUX
--INCLUDES              = -I. -Iinclude
-+CFLAGS                        = -Wall -DUNIX -DLINUX $(CFLAGS)
-+INCLUDES              = -I. -Iinclude -I@CONFIG_KERNELDIR@/include -I@CONFIG_KERNELDIR@/drivers/isdn/eicon
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAMS              = 
- PROGRAM                       = eiconctrl
-@@ -22,9 +22,9 @@
- DATA_DIR              = @CONFIG_DATADIR@
- MANDIR                        = @CONFIG_MANDIR@
- MAN8DIR                       = $(MANDIR)/man8
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_DATA  = $(INSTALL) -o 0 -g 0 -m 0644
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_DATA  = $(INSTALL) -m 0644
-+INSTALL_MAN           = $(INSTALL) -m 0644
- CC                            = @CC@
- COPTS                 = -DDATADIR=\"$(shell echo $(DESTDIR)$(DATA_DIR))\"
---- isdn4k-utils-CVS-2003-09-23/hisax/Makefile.in.redhat       2002-07-19 21:03:51.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/hisax/Makefile.in      2003-09-30 17:44:24.000000000 +0200
-@@ -6,7 +6,7 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2 -I.
-+CFLAGS                        = -Wall $(CFLAGS) -I. -I@CONFIG_KERNELDIR@/include
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAMS              =
- MODULES                       = hisaxctrl.o
-@@ -16,9 +16,9 @@
- DATADIR                       = @CONFIG_DATADIR@
- MANDIR                        = @CONFIG_MANDIR@
- MAN8DIR                       = $(MANDIR)/man8
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_DATA  = $(INSTALL) -o 0 -g 0 -m 0644
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_DATA  = $(INSTALL) -m 0644
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- ifeq ("@CONFIG_HISAXCTRL@","y")
---- isdn4k-utils-CVS-2003-09-23/icn/Makefile.in.redhat 2002-07-19 21:03:52.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/icn/Makefile.in        2003-09-30 17:44:24.000000000 +0200
-@@ -5,8 +5,8 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2
--INCLUDES              = -I.
-+CFLAGS                        = -Wall $(CFLAGS)
-+INCLUDES              = -I. -I@CONFIG_KERNELDIR@/include -I@CONFIG_KERNELDIR@/drivers/isdn/icn
- DEFS                  =
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAM                       = icnctrl
-@@ -17,9 +17,9 @@
- DATADIR                       = @CONFIG_DATADIR@
- MANDIR                        = @CONFIG_MANDIR@
- MAN8DIR                       = $(MANDIR)/man8
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_DATA  = $(INSTALL) -o 0 -g 0 -m 0644
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_DATA  = $(INSTALL) -m 0644
-+INSTALL_MAN           = $(INSTALL) -m 0644
- CC                            = @CC@
- COPTS                 =
---- isdn4k-utils-CVS-2003-09-23/imon/Makefile.in.redhat        2002-07-19 21:03:53.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/imon/Makefile.in       2003-09-30 17:44:24.000000000 +0200
-@@ -7,8 +7,8 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2
--INCLUDES              = -I.
-+CFLAGS                        = -Wall $(CFLAGS)
-+INCLUDES              = -I. -I@CONFIG_KERNELDIR@/include
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAM                       = imon
- MODULES                       = imon.o
-@@ -18,8 +18,8 @@
- SBINDIR                       = @CONFIG_SBINDIR@
- MAN8DIR                       = $(MANDIR)/man8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- CC                            = @CC@
---- isdn4k-utils-CVS-2003-09-23/imontty/Makefile.redhat        2002-07-19 23:23:53.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/imontty/Makefile       2003-09-30 17:44:24.000000000 +0200
-@@ -15,14 +15,14 @@
-       # Manual config standalone
-       #
-       CONFIG_SBINDRIR := /sbin
--      MAN8DIR         := /usr/man/man8
-+      MAN8DIR         := /usr/share/man/man8
- endif
- INSTALL=install
--INSTALL_MAN=$(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_MAN=$(INSTALL) -m 0644
- MANPAGE=imontty.8
--CCFLAGS=-O2
-+CCFLAGS=$(CFLAGS) -I$(CONFIG_KERNELDIR)/include
- #CCFLAGS=-I$(ISDN_INCLUDE) -g
- # nothing to change behind this line
---- isdn4k-utils-CVS-2003-09-23/ipppstats/Makefile.in.redhat   2002-07-19 21:03:54.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/ipppstats/Makefile.in  2003-09-30 17:44:24.000000000 +0200
-@@ -6,14 +6,14 @@
- MANDIR       = @CONFIG_MANDIR@
- CC           = @CC@
- INSTALL      = @INSTALL@
--INSTALL_SBIN = $(INSTALL) -m 755 -o 0 -g 0
--INSTALL_DATA = $(INSTALL) -m 644 -o 0 -g 0
--INSTALL_DIR  = $(INSTALL) -m 755 -o 0 -g 0 -d
-+INSTALL_SBIN = $(INSTALL) -m 755
-+INSTALL_DATA = $(INSTALL) -m 644
-+INSTALL_DIR  = $(INSTALL) -m 755 -d
- PPPSTATSRCS  = ipppstats.c
- PPPSTATOBJS  = ipppstats.o
--CFLAGS       = -fomit-frame-pointer -O2
-+CFLAGS       = $(CFLAGS) -I@CONFIG_KERNELDIR@/include
- all: ipppstats
---- isdn4k-utils-CVS-2003-09-23/iprofd/Makefile.in.redhat      2002-07-19 23:23:53.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/iprofd/Makefile.in     2003-09-30 17:44:24.000000000 +0200
-@@ -5,8 +5,8 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2
--INCLUDES              = -I.
-+CFLAGS                        = -Wall $(CFLAGS)
-+INCLUDES              = -I. -I@CONFIG_KERNELDIR@/include
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAM                       = iprofd
- MODULES                       = iprofd.o
-@@ -15,8 +15,8 @@
- MANDIR                        = @CONFIG_MANDIR@
- MAN8DIR                       = $(MANDIR)/man8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- CC                            = @CC@
---- isdn4k-utils-CVS-2003-09-23/isdnctrl/Makefile.in.redhat    2002-07-19 23:23:54.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/isdnctrl/Makefile.in   2003-09-30 17:44:24.000000000 +0200
-@@ -5,8 +5,8 @@
- #
- #
- SHELL                   = /bin/sh
--CFLAGS                        = -Wall -O2
--INCLUDES              = -I.
-+CFLAGS                        = -Wall $(CFLAGS)
-+INCLUDES              = -I. -I@CONFIG_KERNELDIR@/include
- LDFLAGS                       = @LIBS@ 
- PROGRAM                       = isdnctrl
- MODULES                       = isdnctrl.o
-@@ -15,8 +15,8 @@
- MANDIR                        = @CONFIG_MANDIR@
- MAN8DIR                       = $(MANDIR)/man8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
- CC                            = @CC@ -DVERSION=\"@I4LVERSION@\"
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
---- isdn4k-utils-CVS-2003-09-23/isdnlog/samples/callerid.conf.redhat   2000-09-08 10:55:51.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/isdnlog/samples/callerid.conf  2003-09-30 17:44:24.000000000 +0200
-@@ -2,38 +2,31 @@
- # 
- # More information: See the isdnlog documentation
-+#INTERFACE = ippp0      # Isdn network interface. This information  is  required
-+                        # with the "-hx" / hangup="value" option.
-+
-+
- [MSN]
- NUMBER = 4711
- ALIAS  = Phone
- SI     = 1
- ZONE   = 1
--START = {
--  [FLAG]
--  FLAGS = I|O|R|C|B|A|E|H
--  PROGRAM = /bin/myprog \$1 \$2 \$3 Phone
--}
-+#START = {
-+#  [FLAG]
-+#  FLAGS = I|O|R|C|B|A|E|H
-+#  PROGRAM = /bin/myprog \$1 \$2 \$3 Phone
-+#}
- [MSN]
- NUMBER = 4711
- ALIAS  = HDLC
- SI     = 7
- ZONE   = 1
--START = {
--  [FLAG]
--  FLAGS = I|O|R|C|B|A|E|
--  PROGRAM = /bin/myprog \$1 \$2 \$3 HDLC @/home/user1/parameter
--}
--
--[MSN]
--NUMBER = 4712
--ALIAS  = Modem
--SI     = 1
--ZONE   = 1
--START = {
--  [FLAG]
--  FLAGS = I|O|R|C|B|A|E|H
--  PROGRAM = /bin/myprog \$1 \$2 \$3 Modem
--}
-+#START = {
-+#  [FLAG]
-+#  FLAGS = I|O|R|C|B|A|E|
-+#  PROGRAM = /bin/myprog \$1 \$2 \$3 HDLC @/home/user1/parameter
-+#}
- [NUMBER]
- NUMBER = 01910
---- isdn4k-utils-CVS-2003-09-23/isdnlog/tools/cdb/Makefile.in.redhat   2000-08-15 17:16:23.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/isdnlog/tools/cdb/Makefile.in  2003-09-30 17:44:24.000000000 +0200
-@@ -20,7 +20,7 @@
- BINDIR:=$(DESTDIR)@prefix@/bin
- INCDIR:=$(DESTDIR)@prefix@/include
--CFLAGS:=-Wall -O2
-+CFLAGS:=-Wall $(CFLAGS)
- all: depend $(FILES)
-@@ -46,7 +46,7 @@
-       install -d -m0755 $(MAN1DIR) $(MAN3DIR) $(LIBDIR) $(BINDIR) \
-               $(INCDIR)
--install:
-+install: install-dirs
-       install -m0755 $(BINS) $(BINDIR)
-       install -m0644 $(MAN1) $(MAN1DIR)
-       install -m0644 $(MAN3) $(MAN3DIR)
---- isdn4k-utils-CVS-2003-09-23/isdnlog/tools/dest/Makefile.in.redhat  2003-07-25 23:23:15.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/isdnlog/tools/dest/Makefile.in 2003-09-30 17:44:24.000000000 +0200
-@@ -6,7 +6,7 @@
- -include ../../../.config
- BZIP2                 = @BZIP2@
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -g
-+CFLAGS                        = -Wall $(CFLAGS)
- INCLUDES              =
- LDFLAGS                       = @DBMLIB@
- export DBEXT          = @DBEXT@
-@@ -20,9 +20,9 @@
- SBINDIR                       = @CONFIG_SBINDIR@
- MAN8DIR                       = $(MANDIR)/man8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM               = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
--INSTALL_DATA          = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM               = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
-+INSTALL_DATA          = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- DATADIR                       = @datadir@
---- isdn4k-utils-CVS-2003-09-23/isdnlog/tools/zone/Makefile.in.redhat  2003-03-11 14:08:00.000000000 +0100
-+++ isdn4k-utils-CVS-2003-09-23/isdnlog/tools/zone/Makefile.in 2003-09-30 17:44:24.000000000 +0200
-@@ -5,7 +5,7 @@
- #
- BZIP2                 = @BZIP2@
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -g
-+CFLAGS                        = -Wall $(CFLAGS)
- INCLUDES              =
- LDFLAGS                       = @DBMLIB@
- CDBEXTRALIBS          = @CDBEXTRALIBS@
-@@ -20,8 +20,8 @@
- SBINDIR                       = @CONFIG_SBINDIR@
- MAN8DIR                       = $(MANDIR)/man8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM               = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM               = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- #CC                   = @CC@ -V2.7.2.3
---- isdn4k-utils-CVS-2003-09-23/isdnlog/Makefile.in.redhat     2003-08-26 21:46:11.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/isdnlog/Makefile.in    2003-09-30 17:44:24.000000000 +0200
-@@ -1542,10 +1542,10 @@
- # autoconf isdnlog specific stuff
- #
- INSTALL                       := @INSTALL@
--INSTALL_DIR           := $(INSTALL) -m 0755 -o 0 -g 0 -d
--INSTALL_SBIN          := $(INSTALL) -m 0700 -o 0 -g 0
--INSTALL_BIN           := $(INSTALL) -m 0755 -o 0 -g 0
--INSTALL_DATA          := $(INSTALL) -m 0644 -o 0 -g 0
-+INSTALL_DIR           := $(INSTALL) -m 0755 -d
-+INSTALL_SBIN          := $(INSTALL) -m 0700
-+INSTALL_BIN           := $(INSTALL) -m 0755
-+INSTALL_DATA          := $(INSTALL) -m 0644
- BZIP2                   := @BZIP2@
- BUNZIP2                 := $(BZIP2) -f -d
-@@ -1600,9 +1600,9 @@
- SUBDIRS     += $(LIBISDNDIR)
- endif
--# export CFLAGS  = -Wall -pipe -O6 -fomit-frame-pointer -fforce-mem -fforce-addr -funroll-loops -fstrength-reduce
-+# export CFLAGS  = -Wall -pipe -frame-pointer -fforce-mem -fforce-addr -funroll-loops -fstrength-reduce
--export CFLAGS  = -Wall -pipe
-+export CFLAGS  = -Wall $(CFLAGS)
- ifndef _CC
- export _CC  = gcc
- endif
---- isdn4k-utils-CVS-2003-09-23/lib/Makefile.in.redhat 1999-12-12 18:22:36.000000000 +0100
-+++ isdn4k-utils-CVS-2003-09-23/lib/Makefile.in        2003-09-30 17:44:24.000000000 +0200
-@@ -11,7 +11,7 @@
-       # Install as root with numeric Id's, since these are the
-       # only ones that _really_ exist on _every_ system.
-       #
--      INSTALLOPTS += INSTALL= install -o 0 -g 0 -m 644
-+      INSTALLOPTS += INSTALL= install -m 644
- endif
- all: .depend
---- isdn4k-utils-CVS-2003-09-23/loop/Makefile.in.redhat        2002-07-19 21:03:56.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/loop/Makefile.in       2003-09-30 17:44:24.000000000 +0200
-@@ -5,16 +5,16 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -O2
--INCLUDES              = -I.
-+CFLAGS                        = -Wall $(CFLAGS)
-+INCLUDES              = -I. -I@CONFIG_KERNELDIR@/include -I@CONFIG_KERNELDIR@/drivers/isdn/loopctrl
- DEFS                  =
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAM                       = loopctrl
- MODULES                       = loopctrl.o
- MANPAGE                       = loopctrl.8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM       = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM       = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- ifeq (../.config,$(wildcard ../.config))
---- isdn4k-utils-CVS-2003-09-23/pcbit/Makefile.in.redhat       2002-07-19 21:03:57.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/pcbit/Makefile.in      2003-09-30 17:44:24.000000000 +0200
-@@ -5,8 +5,8 @@
- #
- #
- SHELL                 = /bin/sh
--CFLAGS                        = -Wall -Wstrict-prototypes -O2 -g
--INCLUDES              = -I. -DDEBUG 
-+CFLAGS                        = -Wall -Wstrict-prototypes $(CFLAGS)
-+INCLUDES              = -I. -DDEBUG -I@CONFIG_KERNELDIR@/drivers/isdn/pcbit
- LDFLAGS                       = -L../lib @LIBS@
- PROGRAM                       = pcbitctl
- MODULES                       = pcbitctl.o convhexbin.o
-@@ -15,8 +15,8 @@
- MANDIR                        = @CONFIG_MANDIR@
- MAN8DIR                       = $(MANDIR)/man8
- INSTALL                       = @INSTALL@
--INSTALL_PROGRAM               = $(INSTALL) -o 0 -g 0 -m 0750
--INSTALL_MAN           = $(INSTALL) -o 0 -g 0 -m 0644
-+INSTALL_PROGRAM               = $(INSTALL) -m 0750
-+INSTALL_MAN           = $(INSTALL) -m 0644
- prefix                        = @prefix@
- exec_prefix           = @exec_prefix@
- CC                            = @CC@
---- isdn4k-utils-CVS-2003-09-23/rcapid/Makefile.am.redhat      2002-07-19 23:23:54.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/rcapid/Makefile.am     2003-09-30 17:44:24.000000000 +0200
-@@ -8,7 +8,7 @@
-                         stamp-h.in comperr
- INCLUDES = -I../capi20 $(all_includes)
--CFLAGS = -Wall -O2
-+CFLAGS = -Wall $(CFLAGS)
- LDFLAGS = -L../capi20/.libs -L../capi20 $(all_libraries)
- LDADD = -lcapi20
---- isdn4k-utils-CVS-2003-09-23/vbox/examples/vboxd.conf.example.redhat        1997-04-28 18:51:29.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/vbox/examples/vboxd.conf.example       2003-09-30 17:44:24.000000000 +0200
-@@ -5,7 +5,7 @@
- # login (server startup) time. If access is 'yes' the host can login
- # and count messages without special access.
--L:localhost:Y
-+#L:localhost:Y
- L:*:N
- # Full access list
-@@ -13,7 +13,7 @@
- # All hosts in the full access list (begins with 'A') are checked if the
- # server gets the 'login' command.
--A:localhost:RW:michael:xxx:/var/spool/vbox/michael:incoming
--A:localhost:RW:nicole:xxx:/var/spool/vbox/nicole:incoming
-+#A:localhost:RW:michael:xxx:/var/spool/vbox/michael:incoming
-+#A:localhost:RW:nicole:xxx:/var/spool/vbox/nicole:incoming
- A:*:!:!:!:!:!
---- isdn4k-utils-CVS-2003-09-23/vbox/examples/vboxgetty.conf.example.redhat    1997-10-22 22:46:58.000000000 +0200
-+++ isdn4k-utils-CVS-2003-09-23/vbox/examples/vboxgetty.conf.example   2003-09-30 17:44:24.000000000 +0200
-@@ -20,18 +20,18 @@
- # Settings for port ttyI6
--port /dev/ttyI6
--  modeminit           ATZ&B512&E7830022
--  user                        nicole
--  group                       users
--  spooldir            /var/spool/vbox/nicole
-+#port /dev/ttyI6
-+#  modeminit          ATZ&B512&E7830022
-+#  user                       nicole
-+#  group                      users
-+#  spooldir           /var/spool/vbox/nicole
- # Settings for port ttyI7
--port /dev/ttyI7
--  modeminit           ATZ&B512&E7850413
--  user                        michael
--  group                       users
--  spooldir            /var/spool/vbox/michael
-+#port /dev/ttyI7
-+#  modeminit          ATZ&B512&E7850413
-+#  user                       michael
-+#  group                      users
-+#  spooldir           /var/spool/vbox/michael
---- isdn4k-utils-CVS-2003-09-23/xisdnload/Imakefile.redhat     1998-03-08 19:54:01.000000000 +0100
-+++ isdn4k-utils-CVS-2003-09-23/xisdnload/Imakefile    2003-09-30 17:44:24.000000000 +0200
-@@ -21,7 +21,7 @@
-            OBJS = xisdnload.o
-  OSMAJORVERSION = OSMajorVersion
-  OSMINORVERSION = OSMinorVersion
--      DEFINES = -DOSMAJORVERSION=$(OSMAJORVERSION) -DOSMINORVERSION=$(OSMINORVERSION) -DREGEX_NUMBER
-+      DEFINES = -D_GNU_SOURCE -DOSMAJORVERSION=$(OSMAJORVERSION) -DOSMINORVERSION=$(OSMINORVERSION) -DREGEX_NUMBER
- AllTarget(xisdnload)
- NormalProgramTarget(xisdnload,$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),NullParameter)
---- isdn4k-utils-CVS-2003-09-23/.config.rpm.redhat     1998-11-23 13:12:04.000000000 +0100
-+++ isdn4k-utils-CVS-2003-09-23/.config.rpm    2003-09-30 17:59:55.000000000 +0200
-@@ -5,16 +5,16 @@
- #
- # Code maturity level options
- #
--CONFIG_EXPERIMENTAL=y
-+# CONFIG_EXPERIMENTAL is not set
- #
- # General configuration
- #
- CONFIG_BUILDX11=y
--CONFIG_KERNELDIR='/usr/src/linux'
-+CONFIG_KERNELDIR='/usr/src/linux-2.4'
- CONFIG_BINDIR='/usr/bin'
--CONFIG_SBINDIR='/sbin'
--CONFIG_MANDIR='/usr/man'
-+CONFIG_SBINDIR='/usr/sbin'
-+CONFIG_MANDIR='/usr/share/man'
- CONFIG_RUNDIR='/var/run'
- CONFIG_LOCKDIR='/var/lock'
- CONFIG_LOCKFILE='LCK..'
-@@ -23,11 +23,9 @@
- CONFIG_CALLERIDFILE='callerid.conf'
- CONFIG_USERCONFFILE='~/.isdn'
- CONFIG_COUNTRYCODE='49'
--CONFIG_AREACODE=''
-+CONFIG_AREACODE='9999'
- CONFIG_COUNTRY_PREFIX='+'
- CONFIG_AREA_PREFIX='0'
--CONFIG_DATADIR='/usr/lib/isdn'
--CONFIG_LIB_AREACODE=y
- #
- # Runtime configuration tools
-@@ -36,18 +34,20 @@
- CONFIG_ISDNCTRL_CONF=y
- CONFIG_ISDNCTRL_TIMRU=y
- CONFIG_IPROFD=y
-+#CONFIG_DIVERTCTRL=y
- #
- # Card configuration tools
- #
--# CONFIG_TELESCTRL is not set
-+CONFIG_TELESCTRL=y
- CONFIG_HISAXCTRL=y
- CONFIG_ICNCTRL=y
- # CONFIG_ICNCTRL_DEBUG is not set
- CONFIG_PCBITCTL=y
- CONFIG_AVMCAPICTRL=y
-+#CONFIG_EICONCTRL=y
- CONFIG_LOOPCTRL=y
--CONFIG_LOOPCTRL_LOOPDIR='/usr/src/linux/drivers/isdn/isdnloop'
-+CONFIG_LOOPCTRL_LOOPDIR='/usr/src/linux-2.4/drivers/isdn/isdnloop'
- # CONFIG_LOOPCTRL_DEBUG is not set
- #
-@@ -64,14 +64,20 @@
- CONFIG_ISDNLOG_USERFILE='isdnlog.users'
- CONFIG_ISDNLOG_CHARGEFILE='charge.dat'
- CONFIG_ISDNLOG_LOGFILE='/var/log/isdn.log'
--CONFIG_ISDNLOG_RELOADCMD='reload'
--CONFIG_ISDNLOG_STOPCMD='stop'
-+CONFIG_ISDNLOG_RELOADCMD='/etc/rc.d/init.d/isdn restart'
-+CONFIG_ISDNLOG_STOPCMD='/etc/rc.d/init.d/isdn stop'
- CONFIG_ISDNLOG_REBOOTCMD='/sbin/reboot'
- CONFIG_ISDNLOG_OLDI4LCONFDIR='/etc/isdnlog'
- CONFIG_ISDNLOG_OLDI4LCONFFILE='isdnlog.conf'
- # CONFIG_ISDNLOG_POSTGRES is not set
- # CONFIG_ISDNLOG_MYSQLDB is not set
-+# CONFIG_ISDNLOG_ORACLE is not set
- CONFIG_ISDN_LOG_DE=y
-+CONFIG_ISDN_LOG_CC_DE=y
-+CONFIG_ISDN_LOG_DEST_DE=y
-+# CONFIG_ISDN_LOG_DEST_AT is not set
-+# CONFIG_ISDN_LOG_DEST_NL is not set
-+# CONFIG_ISDN_LOG_DEST_CH is not set
- CONFIG_IPPPSTATS=y
- CONFIG_XISDNLOAD=y
- CONFIG_XMONISDN=y
-@@ -79,8 +85,8 @@
- #
- # Options for xmonisdn
- #
--CONFIG_XMONISDN_UPCMD='/sbin/netup'
--CONFIG_XMONISDN_DOWNCMD='/sbin/netdown'
-+CONFIG_XMONISDN_UPCMD='/sbin/ifup'
-+CONFIG_XMONISDN_DOWNCMD='/sbin/ifdown'
- #
- # Applications
-@@ -94,23 +100,22 @@
- VBOX_LOGDIR='/var/log/vbox'
- VBOX_PIDDIR='/var/run'
- VBOX_LOCKDIR='/var/lock'
--VBOX_DOCDIR='/usr/doc/vbox'
--VBOX_TCL='tcl8.0'
-+VBOX_DOCDIR='/usr/share/doc/vbox'
-+VBOX_TCL='tcl8.5'
-+# VBOX_SUSPEND_ID is not set
- CONFIG_IPPPD=y
- #
- # Options for ipppd
- #
--CONFIG_IPPPD_MSCHAP=y
-+# CONFIG_IPPPD_MSCHAP is not set
-+CONFIG_IPPP_FILTER=y
- # CONFIG_IPPPD_RADIUS is not set
- # CONFIG_RADIUS_WTMP_LOGGING is not set
- RADIUS_CLIENT_CONFIG_FILE=''
- CONFIG_CAPIFAX=y
- CONFIG_RCAPID=y
--#
--# Documentation
--#
--CONFIG_GENMAN=y
--CONFIG_FAQ=y
--CONFIG_FAQDIR='/usr/doc/faq/isdn4linux'
-+# CAPI plugins
-+CONFIG_PPPDCAPIPLUGIN=y
-+
---- isdn4k-utils-CVS-2003-09-23/ipppd/ccp.c.redhat     2000-11-12 17:06:42.000000000 +0100
-+++ isdn4k-utils-CVS-2003-09-23/ipppd/ccp.c    2004-01-20 19:14:07.000000000 +0100
-@@ -41,7 +41,7 @@
- #include "compressions.h"
--#if 0
-+#if HAVE_LZSCOMP_H
- #include <linux/isdn_lzscomp.h>
- #else
- #include "../ipppcomp/isdn_lzscomp.h"
---- isdn4k-utils-CVS-2005-02-16/ipppd/Makefile.in.redhat       2004-08-30 16:56:36.000000000 +0200
-+++ isdn4k-utils-CVS-2005-02-16/ipppd/Makefile.in      2005-02-16 18:42:54.119955183 +0100
-@@ -15,10 +15,10 @@
- MANDIR        := @CONFIG_MANDIR@
- CC            := @CC@
- INSTALL       := @INSTALL@
--INSTALL_DIR   := $(INSTALL) -m 0755 -o 0 -g 0 -d
--INSTALL_SBIN  := $(INSTALL) -m 0700 -o 0 -g 0
--INSTALL_BIN   := $(INSTALL) -m 0755 -o 0 -g 0
--INSTALL_DATA  := $(INSTALL) -m 0644 -o 0 -g 0
-+INSTALL_DIR   := $(INSTALL) -m 0755 -d
-+INSTALL_SBIN  := $(INSTALL) -m 0700 
-+INSTALL_BIN   := $(INSTALL) -m 0755
-+INSTALL_DATA  := $(INSTALL) -m 0644
- RADIUS_CLIENT_CONFIG_FILE := @RADIUS_CLIENT_CONFIG_FILE@
- ifeq (@CONFIG_IPPPD_MSCHAP@,y)
-@@ -73,7 +73,7 @@
- DEBUG_FLAGS   = @CONFIG_IPPPD_DEBUGFLAGS@
- COMPILE_FLAGS = @CFLAGS@
--CFLAGS        = -O2 -fomit-frame-pointer -Wall
-+CFLAGS        = $(CFLAGS)
- VER           = 2.2.0
- # it's a hack
---- isdn4k-utils-CVS-2005-02-16/isdnlog/tools/Makefile.cflags  2005-02-16 18:53:15.393382578 +0100
-+++ isdn4k-utils-CVS-2005-02-16/isdnlog/tools/Makefile 2005-02-16 18:53:51.914999474 +0100
-@@ -1,4 +1,4 @@
--CC=gcc -m486 -O2 -Wall -DSTANDALONE -I. -I.. -I../isdnlog -I../connect -I../../lib
-+CC=gcc $(CFLAGS) -DSTANDALONE -I. -I.. -I../isdnlog -I../connect -I../../lib
- #CC=gcc -m486 -O2 -g -pg -Wall -DSTANDALONE -I. -I.. -I../isdnlog
- all: rate-at
---- isdn4k-utils-CVS-2005-02-16/lib/Makefile.cflags    2005-02-16 19:04:04.338731270 +0100
-+++ isdn4k-utils-CVS-2005-02-16/lib/Makefile   2005-02-16 19:04:24.150811068 +0100
-@@ -28,7 +28,7 @@
- # USER CONFIGURATION AREA
- ######################################################################
--CFLAGS      = -g -Wall -pipe #-O6
-+CFLAGS      = $(CFLAGS)
- DEFS        =
- ifndef _CC
- export _CC  = gcc
-diff -up isdn4k-utils-CVS-2009-10-20/Makefile.me isdn4k-utils-CVS-2009-10-20/Makefile
---- isdn4k-utils-CVS-2009-10-20/Makefile.me    2009-10-20 12:28:37.000000000 +0200
-+++ isdn4k-utils-CVS-2009-10-20/Makefile       2009-10-20 12:29:14.000000000 +0200
-@@ -18,8 +18,8 @@ LIBDIR:=/usr/lib
- # Following line is important for lib and isdnlog (sl).
- export ROOTDIR=$(shell pwd)
--ifeq (.config,$(wildcard .config))
--include .config
-+ifeq (.config.h,$(wildcard .config.h))
-+include .config.h
- do-it-all:      subtargets
- else
- CONFIGURATION = config
-@@ -134,14 +134,8 @@ rootperm:
- install:
-       set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i install; done
--      @: || if [ -c $(DESTDIR)/dev/isdnctrl0 ] && ls -l $(DESTDIR)/dev/isdnctrl0 | egrep "[[:space:]]45,[[:space:]]+64[[:space:]]" > /dev/null; \
--      then \
--              /bin/echo -e '(some) ISDN devices already exist, not creating them.\nUse scripts/makedev.sh manually if necessary.'; \
--      else \
--              sh scripts/makedev.sh $(DESTDIR) ; \
--      fi
--uninstall: rootperm
-+uninstall:
-       set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i uninstall; done
- #
diff --git a/isdn4k-utils/patches/005-isdn4k-utils-CVS-2010-05-01-capi.patch b/isdn4k-utils/patches/005-isdn4k-utils-CVS-2010-05-01-capi.patch
deleted file mode 100644 (file)
index f5998eb..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up isdn4k-utils-CVS-2006-07-20/capi20.new/capidyn.c.orig isdn4k-utils-CVS-2006-07-20/capi20.new/capidyn.c
---- isdn4k-utils-CVS-2006-07-20/capi20.new/capidyn.c.orig      2009-01-19 15:18:10.000000000 +0100
-+++ isdn4k-utils-CVS-2006-07-20/capi20.new/capidyn.c   2009-01-19 15:19:30.000000000 +0100
-@@ -26,7 +26,7 @@
- #include <dlfcn.h>
--#define LIBCAPI       "libcapi20.so"
-+#define LIBCAPI       "libcapi20.so.3"
- static int loadlib(void);
- /* ---------------------------------------------------------------------- */
diff --git a/isdn4k-utils/patches/006-isdn4k-utils-CVS-2010-05-01-capi-soname.patch b/isdn4k-utils/patches/006-isdn4k-utils-CVS-2010-05-01-capi-soname.patch
deleted file mode 100644 (file)
index a22f79a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-*** isdn4k-utils/capi20.new/capi20.c.org       2010-05-07 20:56:21.000000000 +0200
---- isdn4k-utils/capi20.new/capi20.c   2010-05-07 22:01:45.000000000 +0200
-***************
-*** 590,598 ****
-       psDir = opendir( pnModuleDir );
-       if ( psDir != NULL ) {
-               /* read entry by entry */
-               while ( ( psEntry = readdir( psDir ) ) != NULL )  {
-!                      /* skip ".", ".." and files which do not end with "so" */
-                       nLen = strlen( psEntry -> d_name );
-  
-                       switch ( nLen ) {
-                               case 1:
---- 590,598 ----
-       psDir = opendir( pnModuleDir );
-       if ( psDir != NULL ) {
-               /* read entry by entry */
-               while ( ( psEntry = readdir( psDir ) ) != NULL )  {
-!                      /* skip ".", ".." and files which do not end with "so.?" */
-                       nLen = strlen( psEntry -> d_name );
-  
-                       switch ( nLen ) {
-                               case 1:
-***************
-*** 605,613 ****
-                                               continue;
-                                       }
-                                       break;
-                               default:
-!                                      if ( strncmp( psEntry -> d_name + nLen - 3, ".so", nLen ) ) {
-                                               continue;
-                                       }
-                                       break;
-                       }
---- 605,613 ----
-                                               continue;
-                                       }
-                                       break;
-                               default:
-!                                      if ( strncmp( psEntry -> d_name + nLen - 5, ".so.0", 4 ) ) {
-                                               continue;
-                                       }
-                                       break;
-                       }
diff --git a/isdn4k-utils/patches/007-isdn4k-utils-autoconf-2.6.4-quoting.patch b/isdn4k-utils/patches/007-isdn4k-utils-autoconf-2.6.4-quoting.patch
deleted file mode 100644 (file)
index c4b3144..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up isdn4k-utils-CVS-2009-10-20-patched/isdnlog/configure.in.orig isdn4k-utils-CVS-2009-10-20-patched/isdnlog/configure.in
---- isdn4k-utils-CVS-2009-10-20-patched/isdnlog/configure.in.orig      2010-05-03 14:50:46.000000000 +0200
-+++ isdn4k-utils-CVS-2009-10-20-patched/isdnlog/configure.in   2010-05-03 14:58:15.000000000 +0200
-@@ -140,8 +140,8 @@ if test -e tools/cdb/i4l_cdb.c  ; then
-     AC_MSG_RESULT(Using 'cdb' as database)
- else
- AC_CHECK_LIB(gdbm, gdbm_open, DBMLIB=-lgdbm; AC_DEFINE(HAVE_LIBGDBM, 1, [Use libgdbm]),
--      AC_CHECK_LIB(dbm, dbm_open, DBMLIB=-ldbm; AC_DEFINE(HAVE_LIBDBM, 1, [Use libdbm]),
--              AC_CHECK_LIB(db, dbm_open, DBMLIB=-ldb; AC_DEFINE(HAVE_LIBDB, 1, [use libdb]))))
-+      [AC_CHECK_LIB(dbm, dbm_open, DBMLIB=-ldbm; AC_DEFINE(HAVE_LIBDBM, 1, [Use libdbm]),
-+              [AC_CHECK_LIB(db, dbm_open, DBMLIB=-ldb; AC_DEFINE(HAVE_LIBDB, 1, [use libdb]))])])
- fi
- AC_DEFINE_UNQUOTED(RDBEXT,"$RDBEXT",[rdb extension])
diff --git a/isdn4k-utils/patches/008-isdn4k-utils-capiinit.patch b/isdn4k-utils/patches/008-isdn4k-utils-capiinit.patch
deleted file mode 100644 (file)
index 7593d07..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
---- isdn4k-utils.orig/capiinit/capiinit.c      2006-04-18 19:27:03.689945766 +0200
-+++ isdn4k-utils/capiinit/capiinit.c   2006-04-18 19:36:53.130636890 +0200
-@@ -1251,6 +1251,7 @@
-       if (check_procfs() < 0) return -1;
-       if (check_for_kernelcapi() < 0) return -1;
-       if (check_for_capi() < 0) return -1;
-+      sleep(5); /* wait until the device node is created successfully by udev */
-       if (check_for_devcapi() < 0) return -1;
-       if (check_for_capifs() < 0) return 0; /* only warning */
-       if (check_for_capifs_mounted() < 0) return -1;
---- isdn4k-utils.orig/capiinit/capi.conf       2006-04-18 19:37:43.515250539 +0200
-+++ isdn4k-utils/capiinit/capi.conf    2006-04-18 19:37:53.953559630 +0200
-@@ -1,10 +1,10 @@
- # card                file    proto   io      irq     mem     cardnr  options
- #b1isa                b1.t4   DSS1    0x150   7       -       -       P2P
--b1pci         b1.t4   DSS1    -       -       -       -
--c4            c4.bin  DSS1    -       -       -       -
--c4            -       DSS1    -       -       -       -
--c4            -       DSS1    -       -       -       -       P2P
--c4            -       DSS1    -       -       -       -       P2P
-+#b1pci                b1.t4   DSS1    -       -       -       -
-+#c4           c4.bin  DSS1    -       -       -       -
-+#c4           -       DSS1    -       -       -       -
-+#c4           -       DSS1    -       -       -       -       P2P
-+#c4           -       DSS1    -       -       -       -       P2P
- #c2           c2.bin  DSS1    -       -       -       -
- #c2           -       DSS1    -       -       -       -
- #t1isa                t1.t4   DSS1    0x340   9       -       0
---- isdn4k-utils-CVS-2003-09-23/capiinit/capiinit.c.capi       2006-04-18 20:53:22.437430551 +0200
-+++ isdn4k-utils-CVS-2003-09-23/capiinit/capiinit.c    2006-04-19 11:50:56.385891286 +0200
-@@ -1495,8 +1496,8 @@
-               unload_module("capiutil");
-               if ((mp = mounted("capifs")) != 0 && strcmp(mp, "/dev/capi") == 0)
-                       system("umount /dev/capi");
--              if (filesystem_available("capifs"))
--                      unload_filesystem("capifs");
-+              /*if (filesystem_available("capifs"))
-+                      unload_filesystem("capifs"); */
-       }
-       if (cardname && cname[0] == 0) {
-               fprintf(stderr,"ERROR: card \"%s\"  not found\n", cardname);
diff --git a/isdn4k-utils/patches/009-isdn4k-utils-man.patch b/isdn4k-utils/patches/009-isdn4k-utils-man.patch
deleted file mode 100644 (file)
index 55eb37b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- isdn4k-utils/xmonisdn/Makefile.in.man      Mon Oct 18 04:35:44 1999
-+++ isdn4k-utils/xmonisdn/Makefile.in  Tue Jun 19 21:36:11 2001
-@@ -51,7 +51,7 @@
-       CFLAGS= ; MAKEFLAGS= ; $(MAKE) -f Makefile EXTRA_DEFINES="$(I4LU_DEFINES)"
-       rm -rf X11
--xmonisdn.man: xmonisdn.man.in Makefile
-+xmonisdn.man: xmonisdn.man.in
-       MANDATE=`grep CHECKIN $< | awk '{print $$4}'`; \
-       sed \
-          -e "s#\@MANDATE\@#$${MANDATE}#g" \
-@@ -60,7 +60,7 @@
-            -e s,\@CONFIG_XMONISDN_DOWNCMD\@,${CONFIG_XMONISDN_DOWNCMD},g \
-          < $< > $@
--config:
-+config: xmonisdn.man
-       @cp Makefile.in GNUmakefile
-       @xmkmf
diff --git a/isdn4k-utils/patches/010-isdn4k-utils-misc-overflow-in-capi-subsystem.patch b/isdn4k-utils/patches/010-isdn4k-utils-misc-overflow-in-capi-subsystem.patch
deleted file mode 100644 (file)
index c840672..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -up isdn4k-utils-CVS-2006-07-20/capi20/convert.c.orig isdn4k-utils-CVS-2006-07-20/capi20/convert.c
---- isdn4k-utils-CVS-2006-07-20/capi20/convert.c.orig  2009-01-19 17:24:26.000000000 +0100
-+++ isdn4k-utils-CVS-2006-07-20/capi20/convert.c       2009-01-19 17:25:42.000000000 +0100
-@@ -894,8 +894,12 @@ static char *p = 0;
- static void bufprint(char *fmt,...)
- {
-       va_list f;
-+      size_t remain = (p >= buf && p < buf+sizeof(buf))
-+                                ? buf+sizeof(buf)-p
-+                                : 0;
-+
-       va_start(f, fmt);
--      vsprintf(p, fmt, f);
-+      vsnprintf(p, remain, fmt, f);
-       va_end(f);
-       p += strlen(p);
- }
diff --git a/isdn4k-utils/patches/011-isdn4k-utils-pppcapiplugin-libdir.patch b/isdn4k-utils/patches/011-isdn4k-utils-pppcapiplugin-libdir.patch
deleted file mode 100644 (file)
index 133345b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-diff -Nur a/pppdcapiplugin/Makefile.template b/pppdcapiplugin/Makefile.template
---- a/pppdcapiplugin/Makefile.template 2001-05-01 14:43:49.000000000 +0200
-+++ b/pppdcapiplugin/Makefile.template 2012-03-17 18:36:00.035594144 +0100
-@@ -8,7 +8,7 @@
- #  as published by the Free Software Foundation; either version
- #  2 of the License, or (at your option) any later version.
--PLUGINDIR=${DESTDIR}/usr/lib/pppd/$(PPPVERSION)
-+PLUGINDIR=${DESTDIR}${LIBDIR}/pppd/$(PPPVERSION)
diff --git a/isdn4k-utils/patches/012-isdn4k-utils-sh-linux.patch b/isdn4k-utils/patches/012-isdn4k-utils-sh-linux.patch
deleted file mode 100644 (file)
index c63d42d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- isdn4k-utils-CVS-2006-07-20/ipppd/main.c.org       2008-07-06 00:10:14.000000000 +0900
-+++ isdn4k-utils-CVS-2006-07-20/ipppd/main.c   2008-07-06 00:11:11.000000000 +0900
-@@ -1302,7 +1302,7 @@
-          * what gets passed for a va_list is like a void * in some sense.
-          */
-         a = va_arg(args, void *);
--#ifdef __alpha__       /* always do this? */
-+#if defined(__alpha__) || defined(__sh__)       /* always do this? */
-       n = fmtmsg(buf, buflen + 1, f, a);
- #else
-       n = vfmtmsg(buf, buflen + 1, f, a);
diff --git a/isdn4k-utils/patches/013-isdn4k-utils-statfs.patch b/isdn4k-utils/patches/013-isdn4k-utils-statfs.patch
deleted file mode 100644 (file)
index 7c6b2c3..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
---- isdn4k-utils-CVS-2005-03-09/vbox/src/vboxgetty.c.old       2000-11-30 16:35:20.000000000 +0100
-+++ isdn4k-utils-CVS-2005-03-09/vbox/src/vboxgetty.c   2005-04-20 16:30:31.000000000 +0200
-@@ -434,7 +434,7 @@
- static int check_spool_space(unsigned long need)
- {
-       struct statfs stat;
--      unsigned long have;
-+      unsigned long long have;
-       log(L_DEBUG, "Checking free space on \"%s\"...\n", setup.spool);
-@@ -449,7 +449,7 @@
-       {
-               have = (stat.f_bfree * stat.f_bsize);
--              log_line(L_JUNK, "%ld bytes available; %ld bytes needed... ", have, need);
-+              log_line(L_JUNK, "%lld bytes available; %ld bytes needed... ", have, need);
-               if (have >= need)
-               {
---- isdn4k-utils-CVS-2005-03-09/eurofile/src/wuauth/extensions.h.old   2005-04-20 16:35:37.000000000 +0200
-+++ isdn4k-utils-CVS-2005-03-09/eurofile/src/wuauth/extensions.h       2005-04-20 16:37:02.000000000 +0200
-@@ -42,3 +42,8 @@
- #define ARG8    entry->arg[8]
- #define ARG9    entry->arg[9]
- #define ARG     entry->arg
-+
-+#if defined(HAVE_STATVFS) || defined(HAVE_SYS_VFS) || defined (HAVE_SYS_MOUNT)
-+unsigned long long getSize(s);
-+#endif
-+
---- isdn4k-utils-CVS-2005-03-09/eurofile/src/wuauth/extensions.c.old   2005-04-20 16:20:17.000000000 +0200
-+++ isdn4k-utils-CVS-2005-03-09/eurofile/src/wuauth/extensions.c       2005-04-20 16:24:56.000000000 +0200
-@@ -154,7 +154,7 @@
- }
- #if defined(HAVE_STATVFS)
--int getSize(s)
-+unsigned long long getSize(s)
- char *s;
- {
-     int c;
-@@ -163,10 +163,10 @@
-     if (( c = statvfs(s, &buf)) != 0)
-         return(0);
--    return(buf.f_bavail * buf.f_frsize / 1024);
-+    return((unsigned long long)(buf.f_bavail * buf.f_frsize / 1024));
- }
- #elif defined(HAVE_SYS_VFS) || defined (HAVE_SYS_MOUNT)
--int getSize(s)
-+unsigned long long getSize(s)
- char *s;
- {
-     int c;
-@@ -175,7 +175,7 @@
-     if (( c = statfs(s, &buf)) != 0)
-         return(0);
--    return(buf.f_bavail * buf.f_bsize / 1024);
-+    return((unsigned long long)(buf.f_bavail * buf.f_bsize / 1024));
- }
- #endif
-@@ -236,7 +236,7 @@
-             case 'F':
- #if defined(HAVE_STATVFS) || defined(HAVE_SYS_VFS) || defined(HAVE_SYS_MOUNT)
--                sprintf(outptr, "%lu", getSize("."));
-+                sprintf(outptr, "%llu",(unsigned long long)getSize("."));
- #endif
-                 break;
---- isdn4k-utils-CVS-2005-03-09/eurofile/src/wuauth/divfunc.c.old      2001-03-01 15:59:14.000000000 +0100
-+++ isdn4k-utils-CVS-2005-03-09/eurofile/src/wuauth/divfunc.c  2005-04-20 16:34:26.000000000 +0200
-@@ -121,7 +121,7 @@
-             case 'F':
- #if defined(HAVE_STATVFS) || defined(HAVE_SYS_VFS) || defined(HAVE_SYS_MOUNT)
--                sprintf(outptr, "%lu", getSize("."));
-+                sprintf(outptr, "%llu",(unsigned long long)getSize("."));
- #endif
-                 break;
diff --git a/isdn4k-utils/patches/014-ppp-userpass.patch b/isdn4k-utils/patches/014-ppp-userpass.patch
deleted file mode 100644 (file)
index 82111ca..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/pppdcapiplugin/Rules.make.orig   2009-10-20 11:07:28.000000000 +0200
-+++ b/pppdcapiplugin/Rules.make        2010-07-22 20:17:24.000000000 +0200
-@@ -24,7 +24,7 @@
-       $(CC) -o $@ $(LDFLAGS) capiplugin.o capiconn.o -lcapi20dyn
- userpass.so: userpass.o
--      $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $(MYCFLAGS) -nostdlib userpass.o
-+      $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $(MYCFLAGS) userpass.o
- %.o: %.c
-       $(CC) $(CFLAGS) $(MYCFLAGS) -c -o $@ $<
diff --git a/isdn4k-utils/patches/015-isdn4k-utils-fix-ipppd.patch b/isdn4k-utils/patches/015-isdn4k-utils-fix-ipppd.patch
deleted file mode 100644 (file)
index ebe9e8e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-*** isdn4k-utils-CVS-2010-05-01-patched/ipppd.org/main.c       1969-12-31 20:03:58.571929416 -0500
---- isdn4k-utils-CVS-2010-05-01-patched/ipppd/main.c   2012-07-18 05:46:07.636040971 -0400
-***************
-*** 1301,1309 ****
-           * XXX We assume a va_list is either a pointer or an array, so
-           * what gets passed for a va_list is like a void * in some sense.
-           */
-          a = va_arg(args, void *);
-! #if defined(__alpha__) || defined(__sh__)       /* always do this? */
-       n = fmtmsg(buf, buflen + 1, f, a);
-  #else
-       n = vfmtmsg(buf, buflen + 1, f, a);
-  #endif
---- 1301,1309 ----
-           * XXX We assume a va_list is either a pointer or an array, so
-           * what gets passed for a va_list is like a void * in some sense.
-           */
-          a = va_arg(args, void *);
-! #if defined(__alpha__) || defined(__sh__) || defined ( __arm__ )      /* always do this? */
-       n = fmtmsg(buf, buflen + 1, f, a);
-  #else
-       n = vfmtmsg(buf, buflen + 1, f, a);
-  #endif
diff --git a/isdn4k-utils/systemd/capi.service b/isdn4k-utils/systemd/capi.service
deleted file mode 100644 (file)
index fc504fc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Capi services for passiv ISDN cards
-After=syslog.target
-
-[Service]
-ExecStart=/usr/sbin/capiinit start
-ExecStop=/usr/sbin/capiinit stop
-
-[Install]
-WantedBy=multi-user.target
diff --git a/isdn4k-utils/systemd/isdn.service b/isdn4k-utils/systemd/isdn.service
deleted file mode 100644 (file)
index 3442737..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=ISDN Services
-Requires=syslog.target network.target
-
-[Service]
-Type=oneshot
-ExecStart=/usr/libexec/isdn start
-ExecStop=/usr/libexec/isdn stop
-Environment=BOOTUP=serial
-Environment=CONSOLETYPE=serial
-StandardError=syslog
-RemainAfterExit=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/isl/isl.nm b/isl/isl.nm
new file mode 100644 (file)
index 0000000..8c758ca
--- /dev/null
@@ -0,0 +1,53 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = isl
+version    = 0.12.2
+release    = 1
+
+groups     = System/Libraries
+url        = http://isl.gforge.inria.fr/
+license    = MIT
+summary    = Integer Set Library
+
+description
+       isl is a library for manipulating sets and relations of integer points
+       bounded by linear constraints. Supported operations on sets include
+       intersection, union, set difference, emptiness check, convex hull,
+       (integer) affine hull, integer projection, computing the lexicographic
+       minimum using parametric integer programming, coalescing and parametric
+       vertex enumeration.
+end
+
+source_dl += http://isl.gforge.inria.fr/
+sources    = %{thisapp}.tar.lzma
+
+build
+       requires
+               gmp-devel
+       end
+
+       test
+               make check
+       end
+
+       install_cmds
+               install -dm755 %{BUILDROOT}/usr/share/gdb/auto-load/%{libdir}
+               mv -v %{BUILDROOT}%{libdir}/libisl.so.*-gdb.py \
+                       %{BUILDROOT}%{datadir}/gdb/auto-load/%{libdir}
+       end
+end
+
+packages
+       package %{name}
+
+       package %{name}-devel
+               template DEVEL
+       end
+
+       package %{name}-debuginfo
+               template DEBUGINFO
+       end
+end
index 53d2b73e0bf99245838ec66abab5482106cf9450..bebfc29c078a441026b49c0155c0d91893166f7e 100644 (file)
--- a/iw/iw.nm
+++ b/iw/iw.nm
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = iw
-version    = 3.10
+version    = 3.17
 release    = 1
 
 groups     = System/Base
@@ -19,7 +19,7 @@ description
 end
 
 source_dl  = https://www.kernel.org/pub/software/network/iw/
-sources    = %{thisapp}.tar.bz2
+sources    = %{thisapp}.tar.xz
 
 build
        requires
diff --git a/json-c/json-c.nm b/json-c/json-c.nm
new file mode 100644 (file)
index 0000000..3247bba
--- /dev/null
@@ -0,0 +1,62 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = json-c
+version    = 0.12
+reldate    = 20140410
+release    = 1
+thisapp    = %{name}-%{version}-%{reldate}
+
+groups     = System/Libraries
+url        = https://github.com/json-c/json-c/wiki
+license    = MIT
+summary    = A JSON implementation in C
+
+description
+       JSON-C implements a reference counting object model that allows you to
+       easily construct JSON objects in C, output them as JSON formatted strings
+       and parse JSON formatted strings back into the C representation of JSON
+       objects.
+end
+
+source_dl  = https://github.com/json-c/json-c/archive/
+
+build
+       requires
+               autoconf
+               automake
+               libtool
+       end
+
+       DIR_APP = %{DIR_SRC}/%{name}-%{thisapp}
+
+       prepare_cmds
+               sed -i 's|-Werror ||g' Makefile.am.inc
+
+               # Bump the soname manually.
+               sed -i 's#2:1:0#3:0:0#' Makefile.am
+
+               autoreconf -vif
+       end
+
+       configure_options += \
+               --enable-rdrand
+
+       test
+               make check
+       end
+end
+
+packages
+       package %{name}
+
+       package %{name}-devel
+               template DEVEL
+       end
+
+       package %{name}-debuginfo
+               template DEBUGINFO
+       end
+end
index 1fdcf397259603eacfbbd06bddea9229f40a0864..2d1f04e31f5a4b0244007730ab18f3a1ef4788cd 100644 (file)
@@ -1,7 +1,7 @@
 CONFIG_ARM=y
+CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_MIGHT_HAVE_PCI=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_ARCH_HAS_CPUFREQ=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_ARM_PATCH_PHYS_VIRT=y
 
@@ -9,8 +9,7 @@ CONFIG_ARM_PATCH_PHYS_VIRT=y
 # IRQ subsystem
 #
 CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_KTIME_SCALAR=y
+CONFIG_HANDLE_DOMAIN_IRQ=y
 
 #
 # Timers subsystem
@@ -45,6 +44,7 @@ CONFIG_LBDAF=y
 #
 # System Type
 #
+CONFIG_ARCH_MULTIPLATFORM=y
 # CONFIG_ARCH_INTEGRATOR is not set
 # CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_VERSATILE is not set
@@ -73,22 +73,24 @@ CONFIG_LBDAF=y
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C24XX is not set
 # CONFIG_ARCH_S3C64XX is not set
-# CONFIG_ARCH_S5P64X0 is not set
-# CONFIG_ARCH_S5PC100 is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP1 is not set
 
 #
-# Qualcomm SoC Selection
+# CPU Core family selection
 #
-# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_MULTI_V6 is not set
+
+#
+# Hisilicon platform type
+#
+CONFIG_ARCH_MXC=y
+# CONFIG_MXC_DEBUG_BOARD is not set
 
 #
-# Versatile Express platform type
+# OMAP Legacy Platform Data Board Type
 #
-CONFIG_PLAT_ORION=y
+# CONFIG_PLAT_SPEAR is not set
 
 #
 # Processor Type
@@ -101,13 +103,12 @@ CONFIG_CPU_CP15_MMU=y
 #
 # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
 CONFIG_ARM_THUMB=y
+# CONFIG_CPU_BIG_ENDIAN is not set
 # CONFIG_CPU_ICACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
 CONFIG_KUSER_HELPERS=y
 CONFIG_OUTER_CACHE=y
-CONFIG_CACHE_FEROCEON_L2=y
-# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
-CONFIG_ARM_NR_BANKS=8
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
 CONFIG_MULTI_IRQ_HANDLER=y
 
 #
@@ -123,7 +124,7 @@ CONFIG_PCI_SYSCALL=y
 #
 # PCI host controller drivers
 #
-# CONFIG_PCI_MVEBU is not set
+CONFIG_PCI_HOST_GENERIC=y
 # CONFIG_PCCARD is not set
 
 #
@@ -133,9 +134,6 @@ CONFIG_VMSPLIT_3G=y
 # CONFIG_VMSPLIT_2G is not set
 # CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_HZ_FIXED=0
-# CONFIG_HZ_200 is not set
-# CONFIG_HZ_500 is not set
 CONFIG_AEABI=y
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
@@ -167,11 +165,12 @@ CONFIG_AUTO_ZRELADDR=y
 #
 CONFIG_CPU_FREQ_STAT=y
 # CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPUFREQ_DT=m
 
 #
 # ARM CPU frequency scaling drivers
 #
-# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
+CONFIG_ARM_IMX6Q_CPUFREQ=m
 
 #
 # At least one emulation must be selected
@@ -182,6 +181,7 @@ CONFIG_VFP=y
 # Power management options
 #
 CONFIG_APM_EMULATION=y
+CONFIG_PM_OPP=y
 CONFIG_CPU_PM=y
 CONFIG_ARM_CPU_SUSPEND=y
 
@@ -202,6 +202,7 @@ CONFIG_BPF_JIT=y
 # Generic Driver Options
 #
 CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_SOC_BUS=y
 CONFIG_DMA_CMA=y
 
 #
@@ -213,13 +214,13 @@ CONFIG_CMA_SIZE_SEL_MBYTES=y
 # CONFIG_CMA_SIZE_SEL_MIN is not set
 # CONFIG_CMA_SIZE_SEL_MAX is not set
 CONFIG_CMA_ALIGNMENT=8
-CONFIG_CMA_AREAS=7
 
 #
 # Bus devices
 #
-CONFIG_MVEBU_MBUS=y
-CONFIG_ARM_CCI=y
+CONFIG_BRCMSTB_GISB_ARB=y
+# CONFIG_ARM_CCN is not set
+CONFIG_VEXPRESS_CONFIG=y
 CONFIG_DTC=y
 CONFIG_OF=y
 
@@ -254,7 +255,8 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
 # CONFIG_SENSORS_LIS3LV02D is not set
 # CONFIG_SGI_IOC4 is not set
 # CONFIG_HP_ILO is not set
-# CONFIG_PCH_PHUB is not set
+CONFIG_SRAM=y
+CONFIG_VEXPRESS_SYSCFG=y
 
 #
 # SCSI Transports
@@ -268,6 +270,16 @@ CONFIG_SCSI_MVSAS_DEBUG=y
 # CONFIG_MEGARAID_NEWGEN is not set
 CONFIG_SCSI_NSP32=m
 
+#
+# Controllers with non-SFF native interface
+#
+CONFIG_AHCI_IMX=m
+
+#
+# PATA SFF controllers with BMDMA
+#
+CONFIG_PATA_IMX=m
+
 #
 # IEEE 1394 (FireWire) support
 #
@@ -288,9 +300,13 @@ CONFIG_MII=y
 # Distributed Switch Architecture drivers
 #
 CONFIG_AMD8111_ETH=y
+CONFIG_AMD_XGBE=m
+CONFIG_ARC_EMAC_CORE=m
 CONFIG_ARC_EMAC=m
+CONFIG_EMAC_ROCKCHIP=m
 CONFIG_NET_CADENCE=y
 CONFIG_BCMGENET=m
+CONFIG_SYSTEMPORT=m
 # CONFIG_CHELSIO_T1_1G is not set
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_CS89x0=m
@@ -303,9 +319,11 @@ CONFIG_DM9000=m
 CONFIG_NET_VENDOR_FARADAY=y
 CONFIG_FTMAC100=m
 CONFIG_FTGMAC100=m
+CONFIG_NET_VENDOR_FREESCALE=y
+CONFIG_FEC=m
+CONFIG_NET_VENDOR_HISILICON=y
+CONFIG_HIX5HD2_GMAC=m
 # CONFIG_I40E_VXLAN is not set
-CONFIG_MV643XX_ETH=m
-CONFIG_MVNETA=m
 # CONFIG_SKGE_GENESIS is not set
 CONFIG_AX88796=m
 CONFIG_AX88796_93CX6=y
@@ -320,24 +338,16 @@ CONFIG_SMC911X=m
 #
 # MII PHY device drivers
 #
+CONFIG_AMD_XGBE_PHY=m
 CONFIG_MDIO_BUS_MUX=m
 CONFIG_MDIO_BUS_MUX_GPIO=m
 CONFIG_MDIO_BUS_MUX_MMIOREG=m
-
-#
-# USB Network Adapters
-#
 # CONFIG_ATH5K_DEBUG is not set
 CONFIG_WIL6210_TRACING=y
 # CONFIG_IPW2100_MONITOR is not set
 # CONFIG_IPW2200_MONITOR is not set
 # CONFIG_IPW2200_QOS is not set
 
-#
-# Input device support
-#
-# CONFIG_INPUT_FF_MEMLESS is not set
-
 #
 # Userland interfaces
 #
@@ -347,11 +357,15 @@ CONFIG_WIL6210_TRACING=y
 # Input Device Drivers
 #
 # CONFIG_KEYBOARD_ADP5520 is not set
+CONFIG_KEYBOARD_IMX=m
 CONFIG_KEYBOARD_PMIC8XXX=m
 # CONFIG_KEYBOARD_STMPE is not set
+CONFIG_KEYBOARD_OMAP4=m
 # CONFIG_KEYBOARD_TC3589X is not set
+CONFIG_KEYBOARD_CAP1106=m
 # CONFIG_INPUT_PM8XXX_VIBRATOR is not set
 CONFIG_INPUT_PMIC8XXX_PWRKEY=m
+CONFIG_INPUT_MAX77693_HAPTIC=m
 # CONFIG_INPUT_MAX8997_HAPTIC is not set
 # CONFIG_INPUT_GPIO_BEEPER is not set
 # CONFIG_INPUT_TWL4030_PWRBUTTON is not set
@@ -381,6 +395,8 @@ CONFIG_SERIAL_8250_EM=m
 #
 # Non-8250 serial port support
 #
+CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y
+CONFIG_SERIAL_IMX=m
 # CONFIG_SERIAL_JSM is not set
 CONFIG_SERIAL_OF_PLATFORM=y
 # CONFIG_SERIAL_SCCNXP is not set
@@ -408,20 +424,17 @@ CONFIG_I2C_SIS630=m
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
+CONFIG_I2C_IMX=m
 CONFIG_I2C_MV64XXX=m
+CONFIG_I2C_RK3X=m
 
 #
 # Pin controllers
 #
 CONFIG_PINMUX=y
 CONFIG_PINCONF=y
-CONFIG_GENERIC_PINCONF=y
 # CONFIG_PINCTRL_AS3722 is not set
-# CONFIG_PINCTRL_BCM281XX is not set
-CONFIG_PINCTRL_MSM=y
-CONFIG_PINCTRL_MSM8X74=m
 # CONFIG_PINCTRL_PALMAS is not set
-CONFIG_PINCTRL_MVEBU=y
 CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
 CONFIG_ARCH_REQUIRE_GPIOLIB=y
 CONFIG_OF_GPIO=y
@@ -430,17 +443,18 @@ CONFIG_GPIO_GENERIC=y
 #
 # Memory mapped GPIO drivers:
 #
+CONFIG_GPIO_GENERIC_PLATFORM=y
 # CONFIG_GPIO_DWAPB is not set
 # CONFIG_GPIO_EM is not set
 # CONFIG_GPIO_ZEVIO is not set
-CONFIG_GPIO_MVEBU=y
-# CONFIG_GPIO_RCAR is not set
+CONFIG_GPIO_MXC=y
 # CONFIG_GPIO_SYSCON is not set
 # CONFIG_GPIO_GRGPIO is not set
 
 #
 # I2C GPIO expanders:
 #
+# CONFIG_GPIO_STMPE is not set
 CONFIG_GPIO_ADNP=m
 
 #
@@ -453,11 +467,6 @@ CONFIG_GPIO_ADNP=m
 #
 # CONFIG_GPIO_MCP23S08 is not set
 
-#
-# MODULbus GPIO expanders:
-#
-CONFIG_GPIO_BCM_KONA=y
-
 #
 # 1-wire Slaves
 #
@@ -472,19 +481,22 @@ CONFIG_GPIO_BCM_KONA=y
 # CONFIG_BATTERY_TWL4030_MADC is not set
 # CONFIG_BATTERY_RX51 is not set
 # CONFIG_CHARGER_TWL4030 is not set
-# CONFIG_CHARGER_MANAGER is not set
 # CONFIG_CHARGER_MAX8997 is not set
 # CONFIG_CHARGER_MAX8998 is not set
 # CONFIG_CHARGER_TPS65090 is not set
 CONFIG_POWER_RESET_AS3722=y
 CONFIG_POWER_RESET_GPIO=y
-# CONFIG_POWER_RESET_QNAP is not set
+CONFIG_POWER_RESET_GPIO_RESTART=y
+CONFIG_POWER_RESET_LTC2952=y
 CONFIG_POWER_RESET_RESTART=y
+CONFIG_POWER_RESET_VERSATILE=y
 CONFIG_POWER_RESET_VEXPRESS=y
+CONFIG_POWER_RESET_SYSCON=y
 
 #
 # Native drivers
 #
+CONFIG_SENSORS_PWM_FAN=m
 CONFIG_SENSORS_VEXPRESS=m
 CONFIG_THERMAL_OF=y
 # CONFIG_CPU_THERMAL is not set
@@ -493,8 +505,9 @@ CONFIG_THERMAL_OF=y
 # Watchdog Device Drivers
 #
 CONFIG_GPIO_WATCHDOG=m
-CONFIG_ORION_WATCHDOG=m
+CONFIG_CADENCE_WATCHDOG=m
 CONFIG_MAX63XX_WATCHDOG=m
+CONFIG_IMX2_WDT=m
 
 #
 # PCI-based Watchdog Cards
@@ -507,76 +520,33 @@ CONFIG_MAX63XX_WATCHDOG=m
 #
 CONFIG_MFD_AS3722=y
 # CONFIG_MFD_ASIC3 is not set
+CONFIG_MFD_HI6421_PMIC=m
 # CONFIG_HTC_EGPIO is not set
 # CONFIG_LPC_ICH is not set
 CONFIG_MFD_PM8XXX=m
 CONFIG_MFD_PM8921_CORE=m
 # CONFIG_MFD_RTSX_PCI is not set
+CONFIG_MFD_RK808=m
+CONFIG_MFD_STMPE=y
 
 #
 # STMicroelectronics STMPE Interface Drivers
 #
+CONFIG_STMPE_I2C=y
 CONFIG_TWL4030_POWER=y
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_TC6387XB is not set
 # CONFIG_MFD_TC6393XB is not set
-CONFIG_VEXPRESS_CONFIG=y
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
+CONFIG_MFD_VEXPRESS_SYSREG=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
 # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
 # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-CONFIG_REGULATOR_88PM800=m
-CONFIG_REGULATOR_ACT8865=m
-CONFIG_REGULATOR_AD5398=m
-CONFIG_REGULATOR_ANATOP=m
-CONFIG_REGULATOR_AAT2870=m
-CONFIG_REGULATOR_AS3711=m
 CONFIG_REGULATOR_AS3722=m
-CONFIG_REGULATOR_BCM590XX=m
-CONFIG_REGULATOR_DA903X=m
-CONFIG_REGULATOR_DA9052=m
-CONFIG_REGULATOR_DA9055=m
-CONFIG_REGULATOR_DA9063=m
-CONFIG_REGULATOR_DA9210=m
-CONFIG_REGULATOR_FAN53555=m
-CONFIG_REGULATOR_ISL6271A=m
-CONFIG_REGULATOR_LP3971=m
-CONFIG_REGULATOR_LP3972=m
-CONFIG_REGULATOR_LP8755=m
-CONFIG_REGULATOR_MAX14577=m
-CONFIG_REGULATOR_MAX1586=m
-CONFIG_REGULATOR_MAX8649=m
-CONFIG_REGULATOR_MAX8660=m
-CONFIG_REGULATOR_MAX8907=m
-CONFIG_REGULATOR_MAX8925=m
-CONFIG_REGULATOR_MAX8952=m
-CONFIG_REGULATOR_MAX8973=m
-CONFIG_REGULATOR_MAX8997=m
-CONFIG_REGULATOR_MAX8998=m
-CONFIG_REGULATOR_MAX77686=m
-CONFIG_REGULATOR_MAX77693=m
-CONFIG_REGULATOR_PALMAS=m
-CONFIG_REGULATOR_PFUZE100=m
-CONFIG_REGULATOR_RC5T583=m
-CONFIG_REGULATOR_S2MPA01=m
-CONFIG_REGULATOR_S2MPS11=m
-CONFIG_REGULATOR_S5M8767=m
-CONFIG_REGULATOR_TPS51632=m
-CONFIG_REGULATOR_TPS62360=m
-CONFIG_REGULATOR_TPS65023=m
-CONFIG_REGULATOR_TPS6507X=m
-CONFIG_REGULATOR_TPS65090=m
+CONFIG_REGULATOR_HI6421=m
+CONFIG_REGULATOR_PWM=m
+CONFIG_REGULATOR_RK808=m
 CONFIG_REGULATOR_TPS65218=m
-CONFIG_REGULATOR_TPS6586X=m
-CONFIG_REGULATOR_TPS65910=m
-CONFIG_REGULATOR_TPS65912=m
-CONFIG_REGULATOR_TPS80031=m
 CONFIG_REGULATOR_VEXPRESS=m
-CONFIG_REGULATOR_WM831X=m
-CONFIG_REGULATOR_WM8350=m
-CONFIG_REGULATOR_WM8400=m
-CONFIG_REGULATOR_WM8994=m
 
 #
 # Multimedia core support
@@ -611,8 +581,8 @@ CONFIG_DVB_TTUSB_DEC=y
 # CONFIG_DVB_PT1 is not set
 # CONFIG_MANTIS_CORE is not set
 # CONFIG_DVB_NGENE is not set
-# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
-# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+CONFIG_VIDEO_MX3=m
+# CONFIG_VIDEO_CODA is not set
 
 #
 # DVB-S (satellite) frontends
@@ -637,9 +607,15 @@ CONFIG_DVB_STV0297=y
 #
 CONFIG_DVB_LNBP21=y
 
+#
+# Graphics support
+#
+CONFIG_IMX_IPUV3_CORE=m
+
 #
 # Direct Rendering Manager
 #
+CONFIG_DRM_MIPI_DSI=y
 CONFIG_DRM_GEM_CMA_HELPER=y
 CONFIG_DRM_KMS_CMA_HELPER=y
 
@@ -648,11 +624,21 @@ CONFIG_DRM_KMS_CMA_HELPER=y
 #
 # CONFIG_DRM_RADEON is not set
 # CONFIG_DRM_NOUVEAU is not set
+CONFIG_DRM_EXYNOS=m
+CONFIG_DRM_EXYNOS_DMABUF=y
+CONFIG_DRM_EXYNOS_HDMI=y
+CONFIG_DRM_EXYNOS_VIDI=y
+CONFIG_DRM_EXYNOS_G2D=y
+CONFIG_DRM_EXYNOS_IPP=y
 CONFIG_DRM_ARMADA=m
-CONFIG_DRM_RCAR_DU=m
-CONFIG_DRM_RCAR_LVDS=y
-CONFIG_DRM_SHMOBILE=m
 # CONFIG_DRM_TILCDC is not set
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+CONFIG_DRM_STI=m
+# CONFIG_DRM_STI_FBDEV is not set
 
 #
 # Frame buffer Devices
@@ -667,10 +653,15 @@ CONFIG_FB_SYS_IMAGEBLIT=y
 #
 # CONFIG_FB_SSD1307 is not set
 # CONFIG_BACKLIGHT_PWM is not set
+# CONFIG_BACKLIGHT_LM3630A is not set
+# CONFIG_BACKLIGHT_LP855X is not set
+# CONFIG_BACKLIGHT_LP8788 is not set
+CONFIG_VIDEOMODE_HELPERS=y
 
 #
 # Console display driver support
 #
+CONFIG_SND_DMAENGINE_PCM=m
 CONFIG_SND_COMPRESS_OFFLOAD=m
 # CONFIG_SND_ALI5451 is not set
 
@@ -679,9 +670,33 @@ CONFIG_SND_COMPRESS_OFFLOAD=m
 #
 CONFIG_SND_ARM=y
 CONFIG_SND_SOC=m
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
 CONFIG_SND_ATMEL_SOC=m
 CONFIG_SND_DESIGNWARE_I2S=m
-CONFIG_SND_KIRKWOOD_SOC=m
+
+#
+# Common SoC Audio options for Freescale CPUs:
+#
+CONFIG_SND_SOC_FSL_ASRC=m
+CONFIG_SND_SOC_FSL_SAI=m
+CONFIG_SND_SOC_FSL_SSI=m
+CONFIG_SND_SOC_FSL_SPDIF=m
+CONFIG_SND_SOC_FSL_ESAI=m
+CONFIG_SND_SOC_FSL_UTILS=m
+CONFIG_SND_SOC_IMX_PCM_DMA=m
+CONFIG_SND_SOC_IMX_AUDMUX=m
+CONFIG_SND_IMX_SOC=m
+CONFIG_SND_SOC_IMX_SSI=m
+
+#
+# SoC Audio support for Freescale i.MX boards:
+#
+CONFIG_SND_SOC_EUKREA_TLV320=m
+CONFIG_SND_SOC_IMX_WM8962=m
+CONFIG_SND_SOC_IMX_ES8328=m
+CONFIG_SND_SOC_IMX_SGTL5000=m
+CONFIG_SND_SOC_IMX_SPDIF=m
+CONFIG_SND_SOC_FSL_ASOC_CARD=m
 
 #
 # SoC Audio support for SuperH
@@ -695,22 +710,36 @@ CONFIG_SND_SOC_ADAU1701=m
 CONFIG_SND_SOC_AK4554=m
 CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
-CONFIG_SND_SOC_CS42L51=m
+CONFIG_SND_SOC_ALC5623=m
+CONFIG_SND_SOC_CS35L32=m
 CONFIG_SND_SOC_CS42L52=m
+CONFIG_SND_SOC_CS42L56=m
 CONFIG_SND_SOC_CS42L73=m
+CONFIG_SND_SOC_CS4265=m
 CONFIG_SND_SOC_CS4270=m
 CONFIG_SND_SOC_CS4271=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_HDMI_CODEC=m
+CONFIG_SND_SOC_ES8328=m
+CONFIG_SND_SOC_ES8328_I2C=m
 CONFIG_SND_SOC_PCM1681=m
 CONFIG_SND_SOC_PCM512x=m
 CONFIG_SND_SOC_PCM512x_I2C=m
 CONFIG_SND_SOC_SGTL5000=m
 CONFIG_SND_SOC_SIGMADSP=m
+CONFIG_SND_SOC_SIGMADSP_I2C=m
 CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m
 CONFIG_SND_SOC_SPDIF=m
+CONFIG_SND_SOC_SSM2602=m
+CONFIG_SND_SOC_SSM2602_I2C=m
+CONFIG_SND_SOC_SSM4567=m
+CONFIG_SND_SOC_STA350=m
+CONFIG_SND_SOC_TAS2552=m
 CONFIG_SND_SOC_TAS5086=m
+CONFIG_SND_SOC_TLV320AIC23=m
+CONFIG_SND_SOC_TLV320AIC23_I2C=m
+CONFIG_SND_SOC_TLV320AIC31XX=m
 CONFIG_SND_SOC_TLV320AIC3X=m
 CONFIG_SND_SOC_WM8510=m
 CONFIG_SND_SOC_WM8523=m
@@ -726,14 +755,10 @@ CONFIG_SND_SOC_WM8776=m
 CONFIG_SND_SOC_WM8804=m
 CONFIG_SND_SOC_WM8903=m
 CONFIG_SND_SOC_WM8962=m
+CONFIG_SND_SOC_WM8978=m
 CONFIG_SND_SOC_TPA6130A2=m
 CONFIG_SND_SIMPLE_CARD=m
 
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD_ORION=y
-
 #
 # USB Imaging devices
 #
@@ -745,13 +770,16 @@ CONFIG_USB_MUSB_AM335X_CHILD=m
 #
 CONFIG_AM335X_CONTROL_USB=m
 CONFIG_AM335X_PHY_USB=m
+CONFIG_USB_MXS_PHY=m
 CONFIG_USB_ULPI=y
 
 #
 # MMC/SD/SDIO Host Controller Drivers
 #
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
 CONFIG_MMC_SDHCI_OF_ARASAN=m
-CONFIG_MMC_MVSDIO=m
+CONFIG_MMC_SDHCI_ESDHC_IMX=m
+CONFIG_MMC_MXC=m
 CONFIG_MMC_DW=m
 CONFIG_MMC_DW_IDMAC=y
 CONFIG_MMC_DW_PLTFM=m
@@ -760,9 +788,9 @@ CONFIG_MMC_DW_K3=m
 CONFIG_MMC_DW_PCI=m
 
 #
-# LED drivers
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
 #
-CONFIG_LEDS_REGULATOR=m
+CONFIG_LEDS_SYSCON=y
 
 #
 # iptables trigger is under Netfilter config (LED target)
@@ -774,52 +802,59 @@ CONFIG_LEDS_REGULATOR=m
 #
 CONFIG_RTC_DRV_AS3722=m
 CONFIG_RTC_DRV_HYM8563=m
+CONFIG_RTC_DRV_RK808=m
 
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_MV=m
+CONFIG_RTC_DRV_IMXDI=m
 CONFIG_RTC_DRV_PM8XXX=m
+CONFIG_RTC_DRV_MXC=m
 CONFIG_RTC_DRV_SNVS=m
 
 #
 # DMA Devices
 #
 # CONFIG_DW_DMAC is not set
+CONFIG_MX3_IPU=y
+CONFIG_MX3_IPU_IRQS=4
 CONFIG_FSL_EDMA=m
+CONFIG_NBPFAXI_DMA=m
 CONFIG_DMA_VIRTUAL_CHANNELS=m
 CONFIG_DMA_OF=y
 
 #
 # Common Clock Framework
 #
+CONFIG_COMMON_CLK_RK808=m
 CONFIG_COMMON_CLK_SI570=m
 CONFIG_COMMON_CLK_QCOM=m
+CONFIG_APQ_GCC_8084=m
+CONFIG_APQ_MMCC_8084=m
+CONFIG_IPQ_GCC_806X=m
 CONFIG_MSM_GCC_8660=m
 CONFIG_MSM_GCC_8960=m
 CONFIG_MSM_MMCC_8960=m
 CONFIG_MSM_GCC_8974=m
 CONFIG_MSM_MMCC_8974=m
-CONFIG_MVEBU_CLK_COMMON=y
 
 #
-# Hardware Spinlock drivers
+# Clock Source drivers
 #
 CONFIG_CLKSRC_OF=y
 CONFIG_CLKSRC_MMIO=y
-CONFIG_ORION_TIMER=y
+CONFIG_CLKSRC_VERSATILE=y
 CONFIG_OF_IOMMU=y
 
 #
-# Rpmsg drivers
+# Analog to digital converters
 #
-CONFIG_MVEBU_DEVBUS=y
+CONFIG_VF610_ADC=m
 
 #
-# Analog to digital converters
+# Digital to analog converters
 #
-# CONFIG_EXYNOS_ADC is not set
-CONFIG_VF610_ADC=m
+CONFIG_MAX5821=m
 
 #
 # Temperature sensors
@@ -827,12 +862,6 @@ CONFIG_VF610_ADC=m
 CONFIG_PWM=y
 CONFIG_PWM_SYSFS=y
 CONFIG_IRQCHIP=y
-CONFIG_ORION_IRQCHIP=y
-
-#
-# PHY Subsystem
-#
-CONFIG_PHY_MVEBU_SATA=y
 
 #
 # Memory Debugging
@@ -851,7 +880,10 @@ CONFIG_PHY_MVEBU_SATA=y
 CONFIG_ARM_UNWIND=y
 # CONFIG_DEBUG_USER is not set
 # CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_IMX_UART_PORT=1
 # CONFIG_DEBUG_UART_PL01X is not set
+# CONFIG_DEBUG_UART_8250 is not set
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
 # CONFIG_DEBUG_SET_MODULE_RONX is not set
 
 #
@@ -888,10 +920,12 @@ CONFIG_CRYPTO_AES_ARM=m
 #
 # Random Number Generation
 #
-CONFIG_CRYPTO_DEV_MV_CESA=m
+CONFIG_CRYPTO_DEV_SAHARA=m
 
 #
 # Library routines
 #
+CONFIG_STMP_DEVICE=y
 CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_AUDIT_GENERIC=y
+CONFIG_LIBFDT=y
index ce625d1a67cfc23b6afdb75879045ddce7889b25..da3b39e7573a49b6028607ce172bca5660307870 100644 (file)
@@ -17,33 +17,45 @@ CONFIG_TINY_RCU=y
 # CONFIG_RCU_STALL_COMMON is not set
 
 #
-# System Type
+# CPU Core family selection
 #
-# CONFIG_ARCH_MULTIPLATFORM is not set
-CONFIG_ARCH_KIRKWOOD=y
-CONFIG_MACH_T5325=y
+# CONFIG_ARCH_MULTI_V4 is not set
+# CONFIG_ARCH_MULTI_V4T is not set
+CONFIG_ARCH_MULTI_V5=y
+CONFIG_ARCH_MULTI_V4_V5=y
+# CONFIG_ARCH_MULTI_V7 is not set
+CONFIG_ARCH_MULTI_CPU_AUTO=y
+CONFIG_ARCH_MVEBU=y
+CONFIG_MACH_MVEBU_ANY=y
+CONFIG_MACH_KIRKWOOD=y
+CONFIG_MACH_NETXBIG=y
 
 #
-# Marvell Kirkwood Implementations
+# MX21 platforms:
 #
-CONFIG_KIRKWOOD_LEGACY=y
-CONFIG_MACH_D2NET_V2=y
-CONFIG_MACH_NET2BIG_V2=y
-CONFIG_MACH_NET5BIG_V2=y
-CONFIG_MACH_OPENRD=y
-CONFIG_MACH_OPENRD_BASE=y
-CONFIG_MACH_OPENRD_CLIENT=y
-CONFIG_MACH_OPENRD_ULTIMATE=y
-CONFIG_MACH_RD88F6192_NAS=y
-CONFIG_MACH_RD88F6281=y
-CONFIG_MACH_TS219=y
-CONFIG_MACH_TS41X=y
+# CONFIG_MACH_MX21ADS is not set
 
 #
-# Device tree entries
+# MX25 platforms:
 #
-CONFIG_ARCH_KIRKWOOD_DT=y
-CONFIG_PLAT_ORION_LEGACY=y
+# CONFIG_MACH_MX25_3DS is not set
+# CONFIG_MACH_EUKREA_CPUIMX25SD is not set
+# CONFIG_MACH_IMX25_DT is not set
+
+#
+# MX27 platforms:
+#
+# CONFIG_MACH_MX27ADS is not set
+# CONFIG_MACH_MX27_3DS is not set
+# CONFIG_MACH_IMX27_VISSTRIM_M10 is not set
+# CONFIG_MACH_PCA100 is not set
+# CONFIG_MACH_IMX27_DT is not set
+# CONFIG_ARCH_MXS is not set
+# CONFIG_ARCH_NOMADIK is not set
+# CONFIG_ARCH_NSPIRE is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_WM8505 is not set
+CONFIG_PLAT_ORION=y
 
 #
 # Processor Type
@@ -62,18 +74,29 @@ CONFIG_CPU_USE_DOMAINS=y
 # Processor Features
 #
 CONFIG_NEED_KUSER_HELPERS=y
+CONFIG_CACHE_FEROCEON_L2=y
+# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
 # CONFIG_CACHE_L2X0 is not set
 CONFIG_ARM_L1_CACHE_SHIFT=5
 
 #
 # PCI host controller drivers
 #
+# CONFIG_PCI_MVEBU is not set
 # CONFIG_PCIEPORTBUS is not set
 
 #
 # Kernel Features
 #
 CONFIG_ARCH_NR_GPIO=0
+CONFIG_HZ_FIXED=0
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+CONFIG_HZ_300=y
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=300
 # CONFIG_OABI_COMPAT is not set
 CONFIG_SPLIT_PTLOCK_CPUS=999999
 CONFIG_NEED_PER_CPU_KM=y
@@ -87,12 +110,17 @@ CONFIG_ARM_ATAG_DTB_COMPAT=y
 CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
 # CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set
 CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20"
-# CONFIG_XIP_KERNEL is not set
+
+#
+# ARM CPU frequency scaling drivers
+#
+CONFIG_ARM_KIRKWOOD_CPUFREQ=y
 
 #
 # ARM CPU Idle Drivers
 #
 # CONFIG_ARM_KIRKWOOD_CPUIDLE is not set
+# CONFIG_ARM_MVEBU_V7_CPUIDLE is not set
 # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
 
 #
@@ -100,23 +128,31 @@ CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/sda1 rootdelay=20"
 #
 # CONFIG_SYS_HYPERVISOR is not set
 
+#
+# Bus devices
+#
+CONFIG_IMX_WEIM=y
+CONFIG_MVEBU_MBUS=y
+
 #
 # Device Tree and Open Firmware support
 #
 CONFIG_VIRTIO_BLK=y
 
 #
-# Misc devices
+# Controllers with non-SFF native interface
 #
-# CONFIG_SRAM is not set
+CONFIG_AHCI_MVEBU=m
 
 #
 # Distributed Switch Architecture drivers
 #
 # CONFIG_VORTEX is not set
+CONFIG_MV643XX_ETH=m
+CONFIG_MVNETA=m
 
 #
-# USB Network Adapters
+# MII PHY device drivers
 #
 CONFIG_B43_SDIO=y
 
@@ -125,6 +161,16 @@ CONFIG_B43_SDIO=y
 #
 # CONFIG_ISDN_DRV_LOOP is not set
 
+#
+# Input device support
+#
+CONFIG_INPUT_MATRIXKMAP=m
+
+#
+# Input Device Drivers
+#
+CONFIG_KEYBOARD_SAMSUNG=m
+
 #
 # PPS support
 #
@@ -139,17 +185,36 @@ CONFIG_PTP_1588_CLOCK=m
 # Pin controllers
 #
 # CONFIG_PINCTRL_SINGLE is not set
+CONFIG_PINCTRL_MVEBU=y
 CONFIG_PINCTRL_KIRKWOOD=y
 
+#
+# Memory mapped GPIO drivers:
+#
+CONFIG_GPIO_MVEBU=y
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MXC=m
+
 #
 # 1-wire Slaves
 #
 # CONFIG_CHARGER_LP8788 is not set
+# CONFIG_POWER_RESET_BRCMSTB is not set
+# CONFIG_POWER_RESET_QNAP is not set
 
 #
 # Native drivers
 #
 CONFIG_KIRKWOOD_THERMAL=m
+CONFIG_ARMADA_THERMAL=m
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_ORION_WATCHDOG=m
 
 #
 # Sonics Silicon Backplane
@@ -187,15 +252,29 @@ CONFIG_VIDEO_OV7670=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
+CONFIG_DRM_EXYNOS_FIMD=y
+CONFIG_DRM_EXYNOS_DPI=y
+CONFIG_DRM_EXYNOS_DSI=y
+CONFIG_DRM_EXYNOS_FIMC=y
+CONFIG_DRM_EXYNOS_ROTATOR=y
+
+#
+# Display Panels
+#
+CONFIG_DRM_PANEL_SIMPLE=m
+CONFIG_DRM_PANEL_S6E8AA0=m
 
 #
 # Frame buffer Devices
 #
 CONFIG_FB_SYS_FOPS=m
+CONFIG_FB_MODE_HELPERS=y
 
 #
 # Frame buffer hardware drivers
 #
+CONFIG_FB_IMX=m
+CONFIG_FB_MX3=m
 CONFIG_LCD_PLATFORM=m
 
 #
@@ -206,15 +285,23 @@ CONFIG_SND_LX6464ES=m
 CONFIG_SND_MAESTRO3_INPUT=y
 
 #
-# HD-Audio
+# SoC Audio support for Freescale i.MX boards:
 #
-CONFIG_SND_KIRKWOOD_SOC_OPENRD=m
-CONFIG_SND_KIRKWOOD_SOC_T5325=m
+CONFIG_SND_KIRKWOOD_SOC=m
+CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB=m
 
 #
 # CODEC drivers
 #
-CONFIG_SND_SOC_ALC5623=m
+CONFIG_SND_SOC_CS42L51=m
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_XHCI_MVEBU=m
+CONFIG_USB_EHCI_MXC=m
+CONFIG_USB_EHCI_HCD_ORION=y
+CONFIG_USB_IMX21_HCD=m
 
 #
 # USB Physical Layer drivers
@@ -231,6 +318,7 @@ CONFIG_MMC_BLOCK=m
 # MMC/SD/SDIO Host Controller Drivers
 #
 CONFIG_MMC_RICOH_MMC=y
+CONFIG_MMC_MVSDIO=m
 
 #
 # LED drivers
@@ -239,12 +327,19 @@ CONFIG_LEDS_PWM=m
 CONFIG_LEDS_NS2=m
 CONFIG_LEDS_NETXBIG=m
 
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_MV=m
+
 #
 # DMA Devices
 #
 CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
 CONFIG_DW_DMAC_PCI=m
 CONFIG_MV_XOR=y
+CONFIG_IMX_SDMA=m
+CONFIG_IMX_DMA=m
 
 #
 # DMA Clients
@@ -264,16 +359,33 @@ CONFIG_VIRTIO_PCI=y
 #
 # Android
 #
-CONFIG_SBYPASS=m
-CONFIG_BPCTL=m
+CONFIG_DRM_IMX=m
+# CONFIG_DRM_IMX_FB_HELPER is not set
+CONFIG_DRM_IMX_PARALLEL_DISPLAY=m
+CONFIG_DRM_IMX_TVE=m
+CONFIG_DRM_IMX_LDB=m
+CONFIG_DRM_IMX_IPUV3=m
+CONFIG_DRM_IMX_HDMI=m
 
 #
 # Common Clock Framework
 #
 CONFIG_COMMON_CLK_WM831X=m
 CONFIG_COMMON_CLK_MAX77686=m
+CONFIG_MVEBU_CLK_COMMON=y
 CONFIG_KIRKWOOD_CLK=y
 
+#
+# Clock Source drivers
+#
+CONFIG_ORION_TIMER=y
+# CONFIG_SH_TIMER_TMU is not set
+
+#
+# DEVFREQ Drivers
+#
+CONFIG_MVEBU_DEVBUS=y
+
 #
 # Analog to digital converters
 #
@@ -284,10 +396,20 @@ CONFIG_TWL6030_GPADC=m
 # Temperature sensors
 #
 CONFIG_PWM_FSL_FTM=m
+CONFIG_PWM_IMX=m
 CONFIG_PWM_LP3943=m
 CONFIG_PWM_PCA9685=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
+CONFIG_ORION_IRQCHIP=y
+
+#
+# PHY Subsystem
+#
+CONFIG_PHY_MVEBU_SATA=y
+# CONFIG_PHY_EXYNOS4210_USB2 is not set
+# CONFIG_PHY_EXYNOS4X12_USB2 is not set
+# CONFIG_PHY_EXYNOS5250_USB2 is not set
 
 #
 # Compile-time checks and compiler options
@@ -303,18 +425,13 @@ CONFIG_FUNCTION_GRAPH_TRACER=y
 # Runtime Testing
 #
 CONFIG_OLD_MCOUNT=y
-CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
-CONFIG_DEBUG_UART_8250=y
-CONFIG_DEBUG_UART_PHYS=0xf1012000
-CONFIG_DEBUG_UART_VIRT=0xfed12000
-CONFIG_DEBUG_UART_8250_SHIFT=2
-# CONFIG_DEBUG_UART_8250_WORD is not set
-# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
-CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h"
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_UART_BCM63XX is not set
 
 #
 # Random Number Generation
 #
+CONFIG_CRYPTO_DEV_MV_CESA=m
 CONFIG_CRYPTO_DEV_HIFN_795X=m
 CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
 
index e3a135c23ec3b174e8e8171d36098e3e8e2c32d0..6c38fcd941852ad0aded3db119fd0eb78e12b147 100644 (file)
@@ -1,12 +1,12 @@
-CONFIG_ARM_HAS_SG_CHAIN=y
-CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_ARM_DMA_USE_IOMMU=y
+CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
 CONFIG_NO_IOPORT_MAP=y
 CONFIG_ARCH_HAS_BANDGAP=y
 
 #
 # IRQ subsystem
 #
-CONFIG_SPARSE_IRQ=y
 CONFIG_ARCH_HAS_TICK_BROADCAST=y
 CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 
@@ -35,6 +35,7 @@ CONFIG_RCU_FANOUT_LEAF=16
 # CONFIG_RCU_FANOUT_EXACT is not set
 # CONFIG_RCU_FAST_NO_HZ is not set
 # CONFIG_RCU_NOCB_CPU is not set
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
 
 #
 # Kernel Performance Events And Counters
@@ -45,72 +46,51 @@ CONFIG_SLUB_CPU_PARTIAL=y
 # IO Schedulers
 #
 CONFIG_MUTEX_SPIN_ON_OWNER=y
-
-#
-# System Type
-#
-CONFIG_ARCH_MULTIPLATFORM=y
-# CONFIG_ARCH_KIRKWOOD is not set
+CONFIG_RWSEM_SPIN_ON_OWNER=y
 
 #
 # CPU Core family selection
 #
-# CONFIG_ARCH_MULTI_V6 is not set
 CONFIG_ARCH_MULTI_V7=y
 CONFIG_ARCH_MULTI_V6_V7=y
 # CONFIG_ARCH_MULTI_CPU_AUTO is not set
 CONFIG_ARCH_VIRT=y
-CONFIG_ARCH_MVEBU=y
-
-#
-# Marvell EBU SoC variants
-#
-CONFIG_MACH_MVEBU_V7=y
-CONFIG_MACH_ARMADA_370=y
-CONFIG_MACH_ARMADA_375=y
-CONFIG_MACH_ARMADA_38X=y
-CONFIG_MACH_ARMADA_XP=y
-CONFIG_MACH_DOVE=y
+# CONFIG_ARCH_MVEBU is not set
 CONFIG_ARCH_BCM=y
-
-#
-# Broadcom SoC Selection
-#
 # CONFIG_ARCH_BCM_MOBILE is not set
 CONFIG_ARCH_BCM_5301X=y
+CONFIG_ARCH_BCM_63XX=y
+CONFIG_ARCH_BRCMSTB=y
 CONFIG_ARCH_BERLIN=y
-
-#
-# Marvell Berlin SoC variants
-#
 # CONFIG_MACH_BERLIN_BG2 is not set
 # CONFIG_MACH_BERLIN_BG2CD is not set
+# CONFIG_MACH_BERLIN_BG2Q is not set
 CONFIG_ARCH_HIGHBANK=y
-CONFIG_ARCH_HI3xxx=y
-CONFIG_ARCH_KEYSTONE=y
-CONFIG_ARCH_MXC=y
-
-#
-# Freescale i.MX support
-#
-# CONFIG_MXC_DEBUG_BOARD is not set
+CONFIG_ARCH_HISI=y
 
 #
-# i.MX51 machines:
+# Hisilicon platform type
 #
-# CONFIG_MACH_IMX51_DT is not set
-# CONFIG_MACH_MX51_BABBAGE is not set
-# CONFIG_MACH_EUKREA_CPUIMX51SD is not set
+CONFIG_ARCH_HI3xxx=y
+CONFIG_ARCH_HIP04=y
+CONFIG_ARCH_HIX5HD2=y
+CONFIG_ARCH_KEYSTONE=y
+CONFIG_ARCH_MESON=y
+CONFIG_MACH_MESON6=y
 
 #
 # Device tree only
 #
 # CONFIG_SOC_IMX50 is not set
+# CONFIG_SOC_IMX51 is not set
 # CONFIG_SOC_IMX53 is not set
 CONFIG_SOC_IMX6=y
 CONFIG_SOC_IMX6Q=y
 CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_IMX6SX=y
 CONFIG_SOC_VF610=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_ARCH_OMAP=y
 
 #
 # OMAP Feature Selections
@@ -125,7 +105,10 @@ CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_DM_TIMER=y
 CONFIG_OMAP_PM_NOOP=y
 CONFIG_MACH_OMAP_GENERIC=y
-CONFIG_ARCH_OMAP=y
+
+#
+# TI OMAP/AM/DM/DRA Family
+#
 CONFIG_ARCH_OMAP3=y
 CONFIG_ARCH_OMAP4=y
 CONFIG_SOC_OMAP5=y
@@ -169,10 +152,6 @@ CONFIG_MACH_TI8148EVM=y
 # CONFIG_OMAP3_EMU is not set
 # CONFIG_OMAP3_SDRC_AC_TIMING is not set
 CONFIG_ARCH_QCOM=y
-
-#
-# Qualcomm SoC Selection
-#
 # CONFIG_ARCH_MSM8X60 is not set
 # CONFIG_ARCH_MSM8960 is not set
 # CONFIG_ARCH_MSM8974 is not set
@@ -182,22 +161,63 @@ CONFIG_ARCH_ROCKCHIP=y
 CONFIG_ARCH_STI=y
 CONFIG_SOC_STIH415=y
 CONFIG_SOC_STIH416=y
-CONFIG_ARCH_SHMOBILE=y
-CONFIG_ARCH_SHMOBILE_MULTI=y
+# CONFIG_ARCH_S5PV210 is not set
+CONFIG_ARCH_EXYNOS=y
+# CONFIG_ARCH_EXYNOS3 is not set
+CONFIG_ARCH_EXYNOS4=y
+CONFIG_ARCH_EXYNOS5=y
+
+#
+# EXYNOS SoCs
+#
+CONFIG_CPU_EXYNOS4210=y
+CONFIG_SOC_EXYNOS4212=y
+CONFIG_SOC_EXYNOS4412=y
+CONFIG_SOC_EXYNOS5250=y
+CONFIG_SOC_EXYNOS5260=y
+CONFIG_SOC_EXYNOS5410=y
+CONFIG_SOC_EXYNOS5420=y
+CONFIG_SOC_EXYNOS5440=y
+CONFIG_SOC_EXYNOS5800=y
+# CONFIG_EXYNOS5420_MCPM is not set
+CONFIG_PLAT_SAMSUNG=y
 
 #
-# Renesas ARM SoCs System Type
+# Boot options
 #
+CONFIG_S5P_DEV_MFC=y
+
+#
+# Power management
+#
+# CONFIG_SAMSUNG_PM_CHECK is not set
+CONFIG_ARCH_SHMOBILE=y
+CONFIG_PM_RCAR=y
+CONFIG_ARCH_RCAR_GEN1=y
+CONFIG_ARCH_SHMOBILE_MULTI=y
 # CONFIG_ARCH_EMEV2 is not set
 # CONFIG_ARCH_R7S72100 is not set
+# CONFIG_ARCH_R8A7740 is not set
+CONFIG_ARCH_R8A7779=y
 # CONFIG_ARCH_R8A7790 is not set
 # CONFIG_ARCH_R8A7791 is not set
+# CONFIG_ARCH_R8A7794 is not set
+
+#
+# Renesas ARM SoCs Board Type
+#
+CONFIG_MACH_MARZEN=y
 
 #
 # Timer and clock configuration
 #
 CONFIG_SHMOBILE_TIMER_HZ=128
 CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN4I=y
+CONFIG_MACH_SUN5I=y
+CONFIG_MACH_SUN6I=y
+CONFIG_MACH_SUN7I=y
+CONFIG_MACH_SUN8I=y
 CONFIG_ARCH_SIRF=y
 
 #
@@ -208,10 +228,6 @@ CONFIG_ARCH_PRIMA2=y
 CONFIG_ARCH_MARCO=y
 CONFIG_SIRF_IRQ=y
 CONFIG_ARCH_TEGRA=y
-
-#
-# NVIDIA Tegra options
-#
 CONFIG_ARCH_TEGRA_2x_SOC=y
 CONFIG_ARCH_TEGRA_3x_SOC=y
 CONFIG_ARCH_TEGRA_114_SOC=y
@@ -219,26 +235,17 @@ CONFIG_ARCH_TEGRA_124_SOC=y
 CONFIG_TEGRA_AHB=y
 CONFIG_ARCH_U8500=y
 CONFIG_UX500_SOC_DB8500=y
-
-#
-# Ux500 target platform (boards)
-#
 CONFIG_MACH_MOP500=y
 # CONFIG_MACH_HREFV60 is not set
 # CONFIG_MACH_SNOWBALL is not set
 CONFIG_UX500_AUTO_PLATFORM=y
 CONFIG_UX500_DEBUG_UART=2
 CONFIG_ARCH_VEXPRESS=y
-
-#
-# Versatile Express platform type
-#
 CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
 CONFIG_ARCH_VEXPRESS_CA9X4=y
 CONFIG_ARCH_VEXPRESS_DCSCB=y
 CONFIG_ARCH_VEXPRESS_SPC=y
 CONFIG_ARCH_VEXPRESS_TC2_PM=y
-CONFIG_PLAT_VERSATILE_CLCD=y
 CONFIG_PLAT_VERSATILE_SCHED_CLOCK=y
 CONFIG_ARCH_VT8500=y
 CONFIG_ARCH_WM8850=y
@@ -256,8 +263,6 @@ CONFIG_TRUSTED_FOUNDATIONS=y
 #
 # Processor Type
 #
-CONFIG_CPU_PJ4=y
-CONFIG_CPU_PJ4B=y
 CONFIG_CPU_V7=y
 CONFIG_CPU_32v6K=y
 CONFIG_CPU_32v7=y
@@ -274,32 +279,27 @@ CONFIG_CPU_HAS_ASID=y
 #
 # CONFIG_ARM_LPAE is not set
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_ARM_THUMBEE=y
+# CONFIG_ARM_THUMBEE is not set
 CONFIG_ARM_VIRT_EXT=y
-# CONFIG_SWP_EMULATE is not set
-# CONFIG_CPU_BIG_ENDIAN is not set
+CONFIG_SWP_EMULATE=y
 # CONFIG_CPU_BPREDICT_DISABLE is not set
 CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_MIGHT_HAVE_CACHE_L2X0=y
 CONFIG_CACHE_L2X0=y
 CONFIG_CACHE_PL310=y
-CONFIG_CACHE_TAUROS2=y
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_PL310_ERRATA_727915=y
+CONFIG_PL310_ERRATA_753970=y
+CONFIG_PL310_ERRATA_769419=y
 CONFIG_ARM_L1_CACHE_SHIFT_6=y
 CONFIG_ARM_L1_CACHE_SHIFT=6
 CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
-CONFIG_IWMMXT=y
-CONFIG_PJ4B_ERRATA_4742=y
 # CONFIG_ARM_ERRATA_430973 is not set
-CONFIG_PL310_ERRATA_588369=y
 # CONFIG_ARM_ERRATA_643719 is not set
 CONFIG_ARM_ERRATA_720789=y
-CONFIG_PL310_ERRATA_727915=y
-CONFIG_PL310_ERRATA_753970=y
 CONFIG_ARM_ERRATA_754322=y
 CONFIG_ARM_ERRATA_754327=y
 CONFIG_ARM_ERRATA_764369=y
-CONFIG_PL310_ERRATA_769419=y
 CONFIG_ARM_ERRATA_775420=y
 CONFIG_ARM_ERRATA_798181=y
 # CONFIG_ARM_ERRATA_773022 is not set
@@ -316,9 +316,13 @@ CONFIG_PCI_DOMAINS=y
 # PCI host controller drivers
 #
 CONFIG_PCIE_DW=y
+CONFIG_PCI_EXYNOS=y
 CONFIG_PCI_IMX6=y
 CONFIG_PCI_TEGRA=y
 CONFIG_PCI_RCAR_GEN2=y
+CONFIG_PCI_RCAR_GEN2_PCIE=y
+CONFIG_PCI_KEYSTONE=y
+CONFIG_PCIE_XILINX=y
 CONFIG_PCIEPORTBUS=y
 CONFIG_PCIEAER=y
 # CONFIG_PCIE_ECRC is not set
@@ -339,13 +343,16 @@ CONFIG_ARM_CPU_TOPOLOGY=y
 # CONFIG_SCHED_MC is not set
 # CONFIG_SCHED_SMT is not set
 CONFIG_MCPM=y
+CONFIG_MCPM_QUAD_CLUSTER=y
 CONFIG_BIG_LITTLE=y
 # CONFIG_BL_SWITCHER is not set
 CONFIG_NR_CPUS=4
 CONFIG_HOTPLUG_CPU=y
 CONFIG_ARM_PSCI=y
 CONFIG_ARCH_NR_GPIO=1024
-# CONFIG_THUMB2_KERNEL is not set
+CONFIG_HZ_FIXED=200
+CONFIG_HZ=200
+CONFIG_THUMB2_KERNEL=y
 CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11=y
 CONFIG_ARM_ASM_UNIFIED=y
 CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
@@ -365,8 +372,17 @@ CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttyS
 #
 # ARM CPU frequency scaling drivers
 #
-# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
-# CONFIG_ARM_IMX6Q_CPUFREQ is not set
+CONFIG_ARM_BIG_LITTLE_CPUFREQ=m
+# CONFIG_ARM_DT_BL_CPUFREQ is not set
+# CONFIG_ARM_VEXPRESS_SPC_CPUFREQ is not set
+CONFIG_ARM_EXYNOS_CPUFREQ=y
+CONFIG_ARM_EXYNOS4210_CPUFREQ=y
+CONFIG_ARM_EXYNOS4X12_CPUFREQ=y
+CONFIG_ARM_EXYNOS5250_CPUFREQ=y
+CONFIG_ARM_EXYNOS5440_CPUFREQ=y
+# CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW is not set
+CONFIG_ARM_HIGHBANK_CPUFREQ=m
+# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
 CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
 CONFIG_ARM_TEGRA_CPUFREQ=y
 
@@ -377,6 +393,7 @@ CONFIG_ARM_TEGRA_CPUFREQ=y
 # CONFIG_ARM_HIGHBANK_CPUIDLE is not set
 # CONFIG_ARM_ZYNQ_CPUIDLE is not set
 # CONFIG_ARM_U8500_CPUIDLE is not set
+# CONFIG_ARM_EXYNOS_CPUIDLE is not set
 CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y
 
 #
@@ -390,8 +407,10 @@ CONFIG_KERNEL_MODE_NEON=y
 # Power management options
 #
 CONFIG_PM_SLEEP_SMP=y
-CONFIG_ARCH_HAS_OPP=y
-CONFIG_PM_OPP=y
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
+CONFIG_PM_GENERIC_DOMAINS_RUNTIME=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
 
 #
 # Classification
@@ -405,7 +424,7 @@ CONFIG_NET_FLOW_LIMIT=y
 # Generic Driver Options
 #
 CONFIG_SYS_HYPERVISOR=y
-CONFIG_SOC_BUS=y
+CONFIG_REGMAP_SPMI=m
 
 #
 # Bus devices
@@ -413,6 +432,7 @@ CONFIG_SOC_BUS=y
 # CONFIG_IMX_WEIM is not set
 # CONFIG_OMAP_OCP2SCP is not set
 CONFIG_OMAP_INTERCONNECT=y
+CONFIG_ARM_CCI=y
 
 #
 # Device Tree and Open Firmware support
@@ -425,19 +445,23 @@ CONFIG_VIRTIO_BLK=m
 # Misc devices
 #
 # CONFIG_ARM_CHARLCD is not set
-CONFIG_SRAM=y
 
 #
 # EEPROM support
 #
 # CONFIG_EEPROM_SUNXI_SID is not set
 
+#
+# SCSI Transports
+#
+CONFIG_XEN_SCSI_FRONTEND=m
+
 #
 # Controllers with non-SFF native interface
 #
 CONFIG_AHCI_ST=m
-CONFIG_AHCI_IMX=m
 CONFIG_AHCI_SUNXI=m
+CONFIG_AHCI_TEGRA=m
 
 #
 # SATA SFF controllers with BMDMA
@@ -445,20 +469,16 @@ CONFIG_AHCI_SUNXI=m
 CONFIG_SATA_HIGHBANK=m
 CONFIG_SATA_RCAR=m
 
-#
-# PATA SFF controllers with BMDMA
-#
-CONFIG_PATA_IMX=m
-
 #
 # Distributed Switch Architecture drivers
 #
 CONFIG_NET_VENDOR_ALLWINNER=y
 CONFIG_SUN4I_EMAC=m
 # CONFIG_MACB is not set
-CONFIG_NET_VENDOR_FREESCALE=y
-CONFIG_FEC=m
-# CONFIG_DWMAC_SOCFPGA is not set
+CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_PXA168_ETH=m
+CONFIG_SH_ETH=m
+CONFIG_DWMAC_MESON=y
 CONFIG_DWMAC_SUNXI=y
 CONFIG_DWMAC_STI=y
 CONFIG_TI_DAVINCI_EMAC=m
@@ -474,10 +494,6 @@ CONFIG_NET_VENDOR_XILINX=y
 # MII PHY device drivers
 #
 CONFIG_MDIO_SUN4I=m
-
-#
-# USB Network Adapters
-#
 # CONFIG_B43_SDIO is not set
 
 #
@@ -486,14 +502,19 @@ CONFIG_MDIO_SUN4I=m
 CONFIG_XEN_NETDEV_FRONTEND=m
 CONFIG_XEN_NETDEV_BACKEND=m
 
+#
+# Input device support
+#
+CONFIG_INPUT_MATRIXKMAP=y
+
 #
 # Input Device Drivers
 #
-CONFIG_KEYBOARD_IMX=m
 # CONFIG_KEYBOARD_NOMADIK is not set
 CONFIG_KEYBOARD_TEGRA=m
+CONFIG_KEYBOARD_SAMSUNG=y
+# CONFIG_KEYBOARD_ST_KEYSCAN is not set
 CONFIG_KEYBOARD_SH_KEYSC=m
-CONFIG_KEYBOARD_OMAP4=m
 # CONFIG_INPUT_AB8500_PONKEY is not set
 CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
 CONFIG_INPUT_SIRFSOC_ONKEY=y
@@ -503,13 +524,21 @@ CONFIG_INPUT_SIRFSOC_ONKEY=y
 #
 # CONFIG_SERIO_AMBAKMI is not set
 
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250_MT6577=y
+
 #
 # Non-8250 serial port support
 #
 CONFIG_SERIAL_AMBA_PL010=m
 CONFIG_SERIAL_AMBA_PL011=m
+CONFIG_SERIAL_MESON=m
+CONFIG_SERIAL_SAMSUNG=m
+CONFIG_SERIAL_SAMSUNG_UARTS_4=y
+CONFIG_SERIAL_SAMSUNG_UARTS=4
 CONFIG_SERIAL_SIRFSOC=m
-CONFIG_SERIAL_IMX=m
 # CONFIG_SERIAL_UARTLITE is not set
 CONFIG_SERIAL_SH_SCI=m
 CONFIG_SERIAL_SH_SCI_NR_UARTS=2
@@ -522,24 +551,32 @@ CONFIG_HVC_XEN=y
 CONFIG_HVC_XEN_FRONTEND=y
 CONFIG_HW_RANDOM_OMAP=y
 CONFIG_HW_RANDOM_OMAP3_ROM=y
+CONFIG_HW_RANDOM_EXYNOS=y
 CONFIG_HW_RANDOM_MSM=m
 
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_HIX5HD2=m
+
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
 # CONFIG_I2C_CADENCE is not set
 CONFIG_I2C_DAVINCI=m
-CONFIG_I2C_IMX=m
+CONFIG_I2C_EXYNOS5=m
 CONFIG_I2C_NOMADIK=y
 CONFIG_I2C_OMAP=y
 CONFIG_I2C_QUP=m
 CONFIG_I2C_RIIC=m
+CONFIG_I2C_S3C2410=m
 CONFIG_I2C_SH_MOBILE=m
 CONFIG_I2C_SIRF=m
 CONFIG_I2C_ST=m
+CONFIG_I2C_SUN6I_P2WI=m
 CONFIG_I2C_TEGRA=m
 CONFIG_I2C_VERSATILE=m
-# CONFIG_I2C_WMT is not set
+CONFIG_I2C_WMT=m
 CONFIG_I2C_RCAR=m
 
 #
@@ -547,6 +584,12 @@ CONFIG_I2C_RCAR=m
 #
 CONFIG_SPMI_MSM_PMIC_ARB=m
 
+#
+# HSI controllers
+#
+CONFIG_OMAP_SSI=m
+CONFIG_OMAP_SSI_PORT=m
+
 #
 # PPS support
 #
@@ -560,47 +603,63 @@ CONFIG_PTP_1588_CLOCK=y
 #
 # Pin controllers
 #
-CONFIG_PINCTRL_ABX500=y
-CONFIG_PINCTRL_AB8500=y
-CONFIG_PINCTRL_AB8540=y
-CONFIG_PINCTRL_AB9540=y
-CONFIG_PINCTRL_AB8505=y
-CONFIG_PINCTRL_IMX=y
-CONFIG_PINCTRL_IMX6Q=y
-CONFIG_PINCTRL_IMX6SL=y
-CONFIG_PINCTRL_VF610=y
-CONFIG_PINCTRL_NOMADIK=y
-CONFIG_PINCTRL_DB8500=y
-CONFIG_PINCTRL_DB8540=y
+CONFIG_GENERIC_PINCONF=y
 CONFIG_PINCTRL_ROCKCHIP=y
 CONFIG_PINCTRL_SINGLE=y
 CONFIG_PINCTRL_SIRF=y
-CONFIG_PINCTRL_SUNXI=y
 CONFIG_PINCTRL_ST=y
 CONFIG_PINCTRL_TEGRA=y
 CONFIG_PINCTRL_TEGRA20=y
 CONFIG_PINCTRL_TEGRA30=y
 CONFIG_PINCTRL_TEGRA114=y
 CONFIG_PINCTRL_TEGRA124=y
-CONFIG_PINCTRL_DOVE=y
-CONFIG_PINCTRL_ARMADA_370=y
-CONFIG_PINCTRL_ARMADA_375=y
-CONFIG_PINCTRL_ARMADA_38X=y
-CONFIG_PINCTRL_ARMADA_XP=y
+CONFIG_PINCTRL_TEGRA_XUSB=y
+CONFIG_PINCTRL_IMX=y
+CONFIG_PINCTRL_IMX6Q=y
+CONFIG_PINCTRL_IMX6SL=y
+CONFIG_PINCTRL_IMX6SX=y
+CONFIG_PINCTRL_VF610=y
+CONFIG_PINCTRL_ABX500=y
+CONFIG_PINCTRL_AB8500=y
+CONFIG_PINCTRL_AB8540=y
+CONFIG_PINCTRL_AB9540=y
+CONFIG_PINCTRL_AB8505=y
+CONFIG_PINCTRL_NOMADIK=y
+CONFIG_PINCTRL_DB8500=y
+CONFIG_PINCTRL_DB8540=y
+CONFIG_PINCTRL_MSM=y
+CONFIG_PINCTRL_APQ8064=y
+CONFIG_PINCTRL_APQ8084=y
+CONFIG_PINCTRL_IPQ8064=y
+CONFIG_PINCTRL_MSM8960=m
+CONFIG_PINCTRL_MSM8X74=m
+CONFIG_PINCTRL_SAMSUNG=y
+CONFIG_PINCTRL_EXYNOS=y
+CONFIG_PINCTRL_EXYNOS5440=y
 CONFIG_PINCTRL_SH_PFC=y
 CONFIG_GPIO_SH_PFC=y
+CONFIG_PINCTRL_PFC_R8A7779=y
+CONFIG_PINCTRL_SUNXI_COMMON=y
+CONFIG_PINCTRL_SUN4I_A10=y
+CONFIG_PINCTRL_SUN5I_A10S=y
+CONFIG_PINCTRL_SUN5I_A13=y
+CONFIG_PINCTRL_SUN6I_A31=y
+CONFIG_PINCTRL_SUN6I_A31_R=y
+CONFIG_PINCTRL_SUN7I_A20=y
+CONFIG_PINCTRL_SUN8I_A23=y
+CONFIG_PINCTRL_SUN8I_A23_R=y
 # CONFIG_PINCTRL_WM8850 is not set
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_GPIOLIB_IRQCHIP=y
 
 #
 # Memory mapped GPIO drivers:
 #
 # CONFIG_GPIO_DAVINCI is not set
 CONFIG_GPIO_MSM_V2=m
-CONFIG_GPIO_MXC=y
+CONFIG_GPIO_OMAP=y
 CONFIG_GPIO_PL061=y
+# CONFIG_GPIO_RCAR is not set
 # CONFIG_GPIO_XILINX is not set
+CONFIG_GPIO_ZYNQ=m
 
 #
 # 1-wire Bus Masters
@@ -611,31 +670,51 @@ CONFIG_GPIO_PL061=y
 #
 # 1-wire Slaves
 #
+CONFIG_POWER_RESET_BRCMSTB=y
+CONFIG_POWER_RESET_HISI=y
 # CONFIG_POWER_RESET_MSM is not set
+CONFIG_POWER_RESET_SUN6I=y
+CONFIG_POWER_RESET_ST=y
+CONFIG_POWER_RESET_KEYSTONE=y
+# CONFIG_ROCKCHIP_IODOMAIN is not set
 
 #
 # Native drivers
 #
 CONFIG_RCAR_THERMAL=y
 CONFIG_DB8500_THERMAL=y
-CONFIG_ARMADA_THERMAL=y
 
 #
 # Texas Instruments thermal drivers
 #
 # CONFIG_TI_SOC_THERMAL is not set
 
+#
+# Samsung thermal drivers
+#
+CONFIG_EXYNOS_THERMAL=m
+CONFIG_EXYNOS_THERMAL_CORE=y
+
+#
+# STMicroelectronics thermal drivers
+#
+CONFIG_ST_THERMAL=m
+CONFIG_ST_THERMAL_SYSCFG=m
+CONFIG_ST_THERMAL_MEMMAP=m
+
 #
 # Watchdog Device Drivers
 #
 CONFIG_ARM_SP805_WATCHDOG=m
+CONFIG_S3C2410_WATCHDOG=m
 CONFIG_OMAP_WATCHDOG=m
 CONFIG_DAVINCI_WATCHDOG=m
 CONFIG_SUNXI_WATCHDOG=m
-CONFIG_IMX2_WDT=m
 CONFIG_UX500_WATCHDOG=y
 CONFIG_SIRFSOC_WATCHDOG=y
 CONFIG_TEGRA_WATCHDOG=m
+CONFIG_QCOM_WDT=m
+CONFIG_MESON_WATCHDOG=m
 # CONFIG_XEN_WDT is not set
 
 #
@@ -646,6 +725,7 @@ CONFIG_TEGRA_WATCHDOG=m
 #
 # Multifunction device drivers
 #
+CONFIG_MFD_SPMI_PMIC=m
 CONFIG_ABX500_CORE=y
 # CONFIG_AB3100_CORE is not set
 CONFIG_AB8500_CORE=y
@@ -654,6 +734,7 @@ CONFIG_MFD_DB8500_PRCMU=y
 #
 # STMicroelectronics STMPE Interface Drivers
 #
+CONFIG_MFD_SUN6I_PRCM=y
 CONFIG_MFD_OMAP_USB_HOST=y
 # CONFIG_MFD_VX855 is not set
 CONFIG_REGULATOR_88PM8607=y
@@ -664,7 +745,6 @@ CONFIG_REGULATOR_GPIO=y
 CONFIG_REGULATOR_LP872X=y
 CONFIG_REGULATOR_LP8788=y
 CONFIG_REGULATOR_PBIAS=m
-CONFIG_REGULATOR_ST_PWM=m
 CONFIG_REGULATOR_TI_ABB=m
 CONFIG_REGULATOR_TWL4030=y
 
@@ -672,16 +752,26 @@ CONFIG_REGULATOR_TWL4030=y
 # Media drivers
 #
 # CONFIG_RC_ST is not set
+CONFIG_IR_SUNXI=m
 
 #
 # Media digital TV PCI Adapters
 #
 # CONFIG_VIDEO_CAFE_CCIC is not set
-# CONFIG_VIDEO_DM6446_CCDC is not set
 # CONFIG_VIDEO_OMAP2_VOUT is not set
 # CONFIG_VIDEO_SH_VOU is not set
-# CONFIG_VIDEO_MX3 is not set
-# CONFIG_VIDEO_CODA is not set
+CONFIG_VIDEO_OMAP3=m
+# CONFIG_VIDEO_OMAP3_DEBUG is not set
+# CONFIG_VIDEO_RCAR_VIN is not set
+# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
+# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+# CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS is not set
+# CONFIG_VIDEO_SAMSUNG_S5P_TV is not set
+CONFIG_VIDEO_SAMSUNG_S5P_G2D=m
+CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m
+CONFIG_VIDEO_SAMSUNG_S5P_MFC=m
+CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m
+CONFIG_VIDEO_RENESAS_VSP1=m
 # CONFIG_VIDEO_TI_VPE is not set
 
 #
@@ -690,44 +780,36 @@ CONFIG_REGULATOR_TWL4030=y
 CONFIG_TEGRA_HOST1X=y
 CONFIG_TEGRA_HOST1X_FIREWALL=y
 
-#
-# Direct Rendering Manager
-#
-CONFIG_DRM_MIPI_DSI=y
-
 #
 # I2C encoder or helper chips
 #
 # CONFIG_DRM_I2C_CH7006 is not set
 # CONFIG_DRM_I2C_SIL164 is not set
 # CONFIG_DRM_I2C_NXP_TDA998X is not set
-CONFIG_DRM_EXYNOS=m
-CONFIG_DRM_EXYNOS_DMABUF=y
-CONFIG_DRM_EXYNOS_DPI=y
-CONFIG_DRM_EXYNOS_DSI=y
-CONFIG_DRM_EXYNOS_HDMI=y
-CONFIG_DRM_EXYNOS_VIDI=y
-CONFIG_DRM_EXYNOS_G2D=y
-CONFIG_DRM_EXYNOS_IPP=y
+# CONFIG_DRM_EXYNOS_FIMD is not set
 # CONFIG_DRM_EXYNOS_FIMC is not set
 # CONFIG_DRM_EXYNOS_ROTATOR is not set
+CONFIG_DRM_RCAR_DU=m
+CONFIG_DRM_SHMOBILE=m
+CONFIG_DRM_MSM=m
+# CONFIG_DRM_MSM_FBDEV is not set
+# CONFIG_DRM_MSM_REGISTER_LOGGING is not set
 CONFIG_DRM_TEGRA=m
 CONFIG_DRM_TEGRA_FBDEV=y
 # CONFIG_DRM_TEGRA_DEBUG is not set
 # CONFIG_DRM_TEGRA_STAGING is not set
-CONFIG_DRM_PANEL=y
 
 #
 # Display Panels
 #
 # CONFIG_DRM_PANEL_SIMPLE is not set
-# CONFIG_DRM_PANEL_LD9040 is not set
 # CONFIG_DRM_PANEL_S6E8AA0 is not set
 
 #
 # Frame buffer Devices
 #
 CONFIG_FB_SYS_FOPS=y
+# CONFIG_FB_MODE_HELPERS is not set
 
 #
 # Frame buffer hardware drivers
@@ -737,44 +819,47 @@ CONFIG_FB_SYS_FOPS=y
 # CONFIG_FB_VT8500 is not set
 # CONFIG_FB_WM8505 is not set
 # CONFIG_FB_SH_MOBILE_LCDC is not set
+# CONFIG_FB_S3C is not set
 # CONFIG_FB_XILINX is not set
 # CONFIG_FB_DA8XX is not set
 CONFIG_XEN_FBDEV_FRONTEND=y
 # CONFIG_FB_MX3 is not set
 # CONFIG_OMAP2_DSS is not set
+CONFIG_EXYNOS_VIDEO=y
+# CONFIG_EXYNOS_MIPI_DSI is not set
 # CONFIG_FB_SH_MOBILE_MERAM is not set
 # CONFIG_LCD_PLATFORM is not set
-CONFIG_VIDEOMODE_HELPERS=y
 
 #
 # Console display driver support
 #
-CONFIG_SND_DMAENGINE_PCM=m
 # CONFIG_SND_ES1968_INPUT is not set
 # CONFIG_SND_MAESTRO3_INPUT is not set
 
 #
 # HD-Audio
 #
+CONFIG_SND_HDA_TEGRA=m
 CONFIG_SND_ARMAACI=m
-CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
 # CONFIG_SND_SOC_ADI is not set
-CONFIG_SND_DAVINCI_SOC=m
+CONFIG_SND_EDMA_SOC=m
 CONFIG_SND_DAVINCI_SOC_MCASP=m
 CONFIG_SND_DAVINCI_SOC_GENERIC_EVM=m
 CONFIG_SND_AM33XX_SOC_EVM=m
-CONFIG_SND_SOC_FSL_SSI=m
-CONFIG_SND_SOC_FSL_SPDIF=m
-CONFIG_SND_SOC_FSL_UTILS=m
-CONFIG_SND_IMX_SOC=m
-CONFIG_SND_SOC_IMX_SSI=m
-CONFIG_SND_SOC_IMX_PCM_DMA=m
-CONFIG_SND_SOC_IMX_AUDMUX=m
-CONFIG_SND_SOC_EUKREA_TLV320=m
-CONFIG_SND_SOC_IMX_WM8962=m
-CONFIG_SND_SOC_IMX_SGTL5000=m
-CONFIG_SND_SOC_IMX_SPDIF=m
-CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB=m
+
+#
+# SoC Audio support for Freescale i.MX boards:
+#
+CONFIG_SND_SOC_ROCKCHIP=m
+CONFIG_SND_SOC_SAMSUNG=m
+CONFIG_SND_SAMSUNG_PCM=m
+CONFIG_SND_SAMSUNG_SPDIF=m
+CONFIG_SND_SAMSUNG_I2S=m
+CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=m
+CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF=m
+CONFIG_SND_SOC_SMDK_WM8994_PCM=m
+CONFIG_SND_SOC_SNOW=m
+CONFIG_SND_SOC_ODROIDX2=m
 
 #
 # SoC Audio support for SuperH
@@ -784,21 +869,31 @@ CONFIG_SND_SOC_RCAR=m
 CONFIG_SND_SOC_SIRF=m
 CONFIG_SND_SOC_SIRF_AUDIO=m
 CONFIG_SND_SOC_SIRF_AUDIO_PORT=m
-# CONFIG_SND_SOC_UX500 is not set
+CONFIG_SND_SOC_SIRF_USP=m
+CONFIG_SND_SOC_UX500=m
+CONFIG_SND_SOC_UX500_PLAT_DMA=m
 
 #
 # CODEC drivers
 #
-CONFIG_SND_SOC_TLV320AIC23=m
-CONFIG_SND_SOC_TLV320AIC23_I2C=m
+CONFIG_SND_SOC_WM_HUBS=m
+CONFIG_SND_SOC_MAX98090=m
+CONFIG_SND_SOC_MAX98095=m
+CONFIG_SND_SOC_WM8994=m
 
 #
 # USB Host Controller Drivers
 #
+CONFIG_USB_XHCI_RCAR=m
 CONFIG_USB_EHCI_MXC=y
 CONFIG_USB_EHCI_HCD_OMAP=y
+CONFIG_USB_EHCI_HCD_STI=m
+CONFIG_USB_EHCI_MSM=y
 CONFIG_USB_EHCI_TEGRA=y
+CONFIG_USB_EHCI_EXYNOS=y
+CONFIG_USB_OHCI_HCD_STI=m
 CONFIG_USB_OHCI_HCD_OMAP3=y
+CONFIG_USB_OHCI_EXYNOS=y
 CONFIG_USB_UHCI_SUPPORT_NON_PCI_HC=y
 CONFIG_USB_UHCI_PLATFORM=y
 CONFIG_USB_IMX21_HCD=y
@@ -812,13 +907,22 @@ CONFIG_USB_MUSB_AM35X=m
 # CONFIG_USB_TI_CPPI41_DMA is not set
 # CONFIG_USB_TUSB_OMAP_DMA is not set
 
+#
+# Platform Glue Driver Support
+#
+CONFIG_USB_DWC3_EXYNOS=m
+CONFIG_USB_DWC3_KEYSTONE=m
+CONFIG_USB_DWC3_ST=m
+CONFIG_USB_DWC3_QCOM=m
+
 #
 # USB Physical Layer drivers
 #
 # CONFIG_AB8500_USB is not set
 CONFIG_KEYSTONE_USB_PHY=m
 CONFIG_NOP_USB_XCEIV=y
-CONFIG_USB_MXS_PHY=m
+CONFIG_USB_MSM_OTG=m
+CONFIG_USB_RCAR_PHY=m
 CONFIG_USB_ULPI_VIEWPORT=y
 CONFIG_MMC=y
 
@@ -831,19 +935,21 @@ CONFIG_MMC_BLOCK=y
 # MMC/SD/SDIO Host Controller Drivers
 #
 CONFIG_MMC_ARMMMCI=m
-CONFIG_MMC_SDHCI_IO_ACCESSORS=y
 # CONFIG_MMC_RICOH_MMC is not set
-CONFIG_MMC_SDHCI_ESDHC_IMX=m
 CONFIG_MMC_SDHCI_TEGRA=m
+CONFIG_MMC_SDHCI_S3C=m
 CONFIG_MMC_SDHCI_SIRF=m
+CONFIG_MMC_SDHCI_S3C_DMA=y
+CONFIG_MMC_SDHCI_ST=m
 CONFIG_MMC_OMAP=m
 CONFIG_MMC_OMAP_HS=m
 CONFIG_MMC_SDHCI_MSM=m
-CONFIG_MMC_MXC=m
 CONFIG_MMC_TMIO_CORE=m
 CONFIG_MMC_SDHI=m
+CONFIG_MMC_DW_ROCKCHIP=m
 CONFIG_MMC_SH_MMCIF=m
 CONFIG_MMC_WMT=y
+CONFIG_MMC_SUNXI=m
 
 #
 # LED drivers
@@ -858,14 +964,14 @@ CONFIG_MMC_WMT=y
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_IMXDI=m
 CONFIG_RTC_DRV_OMAP=m
+CONFIG_RTC_DRV_S3C=m
 CONFIG_RTC_DRV_PL030=m
 CONFIG_RTC_DRV_PL031=m
 # CONFIG_RTC_DRV_VT8500 is not set
+CONFIG_RTC_DRV_SUN6I=m
 CONFIG_RTC_DRV_SUNXI=m
 CONFIG_RTC_DRV_TEGRA=m
-CONFIG_RTC_DRV_MXC=m
 CONFIG_RTC_DRV_SIRFSOC=m
 
 #
@@ -873,9 +979,6 @@ CONFIG_RTC_DRV_SIRFSOC=m
 #
 # CONFIG_AMBA_PL08X is not set
 # CONFIG_DW_DMAC_PCI is not set
-# CONFIG_MV_XOR is not set
-CONFIG_MX3_IPU=y
-CONFIG_MX3_IPU_IRQS=4
 # CONFIG_TEGRA20_APB_DMA is not set
 CONFIG_SH_DMAE_BASE=y
 # CONFIG_SH_DMAE is not set
@@ -892,6 +995,8 @@ CONFIG_SH_DMAE_BASE=y
 # CONFIG_DMA_OMAP is not set
 # CONFIG_TI_CPPI41 is not set
 # CONFIG_K3_DMA is not set
+CONFIG_XILINX_VDMA=m
+CONFIG_DMA_SUN6I=m
 
 #
 # DMA Clients
@@ -901,6 +1006,7 @@ CONFIG_SH_DMAE_BASE=y
 # CONFIG_UIO_SERCOS3 is not set
 # CONFIG_UIO_PCI_GENERIC is not set
 # CONFIG_UIO_MF624 is not set
+# CONFIG_VFIO is not set
 CONFIG_VIRTIO=m
 
 #
@@ -932,35 +1038,39 @@ CONFIG_XEN_PRIVCMD=y
 #
 # Android
 #
-# CONFIG_SBYPASS is not set
-# CONFIG_BPCTL is not set
 # CONFIG_DRM_IMX is not set
-# CONFIG_BT_NOKIA_H4P is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+CONFIG_QCOM_GSBI=m
+CONFIG_KEYSTONE_NAVIGATOR_QMSS=m
+CONFIG_KEYSTONE_NAVIGATOR_DMA=m
 
 #
 # Common Clock Framework
 #
 CONFIG_COMMON_CLK_WM831X=y
 CONFIG_COMMON_CLK_VERSATILE=y
+CONFIG_CLK_SP810=y
+CONFIG_CLK_VEXPRESS_OSC=y
 CONFIG_COMMON_CLK_MAX77686=y
 # CONFIG_COMMON_CLK_AXI_CLKGEN is not set
 CONFIG_COMMON_CLK_KEYSTONE=y
-CONFIG_MVEBU_CLK_CPU=y
-CONFIG_MVEBU_CLK_COREDIV=y
-CONFIG_ARMADA_370_CLK=y
-CONFIG_ARMADA_375_CLK=y
-CONFIG_ARMADA_38X_CLK=y
-CONFIG_ARMADA_XP_CLK=y
-CONFIG_DOVE_CLK=y
+CONFIG_COMMON_CLK_SAMSUNG=y
 
 #
 # Hardware Spinlock drivers
 #
 # CONFIG_HWSPINLOCK_OMAP is not set
 # CONFIG_HSEM_U8500 is not set
+
+#
+# Clock Source drivers
+#
 CONFIG_DW_APB_TIMER=y
 CONFIG_DW_APB_TIMER_OF=y
-CONFIG_ARMADA_370_XP_TIMER=y
+CONFIG_MESON6_TIMER=y
 CONFIG_SUN4I_TIMER=y
 CONFIG_SUN5I_HSTIMER=y
 CONFIG_VT8500_TIMER=y
@@ -972,17 +1082,38 @@ CONFIG_ARM_ARCH_TIMER=y
 CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
 CONFIG_ARM_GLOBAL_TIMER=y
 CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
+CONFIG_CLKSRC_EXYNOS_MCT=y
+CONFIG_CLKSRC_SAMSUNG_PWM=y
 CONFIG_VF_PIT_TIMER=y
+CONFIG_MTK_TIMER=y
+CONFIG_SYS_SUPPORTS_SH_TMU=y
+CONFIG_SH_TIMER_TMU=y
 CONFIG_PL320_MBOX=y
-# CONFIG_OMAP2PLUS_MBOX is not set
-# CONFIG_OMAP_IOMMU is not set
+CONFIG_OMAP2PLUS_MBOX=m
+CONFIG_OMAP_MBOX_KFIFO_SIZE=256
+CONFIG_IOMMU_API=y
+CONFIG_OMAP_IOMMU=y
+# CONFIG_OMAP_IOMMU_DEBUG is not set
 # CONFIG_TEGRA_IOMMU_GART is not set
 # CONFIG_TEGRA_IOMMU_SMMU is not set
+# CONFIG_EXYNOS_IOMMU is not set
 # CONFIG_SHMOBILE_IOMMU is not set
 
+#
+# Remoteproc drivers
+#
+CONFIG_REMOTEPROC=m
+CONFIG_OMAP_REMOTEPROC=m
+
 #
 # Rpmsg drivers
 #
+CONFIG_RPMSG=m
+
+#
+# DEVFREQ Drivers
+#
+CONFIG_ARM_EXYNOS5_BUS_DEVFREQ=m
 # CONFIG_TI_AEMIF is not set
 # CONFIG_TI_EMIF is not set
 CONFIG_TEGRA20_MC=y
@@ -991,7 +1122,9 @@ CONFIG_TEGRA30_MC=y
 #
 # Analog to digital converters
 #
+# CONFIG_EXYNOS_ADC is not set
 # CONFIG_LP8788_ADC is not set
+CONFIG_ROCKCHIP_SARADC=m
 # CONFIG_TWL6030_GPADC is not set
 # CONFIG_XILINX_XADC is not set
 
@@ -1004,6 +1137,9 @@ CONFIG_TEGRA30_MC=y
 # CONFIG_PWM_LP3943 is not set
 # CONFIG_PWM_PCA9685 is not set
 # CONFIG_PWM_RENESAS_TPU is not set
+CONFIG_PWM_ROCKCHIP=m
+# CONFIG_PWM_SAMSUNG is not set
+CONFIG_PWM_STI=m
 # CONFIG_PWM_TEGRA is not set
 # CONFIG_PWM_TIECAP is not set
 # CONFIG_PWM_TIEHRPWM is not set
@@ -1011,8 +1147,13 @@ CONFIG_TEGRA30_MC=y
 # CONFIG_PWM_TWL_LED is not set
 # CONFIG_PWM_VT8500 is not set
 CONFIG_ARM_GIC=y
+CONFIG_GIC_NON_BANKED=y
+CONFIG_BRCMSTB_L2_IRQ=y
 CONFIG_DW_APB_ICTL=y
+CONFIG_OMAP_IRQCHIP=y
+CONFIG_RENESAS_INTC_IRQPIN=y
 CONFIG_IRQ_CROSSBAR=y
+# CONFIG_KEYSTONE_IRQ is not set
 CONFIG_ARCH_HAS_RESET_CONTROLLER=y
 CONFIG_STI_RESET_SYSCFG=y
 CONFIG_STIH415_RESET=y
@@ -1021,9 +1162,25 @@ CONFIG_STIH416_RESET=y
 #
 # PHY Subsystem
 #
+CONFIG_PHY_BERLIN_SATA=m
+CONFIG_PHY_EXYNOS_MIPI_VIDEO=y
+CONFIG_PHY_MIPHY365X=m
+CONFIG_PHY_RCAR_GEN2=m
 CONFIG_OMAP_CONTROL_PHY=m
 CONFIG_TWL4030_USB=m
+CONFIG_PHY_EXYNOS_DP_VIDEO=y
+CONFIG_PHY_EXYNOS5250_SATA=m
+CONFIG_PHY_HIX5HD2_SATA=m
 CONFIG_PHY_SUN4I_USB=m
+CONFIG_PHY_EXYNOS4210_USB2=y
+CONFIG_PHY_EXYNOS4X12_USB2=y
+CONFIG_PHY_EXYNOS5250_USB2=y
+CONFIG_PHY_EXYNOS5_USBDRD=m
+CONFIG_PHY_QCOM_APQ8064_SATA=m
+CONFIG_PHY_QCOM_IPQ806X_SATA=m
+CONFIG_PHY_STIH407_USB=m
+CONFIG_PHY_STIH41X_USB=m
+CONFIG_RAS=y
 
 #
 # File systems
@@ -1044,10 +1201,11 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=21
 #
 # Runtime Testing
 #
-CONFIG_DEBUG_IMX_UART_PORT=1
-CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
-# CONFIG_DEBUG_UART_8250 is not set
-CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+CONFIG_DEBUG_VF_UART_PORT=1
+CONFIG_DEBUG_LL_INCLUDE="debug/bcm63xx.S"
+CONFIG_DEBUG_UART_BCM63XX=y
+CONFIG_DEBUG_UART_PHYS=0xfffe8600
+CONFIG_DEBUG_UART_VIRT=0xfcfe8600
 # CONFIG_OC_ETM is not set
 # CONFIG_PID_IN_CONTEXTIDR is not set
 
@@ -1081,6 +1239,12 @@ CONFIG_GRKERNSEC_RWXMAP_LOG=y
 # CONFIG_CRYPTO_PCRYPT is not set
 CONFIG_CRYPTO_ABLK_HELPER=m
 
+#
+# Digest
+#
+CONFIG_CRYPTO_SHA1_ARM_NEON=m
+CONFIG_CRYPTO_SHA512_ARM_NEON=m
+
 #
 # Ciphers
 #
@@ -1092,13 +1256,12 @@ CONFIG_CRYPTO_AES_ARM_BS=m
 CONFIG_CRYPTO_DEV_OMAP_SHAM=m
 CONFIG_CRYPTO_DEV_OMAP_AES=m
 CONFIG_CRYPTO_DEV_OMAP_DES=m
-CONFIG_CRYPTO_DEV_SAHARA=m
+CONFIG_CRYPTO_DEV_S5P=m
 # CONFIG_CRYPTO_DEV_UX500 is not set
+CONFIG_CRYPTO_DEV_QCE=m
 
 #
 # Library routines
 #
-CONFIG_STMP_DEVICE=y
-CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_CPU_RMAP=y
 CONFIG_DDR=y
index b755713a407504afb48eb04d81519a8b775278c4..449f34635810e36fbef1c4022172642808367abc 100644 (file)
@@ -4,6 +4,16 @@
 #
 CONFIG_PREEMPT_NOTIFIERS=y
 
+#
+# CPU Core family selection
+#
+CONFIG_ARCH_AXXIA=y
+
+#
+# Power management
+#
+# CONFIG_ARCH_R8A7779 is not set
+
 #
 # Processor Features
 #
@@ -18,10 +28,38 @@ CONFIG_PHYS_ADDR_T_64BIT=y
 # CONFIG_TRANSPARENT_HUGEPAGE is not set
 
 #
-# Hardware Spinlock drivers
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+CONFIG_I2C_AXXIA=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_POWER_RESET_AXXIA=y
+CONFIG_ROCKCHIP_IODOMAIN=m
+
 #
+# Media drivers
+#
+# CONFIG_IR_SUNXI is not set
+
+#
+# Clock Source drivers
+#
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_IPMMU_VMSA is not set
 # CONFIG_ARM_SMMU is not set
 
+#
+# Analog to digital converters
+#
+# CONFIG_ROCKCHIP_SARADC is not set
+
+#
+# Digital to analog converters
+#
+# CONFIG_MAX5821 is not set
+
 #
 # Pseudo filesystems
 #
index a652a165f28f624fd317373ee45d469e295e084d..9c9dc5e0c0d6a4c34348a05527973587ac580b77 100644 (file)
@@ -6,7 +6,9 @@ CONFIG_MMU=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_GENERIC_BUG=y
 CONFIG_GENERIC_HWEIGHT=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 CONFIG_ARCH_SUPPORTS_UPROBES=y
@@ -38,6 +40,7 @@ CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_FHANDLE=y
 # CONFIG_USELIB is not set
 CONFIG_AUDIT=y
@@ -51,9 +54,11 @@ CONFIG_AUDIT_TREE=y
 #
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 
@@ -80,7 +85,9 @@ CONFIG_TASK_IO_ACCOUNTING=y
 # RCU Subsystem
 #
 # CONFIG_PREEMPT_RCU is not set
+# CONFIG_TASKS_RCU is not set
 # CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_BUILD_BIN2C is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=18
 CONFIG_CGROUPS=y
@@ -120,8 +127,10 @@ CONFIG_RD_LZ4=y
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
+CONFIG_BPF=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
+CONFIG_SGETMASK_SYSCALL=y
 CONFIG_SYSFS_SYSCALL=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
@@ -135,8 +144,10 @@ CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
+CONFIG_BPF_SYSCALL=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
 CONFIG_PCI_QUIRKS=y
 CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
@@ -165,6 +176,7 @@ CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
 CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
@@ -177,8 +189,8 @@ CONFIG_SECCOMP_FILTER=y
 CONFIG_HAVE_CC_STACKPROTECTOR=y
 CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_CC_STACKPROTECTOR_NONE is not set
-CONFIG_CC_STACKPROTECTOR_REGULAR=y
-# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_OLD_SIGSUSPEND3=y
 
@@ -196,6 +208,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODVERSIONS is not set
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
 CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_BLK_DEV_BSG=y
@@ -240,12 +253,13 @@ CONFIG_CFQ_GROUP_IOSCHED=y
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_ASN1=m
+CONFIG_ASN1=y
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
 CONFIG_INLINE_WRITE_UNLOCK=y
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
 CONFIG_FREEZER=y
 
 #
@@ -262,25 +276,22 @@ CONFIG_HAVE_MEMBLOCK=y
 CONFIG_MEMORY_ISOLATION=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_MEMORY_BALLOON=y
 CONFIG_BALLOON_COMPACTION=y
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
 CONFIG_ZONE_DMA_FLAG=1
 CONFIG_BOUNCE=y
 CONFIG_KSM=y
-CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_CLEANCACHE=y
 # CONFIG_FRONTSWAP is not set
 CONFIG_CMA=y
 # CONFIG_CMA_DEBUG is not set
+CONFIG_CMA_AREAS=7
+CONFIG_ZPOOL=m
 # CONFIG_ZBUD is not set
 # CONFIG_ZSMALLOC is not set
 CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-# CONFIG_HZ_250 is not set
-CONFIG_HZ_300=y
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=300
 CONFIG_SCHED_HRTICK=y
 CONFIG_CRASH_DUMP=y
 
@@ -326,7 +337,6 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
 # CPU Idle
 #
 CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
 CONFIG_CPU_IDLE_GOV_MENU=y
 
@@ -396,6 +406,9 @@ CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
 CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
+CONFIG_NET_UDP_TUNNEL=m
+CONFIG_NET_FOU=m
+# CONFIG_GENEVE is not set
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
@@ -421,6 +434,7 @@ CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
 CONFIG_DEFAULT_CUBIC=y
 # CONFIG_DEFAULT_RENO is not set
 CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -467,6 +481,7 @@ CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=m
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
 CONFIG_NF_CONNTRACK_ZONES=y
@@ -515,6 +530,7 @@ CONFIG_NFT_HASH=m
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_REJECT=m
@@ -545,6 +561,7 @@ CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
 CONFIG_NETFILTER_XT_TARGET_LED=m
 CONFIG_NETFILTER_XT_TARGET_LOG=m
 CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_NAT=m
 CONFIG_NETFILTER_XT_TARGET_NETMAP=m
 CONFIG_NETFILTER_XT_TARGET_NFLOG=m
 CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
@@ -617,6 +634,7 @@ CONFIG_IP_SET_HASH_IPMARK=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
 CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NETNET=m
@@ -645,6 +663,7 @@ CONFIG_IP_VS_RR=m
 CONFIG_IP_VS_WRR=m
 CONFIG_IP_VS_LC=m
 CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_FO=m
 CONFIG_IP_VS_LBLC=m
 CONFIG_IP_VS_LBLCR=m
 CONFIG_IP_VS_DH=m
@@ -670,11 +689,21 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=y
 CONFIG_NF_CONNTRACK_IPV4=y
 # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_TABLES_IPV4=m
 CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
 CONFIG_NFT_REJECT_IPV4=m
 CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
@@ -683,15 +712,10 @@ CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
 CONFIG_IP_NF_TARGET_SYNPROXY=m
-# CONFIG_IP_NF_TARGET_ULOG is not set
-CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_NAT=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_NETMAP=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
 CONFIG_IP_NF_MANGLE=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
@@ -709,8 +733,13 @@ CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
 CONFIG_NF_TABLES_IPV6=m
 CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
 CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
 CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -728,10 +757,13 @@ CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
-CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -752,7 +784,6 @@ CONFIG_BRIDGE_EBT_MARK_T=m
 CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
-# CONFIG_BRIDGE_EBT_ULOG is not set
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
 CONFIG_IP_SCTP=m
@@ -782,6 +813,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=y
+CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
@@ -796,8 +828,8 @@ CONFIG_LLC=y
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
 # CONFIG_IEEE802154 is not set
-CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -896,7 +928,6 @@ CONFIG_BQL=y
 # CONFIG_CAN is not set
 # CONFIG_IRDA is not set
 CONFIG_BT=m
-CONFIG_BT_6LOWPAN=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -946,7 +977,6 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
-# CONFIG_MAC80211_RC_PID is not set
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
@@ -972,14 +1002,15 @@ CONFIG_RFKILL_INPUT=y
 #
 # Generic Driver Options
 #
-CONFIG_UEVENT_HELPER_PATH=""
+# CONFIG_UEVENT_HELPER is not set
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
 CONFIG_EXTRA_FIRMWARE=""
-CONFIG_FW_LOADER_USER_HELPER=y
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+# CONFIG_ALLOW_DEV_COREDUMP is not set
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_GENERIC_CPU_DEVICES is not set
@@ -988,6 +1019,7 @@ CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_FENCE_TRACE is not set
 
 #
 # Bus devices
@@ -1020,13 +1052,11 @@ CONFIG_BLK_DEV_RAM_COUNT=16
 # Misc devices
 #
 # CONFIG_AD525X_DPOT is not set
-# CONFIG_ATMEL_PWM is not set
 CONFIG_DUMMY_IRQ=m
 # CONFIG_PHANTOM is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
 CONFIG_ICS932S401=m
-# CONFIG_ATMEL_SSC is not set
 CONFIG_ENCLOSURE_SERVICES=m
 # CONFIG_APDS9802ALS is not set
 # CONFIG_ISL29003 is not set
@@ -1064,6 +1094,10 @@ CONFIG_TI_ST=m
 #
 CONFIG_ALTERA_STAPL=m
 
+#
+# Intel MIC Bus Driver
+#
+
 #
 # Intel MIC Host Driver
 #
@@ -1072,6 +1106,7 @@ CONFIG_ALTERA_STAPL=m
 # Intel MIC Card Driver
 #
 # CONFIG_ECHO is not set
+# CONFIG_CXL_BASE is not set
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1082,8 +1117,8 @@ CONFIG_SCSI_MOD=y
 CONFIG_RAID_ATTRS=m
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
-CONFIG_SCSI_TGT=m
 CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -1097,7 +1132,6 @@ CONFIG_BLK_DEV_SR_VENDOR=y
 CONFIG_CHR_DEV_SG=y
 CONFIG_CHR_DEV_SCH=m
 CONFIG_SCSI_ENCLOSURE=m
-CONFIG_SCSI_MULTI_LUN=y
 CONFIG_SCSI_CONSTANTS=y
 CONFIG_SCSI_LOGGING=y
 CONFIG_SCSI_SCAN_ASYNC=y
@@ -1107,14 +1141,12 @@ CONFIG_SCSI_SCAN_ASYNC=y
 #
 CONFIG_SCSI_SPI_ATTRS=m
 CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_FC_TGT_ATTRS=y
 CONFIG_SCSI_ISCSI_ATTRS=m
 CONFIG_SCSI_SAS_ATTRS=m
 CONFIG_SCSI_SAS_LIBSAS=m
 CONFIG_SCSI_SAS_ATA=y
 CONFIG_SCSI_SAS_HOST_SMP=y
 CONFIG_SCSI_SRP_ATTRS=m
-CONFIG_SCSI_SRP_TGT_ATTRS=y
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
@@ -1182,7 +1214,6 @@ CONFIG_SCSI_DC390T=m
 # CONFIG_SCSI_DEBUG is not set
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
-# CONFIG_SCSI_SRP is not set
 # CONFIG_SCSI_BFA_FC is not set
 CONFIG_SCSI_VIRTIO=m
 CONFIG_SCSI_CHELSIO_FCOE=m
@@ -1373,18 +1404,23 @@ CONFIG_NET_DSA_MV88E6060=y
 CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
 CONFIG_NET_DSA_MV88E6131=y
 CONFIG_NET_DSA_MV88E6123_61_65=y
+CONFIG_NET_DSA_MV88E6171=m
+CONFIG_NET_DSA_BCM_SF2=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
 CONFIG_TYPHOON=m
 CONFIG_NET_VENDOR_ADAPTEC=y
 CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_AGERE=y
+CONFIG_ET131X=m
 CONFIG_NET_VENDOR_ALTEON=y
 CONFIG_ACENIC=m
 # CONFIG_ACENIC_OMIT_TIGON_I is not set
 CONFIG_ALTERA_TSE=m
 CONFIG_NET_VENDOR_AMD=y
 CONFIG_PCNET32=m
+CONFIG_NET_XGENE=m
 CONFIG_NET_VENDOR_ARC=y
 CONFIG_NET_VENDOR_ATHEROS=y
 CONFIG_ATL2=m
@@ -1403,7 +1439,6 @@ CONFIG_TIGON3=m
 CONFIG_BNX2X=m
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
-CONFIG_NET_CALXEDA_XGMAC=m
 CONFIG_NET_VENDOR_CHELSIO=y
 CONFIG_CHELSIO_T1=m
 CONFIG_CHELSIO_T3=m
@@ -1480,15 +1515,16 @@ CONFIG_YELLOWFIN=m
 CONFIG_NET_VENDOR_QLOGIC=y
 CONFIG_QLA3XXX=m
 CONFIG_QLCNIC=m
+CONFIG_QLCNIC_HWMON=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_NET_VENDOR_QUALCOMM=y
 CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_8139CP=m
 CONFIG_8139TOO=m
 # CONFIG_8139TOO_TUNE_TWISTER is not set
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
-CONFIG_SH_ETH=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_NET_VENDOR_SAMSUNG=y
@@ -1557,6 +1593,7 @@ CONFIG_MICREL_PHY=m
 CONFIG_FIXED_PHY=y
 CONFIG_MDIO_BITBANG=m
 # CONFIG_MDIO_GPIO is not set
+CONFIG_MDIO_BCM_UNIMAC=m
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
 CONFIG_PPP_DEFLATE=m
@@ -1571,10 +1608,7 @@ CONFIG_PPP_ASYNC=m
 CONFIG_PPP_SYNC_TTY=m
 # CONFIG_SLIP is not set
 CONFIG_SLHC=m
-
-#
-# USB Network Adapters
-#
+CONFIG_USB_NET_DRIVERS=m
 CONFIG_USB_CATC=m
 CONFIG_USB_KAWETH=m
 CONFIG_USB_PEGASUS=m
@@ -1643,8 +1677,10 @@ CONFIG_ATH9K=m
 CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 # CONFIG_ATH9K_DEBUGFS is not set
+CONFIG_ATH9K_DYNACK=y
 CONFIG_ATH9K_WOW=y
 CONFIG_ATH9K_RFKILL=y
+CONFIG_ATH9K_CHANNEL_CONTEXT=y
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
 CONFIG_CARL9170=m
@@ -1665,10 +1701,14 @@ CONFIG_WCN36XX=m
 CONFIG_B43=m
 CONFIG_B43_BCMA=y
 CONFIG_B43_SSB=y
+CONFIG_B43_BUSES_BCMA_AND_SSB=y
+# CONFIG_B43_BUSES_BCMA is not set
+# CONFIG_B43_BUSES_SSB is not set
 CONFIG_B43_PCI_AUTOSELECT=y
 CONFIG_B43_PCICORE_AUTOSELECT=y
 CONFIG_B43_BCMA_PIO=y
 CONFIG_B43_PIO=y
+CONFIG_B43_PHY_G=y
 CONFIG_B43_PHY_N=y
 CONFIG_B43_PHY_LP=y
 CONFIG_B43_PHY_HT=y
@@ -1762,6 +1802,8 @@ CONFIG_RTL8192DE=m
 CONFIG_RTL8723AE=m
 CONFIG_RTL8723BE=m
 CONFIG_RTL8188EE=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8821AE=m
 CONFIG_RTL8192CU=m
 CONFIG_RTLWIFI=m
 CONFIG_RTLWIFI_PCI=m
@@ -1868,11 +1910,11 @@ CONFIG_HISAX_HFC4S8S=m
 # Active cards
 #
 CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
 CONFIG_ISDN_CAPI_CAPI20=m
 CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPIDRV=m
+CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE=y
 
 #
 # CAPI hardware drivers
@@ -1892,9 +1934,9 @@ CONFIG_ISDN_HDLC=m
 # Input device support
 #
 CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=m
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
-CONFIG_INPUT_MATRIXKMAP=m
 
 #
 # Userland interfaces
@@ -1929,7 +1971,6 @@ CONFIG_KEYBOARD_LM8333=m
 # CONFIG_KEYBOARD_MPR121 is not set
 # CONFIG_KEYBOARD_NEWTON is not set
 # CONFIG_KEYBOARD_OPENCORES is not set
-# CONFIG_KEYBOARD_SAMSUNG is not set
 # CONFIG_KEYBOARD_STOWAWAY is not set
 # CONFIG_KEYBOARD_SUNKBD is not set
 CONFIG_KEYBOARD_TWL4030=m
@@ -1973,6 +2014,7 @@ CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_RETU_PWRBUTTON=m
 CONFIG_INPUT_UINPUT=m
+CONFIG_INPUT_PALMAS_PWRBUTTON=m
 # CONFIG_INPUT_PCF8574 is not set
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_DA9052_ONKEY is not set
@@ -1982,6 +2024,8 @@ CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
 CONFIG_INPUT_SOC_BUTTON_ARRAY=m
+CONFIG_INPUT_DRV260X_HAPTICS=m
+CONFIG_INPUT_DRV2667_HAPTICS=m
 
 #
 # Hardware I/O ports
@@ -2020,6 +2064,7 @@ CONFIG_N_GSM=m
 #
 # Serial drivers
 #
+CONFIG_SERIAL_EARLYCON=y
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
 CONFIG_SERIAL_8250_CONSOLE=y
@@ -2040,9 +2085,9 @@ CONFIG_SERIAL_8250_DW=m
 # CONFIG_SERIAL_MFD_HSU is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_SC16IS7XX=m
 # CONFIG_SERIAL_ALTERA_JTAGUART is not set
 # CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_PCH_UART is not set
 CONFIG_SERIAL_FSL_LPUART=m
 # CONFIG_TTY_PRINTK is not set
 CONFIG_IPMI_HANDLER=m
@@ -2054,15 +2099,18 @@ CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
-CONFIG_HW_RANDOM_ATMEL=m
 CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_HW_RANDOM_EXYNOS=m
 CONFIG_NVRAM=y
 CONFIG_R3964=m
 # CONFIG_APPLICOM is not set
 CONFIG_RAW_DRIVER=y
 CONFIG_MAX_RAW_DEVS=8192
 # CONFIG_TCG_TPM is not set
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
 CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
@@ -2109,7 +2157,6 @@ CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
 CONFIG_I2C_DESIGNWARE_PLATFORM=m
 # CONFIG_I2C_DESIGNWARE_PCI is not set
-# CONFIG_I2C_EG20T is not set
 # CONFIG_I2C_GPIO is not set
 CONFIG_I2C_KEMPLD=m
 # CONFIG_I2C_OCORES is not set
@@ -2140,6 +2187,10 @@ CONFIG_SPMI=m
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 
+#
+# HSI controllers
+#
+
 #
 # HSI clients
 #
@@ -2174,8 +2225,10 @@ CONFIG_PINCTRL=y
 # Pin controllers
 #
 # CONFIG_DEBUG_PINCTRL is not set
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIO_DEVRES=y
+CONFIG_GPIOLIB_IRQCHIP=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
 # CONFIG_GPIO_DA9052 is not set
@@ -2184,13 +2237,13 @@ CONFIG_GPIO_SYSFS=y
 #
 # Memory mapped GPIO drivers:
 #
-# CONFIG_GPIO_GENERIC_PLATFORM is not set
 # CONFIG_GPIO_SCH311X is not set
 # CONFIG_GPIO_VX855 is not set
 
 #
 # I2C GPIO expanders:
 #
+CONFIG_GPIO_CRYSTAL_COVE=m
 # CONFIG_GPIO_LP3943 is not set
 # CONFIG_GPIO_MAX7300 is not set
 # CONFIG_GPIO_MAX732X is not set
@@ -2198,7 +2251,6 @@ CONFIG_GPIO_SYSFS=y
 # CONFIG_GPIO_PCF857X is not set
 # CONFIG_GPIO_RC5T583 is not set
 # CONFIG_GPIO_SX150X is not set
-# CONFIG_GPIO_STMPE is not set
 # CONFIG_GPIO_TC3589X is not set
 # CONFIG_GPIO_TPS65912 is not set
 # CONFIG_GPIO_TWL4030 is not set
@@ -2260,6 +2312,7 @@ CONFIG_W1_SLAVE_SMEM=m
 CONFIG_W1_SLAVE_DS2408=m
 CONFIG_W1_SLAVE_DS2408_READBACK=y
 CONFIG_W1_SLAVE_DS2413=m
+CONFIG_W1_SLAVE_DS2406=m
 CONFIG_W1_SLAVE_DS2423=m
 CONFIG_W1_SLAVE_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
@@ -2286,6 +2339,7 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_CHARGER_MAX8903 is not set
 # CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_MANAGER is not set
 CONFIG_CHARGER_MAX14577=m
 # CONFIG_CHARGER_BQ2415X is not set
 # CONFIG_CHARGER_BQ24190 is not set
@@ -2335,6 +2389,7 @@ CONFIG_SENSORS_IBMPEX=m
 # CONFIG_SENSORS_IIO_HWMON is not set
 CONFIG_SENSORS_IT87=m
 # CONFIG_SENSORS_JC42 is not set
+CONFIG_SENSORS_POWR1220=m
 CONFIG_SENSORS_LINEAGE=m
 CONFIG_SENSORS_LTC2945=m
 CONFIG_SENSORS_LTC4151=m
@@ -2353,6 +2408,7 @@ CONFIG_SENSORS_MAX6650=m
 CONFIG_SENSORS_MAX6697=m
 CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_MENF21BMC_HWMON=m
 CONFIG_SENSORS_LM63=m
 CONFIG_SENSORS_LM73=m
 CONFIG_SENSORS_LM75=m
@@ -2371,6 +2427,7 @@ CONFIG_SENSORS_LM95245=m
 CONFIG_SENSORS_PC87360=m
 CONFIG_SENSORS_PC87427=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
+CONFIG_SENSORS_NCT6683=m
 CONFIG_SENSORS_NCT6775=m
 CONFIG_SENSORS_PCF8591=m
 CONFIG_PMBUS=m
@@ -2381,11 +2438,13 @@ CONFIG_SENSORS_LM25066=m
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_TPS40422=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
 # CONFIG_SENSORS_ZL6100 is not set
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SHTC1=m
 CONFIG_SENSORS_SIS5595=m
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_EMC1403=m
@@ -2406,6 +2465,7 @@ CONFIG_SENSORS_INA209=m
 CONFIG_SENSORS_INA2XX=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP103=m
 CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TMP421=m
 CONFIG_SENSORS_TWL4030_MADC=m
@@ -2435,6 +2495,7 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
 CONFIG_THERMAL_EMULATION=y
 
@@ -2451,10 +2512,13 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 CONFIG_SOFT_WATCHDOG=m
 CONFIG_DA9052_WATCHDOG=m
 CONFIG_DA9055_WATCHDOG=m
+CONFIG_DA9063_WATCHDOG=m
+CONFIG_MENF21BMC_WATCHDOG=m
 CONFIG_WM831X_WATCHDOG=m
 CONFIG_WM8350_WATCHDOG=m
 CONFIG_XILINX_WATCHDOG=m
 CONFIG_DW_WATCHDOG=m
+CONFIG_RN5T618_WATCHDOG=m
 CONFIG_TWL4030_WATCHDOG=m
 CONFIG_RETU_WATCHDOG=m
 CONFIG_ALIM7101_WDT=m
@@ -2509,6 +2573,7 @@ CONFIG_MFD_AS3711=y
 CONFIG_PMIC_ADP5520=y
 CONFIG_MFD_AAT2870_CORE=y
 CONFIG_MFD_BCM590XX=m
+CONFIG_MFD_AXP20X=y
 # CONFIG_MFD_CROS_EC is not set
 CONFIG_PMIC_DA903X=y
 CONFIG_PMIC_DA9052=y
@@ -2519,6 +2584,7 @@ CONFIG_MFD_DA9063=y
 # CONFIG_HTC_PASIC3 is not set
 CONFIG_HTC_I2CPLD=y
 CONFIG_LPC_SCH=m
+CONFIG_INTEL_SOC_PMIC=y
 # CONFIG_MFD_JANZ_CMODIO is not set
 CONFIG_MFD_KEMPLD=m
 CONFIG_MFD_88PM800=m
@@ -2531,6 +2597,7 @@ CONFIG_MFD_MAX8907=m
 CONFIG_MFD_MAX8925=y
 CONFIG_MFD_MAX8997=y
 CONFIG_MFD_MAX8998=y
+CONFIG_MFD_MENF21BMC=m
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_RETU=m
 # CONFIG_MFD_PCF50633 is not set
@@ -2538,17 +2605,12 @@ CONFIG_MFD_RETU=m
 # CONFIG_MFD_RDC321X is not set
 CONFIG_MFD_RTSX_USB=m
 CONFIG_MFD_RC5T583=y
+CONFIG_MFD_RN5T618=y
 CONFIG_MFD_SEC_CORE=y
 # CONFIG_MFD_SI476X_CORE is not set
 CONFIG_MFD_SM501=m
 CONFIG_MFD_SM501_GPIO=y
 CONFIG_MFD_SMSC=y
-CONFIG_MFD_STMPE=y
-
-#
-# STMicroelectronics STMPE Interface Drivers
-#
-CONFIG_STMPE_I2C=y
 CONFIG_MFD_SYSCON=y
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
 CONFIG_MFD_LP3943=m
@@ -2570,7 +2632,6 @@ CONFIG_MFD_TWL4030_AUDIO=y
 CONFIG_TWL6040_CORE=y
 CONFIG_MFD_WL1273_CORE=m
 CONFIG_MFD_LM3533=m
-# CONFIG_MFD_TIMBERDALE is not set
 CONFIG_MFD_TC3589X=y
 # CONFIG_MFD_TMIO is not set
 # CONFIG_MFD_ARIZONA_I2C is not set
@@ -2580,6 +2641,62 @@ CONFIG_MFD_WM831X_I2C=y
 CONFIG_MFD_WM8350=y
 CONFIG_MFD_WM8350_I2C=y
 CONFIG_MFD_WM8994=y
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+CONFIG_REGULATOR_88PM800=m
+CONFIG_REGULATOR_ACT8865=m
+CONFIG_REGULATOR_AD5398=m
+CONFIG_REGULATOR_ANATOP=m
+CONFIG_REGULATOR_AAT2870=m
+CONFIG_REGULATOR_AS3711=m
+CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BCM590XX=m
+CONFIG_REGULATOR_DA903X=m
+CONFIG_REGULATOR_DA9052=m
+CONFIG_REGULATOR_DA9055=m
+CONFIG_REGULATOR_DA9063=m
+CONFIG_REGULATOR_DA9210=m
+CONFIG_REGULATOR_DA9211=m
+CONFIG_REGULATOR_FAN53555=m
+CONFIG_REGULATOR_ISL9305=m
+CONFIG_REGULATOR_ISL6271A=m
+CONFIG_REGULATOR_LP3971=m
+CONFIG_REGULATOR_LP3972=m
+CONFIG_REGULATOR_LP8755=m
+CONFIG_REGULATOR_LTC3589=m
+CONFIG_REGULATOR_MAX14577=m
+CONFIG_REGULATOR_MAX1586=m
+CONFIG_REGULATOR_MAX8649=m
+CONFIG_REGULATOR_MAX8660=m
+CONFIG_REGULATOR_MAX8907=m
+CONFIG_REGULATOR_MAX8925=m
+CONFIG_REGULATOR_MAX8952=m
+CONFIG_REGULATOR_MAX8973=m
+CONFIG_REGULATOR_MAX8997=m
+CONFIG_REGULATOR_MAX8998=m
+CONFIG_REGULATOR_MAX77686=m
+CONFIG_REGULATOR_MAX77693=m
+CONFIG_REGULATOR_MAX77802=m
+CONFIG_REGULATOR_PALMAS=m
+CONFIG_REGULATOR_PFUZE100=m
+CONFIG_REGULATOR_RC5T583=m
+CONFIG_REGULATOR_RN5T618=m
+CONFIG_REGULATOR_S2MPA01=m
+CONFIG_REGULATOR_S2MPS11=m
+CONFIG_REGULATOR_S5M8767=m
+CONFIG_REGULATOR_TPS51632=m
+CONFIG_REGULATOR_TPS62360=m
+CONFIG_REGULATOR_TPS65023=m
+CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65090=m
+CONFIG_REGULATOR_TPS6586X=m
+CONFIG_REGULATOR_TPS65910=m
+CONFIG_REGULATOR_TPS65912=m
+CONFIG_REGULATOR_TPS80031=m
+CONFIG_REGULATOR_WM831X=m
+CONFIG_REGULATOR_WM8350=m
+CONFIG_REGULATOR_WM8400=m
+CONFIG_REGULATOR_WM8994=m
 CONFIG_MEDIA_SUPPORT=y
 
 #
@@ -2589,6 +2706,7 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y
 CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
 CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
 # CONFIG_MEDIA_RADIO_SUPPORT is not set
+CONFIG_MEDIA_SDR_SUPPORT=y
 CONFIG_MEDIA_RC_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
 CONFIG_VIDEO_DEV=y
@@ -2623,12 +2741,13 @@ CONFIG_IR_RC5_DECODER=m
 CONFIG_IR_RC6_DECODER=m
 CONFIG_IR_JVC_DECODER=m
 CONFIG_IR_SONY_DECODER=m
-CONFIG_IR_RC5_SZ_DECODER=m
 CONFIG_IR_SANYO_DECODER=m
 CONFIG_IR_SHARP_DECODER=m
 CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_XMP_DECODER=m
 CONFIG_RC_DEVICES=y
 # CONFIG_RC_ATI_REMOTE is not set
+# CONFIG_IR_HIX5HD2 is not set
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
 CONFIG_IR_REDRAT3=m
@@ -2659,6 +2778,7 @@ CONFIG_USB_GL860=m
 CONFIG_USB_GSPCA_BENQ=m
 CONFIG_USB_GSPCA_CONEX=m
 CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_DTCS033=m
 CONFIG_USB_GSPCA_ETOMS=m
 CONFIG_USB_GSPCA_FINEPIX=m
 CONFIG_USB_GSPCA_JEILINJ=m
@@ -2719,12 +2839,17 @@ CONFIG_VIDEO_USBTV=m
 CONFIG_VIDEO_STK1160_COMMON=m
 # CONFIG_VIDEO_STK1160_AC97 is not set
 CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+CONFIG_VIDEO_GO7007_LOADER=m
+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
 
 #
 # Analog/digital TV USB devices
 #
 CONFIG_VIDEO_AU0828=m
 CONFIG_VIDEO_AU0828_V4L2=y
+# CONFIG_VIDEO_AU0828_RC is not set
 CONFIG_VIDEO_CX231XX=m
 CONFIG_VIDEO_CX231XX_RC=y
 CONFIG_VIDEO_CX231XX_ALSA=m
@@ -2775,9 +2900,11 @@ CONFIG_DVB_USB_GL861=m
 CONFIG_DVB_USB_LME2510=m
 # CONFIG_DVB_USB_MXL111SF is not set
 CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_DVBSKY=m
 CONFIG_SMS_USB_DRV=m
 CONFIG_DVB_B2C2_FLEXCOP_USB=m
 # CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+CONFIG_DVB_AS102=m
 
 #
 # Webcam, TV (analog/digital) USB devices
@@ -2787,6 +2914,12 @@ CONFIG_VIDEO_EM28XX_V4L2=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_DVB=m
 CONFIG_VIDEO_EM28XX_RC=m
+
+#
+# Software defined radio USB devices
+#
+CONFIG_USB_AIRSPY=m
+CONFIG_USB_HACKRF=m
 CONFIG_MEDIA_PCI_SUPPORT=y
 
 #
@@ -2800,6 +2933,8 @@ CONFIG_MEDIA_PCI_SUPPORT=y
 # CONFIG_VIDEO_HEXIUM_GEMINI is not set
 # CONFIG_VIDEO_HEXIUM_ORION is not set
 # CONFIG_VIDEO_MXB is not set
+# CONFIG_VIDEO_SOLO6X10 is not set
+# CONFIG_VIDEO_TW68 is not set
 
 #
 # Media capture/analog/hybrid TV support
@@ -2808,15 +2943,14 @@ CONFIG_MEDIA_PCI_SUPPORT=y
 #
 # Media digital TV PCI Adapters
 #
+CONFIG_DVB_PT3=m
 # CONFIG_DVB_DDBRIDGE is not set
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA_PLATFORM=m
-# CONFIG_VIDEO_RCAR_VIN is not set
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
 # CONFIG_V4L_TEST_DRIVERS is not set
 
 #
@@ -2846,6 +2980,8 @@ CONFIG_VIDEO_IR_I2C=y
 # Audio decoders, processors and mixers
 #
 CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_UDA1342=m
+CONFIG_VIDEO_SONY_BTF_MPX=m
 
 #
 # RDS decoders
@@ -2856,6 +2992,9 @@ CONFIG_VIDEO_MSP3400=m
 #
 CONFIG_VIDEO_SAA711X=m
 CONFIG_VIDEO_TVP5150=m
+CONFIG_VIDEO_TW2804=m
+CONFIG_VIDEO_TW9903=m
+CONFIG_VIDEO_TW9906=m
 
 #
 # Video and audio decoders
@@ -2869,6 +3008,7 @@ CONFIG_VIDEO_CX25840=m
 #
 # Camera sensor devices
 #
+CONFIG_VIDEO_OV7640=m
 CONFIG_VIDEO_MT9V011=m
 
 #
@@ -2935,8 +3075,11 @@ CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
 CONFIG_MEDIA_TUNER_M88TS2022=m
 CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_SI2157=m
 CONFIG_MEDIA_TUNER_IT913X=m
 CONFIG_MEDIA_TUNER_R820T=m
+CONFIG_MEDIA_TUNER_MXL301RF=m
+CONFIG_MEDIA_TUNER_QM1D1C0042=m
 
 #
 # Multistandard (satellite) frontends
@@ -2952,6 +3095,7 @@ CONFIG_DVB_M88DS3103=m
 #
 CONFIG_DVB_DRXK=m
 CONFIG_DVB_TDA18271C2DD=m
+CONFIG_DVB_SI2165=m
 
 #
 # DVB-S (satellite) frontends
@@ -2992,6 +3136,9 @@ CONFIG_DVB_EC100=m
 CONFIG_DVB_CXD2820R=m
 CONFIG_DVB_RTL2830=m
 CONFIG_DVB_RTL2832=m
+CONFIG_DVB_RTL2832_SDR=m
+CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
 
 #
 # DVB-C (cable) frontends
@@ -3017,6 +3164,7 @@ CONFIG_DVB_S5H1411=m
 CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
+CONFIG_DVB_TC90522=m
 
 #
 # Digital terrestrial only tuners/PLL
@@ -3053,7 +3201,6 @@ CONFIG_VGA_ARB_MAX_GPUS=16
 # Direct Rendering Manager
 #
 CONFIG_DRM=m
-CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_KMS_FB_HELPER=y
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
@@ -3062,6 +3209,7 @@ CONFIG_DRM_TTM=m
 #
 # I2C encoder or helper chips
 #
+CONFIG_DRM_PTN3460=m
 CONFIG_DRM_TDFX=m
 CONFIG_DRM_R128=m
 CONFIG_DRM_MGA=m
@@ -3075,13 +3223,13 @@ CONFIG_DRM_MGAG200=m
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
 CONFIG_DRM_BOCHS=m
-CONFIG_DRM_PTN3460=m
 
 #
 # Frame buffer Devices
 #
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
 # CONFIG_FB_DDC is not set
 # CONFIG_FB_BOOT_VESA_SUPPORT is not set
 CONFIG_FB_CFB_FILLRECT=m
@@ -3092,7 +3240,6 @@ CONFIG_FB_CFB_IMAGEBLIT=m
 CONFIG_FB_DEFERRED_IO=y
 # CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
 CONFIG_FB_TILEBLITTING=y
 
 #
@@ -3125,18 +3272,15 @@ CONFIG_FB_TILEBLITTING=y
 # CONFIG_FB_ARK is not set
 # CONFIG_FB_PM3 is not set
 # CONFIG_FB_CARMINE is not set
-# CONFIG_FB_TMIO is not set
 # CONFIG_FB_SM501 is not set
 # CONFIG_FB_SMSCUFX is not set
 # CONFIG_FB_UDL is not set
-# CONFIG_FB_GOLDFISH is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_METRONOME is not set
 # CONFIG_FB_MB862XX is not set
 # CONFIG_FB_BROADSHEET is not set
 # CONFIG_FB_AUO_K190X is not set
 # CONFIG_FB_SIMPLE is not set
-# CONFIG_EXYNOS_VIDEO is not set
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
@@ -3151,10 +3295,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_ADP8870 is not set
 # CONFIG_BACKLIGHT_88PM860X is not set
 # CONFIG_BACKLIGHT_AAT2870 is not set
-# CONFIG_BACKLIGHT_LM3630A is not set
 # CONFIG_BACKLIGHT_LM3639 is not set
-# CONFIG_BACKLIGHT_LP855X is not set
-# CONFIG_BACKLIGHT_LP8788 is not set
 # CONFIG_BACKLIGHT_PANDORA is not set
 # CONFIG_BACKLIGHT_AS3711 is not set
 # CONFIG_BACKLIGHT_GPIO is not set
@@ -3318,6 +3459,7 @@ CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_6FIRE=m
 CONFIG_SND_USB_HIFACE=m
+CONFIG_SND_BCD2000=m
 # CONFIG_SOUND_PRIME is not set
 CONFIG_AC97_BUS=m
 
@@ -3350,6 +3492,7 @@ CONFIG_HID_CYPRESS=y
 # CONFIG_HID_ELO is not set
 CONFIG_HID_EZKEY=y
 # CONFIG_HID_HOLTEK is not set
+CONFIG_HID_GT683R=m
 # CONFIG_HID_HUION is not set
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=y
@@ -3360,7 +3503,7 @@ CONFIG_HID_GYRATION=m
 CONFIG_HID_TWINHAN=m
 CONFIG_HID_KENSINGTON=y
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LENOVO=m
 CONFIG_HID_LOGITECH=y
 CONFIG_HID_LOGITECH_DJ=m
 # CONFIG_LOGITECH_FF is not set
@@ -3374,6 +3517,7 @@ CONFIG_HID_MONTEREY=y
 # CONFIG_HID_NTRIG is not set
 CONFIG_HID_ORTEK=m
 # CONFIG_HID_PANTHERLORD is not set
+CONFIG_HID_PENMOUNT=m
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
@@ -3389,6 +3533,7 @@ CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SPEEDLINK=m
 # CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
+CONFIG_HID_RMI=m
 # CONFIG_HID_GREENASIA is not set
 # CONFIG_HID_SMARTJOYPLUS is not set
 CONFIG_HID_TIVO=m
@@ -3418,7 +3563,6 @@ CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 
 #
@@ -3429,6 +3573,7 @@ CONFIG_USB_DEFAULT_PERSIST=y
 CONFIG_USB_OTG=y
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_OTG_FSM=m
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB_CBAF=m
 # CONFIG_USB_WUSB_CBAF_DEBUG is not set
@@ -3438,6 +3583,7 @@ CONFIG_USB_WUSB_CBAF=m
 #
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_XHCI_PLATFORM=m
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
@@ -3500,6 +3646,7 @@ CONFIG_USB_UAS=m
 #
 CONFIG_USB_MDC800=m
 CONFIG_USB_MICROTEK=m
+# CONFIG_USBIP_CORE is not set
 CONFIG_USB_MUSB_HDRC=m
 CONFIG_USB_MUSB_HOST=y
 CONFIG_USB_MUSB_TUSB6010=m
@@ -3512,15 +3659,21 @@ CONFIG_USB_DWC3_HOST=y
 #
 # Platform Glue Driver Support
 #
-CONFIG_USB_DWC3_EXYNOS=m
 CONFIG_USB_DWC3_PCI=m
-CONFIG_USB_DWC3_KEYSTONE=m
 
 #
 # Debugging features
 #
 # CONFIG_USB_DWC3_DEBUG is not set
-CONFIG_USB_DWC2=m
+CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y
+CONFIG_USB_DWC2=y
+CONFIG_USB_DWC2_HOST=m
+CONFIG_USB_DWC2_PLATFORM=y
+CONFIG_USB_DWC2_PCI=y
+
+#
+# Gadget mode requires USB Gadget support to be enabled
+#
 # CONFIG_USB_DWC2_DEBUG is not set
 # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
 CONFIG_USB_CHIPIDEA=m
@@ -3579,7 +3732,6 @@ CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OPTICON is not set
 # CONFIG_USB_SERIAL_XSENS_MT is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
-CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_QT2=m
 # CONFIG_USB_SERIAL_DEBUG is not set
@@ -3611,6 +3763,7 @@ CONFIG_USB_IOWARRIOR=m
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
 CONFIG_USB_HSIC_USB3503=m
+CONFIG_USB_LINK_LAYER_TEST=m
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
@@ -3621,14 +3774,10 @@ CONFIG_USB_XUSBATM=m
 # USB Physical Layer drivers
 #
 CONFIG_USB_PHY=y
-CONFIG_USB_OTG_FSM=m
-CONFIG_SAMSUNG_USBPHY=m
-CONFIG_SAMSUNG_USB2PHY=m
-CONFIG_SAMSUNG_USB3PHY=m
 CONFIG_USB_GPIO_VBUS=m
 CONFIG_USB_ISP1301=m
-CONFIG_USB_RCAR_PHY=m
 # CONFIG_USB_GADGET is not set
+CONFIG_USB_LED_TRIG=y
 # CONFIG_UWB is not set
 # CONFIG_MMC_DEBUG is not set
 # CONFIG_MMC_CLKGATE is not set
@@ -3654,6 +3803,8 @@ CONFIG_MMC_CB710=m
 CONFIG_MMC_VIA_SDMMC=m
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
+CONFIG_MMC_USDHI6ROL0=m
+CONFIG_MMC_REALTEK_USB=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -3670,6 +3821,7 @@ CONFIG_MS_BLOCK=m
 CONFIG_MEMSTICK_TIFM_MS=m
 CONFIG_MEMSTICK_JMICRON_38X=m
 CONFIG_MEMSTICK_R592=m
+CONFIG_MEMSTICK_REALTEK_USB=m
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 
@@ -3691,17 +3843,22 @@ CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8788=m
 # CONFIG_LEDS_PCA955X is not set
 CONFIG_LEDS_PCA963X=m
-CONFIG_LEDS_PCA9685=m
 CONFIG_LEDS_WM831X_STATUS=m
 CONFIG_LEDS_WM8350=m
 CONFIG_LEDS_DA903X=m
 CONFIG_LEDS_DA9052=m
+CONFIG_LEDS_REGULATOR=m
 # CONFIG_LEDS_BD2802 is not set
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_ADP5520=m
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_MAX8997=m
 CONFIG_LEDS_LM355x=m
+CONFIG_LEDS_MENF21BMC=m
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
 CONFIG_LEDS_BLINKM=m
 
 #
@@ -3755,6 +3912,7 @@ CONFIG_RTC_DRV_MAX8925=m
 CONFIG_RTC_DRV_MAX8998=m
 CONFIG_RTC_DRV_MAX8997=m
 CONFIG_RTC_DRV_MAX77686=m
+CONFIG_RTC_DRV_MAX77802=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
@@ -3764,6 +3922,7 @@ CONFIG_RTC_DRV_PALMAS=m
 CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF85063=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80_WDT=y
@@ -3793,8 +3952,10 @@ CONFIG_RTC_DRV_DS1286=m
 CONFIG_RTC_DRV_DS1511=m
 CONFIG_RTC_DRV_DS1553=m
 CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_DS2404=m
 CONFIG_RTC_DRV_DA9052=m
 CONFIG_RTC_DRV_DA9055=m
+CONFIG_RTC_DRV_DA9063=m
 CONFIG_RTC_DRV_STK17TA8=m
 # CONFIG_RTC_DRV_M48T86 is not set
 CONFIG_RTC_DRV_M48T35=m
@@ -3803,14 +3964,13 @@ CONFIG_RTC_DRV_MSM6242=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_RP5C01=m
 CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_DS2404=m
 CONFIG_RTC_DRV_WM831X=m
 CONFIG_RTC_DRV_WM8350=m
 
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_MOXART=m
+CONFIG_RTC_DRV_XGENE=m
 
 #
 # HID Sensor RTC drivers
@@ -3852,9 +4012,6 @@ CONFIG_VIRTIO_BALLOON=m
 # Xen driver support
 #
 CONFIG_STAGING=y
-CONFIG_ET131X=m
-# CONFIG_USBIP_CORE is not set
-# CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
 # CONFIG_COMEDI is not set
 # CONFIG_RTL8192U is not set
@@ -3867,19 +4024,11 @@ CONFIG_RTLLIB_CRYPTO_WEP=m
 # CONFIG_R8188EU is not set
 CONFIG_R8723AU=m
 CONFIG_8723AU_AP_MODE=y
-CONFIG_8723AU_P2P=y
 CONFIG_8723AU_BT_COEXIST=y
-CONFIG_R8821AE=m
-# CONFIG_RTS5139 is not set
 CONFIG_RTS5208=m
-# CONFIG_RTS5208_DEBUG is not set
-# CONFIG_TRANZPORT is not set
-# CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH2 is not set
 # CONFIG_VT6655 is not set
 # CONFIG_VT6656 is not set
-# CONFIG_DX_SEP is not set
 
 #
 # IIO staging drivers
@@ -3892,9 +4041,7 @@ CONFIG_RTS5208=m
 #
 # Analog to digital converters
 #
-# CONFIG_AD7291 is not set
 # CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
 
 #
 # Analog digital bi-direction converters
@@ -3932,7 +4079,8 @@ CONFIG_RTS5208=m
 #
 # Magnetometer sensors
 #
-# CONFIG_SENSORS_HMC5843 is not set
+CONFIG_SENSORS_HMC5843=m
+CONFIG_SENSORS_HMC5843_I2C=m
 
 #
 # Active energy metering IC
@@ -3948,9 +4096,7 @@ CONFIG_RTS5208=m
 #
 # CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
 # CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_CRYSTALHD is not set
 # CONFIG_FB_XGI is not set
-# CONFIG_USB_ENESTORAGE is not set
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
 
@@ -3969,14 +4115,15 @@ CONFIG_RTS5208=m
 # CONFIG_USB_WPAN_HCD is not set
 # CONFIG_WIMAX_GDM72XX is not set
 # CONFIG_LTE_GDM724X is not set
-CONFIG_NET_VENDOR_SILICOM=y
-CONFIG_CED1401=m
-# CONFIG_DGRP is not set
 # CONFIG_LUSTRE_FS is not set
-# CONFIG_XILLYBUS is not set
 # CONFIG_DGNC is not set
 # CONFIG_DGAP is not set
 # CONFIG_GS_FPGABOOT is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+CONFIG_SOC_TI=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -3984,16 +4131,24 @@ CONFIG_COMMON_CLK=y
 #
 # Common Clock Framework
 #
+CONFIG_COMMON_CLK_MAX_GEN=y
+CONFIG_COMMON_CLK_MAX77802=m
 CONFIG_COMMON_CLK_SI5351=m
 CONFIG_COMMON_CLK_S2MPS11=m
 CONFIG_CLK_TWL6040=m
+CONFIG_COMMON_CLK_PALMAS=m
+# CONFIG_COMMON_CLK_PXA is not set
 
 #
 # Hardware Spinlock drivers
 #
+
+#
+# Clock Source drivers
+#
+# CONFIG_ATMEL_PIT is not set
 # CONFIG_SH_TIMER_CMT is not set
 # CONFIG_SH_TIMER_MTU2 is not set
-# CONFIG_SH_TIMER_TMU is not set
 # CONFIG_EM_TIMER_STI is not set
 CONFIG_MAILBOX=y
 CONFIG_IOMMU_SUPPORT=y
@@ -4006,7 +4161,23 @@ CONFIG_IOMMU_SUPPORT=y
 #
 # Rpmsg drivers
 #
-# CONFIG_PM_DEVFREQ is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+CONFIG_PM_DEVFREQ=y
+
+#
+# DEVFREQ Governors
+#
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
+CONFIG_DEVFREQ_GOV_PERFORMANCE=m
+CONFIG_DEVFREQ_GOV_POWERSAVE=m
+CONFIG_DEVFREQ_GOV_USERSPACE=m
+
+#
+# DEVFREQ Drivers
+#
 # CONFIG_EXTCON is not set
 CONFIG_MEMORY=y
 CONFIG_IIO=m
@@ -4021,12 +4192,17 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # Accelerometers
 #
 # CONFIG_BMA180 is not set
+# CONFIG_BMC150_ACCEL is not set
 # CONFIG_HID_SENSOR_ACCEL_3D is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_MMA8452 is not set
+CONFIG_KXCJK1013=m
 
 #
 # Analog to digital converters
 #
+# CONFIG_AD7291 is not set
+# CONFIG_AD799X is not set
 # CONFIG_MAX1363 is not set
 # CONFIG_MCP3422 is not set
 # CONFIG_NAU7802 is not set
@@ -4070,6 +4246,7 @@ CONFIG_IIO_ST_SENSORS_CORE=m
 #
 # Digital gyroscope sensors
 #
+# CONFIG_BMG160 is not set
 # CONFIG_HID_SENSOR_GYRO_3D is not set
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
 # CONFIG_ITG3200 is not set
@@ -4089,14 +4266,17 @@ CONFIG_DHT11=m
 # Light sensors
 #
 # CONFIG_ADJD_S311 is not set
+# CONFIG_AL3320A is not set
 # CONFIG_APDS9300 is not set
 CONFIG_CM32181=m
 # CONFIG_CM36651 is not set
 # CONFIG_GP2AP020A00F is not set
+# CONFIG_ISL29125 is not set
 # CONFIG_HID_SENSOR_ALS is not set
 # CONFIG_HID_SENSOR_PROX is not set
 # CONFIG_SENSORS_LM3533 is not set
 # CONFIG_LTR501 is not set
+# CONFIG_TCS3414 is not set
 # CONFIG_TCS3472 is not set
 # CONFIG_SENSORS_TSL2563 is not set
 # CONFIG_TSL4531 is not set
@@ -4106,6 +4286,7 @@ CONFIG_CM32181=m
 # Magnetometer sensors
 #
 # CONFIG_AK8975 is not set
+# CONFIG_AK09911 is not set
 # CONFIG_MAG3110 is not set
 # CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
@@ -4114,6 +4295,7 @@ CONFIG_CM32181=m
 # Inclinometer sensors
 #
 CONFIG_HID_SENSOR_INCLINOMETER_3D=m
+# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set
 
 #
 # Triggers - standalone
@@ -4125,13 +4307,20 @@ CONFIG_IIO_INTERRUPT_TRIGGER=m
 # Pressure sensors
 #
 # CONFIG_HID_SENSOR_PRESS is not set
+# CONFIG_MPL115 is not set
 CONFIG_MPL3115=m
 CONFIG_IIO_ST_PRESS=m
 CONFIG_IIO_ST_PRESS_I2C=m
+# CONFIG_T5403 is not set
+
+#
+# Lightning sensors
+#
 
 #
 # Temperature sensors
 #
+# CONFIG_MLX90614 is not set
 # CONFIG_TMP006 is not set
 # CONFIG_VME_BUS is not set
 # CONFIG_IPACK_BUS is not set
@@ -4146,6 +4335,7 @@ CONFIG_BCM_KONA_USB2_PHY=m
 CONFIG_PHY_SAMSUNG_USB2=m
 # CONFIG_POWERCAP is not set
 # CONFIG_MCB is not set
+CONFIG_THUNDERBOLT=m
 
 #
 # Firmware Drivers
@@ -4209,6 +4399,7 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+CONFIG_OVERLAY_FS=m
 
 #
 # Caches
@@ -4306,6 +4497,7 @@ CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
@@ -4394,7 +4586,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 # printk and dmesg options
 #
 CONFIG_PRINTK_TIME=y
-CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 # CONFIG_BOOT_PRINTK_DELAY is not set
 # CONFIG_DYNAMIC_DEBUG is not set
 
@@ -4442,13 +4634,13 @@ CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_PANIC_TIMEOUT=120
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
+CONFIG_SCHED_STACK_END_CHECK=y
 CONFIG_TIMER_STATS=y
 
 #
 # Lock Debugging (spinlocks, mutexes, etc...)
 #
 # CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
@@ -4462,6 +4654,7 @@ CONFIG_STACKTRACE=y
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_PI_LIST is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
@@ -4507,6 +4700,7 @@ CONFIG_DYNAMIC_FTRACE=y
 CONFIG_FUNCTION_PROFILER=y
 CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
 
@@ -4523,10 +4717,14 @@ CONFIG_RBTREE_TEST=m
 CONFIG_ASYNC_RAID6_TEST=m
 # CONFIG_TEST_STRING_HELPERS is not set
 # CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_RHASHTABLE is not set
 # CONFIG_BUILD_DOCSRC is not set
 # CONFIG_DMA_API_DEBUG is not set
-# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_LKM is not set
 # CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_UDELAY is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
@@ -4589,6 +4787,7 @@ CONFIG_PAX_USERCOPY=y
 # Memory Protections
 #
 CONFIG_GRKERNSEC_KMEM=y
+CONFIG_GRKERNSEC_BPF_HARDEN=y
 # CONFIG_GRKERNSEC_PERF_HARDEN is not set
 CONFIG_GRKERNSEC_RAND_THREADSTACK=y
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
@@ -4662,7 +4861,6 @@ CONFIG_GRKERNSEC_HARDEN_IPC=y
 #
 # Network Protections
 #
-CONFIG_GRKERNSEC_RANDNET=y
 CONFIG_GRKERNSEC_BLACKHOLE=y
 CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 # CONFIG_GRKERNSEC_SOCKET is not set
@@ -4704,6 +4902,10 @@ CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
 # CONFIG_SECURITY_SMACK is not set
 # CONFIG_SECURITY_TOMOYO is not set
 # CONFIG_SECURITY_APPARMOR is not set
+CONFIG_INTEGRITY=y
+CONFIG_INTEGRITY_SIGNATURE=y
+CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
+CONFIG_INTEGRITY_AUDIT=y
 # CONFIG_IMA is not set
 # CONFIG_EVM is not set
 CONFIG_DEFAULT_SECURITY_SELINUX=y
@@ -4720,7 +4922,6 @@ CONFIG_CRYPTO=y
 #
 # Crypto core or helper
 #
-CONFIG_CRYPTO_FIPS=y
 CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
 CONFIG_CRYPTO_AEAD=y
@@ -4740,6 +4941,7 @@ CONFIG_CRYPTO_MANAGER2=y
 CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_MCRYPTD=m
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
 
@@ -4781,7 +4983,7 @@ CONFIG_CRYPTO_RMD128=m
 CONFIG_CRYPTO_RMD160=m
 CONFIG_CRYPTO_RMD256=m
 CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
 CONFIG_CRYPTO_TGR192=m
@@ -4822,15 +5024,18 @@ CONFIG_CRYPTO_LZ4HC=m
 # Random Number Generation
 #
 CONFIG_CRYPTO_ANSI_CPRNG=m
+# CONFIG_CRYPTO_DRBG_MENU is not set
 CONFIG_CRYPTO_USER_API=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
 CONFIG_CRYPTO_HASH_INFO=y
 CONFIG_CRYPTO_HW=y
-CONFIG_ASYMMETRIC_KEY_TYPE=m
-CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
-CONFIG_PUBLIC_KEY_ALGO_RSA=m
-CONFIG_X509_CERTIFICATE_PARSER=m
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_PUBLIC_KEY_ALGO_RSA=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_PKCS7_MESSAGE_PARSER=m
+# CONFIG_PKCS7_TEST_KEY is not set
 CONFIG_VIRTUALIZATION=y
 CONFIG_BINARY_PRINTF=y
 
@@ -4882,6 +5087,7 @@ CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
 CONFIG_DECOMPRESS_LZ4=y
+CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
@@ -4891,14 +5097,18 @@ CONFIG_HAS_IOMEM=y
 CONFIG_HAS_DMA=y
 CONFIG_CHECK_SIGNATURE=y
 CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
 CONFIG_NLATTR=y
 CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
 CONFIG_AVERAGE=y
 CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
-CONFIG_MPILIB=m
-CONFIG_OID_REGISTRY=m
+CONFIG_MPILIB=y
+CONFIG_SIGNATURE=y
+CONFIG_OID_REGISTRY=y
 CONFIG_FONT_SUPPORT=y
 # CONFIG_FONTS is not set
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
+CONFIG_ARCH_HAS_SG_CHAIN=y
index b098b68f5dc3b00f788a09d7fe72195e2fc8810c..92db5b71d36f6ec707c32def966dd4c475fcd99d 100644 (file)
@@ -7,11 +7,6 @@ CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
 CONFIG_X86_32_SMP=y
 CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
 
-#
-# IRQ subsystem
-#
-CONFIG_KTIME_SCALAR=y
-
 #
 # Timers subsystem
 #
@@ -27,8 +22,6 @@ CONFIG_IRQ_TIME_ACCOUNTING=y
 # RCU Subsystem
 #
 CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_NOCB_CPU_NONE is not set
-# CONFIG_RCU_NOCB_CPU_ZERO is not set
 
 #
 # Kernel Performance Events And Counters
@@ -47,7 +40,6 @@ CONFIG_LBDAF=y
 # Processor type and features
 #
 CONFIG_X86_BIGSMP=y
-# CONFIG_X86_GOLDFISH is not set
 # CONFIG_X86_INTEL_MID is not set
 # CONFIG_X86_RDC321X is not set
 CONFIG_X86_32_NON_STANDARD=y
@@ -178,6 +170,7 @@ CONFIG_IBM_ASM=m
 CONFIG_CS5535_MFGPT=m
 CONFIG_CS5535_MFGPT_DEFAULT_IRQ=7
 CONFIG_CS5535_CLOCK_EVENT_SRC=m
+CONFIG_PCH_PHUB=m
 
 #
 # SCSI Transports
@@ -194,6 +187,11 @@ CONFIG_PATA_CS5530=m
 CONFIG_PATA_CS5536=m
 # CONFIG_PATA_SC1200 is not set
 
+#
+# Distributed Switch Architecture drivers
+#
+CONFIG_PCH_GBE=m
+
 #
 # Input Device Drivers
 #
@@ -203,6 +201,7 @@ CONFIG_PATA_CS5536=m
 # Non-8250 serial port support
 #
 # CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_PCH_UART is not set
 CONFIG_HW_RANDOM_GEODE=m
 CONFIG_SONYPI=m
 CONFIG_PC8736x_GPIO=m
@@ -217,17 +216,40 @@ CONFIG_I2C_ALI15X3=m
 CONFIG_I2C_SIS5595=m
 CONFIG_I2C_SIS630=m
 
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_EG20T is not set
+
 #
 # Other I2C/SMBus bus drivers
 #
 CONFIG_SCx200_ACB=m
 
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PTP_1588_CLOCK_PCH=m
+
+#
+# PCI GPIO expanders:
+#
+# CONFIG_GPIO_CS5535 is not set
+# CONFIG_GPIO_PCH is not set
+
 #
 # Watchdog Device Drivers
 #
 CONFIG_GEODE_WDT=m
+# CONFIG_SBC8360_WDT is not set
 # CONFIG_SBC7240_WDT is not set
 
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CS5535=m
+# CONFIG_MFD_TIMBERDALE is not set
+
 #
 # Media digital TV PCI Adapters
 #
@@ -276,13 +298,18 @@ CONFIG_LEDS_OT200=m
 # CONFIG_EDAC_I82860 is not set
 # CONFIG_EDAC_R82600 is not set
 
+#
+# DMA Devices
+#
+CONFIG_PCH_DMA=m
+
 #
 # Android
 #
 CONFIG_TC1100_WMI=m
 
 #
-# Hardware Spinlock drivers
+# Clock Source drivers
 #
 CONFIG_CLKSRC_I8253=y
 
index 2de8875769135e382e2af10568cc260d3f926ef1..388fbff087e645ecab51829a0f67f68d17f929a1 100644 (file)
@@ -13,6 +13,16 @@ CONFIG_HIGHMEM4G=y
 # CONFIG_VMSPLIT_2G_OPT is not set
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 
+#
+# Power management and ACPI options
+#
+CONFIG_PM_OPP=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPUFREQ_DT=m
+
 #
 # Bus options (PCI etc.)
 #
@@ -43,7 +53,6 @@ CONFIG_CMA_SIZE_SEL_MBYTES=y
 # CONFIG_CMA_SIZE_SEL_MIN is not set
 # CONFIG_CMA_SIZE_SEL_MAX is not set
 CONFIG_CMA_ALIGNMENT=8
-CONFIG_CMA_AREAS=7
 
 #
 # Bus devices
@@ -53,7 +62,6 @@ CONFIG_OF=y
 #
 # Device Tree and Open Firmware support
 #
-# CONFIG_OF_SELFTEST is not set
 CONFIG_OF_PROMTREE=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_ADDRESS_PCI=y
@@ -66,12 +74,17 @@ CONFIG_OF_PCI_IRQ=y
 #
 # Distributed Switch Architecture drivers
 #
+CONFIG_AMD_XGBE=m
+CONFIG_ARC_EMAC_CORE=m
 # CONFIG_ARC_EMAC is not set
+CONFIG_EMAC_ROCKCHIP=m
 CONFIG_BCMGENET=m
+CONFIG_SYSTEMPORT=m
 
 #
 # MII PHY device drivers
 #
+CONFIG_AMD_XGBE_PHY=m
 CONFIG_MDIO_BUS_MUX=m
 CONFIG_MDIO_BUS_MUX_GPIO=m
 CONFIG_MDIO_BUS_MUX_MMIOREG=m
@@ -79,7 +92,11 @@ CONFIG_MDIO_BUS_MUX_MMIOREG=m
 #
 # Input Device Drivers
 #
+CONFIG_KEYBOARD_STMPE=m
+CONFIG_KEYBOARD_OMAP4=m
+CONFIG_KEYBOARD_CAP1106=m
 CONFIG_MOUSE_PS2_OLPC=y
+CONFIG_INPUT_MAX77693_HAPTIC=m
 CONFIG_INPUT_MAX8997_HAPTIC=m
 # CONFIG_INPUT_GPIO_BEEPER is not set
 CONFIG_INPUT_PWM_BEEPER=m
@@ -111,6 +128,7 @@ CONFIG_SERIAL_OF_PLATFORM=y
 #
 CONFIG_I2C_PXA=m
 CONFIG_I2C_PXA_PCI=y
+CONFIG_I2C_RK3X=m
 
 #
 # Pin controllers
@@ -119,9 +137,6 @@ CONFIG_PINMUX=y
 CONFIG_PINCONF=y
 CONFIG_GENERIC_PINCONF=y
 CONFIG_PINCTRL_AS3722=y
-CONFIG_PINCTRL_BCM281XX=y
-CONFIG_PINCTRL_MSM=y
-CONFIG_PINCTRL_MSM8X74=m
 # CONFIG_PINCTRL_SINGLE is not set
 CONFIG_PINCTRL_PALMAS=y
 CONFIG_OF_GPIO=y
@@ -136,6 +151,7 @@ CONFIG_OF_GPIO=y
 #
 # I2C GPIO expanders:
 #
+# CONFIG_GPIO_STMPE is not set
 CONFIG_GPIO_ADNP=m
 
 #
@@ -149,17 +165,20 @@ CONFIG_GPIO_CS5535=y
 #
 # CONFIG_GPIO_MCP23S08 is not set
 
-#
-# MODULbus GPIO expanders:
-#
-# CONFIG_GPIO_BCM_KONA is not set
-
 #
 # 1-wire Slaves
 #
 CONFIG_BATTERY_OLPC=y
 CONFIG_POWER_RESET_AS3722=y
 CONFIG_POWER_RESET_GPIO=y
+CONFIG_POWER_RESET_GPIO_RESTART=y
+CONFIG_POWER_RESET_LTC2952=y
+CONFIG_POWER_RESET_SYSCON=y
+
+#
+# Native drivers
+#
+CONFIG_SENSORS_PWM_FAN=m
 
 #
 # ACPI drivers
@@ -175,12 +194,28 @@ CONFIG_POWER_RESET_GPIO=y
 # Multifunction device drivers
 #
 CONFIG_MFD_AS3722=y
+CONFIG_MFD_HI6421_PMIC=m
+CONFIG_MFD_RK808=y
+CONFIG_MFD_STMPE=y
+
+#
+# STMicroelectronics STMPE Interface Drivers
+#
+CONFIG_STMPE_I2C=y
+CONFIG_REGULATOR_AS3722=m
+CONFIG_REGULATOR_HI6421=m
+CONFIG_REGULATOR_PWM=m
+CONFIG_REGULATOR_RK808=m
+CONFIG_REGULATOR_TPS65218=m
 
 #
 # Frame buffer hardware drivers
 #
 # CONFIG_FB_SSD1307 is not set
 CONFIG_BACKLIGHT_PWM=m
+# CONFIG_BACKLIGHT_LM3630A is not set
+# CONFIG_BACKLIGHT_LP855X is not set
+# CONFIG_BACKLIGHT_LP8788 is not set
 # CONFIG_BACKLIGHT_OT200 is not set
 
 #
@@ -199,11 +234,17 @@ CONFIG_MMC_SDHCI_OF_ARASAN=m
 #
 CONFIG_LEDS_PWM=m
 
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
+CONFIG_LEDS_SYSCON=y
+
 #
 # I2C RTC drivers
 #
 CONFIG_RTC_DRV_AS3722=m
 CONFIG_RTC_DRV_HYM8563=m
+CONFIG_RTC_DRV_RK808=m
 
 #
 # on-CPU RTC drivers
@@ -226,13 +267,18 @@ CONFIG_DMA_OF=y
 # Android
 #
 CONFIG_XO1_RFKILL=m
+# CONFIG_XO15_EBOOK is not set
 
 #
 # Common Clock Framework
 #
+CONFIG_COMMON_CLK_RK808=m
 # CONFIG_COMMON_CLK_SI5351 is not set
 CONFIG_COMMON_CLK_SI570=m
 CONFIG_COMMON_CLK_QCOM=m
+CONFIG_APQ_GCC_8084=m
+CONFIG_APQ_MMCC_8084=m
+CONFIG_IPQ_GCC_806X=m
 CONFIG_MSM_GCC_8660=m
 CONFIG_MSM_GCC_8960=m
 CONFIG_MSM_MMCC_8960=m
@@ -240,16 +286,20 @@ CONFIG_MSM_GCC_8974=m
 CONFIG_MSM_MMCC_8974=m
 
 #
-# Hardware Spinlock drivers
+# Clock Source drivers
 #
 CONFIG_OF_IOMMU=y
 
 #
 # Analog to digital converters
 #
-# CONFIG_EXYNOS_ADC is not set
 CONFIG_VF610_ADC=m
 
+#
+# Digital to analog converters
+#
+CONFIG_MAX5821=m
+
 #
 # Temperature sensors
 #
@@ -258,6 +308,8 @@ CONFIG_PWM_SYSFS=y
 CONFIG_PWM_FSL_FTM=m
 CONFIG_PWM_LP3943=m
 CONFIG_PWM_LPSS=m
+CONFIG_PWM_LPSS_PCI=m
+CONFIG_PWM_LPSS_PLATFORM=m
 CONFIG_PWM_PCA9685=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
index f70382b543ed3ee606ccfeb1aac7d77cdd355a0c..0764a317f845a433eb11c60d9404253871d0d2b4 100644 (file)
@@ -1,18 +1,18 @@
 CONFIG_X86=y
 CONFIG_INSTRUCTION_DECODER=y
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
 CONFIG_NEED_SG_DMA_LENGTH=y
 CONFIG_GENERIC_ISA_DMA=y
 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_ARCH_HAS_CPU_RELAX=y
 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
 CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
 CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
 CONFIG_X86_HT=y
+CONFIG_FIX_EARLYCON_MEM=y
 
 #
 # General setup
@@ -22,10 +22,11 @@ CONFIG_X86_HT=y
 #
 # IRQ subsystem
 #
+CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
 CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_SPARSE_IRQ=y
 CONFIG_CLOCKSOURCE_WATCHDOG=y
 CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
 CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
 CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
@@ -40,9 +41,10 @@ CONFIG_RCU_FANOUT_LEAF=16
 # CONFIG_RCU_FANOUT_EXACT is not set
 CONFIG_RCU_FAST_NO_HZ=y
 CONFIG_RCU_NOCB_CPU=y
+# CONFIG_RCU_NOCB_CPU_NONE is not set
+# CONFIG_RCU_NOCB_CPU_ZERO is not set
 CONFIG_RCU_NOCB_CPU_ALL=y
-CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
-CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
 CONFIG_SYSCTL_EXCEPTION_TRACE=y
 CONFIG_PCSPKR_PLATFORM=y
 
@@ -60,14 +62,21 @@ CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
 CONFIG_PREEMPT_NOTIFIERS=y
 CONFIG_PADATA=y
 CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_ARCH_USE_QUEUE_RWLOCK=y
+CONFIG_QUEUE_RWLOCK=y
 
 #
 # Processor type and features
 #
 CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
 CONFIG_X86_MPPARSE=y
 CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_GOLDFISH is not set
 CONFIG_X86_INTEL_LPSS=y
+CONFIG_IOSF_MBI=m
+# CONFIG_IOSF_MBI_DEBUG is not set
 CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
 CONFIG_HYPERVISOR_GUEST=y
@@ -151,6 +160,11 @@ CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+CONFIG_HZ_300=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=300
 CONFIG_RELOCATABLE=y
 CONFIG_RANDOMIZE_BASE=y
 CONFIG_X86_NEED_RELOCS=y
@@ -166,6 +180,8 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 CONFIG_HIBERNATE_CALLBACKS=y
 CONFIG_PM_SLEEP_SMP=y
 CONFIG_ACPI=y
+CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
+CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
 CONFIG_ACPI_SLEEP=y
 # CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_EC_DEBUGFS=m
@@ -282,6 +298,11 @@ CONFIG_HOTPLUG_PCI_ACPI_IBM=m
 # CONFIG_RAPIDIO is not set
 # CONFIG_X86_SYSFB is not set
 
+#
+# Executable file formats / Emulations
+#
+CONFIG_PMC_ATOM=y
+
 #
 # Classification
 #
@@ -296,14 +317,17 @@ CONFIG_NET_FLOW_LIMIT=y
 #
 CONFIG_BT_HCIBTSDIO=m
 CONFIG_BT_MRVL_SDIO=m
+CONFIG_RFKILL_REGULATOR=m
 CONFIG_RFKILL_GPIO=m
 
 #
 # Generic Driver Options
 #
 # CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_FW_LOADER_USER_HELPER=y
 CONFIG_SYS_HYPERVISOR=y
 CONFIG_GENERIC_CPU_AUTOPROBE=y
+# CONFIG_DMA_CMA is not set
 
 #
 # Bus devices
@@ -346,7 +370,6 @@ CONFIG_BLK_DEV_RSXX=m
 CONFIG_SENSORS_LIS3LV02D=m
 CONFIG_HP_ILO=m
 CONFIG_VMWARE_BALLOON=m
-CONFIG_PCH_PHUB=m
 # CONFIG_SRAM is not set
 
 #
@@ -373,6 +396,7 @@ CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
 CONFIG_SCSI_BUSLOGIC=m
 CONFIG_VMWARE_PVSCSI=m
+CONFIG_XEN_SCSI_FRONTEND=m
 CONFIG_FCOE_FNIC=m
 CONFIG_SCSI_EATA=m
 CONFIG_SCSI_EATA_TAGGED_QUEUE=y
@@ -452,9 +476,10 @@ CONFIG_IXGBE_DCA=y
 CONFIG_IXGBEVF=m
 CONFIG_I40E_VXLAN=y
 CONFIG_I40EVF=m
+CONFIG_FM10K=m
+CONFIG_FM10K_VXLAN=y
 CONFIG_SKGE_GENESIS=y
 CONFIG_MYRI10GE_DCA=y
-CONFIG_PCH_GBE=m
 CONFIG_QLCNIC_SRIOV=y
 CONFIG_QLCNIC_VXLAN=y
 CONFIG_ATP=m
@@ -469,10 +494,6 @@ CONFIG_NET_SB1000=m
 # MII PHY device drivers
 #
 # CONFIG_PLIP is not set
-
-#
-# USB Network Adapters
-#
 CONFIG_AIRO=m
 CONFIG_ATH5K_DEBUG=y
 # CONFIG_WIL6210_TRACING is not set
@@ -498,17 +519,18 @@ CONFIG_XEN_NETDEV_BACKEND=m
 #
 # Input device support
 #
-CONFIG_INPUT_FF_MEMLESS=m
+CONFIG_INPUT_MATRIXKMAP=m
 
 #
 # Input Device Drivers
 #
 CONFIG_KEYBOARD_ADP5520=m
-CONFIG_KEYBOARD_STMPE=m
+CONFIG_KEYBOARD_SAMSUNG=m
 CONFIG_KEYBOARD_TC3589X=m
 CONFIG_MOUSE_PS2_LIFEBOOK=y
 CONFIG_INPUT_PCSPKR=m
 CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_GPIO_BEEPER=m
 CONFIG_INPUT_ATLAS_BTNS=m
 CONFIG_INPUT_TWL4030_PWRBUTTON=m
 CONFIG_INPUT_TWL4030_VIBRA=m
@@ -539,7 +561,7 @@ CONFIG_NOZOMI=m
 # Serial drivers
 #
 CONFIG_SERIAL_8250_PNP=y
-CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_FINTEK=m
 
 #
 # Non-8250 serial port support
@@ -567,6 +589,11 @@ CONFIG_HPET=y
 CONFIG_HANGCHECK_TIMER=m
 # CONFIG_TELCLOCK is not set
 
+#
+# I2C support
+#
+CONFIG_ACPI_I2C_OPREGION=y
+
 #
 # PC SMBus host controller drivers
 #
@@ -599,23 +626,18 @@ CONFIG_PPS=m
 #
 CONFIG_PTP_1588_CLOCK=m
 
-#
-# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
-#
-CONFIG_PTP_1588_CLOCK_PCH=m
-
 #
 # Pin controllers
 #
-# CONFIG_PINMUX is not set
-# CONFIG_PINCONF is not set
 # CONFIG_PINCTRL_BAYTRAIL is not set
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_GPIO_ACPI=y
+CONFIG_GPIO_GENERIC=m
 
 #
 # Memory mapped GPIO drivers:
 #
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+CONFIG_GPIO_DWAPB=m
 # CONFIG_GPIO_IT8761E is not set
 # CONFIG_GPIO_F7188X is not set
 CONFIG_GPIO_SCH=m
@@ -625,9 +647,12 @@ CONFIG_GPIO_ICH=m
 #
 # PCI GPIO expanders:
 #
-# CONFIG_GPIO_CS5535 is not set
 # CONFIG_GPIO_INTEL_MID is not set
-# CONFIG_GPIO_PCH is not set
+
+#
+# SPI GPIO expanders:
+#
+CONFIG_GPIO_MCP23S08=m
 
 #
 # 1-wire Slaves
@@ -644,6 +669,8 @@ CONFIG_CHARGER_88PM860X=m
 CONFIG_BATTERY_RX51=m
 CONFIG_CHARGER_TWL4030=m
 CONFIG_CHARGER_LP8788=m
+CONFIG_CHARGER_MAX8997=m
+CONFIG_CHARGER_MAX8998=m
 CONFIG_CHARGER_TPS65090=m
 
 #
@@ -667,7 +694,9 @@ CONFIG_SENSORS_ACPI_POWER=m
 CONFIG_SENSORS_ATK0110=m
 CONFIG_INTEL_POWERCLAMP=m
 CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
+CONFIG_INTEL_SOC_DTS_THERMAL=m
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
 
 #
 # Watchdog Device Drivers
@@ -693,14 +722,11 @@ CONFIG_HPWDT_NMI_DECODING=y
 # CONFIG_PC87413_WDT is not set
 CONFIG_NV_TCO=m
 # CONFIG_60XX_WDT is not set
-# CONFIG_SBC8360_WDT is not set
 # CONFIG_CPU5_WDT is not set
 CONFIG_SMSC_SCH311X_WDT=m
 # CONFIG_SMSC37B787_WDT is not set
 CONFIG_VIA_WDT=m
 CONFIG_W83627HF_WDT=m
-CONFIG_W83697HF_WDT=m
-CONFIG_W83697UG_WDT=m
 CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
@@ -721,21 +747,25 @@ CONFIG_SSB_SDIOHOST=y
 #
 # Multifunction device drivers
 #
-CONFIG_MFD_CS5535=m
 CONFIG_LPC_ICH=m
 CONFIG_MFD_RTSX_PCI=m
 # CONFIG_ABX500_CORE is not set
-
-#
-# STMicroelectronics STMPE Interface Drivers
-#
 CONFIG_MFD_VX855=m
-# CONFIG_REGULATOR is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=m
+CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
+CONFIG_REGULATOR_USERSPACE_CONSUMER=m
+CONFIG_REGULATOR_88PM8607=m
+CONFIG_REGULATOR_GPIO=m
+CONFIG_REGULATOR_LP872X=m
+CONFIG_REGULATOR_LP8788=m
+CONFIG_REGULATOR_TWL4030=m
 
 #
 # Multimedia core support
 #
 CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF2_DMA_SG=m
+CONFIG_VIDEOBUF2_DVB=m
 CONFIG_TTPCI_EEPROM=m
 
 #
@@ -785,11 +815,13 @@ CONFIG_VIDEO_SAA7134=m
 CONFIG_VIDEO_SAA7134_ALSA=m
 CONFIG_VIDEO_SAA7134_RC=y
 CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_GO7007=m
 CONFIG_VIDEO_SAA7164=m
 
 #
 # Media digital TV PCI Adapters
 #
+CONFIG_DVB_AV7110_IR=y
 CONFIG_DVB_AV7110=m
 CONFIG_DVB_AV7110_OSD=y
 CONFIG_DVB_BUDGET_CORE=m
@@ -806,9 +838,6 @@ CONFIG_MANTIS_CORE=m
 CONFIG_DVB_MANTIS=m
 CONFIG_DVB_HOPPER=m
 CONFIG_DVB_NGENE=m
-CONFIG_SOC_CAMERA_SCALE_CROP=m
-CONFIG_VIDEO_SH_MOBILE_CSI2=m
-CONFIG_VIDEO_SH_MOBILE_CEU=m
 
 #
 # Supported MMC/SDIO adapters
@@ -916,7 +945,6 @@ CONFIG_DRM_I915=m
 CONFIG_DRM_I915_KMS=y
 CONFIG_DRM_I915_FBDEV=y
 # CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
-# CONFIG_DRM_I915_UMS is not set
 CONFIG_DRM_SIS=m
 CONFIG_DRM_GMA500=m
 CONFIG_DRM_GMA600=y
@@ -930,6 +958,7 @@ CONFIG_FB_SYS_COPYAREA=m
 CONFIG_FB_SYS_IMAGEBLIT=m
 CONFIG_FB_SYS_FOPS=m
 CONFIG_FB_BACKLIGHT=y
+# CONFIG_FB_MODE_HELPERS is not set
 
 #
 # Frame buffer hardware drivers
@@ -1023,6 +1052,7 @@ CONFIG_EDAC_E752X=m
 CONFIG_EDAC_I82975X=m
 CONFIG_EDAC_I3000=m
 CONFIG_EDAC_I3200=m
+CONFIG_EDAC_IE31200=m
 CONFIG_EDAC_X38=m
 CONFIG_EDAC_I5400=m
 CONFIG_EDAC_I7CORE=m
@@ -1037,7 +1067,6 @@ CONFIG_EDAC_I7300=m
 CONFIG_INTEL_IOATDMA=m
 CONFIG_DW_DMAC=m
 CONFIG_DW_DMAC_PCI=m
-CONFIG_PCH_DMA=m
 CONFIG_DMA_ACPI=y
 
 #
@@ -1085,16 +1114,9 @@ CONFIG_XEN_HAVE_PVMMU=y
 # CONFIG_SLICOSS is not set
 # CONFIG_PANEL is not set
 
-#
-# Triggers - standalone
-#
-# CONFIG_ACPI_QUICKSTART is not set
-
 #
 # Android
 #
-CONFIG_SBYPASS=m
-CONFIG_BPCTL=m
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
@@ -1103,6 +1125,7 @@ CONFIG_ASUS_LAPTOP=m
 CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
+CONFIG_DELL_SMO8800=m
 CONFIG_FUJITSU_LAPTOP=m
 # CONFIG_FUJITSU_LAPTOP_DEBUG is not set
 # CONFIG_FUJITSU_TABLET is not set
@@ -1134,10 +1157,10 @@ CONFIG_MSI_WMI=m
 CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_TOSHIBA_HAPS=m
 CONFIG_ACPI_CMPC=m
 CONFIG_INTEL_IPS=m
 # CONFIG_IBM_RTL is not set
-# CONFIG_XO15_EBOOK is not set
 CONFIG_SAMSUNG_LAPTOP=m
 CONFIG_MXM_WMI=m
 CONFIG_INTEL_OAKTRAIL=m
@@ -1157,11 +1180,12 @@ CONFIG_COMMON_CLK_WM831X=m
 CONFIG_COMMON_CLK_MAX77686=m
 
 #
-# Hardware Spinlock drivers
+# Clock Source drivers
 #
 CONFIG_CLKEVT_I8253=y
 CONFIG_I8253_LOCK=y
 CONFIG_CLKBLD_I8253=y
+# CONFIG_SH_TIMER_TMU is not set
 CONFIG_IOMMU_API=y
 CONFIG_DMAR_TABLE=y
 CONFIG_INTEL_IOMMU=y
@@ -1180,6 +1204,14 @@ CONFIG_TWL6030_GPADC=m
 # CONFIG_NTB is not set
 # CONFIG_PWM is not set
 
+#
+# PHY Subsystem
+#
+# CONFIG_PHY_EXYNOS4210_USB2 is not set
+# CONFIG_PHY_EXYNOS4X12_USB2 is not set
+# CONFIG_PHY_EXYNOS5250_USB2 is not set
+CONFIG_RAS=y
+
 #
 # Firmware Drivers
 #
@@ -1201,6 +1233,7 @@ CONFIG_ISCSI_IBFT=m
 CONFIG_EFI_VARS=y
 CONFIG_EFI_VARS_PSTORE=y
 # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
 CONFIG_UEFI_CPER=y
 
 #
@@ -1350,6 +1383,8 @@ CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
 CONFIG_CRYPTO_DEV_CCP=y
 CONFIG_CRYPTO_DEV_CCP_DD=m
 CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
+CONFIG_CRYPTO_DEV_QAT=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
 CONFIG_KVM_APIC_ARCHITECTURE=y
 CONFIG_KVM_MMIO=y
 CONFIG_KVM_ASYNC_PF=y
@@ -1365,7 +1400,8 @@ CONFIG_KVM_DEVICE_ASSIGNMENT=y
 #
 CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
+CONFIG_INTERVAL_TREE=y
 CONFIG_HAS_IOPORT_MAP=y
 CONFIG_CPU_RMAP=y
 # CONFIG_DDR is not set
index 157896f8438cec8206767b03a11b8d819574efb4..ac1488d18a2e7f6b365cf8c3c3dd386e82861e7b 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CONTEXT_TRACKING=y
 CONFIG_RCU_USER_QS=y
 CONFIG_CONTEXT_TRACKING_FORCE=y
 CONFIG_RCU_FANOUT=64
+CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
 CONFIG_ARCH_SUPPORTS_INT128=y
 # CONFIG_NUMA_BALANCING is not set
 
@@ -136,7 +137,11 @@ CONFIG_BLK_DEV_SKD=m
 #
 # CONFIG_IBM_ASM is not set
 CONFIG_SGI_IOC4=m
-# CONFIG_CS5535_MFGPT is not set
+
+#
+# Intel MIC Bus Driver
+#
+CONFIG_INTEL_MIC_BUS=m
 
 #
 # Intel MIC Host Driver
@@ -148,6 +153,7 @@ CONFIG_SGI_IOC4=m
 #
 # CONFIG_INTEL_MIC_CARD is not set
 CONFIG_GENWQE=m
+CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
 
 #
 # SCSI Transports
@@ -175,16 +181,30 @@ CONFIG_EDAC_AMD64=m
 # CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
 CONFIG_EDAC_SBRIDGE=m
 
+#
+# DMA Devices
+#
+CONFIG_INTEL_MIC_X100_DMA=m
+
 #
 # Xen driver support
 #
 # CONFIG_XEN_MCE_LOG is not set
+CONFIG_XEN_EFI=y
+
+#
+# Android
+#
+CONFIG_CRYPTO_SKEIN=y
+CONFIG_CRYPTO_THREEFISH=y
+# CONFIG_UNISYSSPAR is not set
 
 #
-# Hardware Spinlock drivers
+# Clock Source drivers
 #
 CONFIG_AMD_IOMMU=y
 CONFIG_AMD_IOMMU_STATS=y
+CONFIG_AMD_IOMMU_V2=m
 CONFIG_IRQ_REMAP=y
 
 #
@@ -205,7 +225,6 @@ CONFIG_TASK_SIZE_MAX_SHIFT=47
 #
 # Memory Protections
 #
-CONFIG_GRKERNSEC_JIT_HARDEN=y
 CONFIG_GRKERNSEC_KSTACKOVERFLOW=y
 
 #
@@ -225,6 +244,7 @@ CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m
 CONFIG_CRYPTO_SHA1_SSSE3=m
 CONFIG_CRYPTO_SHA256_SSSE3=m
 CONFIG_CRYPTO_SHA512_SSSE3=m
+# CONFIG_CRYPTO_SHA1_MB is not set
 CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
 
 #
@@ -237,6 +257,7 @@ CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m
 CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m
 CONFIG_CRYPTO_CAST5_AVX_X86_64=m
 CONFIG_CRYPTO_CAST6_AVX_X86_64=m
+CONFIG_CRYPTO_DES3_EDE_X86_64=m
 CONFIG_CRYPTO_SALSA20_X86_64=m
 CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m
 CONFIG_CRYPTO_SERPENT_AVX_X86_64=m
index da672622dd57b7c8136cee0390988b20c222e6c6..d6c33e07ecf980a7b58b0127482cecaee72575da 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = kernel
-version    = 3.15.6
+version    = 3.18.2
 release    = 1
 thisapp    = linux-%{version}
 
@@ -45,6 +45,7 @@ build
                bison
                elfutils-devel
                flex
+               gcc >= 4.9
                gcc-plugin-devel
                gettext
                libunwind-devel
@@ -56,6 +57,7 @@ build
                python-devel
                slang-devel
                xmlto
+               xz
 
                /sbin/depmod
                %{kernel_logo}
@@ -288,7 +290,7 @@ build
                                %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
 
                        find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
-                               xargs chmod u+x
+                               xargs --no-run-if-empty chmod u+x
 
                        # Move all development files to /usr/src.
                        mkdir -p %{BUILDROOT}/usr/src/kernels
similarity index 88%
rename from kernel/patches/grsecurity-3.0-3.15.6-201407232200.patch
rename to kernel/patches/grsecurity-3.0-3.18.2-201501120821.patch
index f992e88c04eee484fbae39d12a113369b13765ba..34d077be60776cdf346652347e3edc0bdf2d3938 100644 (file)
@@ -234,11 +234,89 @@ index 9de9813..1462492 100644
  zconf.hash.c
 +zconf.lex.c
  zoffset.h
+diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
+index a311db8..415b28c 100644
+--- a/Documentation/kbuild/makefiles.txt
++++ b/Documentation/kbuild/makefiles.txt
+@@ -23,10 +23,11 @@ This document describes the Linux kernel Makefiles.
+       === 4 Host Program support
+          --- 4.1 Simple Host Program
+          --- 4.2 Composite Host Programs
+-         --- 4.3 Using C++ for host programs
+-         --- 4.4 Controlling compiler options for host programs
+-         --- 4.5 When host programs are actually built
+-         --- 4.6 Using hostprogs-$(CONFIG_FOO)
++         --- 4.3 Defining shared libraries
++         --- 4.4 Using C++ for host programs
++         --- 4.5 Controlling compiler options for host programs
++         --- 4.6 When host programs are actually built
++         --- 4.7 Using hostprogs-$(CONFIG_FOO)
+       === 5 Kbuild clean infrastructure
+@@ -642,7 +643,29 @@ Both possibilities are described in the following.
+       Finally, the two .o files are linked to the executable, lxdialog.
+       Note: The syntax <executable>-y is not permitted for host-programs.
+---- 4.3 Using C++ for host programs
++--- 4.3 Defining shared libraries
++
++      Objects with extension .so are considered shared libraries, and
++      will be compiled as position independent objects.
++      Kbuild provides support for shared libraries, but the usage
++      shall be restricted.
++      In the following example the libkconfig.so shared library is used
++      to link the executable conf.
++
++      Example:
++              #scripts/kconfig/Makefile
++              hostprogs-y     := conf
++              conf-objs       := conf.o libkconfig.so
++              libkconfig-objs := expr.o type.o
++
++      Shared libraries always require a corresponding -objs line, and
++      in the example above the shared library libkconfig is composed by
++      the two objects expr.o and type.o.
++      expr.o and type.o will be built as position independent code and
++      linked as a shared library libkconfig.so. C++ is not supported for
++      shared libraries.
++
++--- 4.4 Using C++ for host programs
+       kbuild offers support for host programs written in C++. This was
+       introduced solely to support kconfig, and is not recommended
+@@ -665,7 +688,7 @@ Both possibilities are described in the following.
+               qconf-cxxobjs := qconf.o
+               qconf-objs    := check.o
+---- 4.4 Controlling compiler options for host programs
++--- 4.5 Controlling compiler options for host programs
+       When compiling host programs, it is possible to set specific flags.
+       The programs will always be compiled utilising $(HOSTCC) passed
+@@ -693,7 +716,7 @@ Both possibilities are described in the following.
+       When linking qconf, it will be passed the extra option
+       "-L$(QTDIR)/lib".
+---- 4.5 When host programs are actually built
++--- 4.6 When host programs are actually built
+       Kbuild will only build host-programs when they are referenced
+       as a prerequisite.
+@@ -724,7 +747,7 @@ Both possibilities are described in the following.
+       This will tell kbuild to build lxdialog even if not referenced in
+       any rule.
+---- 4.6 Using hostprogs-$(CONFIG_FOO)
++--- 4.7 Using hostprogs-$(CONFIG_FOO)
+       A typical pattern in a Kbuild file looks like this:
 diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
-index 30a8ad0d..2ed9efd 100644
+index 479f332..2475ac2 100644
 --- a/Documentation/kernel-parameters.txt
 +++ b/Documentation/kernel-parameters.txt
-@@ -1103,6 +1103,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
+@@ -1182,6 +1182,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0.
                        Default: 1024
  
@@ -249,7 +327,7 @@ index 30a8ad0d..2ed9efd 100644
        hashdist=       [KNL,NUMA] Large hashes allocated during boot
                        are distributed across NUMA nodes.  Defaults on
                        for 64-bit NUMA, off otherwise.
-@@ -2099,6 +2103,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
+@@ -2259,6 +2263,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        noexec=on: enable non-executable mappings (default)
                        noexec=off: disable non-executable mappings
  
@@ -260,7 +338,7 @@ index 30a8ad0d..2ed9efd 100644
        nosmap          [X86]
                        Disable SMAP (Supervisor Mode Access Prevention)
                        even if it is supported by processor.
-@@ -2366,6 +2374,25 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
+@@ -2551,6 +2559,30 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        the specified number of seconds.  This is to be used if
                        your oopses keep scrolling off the screen.
  
@@ -270,8 +348,13 @@ index 30a8ad0d..2ed9efd 100644
 +                      page table updates on X86-64.
 +
 +      pax_sanitize_slab=
-+                      0/1 to disable/enable slab object sanitization (enabled by
-+                      default).
++                      Format: { 0 | 1 | off | fast | full }
++                      Options '0' and '1' are only provided for backward
++                      compatibility, 'off' or 'fast' should be used instead.
++                      0|off : disable slab object sanitization
++                      1|fast: enable slab object sanitization excluding
++                              whitelisted slabs (default)
++                      full  : sanitize all slabs, even the whitelisted ones
 +
 +      pax_softmode=   0/1 to disable/enable PaX softmode on boot already.
 +
@@ -287,22 +370,21 @@ index 30a8ad0d..2ed9efd 100644
  
        pcd.            [PARIDE]
 diff --git a/Makefile b/Makefile
-index fefa023..06f4bb4 100644
+index 8f73b41..320950a 100644
 --- a/Makefile
 +++ b/Makefile
-@@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
+@@ -298,7 +298,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
  HOSTCC       = gcc
  HOSTCXX      = g++
--HOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
+ HOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
 -HOSTCXXFLAGS = -O2
-+HOSTCFLAGS   = -Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -fno-delete-null-pointer-checks
++HOSTCFLAGS   = -Wall -W -Wmissing-prototypes -Wstrict-prototypes -Wno-unused-parameter -Wno-missing-field-initializers -O2 -fomit-frame-pointer -std=gnu89 -fno-delete-null-pointer-checks
 +HOSTCFLAGS  += $(call cc-option, -Wno-empty-body)
 +HOSTCXXFLAGS = -O2 -Wall -W -Wno-array-bounds
  
  ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
  HOSTCFLAGS  += -Wno-unused-value -Wno-unused-parameter \
-@@ -438,8 +439,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
+@@ -445,8 +447,8 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
  # Rules shared between *config targets and build targets
  
  # Basic helpers built in scripts/
@@ -313,9 +395,9 @@ index fefa023..06f4bb4 100644
        $(Q)$(MAKE) $(build)=scripts/basic
        $(Q)rm -f .tmp_quiet_recordmcount
  
-@@ -600,6 +601,72 @@ else
- KBUILD_CFLAGS += -O2
- endif
+@@ -620,6 +622,72 @@ endif
+ # Tell gcc to never replace conditional load with a non-conditional one
+ KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
  
 +ifndef DISABLE_PAX_PLUGINS
 +ifeq ($(call cc-ifversion, -ge, 0408, y), y)
@@ -383,10 +465,19 @@ index fefa023..06f4bb4 100644
 +endif
 +endif
 +
- include $(srctree)/arch/$(SRCARCH)/Makefile
  ifdef CONFIG_READABLE_ASM
-@@ -816,7 +883,7 @@ export mod_sign_cmd
+ # Disable optimizations that make assembler listings hard to read.
+ # reorder blocks reorders the control in the function
+@@ -712,7 +780,7 @@ KBUILD_CFLAGS   += $(call cc-option, -gsplit-dwarf, -g)
+ else
+ KBUILD_CFLAGS += -g
+ endif
+-KBUILD_AFLAGS += -Wa,-gdwarf-2
++KBUILD_AFLAGS += -Wa,--gdwarf-2
+ endif
+ ifdef CONFIG_DEBUG_INFO_DWARF4
+ KBUILD_CFLAGS += $(call cc-option, -gdwarf-4,)
+@@ -877,7 +945,7 @@ export mod_sign_cmd
  
  
  ifeq ($(KBUILD_EXTMOD),)
@@ -395,16 +486,16 @@ index fefa023..06f4bb4 100644
  
  vmlinux-dirs  := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
                     $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
-@@ -865,6 +932,8 @@ endif
+@@ -924,6 +992,8 @@ endif
  
- # The actual objects are generated when descending, 
+ # The actual objects are generated when descending,
  # make sure no implicit rule kicks in
 +$(filter-out $(init-y),$(vmlinux-deps)): KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
 +$(filter-out $(init-y),$(vmlinux-deps)): KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
  $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
  
  # Handle descending into subdirectories listed in $(vmlinux-dirs)
-@@ -874,7 +943,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
+@@ -933,7 +1003,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
  # Error messages still appears in the original language
  
  PHONY += $(vmlinux-dirs)
@@ -413,7 +504,7 @@ index fefa023..06f4bb4 100644
        $(Q)$(MAKE) $(build)=$@
  
  define filechk_kernel.release
-@@ -917,10 +986,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
+@@ -976,10 +1046,13 @@ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
  
  archprepare: archheaders archscripts prepare1 scripts_basic
  
@@ -427,8 +518,8 @@ index fefa023..06f4bb4 100644
  prepare: prepare0
  
  # Generate some files
-@@ -1028,6 +1100,8 @@ all: modules
- #     using awk while concatenating to the final file.
+@@ -1094,6 +1167,8 @@ all: modules
+ # using awk while concatenating to the final file.
  
  PHONY += modules
 +modules: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
@@ -436,7 +527,7 @@ index fefa023..06f4bb4 100644
  modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
        $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
        @$(kecho) '  Building modules, stage 2.';
-@@ -1043,7 +1117,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
+@@ -1109,7 +1184,7 @@ modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
  
  # Target to prepare building external modules
  PHONY += modules_prepare
@@ -445,7 +536,7 @@ index fefa023..06f4bb4 100644
  
  # Target to install modules
  PHONY += modules_install
-@@ -1109,7 +1183,10 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \
+@@ -1175,7 +1250,10 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \
                  Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
                  signing_key.priv signing_key.x509 x509.genkey         \
                  extra_certificates signing_key.x509.keyid             \
@@ -457,7 +548,7 @@ index fefa023..06f4bb4 100644
  
  # clean - Delete most, but leave enough to build external modules
  #
-@@ -1148,7 +1225,7 @@ distclean: mrproper
+@@ -1214,7 +1292,7 @@ distclean: mrproper
        @find $(srctree) $(RCS_FIND_IGNORE) \
                \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
                -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
@@ -466,7 +557,7 @@ index fefa023..06f4bb4 100644
                -type f -print | xargs rm -f
  
  
-@@ -1309,6 +1386,8 @@ PHONY += $(module-dirs) modules
+@@ -1380,6 +1458,8 @@ PHONY += $(module-dirs) modules
  $(module-dirs): crmodverdir $(objtree)/Module.symvers
        $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
  
@@ -475,7 +566,7 @@ index fefa023..06f4bb4 100644
  modules: $(module-dirs)
        @$(kecho) '  Building modules, stage 2.';
        $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
-@@ -1448,17 +1527,21 @@ else
+@@ -1520,17 +1600,21 @@ else
          target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
  endif
  
@@ -501,10 +592,10 @@ index fefa023..06f4bb4 100644
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  %.symtypes: %.c prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
-@@ -1468,11 +1551,15 @@ endif
-       $(cmd_crmodverdir)
-       $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
+@@ -1542,11 +1626,15 @@ endif
        $(build)=$(build-dir)
+ # Make sure the latest headers are built for Documentation
+ Documentation/: headers_install
 -%/: prepare scripts FORCE
 +%/: KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
 +%/: KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
@@ -520,10 +611,10 @@ index fefa023..06f4bb4 100644
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)   \
        $(build)=$(build-dir) $(@:.ko=.o)
 diff --git a/arch/alpha/include/asm/atomic.h b/arch/alpha/include/asm/atomic.h
-index 78b03ef..da28a51 100644
+index 8f8eafb..3405f46 100644
 --- a/arch/alpha/include/asm/atomic.h
 +++ b/arch/alpha/include/asm/atomic.h
-@@ -292,6 +292,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
+@@ -239,4 +239,14 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
  #define atomic_dec(v) atomic_sub(1,(v))
  #define atomic64_dec(v) atomic64_sub(1,(v))
  
@@ -537,9 +628,7 @@ index 78b03ef..da28a51 100644
 +#define atomic64_dec_unchecked(v)             atomic64_dec(v)
 +#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
 +
- #define smp_mb__before_atomic_dec()   smp_mb()
- #define smp_mb__after_atomic_dec()    smp_mb()
- #define smp_mb__before_atomic_inc()   smp_mb()
+ #endif /* _ALPHA_ATOMIC_H */
 diff --git a/arch/alpha/include/asm/cache.h b/arch/alpha/include/asm/cache.h
 index ad368a9..fbe0f25 100644
 --- a/arch/alpha/include/asm/cache.h
@@ -637,10 +726,10 @@ index 2fd00b7..cfd5069 100644
  
        for (i = 0; i < n; i++) {
 diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
-index 1402fcc..0b1abd2 100644
+index f9c732e..78fbb0f 100644
 --- a/arch/alpha/kernel/osf_sys.c
 +++ b/arch/alpha/kernel/osf_sys.c
-@@ -1298,10 +1298,11 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
+@@ -1295,10 +1295,11 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
     generic version except that we know how to honor ADDR_LIMIT_32BIT.  */
  
  static unsigned long
@@ -654,7 +743,7 @@ index 1402fcc..0b1abd2 100644
  
        info.flags = 0;
        info.length = len;
-@@ -1309,6 +1310,7 @@ arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
+@@ -1306,6 +1307,7 @@ arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
        info.high_limit = limit;
        info.align_mask = 0;
        info.align_offset = 0;
@@ -662,7 +751,7 @@ index 1402fcc..0b1abd2 100644
        return vm_unmapped_area(&info);
  }
  
-@@ -1341,20 +1343,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -1338,20 +1340,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
           merely specific addresses, but regions of memory -- perhaps
           this feature should be incorporated into all ports?  */
  
@@ -852,10 +941,10 @@ index 98838a0..b304fb4 100644
                /* Allow reads even for write-only mappings */
                if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
 diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index db3c541..a1acc89 100644
+index 89c4b5c..847a7be 100644
 --- a/arch/arm/Kconfig
 +++ b/arch/arm/Kconfig
-@@ -1877,7 +1877,7 @@ config ALIGNMENT_TRAP
+@@ -1740,7 +1740,7 @@ config ALIGNMENT_TRAP
  
  config UACCESS_WITH_MEMCPY
        bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()"
@@ -864,7 +953,7 @@ index db3c541..a1acc89 100644
        default y if CPU_FEROCEON
        help
          Implement faster copy_to_user and clear_user methods for CPU
-@@ -2141,6 +2141,7 @@ config XIP_PHYS_ADDR
+@@ -2004,6 +2004,7 @@ config XIP_PHYS_ADDR
  config KEXEC
        bool "Kexec system call (EXPERIMENTAL)"
        depends on (!SMP || PM_SLEEP_SMP)
@@ -873,10 +962,10 @@ index db3c541..a1acc89 100644
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
 diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h
-index 9a92fd7..3502a80 100644
+index e22c119..8fa9957 100644
 --- a/arch/arm/include/asm/atomic.h
 +++ b/arch/arm/include/asm/atomic.h
-@@ -18,17 +18,35 @@
+@@ -18,17 +18,41 @@
  #include <asm/barrier.h>
  #include <asm/cmpxchg.h>
  
@@ -888,6 +977,12 @@ index 9a92fd7..3502a80 100644
  
  #ifdef __KERNEL__
  
++#ifdef CONFIG_THUMB2_KERNEL
++#define REFCOUNT_TRAP_INSN "bkpt      0xf1"
++#else
++#define REFCOUNT_TRAP_INSN "bkpt      0xf103"
++#endif
++
 +#define _ASM_EXTABLE(from, to)                \
 +"     .pushsection __ex_table,\"a\"\n"\
 +"     .align  3\n"                    \
@@ -899,10 +994,10 @@ index 9a92fd7..3502a80 100644
   * strex/ldrex monitor on some implementations. The reason we can use it for
   * atomic_set() is the clrex or dummy strex done on every exception return.
   */
- #define atomic_read(v)        (*(volatile int *)&(v)->counter)
+ #define atomic_read(v)        ACCESS_ONCE((v)->counter)
 +static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
 +{
-+      return v->counter;
++      return ACCESS_ONCE(v->counter);
 +}
  #define atomic_set(v,i)       (((v)->counter) = (i))
 +static inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
@@ -912,153 +1007,91 @@ index 9a92fd7..3502a80 100644
  
  #if __LINUX_ARM_ARCH__ >= 6
  
-@@ -44,6 +62,36 @@ static inline void atomic_add(int i, atomic_t *v)
-       prefetchw(&v->counter);
-       __asm__ __volatile__("@ atomic_add\n"
-+"1:   ldrex   %1, [%3]\n"
-+"     adds    %0, %1, %4\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"     bvc     3f\n"
-+"2:   bkpt    0xf103\n"
-+"3:\n"
-+#endif
-+
-+"     strex   %1, %0, [%3]\n"
-+"     teq     %1, #0\n"
-+"     bne     1b"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"\n4:\n"
-+      _ASM_EXTABLE(2b, 4b)
-+#endif
-+
-+      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
-+      : "r" (&v->counter), "Ir" (i)
-+      : "cc");
-+}
-+
-+static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
-+{
-+      unsigned long tmp;
-+      int result;
-+
-+      prefetchw(&v->counter);
-+      __asm__ __volatile__("@ atomic_add_unchecked\n"
- "1:   ldrex   %0, [%3]\n"
- "     add     %0, %0, %4\n"
- "     strex   %1, %0, [%3]\n"
-@@ -63,6 +111,43 @@ static inline int atomic_add_return(int i, atomic_t *v)
-       prefetchw(&v->counter);
-       __asm__ __volatile__("@ atomic_add_return\n"
-+"1:   ldrex   %1, [%3]\n"
-+"     adds    %0, %1, %4\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"     bvc     3f\n"
-+"     mov     %0, %1\n"
-+"2:   bkpt    0xf103\n"
-+"3:\n"
-+#endif
-+
-+"     strex   %1, %0, [%3]\n"
-+"     teq     %1, #0\n"
-+"     bne     1b"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"\n4:\n"
-+      _ASM_EXTABLE(2b, 4b)
-+#endif
-+
-+      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
-+      : "r" (&v->counter), "Ir" (i)
-+      : "cc");
-+
-+      smp_mb();
-+
-+      return result;
-+}
-+
-+static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
-+{
-+      unsigned long tmp;
-+      int result;
-+
-+      smp_mb();
-+      prefetchw(&v->counter);
-+
-+      __asm__ __volatile__("@ atomic_add_return_unchecked\n"
- "1:   ldrex   %0, [%3]\n"
- "     add     %0, %0, %4\n"
- "     strex   %1, %0, [%3]\n"
-@@ -84,6 +169,36 @@ static inline void atomic_sub(int i, atomic_t *v)
+@@ -38,26 +62,50 @@
+  * to ensure that the update happens.
+  */
  
-       prefetchw(&v->counter);
-       __asm__ __volatile__("@ atomic_sub\n"
-+"1:   ldrex   %1, [%3]\n"
-+"     subs    %0, %1, %4\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"     bvc     3f\n"
-+"2:   bkpt    0xf103\n"
-+"3:\n"
-+#endif
-+
-+"     strex   %1, %0, [%3]\n"
-+"     teq     %1, #0\n"
-+"     bne     1b"
-+
+-#define ATOMIC_OP(op, c_op, asm_op)                                   \
+-static inline void atomic_##op(int i, atomic_t *v)                    \
 +#ifdef CONFIG_PAX_REFCOUNT
-+"\n4:\n"
++#define __OVERFLOW_POST                       \
++      "       bvc     3f\n"           \
++      "2:     " REFCOUNT_TRAP_INSN "\n"\
++      "3:\n"
++#define __OVERFLOW_POST_RETURN                \
++      "       bvc     3f\n"           \
++"     mov     %0, %1\n"               \
++      "2:     " REFCOUNT_TRAP_INSN "\n"\
++      "3:\n"
++#define __OVERFLOW_EXTABLE            \
++      "4:\n"                          \
 +      _ASM_EXTABLE(2b, 4b)
++#else
++#define __OVERFLOW_POST
++#define __OVERFLOW_POST_RETURN
++#define __OVERFLOW_EXTABLE
 +#endif
 +
-+      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
-+      : "r" (&v->counter), "Ir" (i)
-+      : "cc");
-+}
-+
-+static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
-+{
-+      unsigned long tmp;
-+      int result;
-+
-+      prefetchw(&v->counter);
-+      __asm__ __volatile__("@ atomic_sub_unchecked\n"
- "1:   ldrex   %0, [%3]\n"
- "     sub     %0, %0, %4\n"
- "     strex   %1, %0, [%3]\n"
-@@ -103,11 +218,25 @@ static inline int atomic_sub_return(int i, atomic_t *v)
-       prefetchw(&v->counter);
++#define __ATOMIC_OP(op, suffix, c_op, asm_op, post_op, extable)               \
++static inline void atomic_##op##suffix(int i, atomic##suffix##_t *v)  \
+ {                                                                     \
+       unsigned long tmp;                                              \
+       int result;                                                     \
+                                                                       \
+       prefetchw(&v->counter);                                         \
+-      __asm__ __volatile__("@ atomic_" #op "\n"                       \
++      __asm__ __volatile__("@ atomic_" #op #suffix "\n"               \
+ "1:   ldrex   %0, [%3]\n"                                             \
+ "     " #asm_op "     %0, %0, %4\n"                                   \
++      post_op                                                         \
+ "     strex   %1, %0, [%3]\n"                                         \
+ "     teq     %1, #0\n"                                               \
+-"     bne     1b"                                                     \
++"     bne     1b\n"                                                   \
++      extable                                                         \
+       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)               \
+       : "r" (&v->counter), "Ir" (i)                                   \
+       : "cc");                                                        \
+ }                                                                     \
  
-       __asm__ __volatile__("@ atomic_sub_return\n"
--"1:   ldrex   %0, [%3]\n"
--"     sub     %0, %0, %4\n"
-+"1:   ldrex   %1, [%3]\n"
-+"     subs    %0, %1, %4\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"     bvc     3f\n"
-+"     mov     %0, %1\n"
-+"2:   bkpt    0xf103\n"
-+"3:\n"
-+#endif
+-#define ATOMIC_OP_RETURN(op, c_op, asm_op)                            \
+-static inline int atomic_##op##_return(int i, atomic_t *v)            \
++#define ATOMIC_OP(op, c_op, asm_op) __ATOMIC_OP(op, , c_op, asm_op, , )\
++                                  __ATOMIC_OP(op, _unchecked, c_op, asm_op##s, __OVERFLOW_POST, __OVERFLOW_EXTABLE)
 +
- "     strex   %1, %0, [%3]\n"
- "     teq     %1, #0\n"
- "     bne     1b"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"\n4:\n"
-+      _ASM_EXTABLE(2b, 4b)
-+#endif
-+
-       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
-       : "r" (&v->counter), "Ir" (i)
-       : "cc");
-@@ -152,12 +281,24 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
++#define __ATOMIC_OP_RETURN(op, suffix, c_op, asm_op, post_op, extable)        \
++static inline int atomic_##op##_return##suffix(int i, atomic##suffix##_t *v)\
+ {                                                                     \
+       unsigned long tmp;                                              \
+       int result;                                                     \
+@@ -65,12 +113,14 @@ static inline int atomic_##op##_return(int i, atomic_t *v)                \
+       smp_mb();                                                       \
+       prefetchw(&v->counter);                                         \
+                                                                       \
+-      __asm__ __volatile__("@ atomic_" #op "_return\n"                \
++      __asm__ __volatile__("@ atomic_" #op "_return" #suffix "\n"     \
+ "1:   ldrex   %0, [%3]\n"                                             \
+ "     " #asm_op "     %0, %0, %4\n"                                   \
++      post_op                                                         \
+ "     strex   %1, %0, [%3]\n"                                         \
+ "     teq     %1, #0\n"                                               \
+-"     bne     1b"                                                     \
++"     bne     1b\n"                                                   \
++      extable                                                         \
+       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)               \
+       : "r" (&v->counter), "Ir" (i)                                   \
+       : "cc");                                                        \
+@@ -80,6 +130,9 @@ static inline int atomic_##op##_return(int i, atomic_t *v)          \
+       return result;                                                  \
+ }
++#define ATOMIC_OP_RETURN(op, c_op, asm_op) __ATOMIC_OP_RETURN(op, , c_op, asm_op, , )\
++                                         __ATOMIC_OP_RETURN(op, _unchecked, c_op, asm_op##s, __OVERFLOW_POST_RETURN, __OVERFLOW_EXTABLE)
++
+ static inline int atomic_cmpxchg(atomic_t *ptr, int old, int new)
+ {
+       int oldval;
+@@ -115,12 +168,24 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
        __asm__ __volatile__ ("@ atomic_add_unless\n"
  "1:   ldrex   %0, [%4]\n"
  "     teq     %0, %5\n"
@@ -1069,7 +1102,7 @@ index 9a92fd7..3502a80 100644
 +
 +#ifdef CONFIG_PAX_REFCOUNT
 +"     bvc     3f\n"
-+"2:   bkpt    0xf103\n"
++"2:   " REFCOUNT_TRAP_INSN "\n"
 +"3:\n"
 +#endif
 +
@@ -1086,7 +1119,7 @@ index 9a92fd7..3502a80 100644
        : "=&r" (oldval), "=&r" (newval), "=&r" (tmp), "+Qo" (v->counter)
        : "r" (&v->counter), "r" (u), "r" (a)
        : "cc");
-@@ -168,6 +309,28 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -131,14 +196,36 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
        return oldval;
  }
  
@@ -1115,49 +1148,59 @@ index 9a92fd7..3502a80 100644
  #else /* ARM_ARCH_6 */
  
  #ifdef CONFIG_SMP
-@@ -186,7 +349,17 @@ static inline int atomic_add_return(int i, atomic_t *v)
+ #error SMP not supported on pre-ARMv6 CPUs
+ #endif
  
-       return val;
- }
-+
-+static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
-+{
-+      return atomic_add_return(i, v);
-+}
-+
- #define atomic_add(i, v)      (void) atomic_add_return(i, v)
-+static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
-+{
-+      (void) atomic_add_return(i, v);
-+}
+-#define ATOMIC_OP(op, c_op, asm_op)                                   \
+-static inline void atomic_##op(int i, atomic_t *v)                    \
++#define __ATOMIC_OP(op, suffix, c_op, asm_op)                         \
++static inline void atomic_##op##suffix(int i, atomic##suffix##_t *v)  \
+ {                                                                     \
+       unsigned long flags;                                            \
+                                                                       \
+@@ -147,8 +234,11 @@ static inline void atomic_##op(int i, atomic_t *v)                        \
+       raw_local_irq_restore(flags);                                   \
+ }                                                                     \
  
- static inline int atomic_sub_return(int i, atomic_t *v)
- {
-@@ -201,6 +374,10 @@ static inline int atomic_sub_return(int i, atomic_t *v)
-       return val;
+-#define ATOMIC_OP_RETURN(op, c_op, asm_op)                            \
+-static inline int atomic_##op##_return(int i, atomic_t *v)            \
++#define ATOMIC_OP(op, c_op, asm_op) __ATOMIC_OP(op, , c_op, asm_op)   \
++                                  __ATOMIC_OP(op, _unchecked, c_op, asm_op)
++
++#define __ATOMIC_OP_RETURN(op, suffix, c_op, asm_op)                  \
++static inline int atomic_##op##_return##suffix(int i, atomic##suffix##_t *v)\
+ {                                                                     \
+       unsigned long flags;                                            \
+       int val;                                                        \
+@@ -161,6 +251,9 @@ static inline int atomic_##op##_return(int i, atomic_t *v)         \
+       return val;                                                     \
  }
- #define atomic_sub(i, v)      (void) atomic_sub_return(i, v)
-+static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
-+{
-+      (void) atomic_sub_return(i, v);
-+}
  
++#define ATOMIC_OP_RETURN(op, c_op, asm_op) __ATOMIC_OP_RETURN(op, , c_op, asm_op)\
++                                         __ATOMIC_OP_RETURN(op, _unchecked, c_op, asm_op)
++
  static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
  {
-@@ -216,6 +393,11 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
+       int ret;
+@@ -175,6 +268,11 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
        return ret;
  }
  
 +static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
 +{
-+      return atomic_cmpxchg(v, old, new);
++      return atomic_cmpxchg((atomic_t *)v, old, new);
 +}
 +
  static inline int __atomic_add_unless(atomic_t *v, int a, int u)
  {
        int c, old;
-@@ -229,13 +411,33 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
- #endif /* __LINUX_ARM_ARCH__ */
+@@ -196,16 +294,38 @@ ATOMIC_OPS(sub, -=, sub)
+ #undef ATOMIC_OPS
+ #undef ATOMIC_OP_RETURN
++#undef __ATOMIC_OP_RETURN
+ #undef ATOMIC_OP
++#undef __ATOMIC_OP
  
  #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
 +static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new)
@@ -1190,7 +1233,7 @@ index 9a92fd7..3502a80 100644
  #define atomic_dec_return(v)    (atomic_sub_return(1, v))
  #define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
  
-@@ -251,6 +453,14 @@ typedef struct {
+@@ -216,6 +336,14 @@ typedef struct {
        long long counter;
  } atomic64_t;
  
@@ -1205,7 +1248,7 @@ index 9a92fd7..3502a80 100644
  #define ATOMIC64_INIT(i) { (i) }
  
  #ifdef CONFIG_ARM_LPAE
-@@ -267,6 +477,19 @@ static inline long long atomic64_read(const atomic64_t *v)
+@@ -232,6 +360,19 @@ static inline long long atomic64_read(const atomic64_t *v)
        return result;
  }
  
@@ -1225,7 +1268,7 @@ index 9a92fd7..3502a80 100644
  static inline void atomic64_set(atomic64_t *v, long long i)
  {
        __asm__ __volatile__("@ atomic64_set\n"
-@@ -275,6 +498,15 @@ static inline void atomic64_set(atomic64_t *v, long long i)
+@@ -240,6 +381,15 @@ static inline void atomic64_set(atomic64_t *v, long long i)
        : "r" (&v->counter), "r" (i)
        );
  }
@@ -1241,7 +1284,7 @@ index 9a92fd7..3502a80 100644
  #else
  static inline long long atomic64_read(const atomic64_t *v)
  {
-@@ -289,6 +521,19 @@ static inline long long atomic64_read(const atomic64_t *v)
+@@ -254,6 +404,19 @@ static inline long long atomic64_read(const atomic64_t *v)
        return result;
  }
  
@@ -1261,7 +1304,7 @@ index 9a92fd7..3502a80 100644
  static inline void atomic64_set(atomic64_t *v, long long i)
  {
        long long tmp;
-@@ -303,6 +548,21 @@ static inline void atomic64_set(atomic64_t *v, long long i)
+@@ -268,29 +431,57 @@ static inline void atomic64_set(atomic64_t *v, long long i)
        : "r" (&v->counter), "r" (i)
        : "cc");
  }
@@ -1282,162 +1325,91 @@ index 9a92fd7..3502a80 100644
 +}
  #endif
  
- static inline void atomic64_add(long long i, atomic64_t *v)
-@@ -314,6 +574,37 @@ static inline void atomic64_add(long long i, atomic64_t *v)
-       __asm__ __volatile__("@ atomic64_add\n"
- "1:   ldrexd  %0, %H0, [%3]\n"
- "     adds    %Q0, %Q0, %Q4\n"
-+"     adcs    %R0, %R0, %R4\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"     bvc     3f\n"
-+"2:   bkpt    0xf103\n"
-+"3:\n"
-+#endif
-+
-+"     strexd  %1, %0, %H0, [%3]\n"
-+"     teq     %1, #0\n"
-+"     bne     1b"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"\n4:\n"
-+      _ASM_EXTABLE(2b, 4b)
-+#endif
-+
-+      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
-+      : "r" (&v->counter), "r" (i)
-+      : "cc");
-+}
-+
-+static inline void atomic64_add_unchecked(long long i, atomic64_unchecked_t *v)
-+{
-+      long long result;
-+      unsigned long tmp;
-+
-+      prefetchw(&v->counter);
-+      __asm__ __volatile__("@ atomic64_add_unchecked\n"
-+"1:   ldrexd  %0, %H0, [%3]\n"
-+"     adds    %Q0, %Q0, %Q4\n"
- "     adc     %R0, %R0, %R4\n"
- "     strexd  %1, %0, %H0, [%3]\n"
- "     teq     %1, #0\n"
-@@ -334,6 +625,44 @@ static inline long long atomic64_add_return(long long i, atomic64_t *v)
-       __asm__ __volatile__("@ atomic64_add_return\n"
- "1:   ldrexd  %0, %H0, [%3]\n"
- "     adds    %Q0, %Q0, %Q4\n"
-+"     adcs    %R0, %R0, %R4\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"     bvc     3f\n"
-+"     mov     %0, %1\n"
-+"     mov     %H0, %H1\n"
-+"2:   bkpt    0xf103\n"
-+"3:\n"
-+#endif
-+
-+"     strexd  %1, %0, %H0, [%3]\n"
-+"     teq     %1, #0\n"
-+"     bne     1b"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"\n4:\n"
-+      _ASM_EXTABLE(2b, 4b)
-+#endif
-+
-+      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
-+      : "r" (&v->counter), "r" (i)
-+      : "cc");
-+
-+      smp_mb();
-+
-+      return result;
-+}
-+
-+static inline long long atomic64_add_return_unchecked(long long i, atomic64_unchecked_t *v)
-+{
-+      long long result;
-+      unsigned long tmp;
-+
-+      smp_mb();
-+
-+      __asm__ __volatile__("@ atomic64_add_return_unchecked\n"
-+"1:   ldrexd  %0, %H0, [%3]\n"
-+"     adds    %Q0, %Q0, %Q4\n"
- "     adc     %R0, %R0, %R4\n"
- "     strexd  %1, %0, %H0, [%3]\n"
- "     teq     %1, #0\n"
-@@ -356,6 +685,37 @@ static inline void atomic64_sub(long long i, atomic64_t *v)
-       __asm__ __volatile__("@ atomic64_sub\n"
- "1:   ldrexd  %0, %H0, [%3]\n"
- "     subs    %Q0, %Q0, %Q4\n"
-+"     sbcs    %R0, %R0, %R4\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"     bvc     3f\n"
-+"2:   bkpt    0xf103\n"
-+"3:\n"
-+#endif
-+
-+"     strexd  %1, %0, %H0, [%3]\n"
-+"     teq     %1, #0\n"
-+"     bne     1b"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"\n4:\n"
-+      _ASM_EXTABLE(2b, 4b)
-+#endif
-+
-+      : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
-+      : "r" (&v->counter), "r" (i)
-+      : "cc");
-+}
-+
-+static inline void atomic64_sub_unchecked(long long i, atomic64_unchecked_t *v)
-+{
-+      long long result;
-+      unsigned long tmp;
-+
-+      prefetchw(&v->counter);
-+      __asm__ __volatile__("@ atomic64_sub_unchecked\n"
-+"1:   ldrexd  %0, %H0, [%3]\n"
-+"     subs    %Q0, %Q0, %Q4\n"
- "     sbc     %R0, %R0, %R4\n"
- "     strexd  %1, %0, %H0, [%3]\n"
- "     teq     %1, #0\n"
-@@ -376,16 +736,29 @@ static inline long long atomic64_sub_return(long long i, atomic64_t *v)
-       __asm__ __volatile__("@ atomic64_sub_return\n"
- "1:   ldrexd  %0, %H0, [%3]\n"
- "     subs    %Q0, %Q0, %Q4\n"
--"     sbc     %R0, %R0, %R4\n"
-+"     sbcs    %R0, %R0, %R4\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"     bvc     3f\n"
-+"     mov     %0, %1\n"
-+"     mov     %H0, %H1\n"
-+"2:   bkpt    0xf103\n"
-+"3:\n"
-+#endif
-+
- "     strexd  %1, %0, %H0, [%3]\n"
- "     teq     %1, #0\n"
- "     bne     1b"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+"\n4:\n"
-+      _ASM_EXTABLE(2b, 4b)
-+#endif
-+
-       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
-       : "r" (&v->counter), "r" (i)
-       : "cc");
--      smp_mb();
--
-       return result;
- }
+-#define ATOMIC64_OP(op, op1, op2)                                     \
+-static inline void atomic64_##op(long long i, atomic64_t *v)          \
++#undef __OVERFLOW_POST_RETURN
++#define __OVERFLOW_POST_RETURN                \
++      "       bvc     3f\n"           \
++"     mov     %0, %1\n"               \
++"     mov     %H0, %H1\n"             \
++      "2:     " REFCOUNT_TRAP_INSN "\n"\
++      "3:\n"
++
++#define __ATOMIC64_OP(op, suffix, op1, op2, post_op, extable)         \
++static inline void atomic64_##op##suffix(long long i, atomic64##suffix##_t *v)\
+ {                                                                     \
+       long long result;                                               \
+       unsigned long tmp;                                              \
+                                                                       \
+       prefetchw(&v->counter);                                         \
+-      __asm__ __volatile__("@ atomic64_" #op "\n"                     \
++      __asm__ __volatile__("@ atomic64_" #op #suffix "\n"             \
+ "1:   ldrexd  %0, %H0, [%3]\n"                                        \
+ "     " #op1 " %Q0, %Q0, %Q4\n"                                       \
+ "     " #op2 " %R0, %R0, %R4\n"                                       \
++      post_op                                                         \
+ "     strexd  %1, %0, %H0, [%3]\n"                                    \
+ "     teq     %1, #0\n"                                               \
+-"     bne     1b"                                                     \
++"     bne     1b\n"                                                   \
++      extable                                                         \
+       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)               \
+       : "r" (&v->counter), "r" (i)                                    \
+       : "cc");                                                        \
+ }                                                                     \
  
-@@ -415,6 +788,31 @@ static inline long long atomic64_cmpxchg(atomic64_t *ptr, long long old,
+-#define ATOMIC64_OP_RETURN(op, op1, op2)                              \
+-static inline long long atomic64_##op##_return(long long i, atomic64_t *v) \
++#define ATOMIC64_OP(op, op1, op2) __ATOMIC64_OP(op, , op1, op2, , ) \
++                                __ATOMIC64_OP(op, _unchecked, op1, op2##s, __OVERFLOW_POST, __OVERFLOW_EXTABLE)
++
++#define __ATOMIC64_OP_RETURN(op, suffix, op1, op2, post_op, extable)          \
++static inline long long atomic64_##op##_return##suffix(long long i, atomic64##suffix##_t *v) \
+ {                                                                     \
+       long long result;                                               \
+       unsigned long tmp;                                              \
+@@ -298,13 +489,15 @@ static inline long long atomic64_##op##_return(long long i, atomic64_t *v) \
+       smp_mb();                                                       \
+       prefetchw(&v->counter);                                         \
+                                                                       \
+-      __asm__ __volatile__("@ atomic64_" #op "_return\n"              \
++      __asm__ __volatile__("@ atomic64_" #op "_return" #suffix "\n"   \
+ "1:   ldrexd  %0, %H0, [%3]\n"                                        \
+ "     " #op1 " %Q0, %Q0, %Q4\n"                                       \
+ "     " #op2 " %R0, %R0, %R4\n"                                       \
++      post_op                                                         \
+ "     strexd  %1, %0, %H0, [%3]\n"                                    \
+ "     teq     %1, #0\n"                                               \
+-"     bne     1b"                                                     \
++"     bne     1b\n"                                                   \
++      extable                                                         \
+       : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)               \
+       : "r" (&v->counter), "r" (i)                                    \
+       : "cc");                                                        \
+@@ -314,6 +507,9 @@ static inline long long atomic64_##op##_return(long long i, atomic64_t *v) \
+       return result;                                                  \
+ }
++#define ATOMIC64_OP_RETURN(op, op1, op2) __ATOMIC64_OP_RETURN(op, , op1, op2, , ) \
++                                       __ATOMIC64_OP_RETURN(op, _unchecked, op1, op2##s, __OVERFLOW_POST_RETURN, __OVERFLOW_EXTABLE)
++
+ #define ATOMIC64_OPS(op, op1, op2)                                    \
+       ATOMIC64_OP(op, op1, op2)                                       \
+       ATOMIC64_OP_RETURN(op, op1, op2)
+@@ -323,7 +519,12 @@ ATOMIC64_OPS(sub, subs, sbc)
+ #undef ATOMIC64_OPS
+ #undef ATOMIC64_OP_RETURN
++#undef __ATOMIC64_OP_RETURN
+ #undef ATOMIC64_OP
++#undef __ATOMIC64_OP
++#undef __OVERFLOW_EXTABLE
++#undef __OVERFLOW_POST_RETURN
++#undef __OVERFLOW_POST
+ static inline long long atomic64_cmpxchg(atomic64_t *ptr, long long old,
+                                       long long new)
+@@ -351,6 +552,31 @@ static inline long long atomic64_cmpxchg(atomic64_t *ptr, long long old,
        return oldval;
  }
  
@@ -1469,7 +1441,7 @@ index 9a92fd7..3502a80 100644
  static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
  {
        long long result;
-@@ -440,21 +838,35 @@ static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
+@@ -376,21 +602,35 @@ static inline long long atomic64_xchg(atomic64_t *ptr, long long new)
  static inline long long atomic64_dec_if_positive(atomic64_t *v)
  {
        long long result;
@@ -1491,7 +1463,7 @@ index 9a92fd7..3502a80 100644
 +"     bvc     3f\n"
 +"     mov     %Q0, %Q1\n"
 +"     mov     %R0, %R1\n"
-+"2:   bkpt    0xf103\n"
++"2:   " REFCOUNT_TRAP_INSN "\n"
 +"3:\n"
 +#endif
 +
@@ -1511,7 +1483,7 @@ index 9a92fd7..3502a80 100644
        : "=&r" (result), "=&r" (tmp), "+Qo" (v->counter)
        : "r" (&v->counter)
        : "cc");
-@@ -478,13 +890,25 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
+@@ -414,13 +654,25 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
  "     teq     %0, %5\n"
  "     teqeq   %H0, %H5\n"
  "     moveq   %1, #0\n"
@@ -1523,7 +1495,7 @@ index 9a92fd7..3502a80 100644
 +
 +#ifdef CONFIG_PAX_REFCOUNT
 +"     bvc     3f\n"
-+"2:   bkpt    0xf103\n"
++"2:   " REFCOUNT_TRAP_INSN "\n"
 +"3:\n"
 +#endif
 +
@@ -1540,7 +1512,7 @@ index 9a92fd7..3502a80 100644
        : "=&r" (val), "+r" (ret), "=&r" (tmp), "+Qo" (v->counter)
        : "r" (&v->counter), "r" (u), "r" (a)
        : "cc");
-@@ -497,10 +921,13 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
+@@ -433,10 +685,13 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u)
  
  #define atomic64_add_negative(a, v)   (atomic64_add_return((a), (v)) < 0)
  #define atomic64_inc(v)                       atomic64_add(1LL, (v))
@@ -1555,7 +1527,7 @@ index 9a92fd7..3502a80 100644
  #define atomic64_dec_and_test(v)      (atomic64_dec_return((v)) == 0)
  #define atomic64_inc_not_zero(v)      atomic64_add_unless((v), 1LL, 0LL)
 diff --git a/arch/arm/include/asm/barrier.h b/arch/arm/include/asm/barrier.h
-index 2f59f74..1594659 100644
+index c6a3e73..35cca85 100644
 --- a/arch/arm/include/asm/barrier.h
 +++ b/arch/arm/include/asm/barrier.h
 @@ -63,7 +63,7 @@
@@ -1591,7 +1563,7 @@ index 75fe66b..ba3dee4 100644
  
  #endif
 diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
-index 8b8b616..d973d24 100644
+index 10e78d0..dc8505d 100644
 --- a/arch/arm/include/asm/cacheflush.h
 +++ b/arch/arm/include/asm/cacheflush.h
 @@ -116,7 +116,7 @@ struct cpu_cache_fns {
@@ -1703,10 +1675,10 @@ index 6ddbe44..b5e38b1 100644
  static inline void set_domain(unsigned val) { }
  static inline void modify_domain(unsigned dom, unsigned type) { }
 diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
-index f4b46d3..abc9b2b 100644
+index afb9caf..9a0bac0 100644
 --- a/arch/arm/include/asm/elf.h
 +++ b/arch/arm/include/asm/elf.h
-@@ -114,7 +114,14 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs);
+@@ -115,7 +115,14 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs);
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
  
@@ -1722,7 +1694,7 @@ index f4b46d3..abc9b2b 100644
  
  /* When the program starts, a1 contains a pointer to a function to be 
     registered with atexit, as per the SVR4 ABI.  A value of 0 means we 
-@@ -124,10 +131,6 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs);
+@@ -125,10 +132,6 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs);
  extern void elf_set_personality(const struct elf32_hdr *);
  #define SET_PERSONALITY(ex)   elf_set_personality(&(ex))
  
@@ -1860,13 +1832,13 @@ index f98c7f3..e5c626d 100644
        MT_MEMORY_DMA_READY,
  };
 diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h
-index f94784f..9a09a4a 100644
+index 891a56b..48f337e 100644
 --- a/arch/arm/include/asm/outercache.h
 +++ b/arch/arm/include/asm/outercache.h
-@@ -35,7 +35,7 @@ struct outer_cache_fns {
- #endif
-       void (*set_debug)(unsigned long);
-       void (*resume)(void);
+@@ -36,7 +36,7 @@ struct outer_cache_fns {
+       /* This is an ARM L2C thing */
+       void (*write_sec)(unsigned long, unsigned);
 -};
 +} __no_const;
  
@@ -1991,7 +1963,7 @@ index 5cfba15..f415e1a 100644
  #define PTE_EXT_AP0           (_AT(pteval_t, 1) << 4)
  #define PTE_EXT_AP1           (_AT(pteval_t, 2) << 4)
 diff --git a/arch/arm/include/asm/pgtable-2level.h b/arch/arm/include/asm/pgtable-2level.h
-index 219ac88..73ec32a 100644
+index f027941..f36ce30 100644
 --- a/arch/arm/include/asm/pgtable-2level.h
 +++ b/arch/arm/include/asm/pgtable-2level.h
 @@ -126,6 +126,9 @@
@@ -2005,10 +1977,10 @@ index 219ac88..73ec32a 100644
   * These are the memory types, defined to be compatible with
   * pre-ARMv6 CPUs cacheable and bufferable bits:   XXCB
 diff --git a/arch/arm/include/asm/pgtable-3level-hwdef.h b/arch/arm/include/asm/pgtable-3level-hwdef.h
-index 626989f..9d67a33 100644
+index 9fd61c7..f8f1cff 100644
 --- a/arch/arm/include/asm/pgtable-3level-hwdef.h
 +++ b/arch/arm/include/asm/pgtable-3level-hwdef.h
-@@ -75,6 +75,7 @@
+@@ -76,6 +76,7 @@
  #define PTE_EXT_SHARED                (_AT(pteval_t, 3) << 8)         /* SH[1:0], inner shareable */
  #define PTE_EXT_AF            (_AT(pteval_t, 1) << 10)        /* Access Flag */
  #define PTE_EXT_NG            (_AT(pteval_t, 1) << 11)        /* nG */
@@ -2017,18 +1989,23 @@ index 626989f..9d67a33 100644
  
  /*
 diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h
-index 85c60ad..b0bbd7e 100644
+index a31ecdad..95e98d4 100644
 --- a/arch/arm/include/asm/pgtable-3level.h
 +++ b/arch/arm/include/asm/pgtable-3level.h
-@@ -82,6 +82,7 @@
- #define L_PTE_RDONLY          (_AT(pteval_t, 1) << 7)         /* AP[2] */
+@@ -81,6 +81,7 @@
+ #define L_PTE_USER            (_AT(pteval_t, 1) << 6)         /* AP[1] */
  #define L_PTE_SHARED          (_AT(pteval_t, 3) << 8)         /* SH[1:0], inner shareable */
  #define L_PTE_YOUNG           (_AT(pteval_t, 1) << 10)        /* AF */
 +#define L_PTE_PXN             (_AT(pteval_t, 1) << 53)        /* PXN */
  #define L_PTE_XN              (_AT(pteval_t, 1) << 54)        /* XN */
- #define L_PTE_DIRTY           (_AT(pteval_t, 1) << 55)        /* unused */
- #define L_PTE_SPECIAL         (_AT(pteval_t, 1) << 56)        /* unused */
-@@ -95,6 +96,7 @@
+ #define L_PTE_DIRTY           (_AT(pteval_t, 1) << 55)
+ #define L_PTE_SPECIAL         (_AT(pteval_t, 1) << 56)
+@@ -92,10 +93,12 @@
+ #define L_PMD_SECT_SPLITTING  (_AT(pmdval_t, 1) << 56)
+ #define L_PMD_SECT_NONE               (_AT(pmdval_t, 1) << 57)
+ #define L_PMD_SECT_RDONLY     (_AT(pteval_t, 1) << 58)
++#define PMD_SECT_RDONLY               PMD_SECT_AP2
  /*
   * To be used in assembly code with the upper page attributes.
   */
@@ -2037,7 +2014,7 @@ index 85c60ad..b0bbd7e 100644
  #define L_PTE_DIRTY_HIGH      (1 << (55 - 32))
  
 diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
-index 5478e5d..f5b5cb3 100644
+index 3b30062..01a5f9d 100644
 --- a/arch/arm/include/asm/pgtable.h
 +++ b/arch/arm/include/asm/pgtable.h
 @@ -33,6 +33,9 @@
@@ -2120,7 +2097,7 @@ index 5478e5d..f5b5cb3 100644
   */
  #define _L_PTE_DEFAULT        L_PTE_PRESENT | L_PTE_YOUNG
  
-@@ -265,7 +313,7 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; }
+@@ -267,7 +315,7 @@ PTE_BIT_FUNC(mknexec,   |= L_PTE_XN);
  static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
  {
        const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER |
@@ -2130,23 +2107,23 @@ index 5478e5d..f5b5cb3 100644
        return pte;
  }
 diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
-index c4ae171..ea0c0c2 100644
+index c25ef3e..735f14b 100644
 --- a/arch/arm/include/asm/psci.h
 +++ b/arch/arm/include/asm/psci.h
-@@ -29,7 +29,7 @@ struct psci_operations {
-       int (*cpu_off)(struct psci_power_state state);
-       int (*cpu_on)(unsigned long cpuid, unsigned long entry_point);
-       int (*migrate)(unsigned long cpuid);
+@@ -32,7 +32,7 @@ struct psci_operations {
+       int (*affinity_info)(unsigned long target_affinity,
+                       unsigned long lowest_affinity_level);
+       int (*migrate_info_type)(void);
 -};
 +} __no_const;
  
  extern struct psci_operations psci_ops;
  extern struct smp_operations psci_smp_ops;
 diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h
-index 2ec765c..beb1fe16 100644
+index 18f5a55..5072a40 100644
 --- a/arch/arm/include/asm/smp.h
 +++ b/arch/arm/include/asm/smp.h
-@@ -113,7 +113,7 @@ struct smp_operations {
+@@ -107,7 +107,7 @@ struct smp_operations {
        int  (*cpu_disable)(unsigned int cpu);
  #endif
  #endif
@@ -2156,10 +2133,10 @@ index 2ec765c..beb1fe16 100644
  struct of_cpu_method {
        const char *method;
 diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h
-index f989d7c..e8aa7f0 100644
+index ce73ab6..7310f8a 100644
 --- a/arch/arm/include/asm/thread_info.h
 +++ b/arch/arm/include/asm/thread_info.h
-@@ -88,9 +88,9 @@ struct thread_info {
+@@ -78,9 +78,9 @@ struct thread_info {
        .flags          = 0,                                            \
        .preempt_count  = INIT_PREEMPT_COUNT,                           \
        .addr_limit     = KERNEL_DS,                                    \
@@ -2172,7 +2149,7 @@ index f989d7c..e8aa7f0 100644
        .restart_block  = {                                             \
                .fn     = do_no_restart_syscall,                        \
        },                                                              \
-@@ -158,7 +158,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
+@@ -154,7 +154,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
  #define TIF_SYSCALL_AUDIT     9
  #define TIF_SYSCALL_TRACEPOINT        10
  #define TIF_SECCOMP           11      /* seccomp syscall filtering active */
@@ -2185,7 +2162,7 @@ index f989d7c..e8aa7f0 100644
  #define TIF_USING_IWMMXT      17
  #define TIF_MEMDIE            18      /* is terminating due to OOM killer */
  #define TIF_RESTORE_SIGMASK   20
-@@ -172,10 +176,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
+@@ -168,10 +172,11 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
  #define _TIF_SYSCALL_TRACEPOINT       (1 << TIF_SYSCALL_TRACEPOINT)
  #define _TIF_SECCOMP          (1 << TIF_SECCOMP)
  #define _TIF_USING_IWMMXT     (1 << TIF_USING_IWMMXT)
@@ -2198,8 +2175,30 @@ index f989d7c..e8aa7f0 100644
  
  /*
   * Change these and you break ASM code in entry-common.S
+diff --git a/arch/arm/include/asm/tls.h b/arch/arm/include/asm/tls.h
+index 5f833f7..76e6644 100644
+--- a/arch/arm/include/asm/tls.h
++++ b/arch/arm/include/asm/tls.h
+@@ -3,6 +3,7 @@
+ #include <linux/compiler.h>
+ #include <asm/thread_info.h>
++#include <asm/pgtable.h>
+ #ifdef __ASSEMBLY__
+ #include <asm/asm-offsets.h>
+@@ -89,7 +90,9 @@ static inline void set_tls(unsigned long val)
+                        * at 0xffff0fe0 must be used instead.  (see
+                        * entry-armv.S for details)
+                        */
++                      pax_open_kernel();
+                       *((unsigned int *)0xffff0ff0) = val;
++                      pax_close_kernel();
+ #endif
+               }
 diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
-index 75d9579..b5b40e4 100644
+index 4767eb9..bf00668 100644
 --- a/arch/arm/include/asm/uaccess.h
 +++ b/arch/arm/include/asm/uaccess.h
 @@ -18,6 +18,7 @@
@@ -2250,7 +2249,7 @@ index 75d9579..b5b40e4 100644
  #define __addr_ok(addr) ({ \
        unsigned long flag; \
        __asm__("cmp %2, %0; movlo %0, #0" \
-@@ -150,8 +178,12 @@ extern int __get_user_4(void *);
+@@ -198,8 +226,12 @@ extern int __get_user_64t_4(void *);
  
  #define get_user(x,p)                                                 \
        ({                                                              \
@@ -2264,7 +2263,7 @@ index 75d9579..b5b40e4 100644
         })
  
  extern int __put_user_1(void *, unsigned int);
-@@ -196,8 +228,12 @@ extern int __put_user_8(void *, unsigned long long);
+@@ -244,8 +276,12 @@ extern int __put_user_8(void *, unsigned long long);
  
  #define put_user(x,p)                                                 \
        ({                                                              \
@@ -2278,7 +2277,7 @@ index 75d9579..b5b40e4 100644
         })
  
  #else /* CONFIG_MMU */
-@@ -221,6 +257,7 @@ static inline void set_fs(mm_segment_t fs)
+@@ -269,6 +305,7 @@ static inline void set_fs(mm_segment_t fs)
  
  #endif /* CONFIG_MMU */
  
@@ -2286,7 +2285,7 @@ index 75d9579..b5b40e4 100644
  #define access_ok(type,addr,size)     (__range_ok(addr,size) == 0)
  
  #define user_addr_max() \
-@@ -238,13 +275,17 @@ static inline void set_fs(mm_segment_t fs)
+@@ -286,13 +323,17 @@ static inline void set_fs(mm_segment_t fs)
  #define __get_user(x,ptr)                                             \
  ({                                                                    \
        long __gu_err = 0;                                              \
@@ -2304,7 +2303,7 @@ index 75d9579..b5b40e4 100644
        (void) 0;                                                       \
  })
  
-@@ -320,13 +361,17 @@ do {                                                                     \
+@@ -368,13 +409,17 @@ do {                                                                     \
  #define __put_user(x,ptr)                                             \
  ({                                                                    \
        long __pu_err = 0;                                              \
@@ -2322,7 +2321,7 @@ index 75d9579..b5b40e4 100644
        (void) 0;                                                       \
  })
  
-@@ -426,11 +471,44 @@ do {                                                                     \
+@@ -474,11 +519,44 @@ do {                                                                     \
  
  
  #ifdef CONFIG_MMU
@@ -2370,7 +2369,7 @@ index 75d9579..b5b40e4 100644
  #else
  #define __copy_from_user(to,from,n)   (memcpy(to, (void __force *)from, n), 0)
  #define __copy_to_user(to,from,n)     (memcpy((void __force *)to, from, n), 0)
-@@ -439,6 +517,9 @@ extern unsigned long __must_check __clear_user_std(void __user *addr, unsigned l
+@@ -487,6 +565,9 @@ extern unsigned long __must_check __clear_user_std(void __user *addr, unsigned l
  
  static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n)
  {
@@ -2380,7 +2379,7 @@ index 75d9579..b5b40e4 100644
        if (access_ok(VERIFY_READ, from, n))
                n = __copy_from_user(to, from, n);
        else /* security hole - plug it */
-@@ -448,6 +529,9 @@ static inline unsigned long __must_check copy_from_user(void *to, const void __u
+@@ -496,6 +577,9 @@ static inline unsigned long __must_check copy_from_user(void *to, const void __u
  
  static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n)
  {
@@ -2404,7 +2403,7 @@ index 5af0ed1..cea83883 100644
  #define PSR_ENDIAN_MASK       0x00000200      /* Endianness state mask */
  
 diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
-index f7b450f..f5364c5 100644
+index a88671c..1cc895e 100644
 --- a/arch/arm/kernel/armksyms.c
 +++ b/arch/arm/kernel/armksyms.c
 @@ -55,7 +55,7 @@ EXPORT_SYMBOL(arm_delay_ops);
@@ -2430,7 +2429,7 @@ index f7b450f..f5364c5 100644
  EXPORT_SYMBOL(__get_user_1);
  EXPORT_SYMBOL(__get_user_2);
 diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
-index 1879e8d..5602dd4 100644
+index 2f5555d..d493c91 100644
 --- a/arch/arm/kernel/entry-armv.S
 +++ b/arch/arm/kernel/entry-armv.S
 @@ -47,6 +47,87 @@
@@ -2538,7 +2537,7 @@ index 1879e8d..5602dd4 100644
        .endm
  
 @@ -149,7 +234,11 @@ ENDPROC(__und_invalid)
-       .macro  svc_entry, stack_hole=0
+       .macro  svc_entry, stack_hole=0, trace=1
   UNWIND(.fnstart              )
   UNWIND(.save {r0 - pc}               )
 +
@@ -2562,8 +2561,8 @@ index 1879e8d..5602dd4 100644
   SPFIX(       addeq   r2, r2, #4      )
        str     r3, [sp, #-4]!          @ save the "real" r0 copied
                                        @ from the exception stack
-@@ -317,6 +411,9 @@ ENDPROC(__pabt_svc)
-       .macro  usr_entry
+@@ -368,6 +462,9 @@ ENDPROC(__fiq_abt)
+       .macro  usr_entry, trace=1
   UNWIND(.fnstart      )
   UNWIND(.cantunwind   )       @ don't unwind the user space
 +
@@ -2572,7 +2571,7 @@ index 1879e8d..5602dd4 100644
        sub     sp, sp, #S_FRAME_SIZE
   ARM( stmib   sp, {r1 - r12}  )
   THUMB(       stmia   sp, {r0 - r12}  )
-@@ -416,7 +513,9 @@ __und_usr:
+@@ -478,7 +575,9 @@ __und_usr:
        tst     r3, #PSR_T_BIT                  @ Thumb mode?
        bne     __und_usr_thumb
        sub     r4, r2, #4                      @ ARM instr at LR - 4
@@ -2582,7 +2581,7 @@ index 1879e8d..5602dd4 100644
   ARM_BE8(rev  r0, r0)                         @ little endian instruction
  
        @ r0 = 32-bit ARM instruction which caused the exception
-@@ -450,11 +549,15 @@ __und_usr_thumb:
+@@ -512,11 +611,15 @@ __und_usr_thumb:
   */
        .arch   armv6t2
  #endif
@@ -2598,17 +2597,17 @@ index 1879e8d..5602dd4 100644
  ARM_BE8(rev16 r0, r0)                         @ little endian instruction
        add     r2, r2, #2                      @ r2 is PC + 2, make it PC + 4
        str     r2, [sp, #S_PC]                 @ it's a 2x16bit instr, update
-@@ -484,7 +587,8 @@ ENDPROC(__und_usr)
+@@ -546,7 +649,8 @@ ENDPROC(__und_usr)
   */
        .pushsection .fixup, "ax"
        .align  2
--4:    mov     pc, r9
+-4:    str     r4, [sp, #S_PC]                 @ retry current instruction
 +4:    pax_close_userland
-+      mov     pc, r9
++      str     r4, [sp, #S_PC]                 @ retry current instruction
+       ret     r9
        .popsection
        .pushsection __ex_table,"a"
-       .long   1b, 4b
-@@ -694,7 +798,7 @@ ENTRY(__switch_to)
+@@ -766,7 +870,7 @@ ENTRY(__switch_to)
   THUMB(       str     lr, [ip], #4               )
        ldr     r4, [r2, #TI_TP_VALUE]
        ldr     r5, [r2, #TI_TP_VALUE + 4]
@@ -2617,7 +2616,7 @@ index 1879e8d..5602dd4 100644
        ldr     r6, [r2, #TI_CPU_DOMAIN]
  #endif
        switch_tls r1, r4, r5, r3, r7
-@@ -703,7 +807,7 @@ ENTRY(__switch_to)
+@@ -775,7 +879,7 @@ ENTRY(__switch_to)
        ldr     r8, =__stack_chk_guard
        ldr     r7, [r7, #TSK_STACK_CANARY]
  #endif
@@ -2627,11 +2626,11 @@ index 1879e8d..5602dd4 100644
  #endif
        mov     r5, r0
 diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
-index a2dcafd..1048b5a 100644
+index 6bb09d4..113e875 100644
 --- a/arch/arm/kernel/entry-common.S
 +++ b/arch/arm/kernel/entry-common.S
-@@ -10,18 +10,46 @@
+@@ -11,18 +11,46 @@
+ #include <asm/assembler.h>
  #include <asm/unistd.h>
  #include <asm/ftrace.h>
 +#include <asm/domain.h>
@@ -2680,7 +2679,7 @@ index a2dcafd..1048b5a 100644
        .align  5
  /*
   * This is the fast syscall return path.  We do as little as
-@@ -411,6 +439,12 @@ ENTRY(vector_swi)
+@@ -406,6 +434,12 @@ ENTRY(vector_swi)
   USER(        ldr     scno, [lr, #-4]         )       @ get SWI instruction
  #endif
  
@@ -2694,10 +2693,10 @@ index a2dcafd..1048b5a 100644
  
  #if defined(CONFIG_OABI_COMPAT)
 diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
-index efb208d..d34bd02 100644
+index 4176df7..a901f8d 100644
 --- a/arch/arm/kernel/entry-header.S
 +++ b/arch/arm/kernel/entry-header.S
-@@ -188,6 +188,60 @@
+@@ -196,6 +196,60 @@
        msr     cpsr_c, \rtemp                  @ switch back to the SVC mode
        .endm
  
@@ -2758,7 +2757,7 @@ index efb208d..d34bd02 100644
  #ifndef CONFIG_THUMB2_KERNEL
        .macro  svc_exit, rpsr, irq = 0
        .if     \irq != 0
-@@ -207,6 +261,9 @@
+@@ -215,6 +269,9 @@
        blne    trace_hardirqs_off
  #endif
        .endif
@@ -2766,9 +2765,9 @@ index efb208d..d34bd02 100644
 +      pax_exit_kernel
 +
        msr     spsr_cxsf, \rpsr
- #if defined(CONFIG_CPU_V6)
-       ldr     r0, [sp]
-@@ -265,6 +322,9 @@
+ #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_32v6K)
+       @ We must avoid clrex due to Cortex-A15 erratum #830321
+@@ -290,6 +347,9 @@
        blne    trace_hardirqs_off
  #endif
        .endif
@@ -2777,12 +2776,12 @@ index efb208d..d34bd02 100644
 +
        ldr     lr, [sp, #S_SP]                 @ top of the stack
        ldrd    r0, r1, [sp, #S_LR]             @ calling lr and pc
-       clrex                                   @ clear the exclusive monitor
 diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c
-index 918875d..cd5fa27 100644
+index b37752a..ff5cb72 100644
 --- a/arch/arm/kernel/fiq.c
 +++ b/arch/arm/kernel/fiq.c
-@@ -87,7 +87,10 @@ void set_fiq_handler(void *start, unsigned int length)
+@@ -95,7 +95,10 @@ void set_fiq_handler(void *start, unsigned int length)
        void *base = vectors_page;
        unsigned offset = FIQ_OFFSET;
  
@@ -2794,7 +2793,7 @@ index 918875d..cd5fa27 100644
                flush_icache_range((unsigned long)base + offset, offset +
                                   length);
 diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
-index 591d6e4..8322a26 100644
+index 664eee8..f470938 100644
 --- a/arch/arm/kernel/head.S
 +++ b/arch/arm/kernel/head.S
 @@ -437,7 +437,7 @@ __enable_mmu:
@@ -2807,7 +2806,7 @@ index 591d6e4..8322a26 100644
        mcr     p15, 0, r4, c2, c0, 0           @ load page table pointer
  #endif
 diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
-index 45e4781..8eac93d 100644
+index 6a4dffe..4a86a70 100644
 --- a/arch/arm/kernel/module.c
 +++ b/arch/arm/kernel/module.c
 @@ -38,12 +38,39 @@
@@ -2873,10 +2872,10 @@ index 07314af..c46655c 100644
        flush_icache_range((uintptr_t)(addr),
                           (uintptr_t)(addr) + size);
 diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
-index 81ef686..f4130b8 100644
+index fe972a2..a772d83 100644
 --- a/arch/arm/kernel/process.c
 +++ b/arch/arm/kernel/process.c
-@@ -212,6 +212,7 @@ void machine_power_off(void)
+@@ -207,6 +207,7 @@ void machine_power_off(void)
  
        if (pm_power_off)
                pm_power_off();
@@ -2884,7 +2883,7 @@ index 81ef686..f4130b8 100644
  }
  
  /*
-@@ -225,7 +226,7 @@ void machine_power_off(void)
+@@ -220,7 +221,7 @@ void machine_power_off(void)
   * executing pre-reset code, and using RAM that the primary CPU's code wishes
   * to use. Implementing such co-ordination would be essentially impossible.
   */
@@ -2893,7 +2892,7 @@ index 81ef686..f4130b8 100644
  {
        local_irq_disable();
        smp_send_stop();
-@@ -248,8 +249,8 @@ void __show_regs(struct pt_regs *regs)
+@@ -246,8 +247,8 @@ void __show_regs(struct pt_regs *regs)
  
        show_regs_print_info(KERN_DEFAULT);
  
@@ -2904,7 +2903,7 @@ index 81ef686..f4130b8 100644
        printk("pc : [<%08lx>]    lr : [<%08lx>]    psr: %08lx\n"
               "sp : %08lx  ip : %08lx  fp : %08lx\n",
                regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr,
-@@ -425,12 +426,6 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -424,12 +425,6 @@ unsigned long get_wchan(struct task_struct *p)
        return 0;
  }
  
@@ -2917,7 +2916,7 @@ index 81ef686..f4130b8 100644
  #ifdef CONFIG_MMU
  #ifdef CONFIG_KUSER_HELPERS
  /*
-@@ -446,7 +441,7 @@ static struct vm_area_struct gate_vma = {
+@@ -445,7 +440,7 @@ static struct vm_area_struct gate_vma = {
  
  static int __init gate_vma_init(void)
  {
@@ -2926,24 +2925,58 @@ index 81ef686..f4130b8 100644
        return 0;
  }
  arch_initcall(gate_vma_init);
-@@ -472,41 +467,16 @@ int in_gate_area_no_mm(unsigned long addr)
- const char *arch_vma_name(struct vm_area_struct *vma)
- {
--      return is_gate_vma(vma) ? "[vectors]" :
--              (vma->vm_mm && vma->vm_start == vma->vm_mm->context.sigpage) ?
--               "[sigpage]" : NULL;
-+      return is_gate_vma(vma) ? "[vectors]" : NULL;
+@@ -474,81 +469,13 @@ const char *arch_vma_name(struct vm_area_struct *vma)
+       return is_gate_vma(vma) ? "[vectors]" : NULL;
  }
  
+-/* If possible, provide a placement hint at a random offset from the
+- * stack for the signal page.
+- */
+-static unsigned long sigpage_addr(const struct mm_struct *mm,
+-                                unsigned int npages)
+-{
+-      unsigned long offset;
+-      unsigned long first;
+-      unsigned long last;
+-      unsigned long addr;
+-      unsigned int slots;
+-
+-      first = PAGE_ALIGN(mm->start_stack);
+-
+-      last = TASK_SIZE - (npages << PAGE_SHIFT);
+-
+-      /* No room after stack? */
+-      if (first > last)
+-              return 0;
+-
+-      /* Just enough room? */
+-      if (first == last)
+-              return first;
+-
+-      slots = ((last - first) >> PAGE_SHIFT) + 1;
+-
+-      offset = get_random_int() % slots;
+-
+-      addr = first + (offset << PAGE_SHIFT);
+-
+-      return addr;
+-}
+-
 -static struct page *signal_page;
 -extern struct page *get_signal_page(void);
+-
+-static const struct vm_special_mapping sigpage_mapping = {
+-      .name = "[sigpage]",
+-      .pages = &signal_page,
+-};
 -
  int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
  {
        struct mm_struct *mm = current->mm;
+-      struct vm_area_struct *vma;
 -      unsigned long addr;
--      int ret;
+-      unsigned long hint;
+-      int ret = 0;
 -
 -      if (!signal_page)
 -              signal_page = get_signal_page();
@@ -2951,18 +2984,23 @@ index 81ef686..f4130b8 100644
 -              return -ENOMEM;
  
        down_write(&mm->mmap_sem);
--      addr = get_unmapped_area(NULL, 0, PAGE_SIZE, 0, 0);
+-      hint = sigpage_addr(mm, 1);
+-      addr = get_unmapped_area(NULL, hint, PAGE_SIZE, 0, 0);
 -      if (IS_ERR_VALUE(addr)) {
 -              ret = addr;
 -              goto up_fail;
 -      }
 -
--      ret = install_special_mapping(mm, addr, PAGE_SIZE,
+-      vma = _install_special_mapping(mm, addr, PAGE_SIZE,
 -              VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
--              &signal_page);
+-              &sigpage_mapping);
 -
--      if (ret == 0)
--              mm->context.sigpage = addr;
+-      if (IS_ERR(vma)) {
+-              ret = PTR_ERR(vma);
+-              goto up_fail;
+-      }
+-
+-      mm->context.sigpage = addr;
 -
 - up_fail:
 +      mm->context.sigpage = (PAGE_OFFSET + (get_random_int() % 0x3FFEFFE0)) & 0xFFFFFFFC;
@@ -2972,36 +3010,24 @@ index 81ef686..f4130b8 100644
  }
  #endif
 diff --git a/arch/arm/kernel/psci.c b/arch/arm/kernel/psci.c
-index 4693188..4596c5e 100644
+index f73891b..cf3004e 100644
 --- a/arch/arm/kernel/psci.c
 +++ b/arch/arm/kernel/psci.c
-@@ -24,7 +24,7 @@
- #include <asm/opcodes-virt.h>
+@@ -28,7 +28,7 @@
  #include <asm/psci.h>
+ #include <asm/system_misc.h>
  
 -struct psci_operations psci_ops;
 +struct psci_operations psci_ops __read_only;
  
  static int (*invoke_psci_fn)(u32, u32, u32, u32);
+ typedef int (*psci_initcall_t)(const struct device_node *);
 diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
-index 0dd3b79..b67388e 100644
+index ef9119f..31995a3 100644
 --- a/arch/arm/kernel/ptrace.c
 +++ b/arch/arm/kernel/ptrace.c
-@@ -908,7 +908,7 @@ enum ptrace_syscall_dir {
-       PTRACE_SYSCALL_EXIT,
- };
--static int tracehook_report_syscall(struct pt_regs *regs,
-+static void tracehook_report_syscall(struct pt_regs *regs,
-                                   enum ptrace_syscall_dir dir)
- {
-       unsigned long ip;
-@@ -926,19 +926,29 @@ static int tracehook_report_syscall(struct pt_regs *regs,
-               current_thread_info()->syscall = -1;
+@@ -928,10 +928,19 @@ static void tracehook_report_syscall(struct pt_regs *regs,
        regs->ARM_ip = ip;
--      return current_thread_info()->syscall;
  }
  
 +#ifdef CONFIG_GRKERNSEC_SETXID
@@ -3018,22 +3044,13 @@ index 0dd3b79..b67388e 100644
 +#endif
 +
        /* Do the secure computing check first; failures should be fast. */
-       if (secure_computing(scno) == -1)
-               return -1;
-       if (test_thread_flag(TIF_SYSCALL_TRACE))
--              scno = tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER);
-+              tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER);
-+
-+      scno = current_thread_info()->syscall;
-       if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
-               trace_sys_enter(regs, scno);
+ #ifdef CONFIG_HAVE_ARCH_SECCOMP_FILTER
+       if (secure_computing() == -1)
 diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
-index 50e198c..a8b5f49 100644
+index c031063..e277ab8 100644
 --- a/arch/arm/kernel/setup.c
 +++ b/arch/arm/kernel/setup.c
-@@ -103,21 +103,23 @@ EXPORT_SYMBOL(elf_hwcap);
+@@ -104,21 +104,23 @@ EXPORT_SYMBOL(elf_hwcap);
  unsigned int elf_hwcap2 __read_mostly;
  EXPORT_SYMBOL(elf_hwcap2);
  
@@ -3062,7 +3079,7 @@ index 50e198c..a8b5f49 100644
  EXPORT_SYMBOL(outer_cache);
  #endif
  
-@@ -250,9 +252,13 @@ static int __get_cpu_architecture(void)
+@@ -252,9 +254,13 @@ static int __get_cpu_architecture(void)
                asm("mrc        p15, 0, %0, c0, c1, 4"
                    : "=r" (mmfr0));
                if ((mmfr0 & 0x0000000f) >= 0x00000003 ||
@@ -3136,10 +3153,10 @@ index bd19834..e4d8c66 100644
 -      return page;
 -}
 diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
-index 7c4fada..8581286 100644
+index 13396d3..589d615 100644
 --- a/arch/arm/kernel/smp.c
 +++ b/arch/arm/kernel/smp.c
-@@ -73,7 +73,7 @@ enum ipi_msg_type {
+@@ -76,7 +76,7 @@ enum ipi_msg_type {
  
  static DECLARE_COMPLETION(cpu_running);
  
@@ -3172,10 +3189,10 @@ index 7a3be1d..b00c7de 100644
                         start, end);
                itcm_present = true;
 diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
-index abd2fc0..895dbb6 100644
+index 9f5d818..e013427 100644
 --- a/arch/arm/kernel/traps.c
 +++ b/arch/arm/kernel/traps.c
-@@ -62,7 +62,7 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long);
+@@ -65,7 +65,7 @@ static void dump_mem(const char *, const char *, unsigned long, unsigned long);
  void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame)
  {
  #ifdef CONFIG_KALLSYMS
@@ -3184,7 +3201,7 @@ index abd2fc0..895dbb6 100644
  #else
        printk("Function entered at [<%08lx>] from [<%08lx>]\n", where, from);
  #endif
-@@ -264,6 +264,8 @@ static arch_spinlock_t die_lock = __ARCH_SPIN_LOCK_UNLOCKED;
+@@ -267,6 +267,8 @@ static arch_spinlock_t die_lock = __ARCH_SPIN_LOCK_UNLOCKED;
  static int die_owner = -1;
  static unsigned int die_nest_count;
  
@@ -3193,7 +3210,7 @@ index abd2fc0..895dbb6 100644
  static unsigned long oops_begin(void)
  {
        int cpu;
-@@ -306,6 +308,9 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
+@@ -309,6 +311,9 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
                panic("Fatal exception in interrupt");
        if (panic_on_oops)
                panic("Fatal exception");
@@ -3203,17 +3220,7 @@ index abd2fc0..895dbb6 100644
        if (signr)
                do_exit(signr);
  }
-@@ -643,7 +648,9 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
-                        * The user helper at 0xffff0fe0 must be used instead.
-                        * (see entry-armv.S for details)
-                        */
-+                      pax_open_kernel();
-                       *((unsigned int *)0xffff0ff0) = regs->ARM_r0;
-+                      pax_close_kernel();
-               }
-               return 0;
-@@ -900,7 +907,11 @@ void __init early_trap_init(void *vectors_base)
+@@ -880,7 +885,11 @@ void __init early_trap_init(void *vectors_base)
        kuser_init(vectors_base);
  
        flush_icache_range(vectors, vectors + PAGE_SIZE * 2);
@@ -3227,7 +3234,7 @@ index abd2fc0..895dbb6 100644
        /*
         * on V7-M there is no need to copy the vector table to a dedicated
 diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
-index 7bcee5c..e2f3249 100644
+index 8e95aa4..595dfc8 100644
 --- a/arch/arm/kernel/vmlinux.lds.S
 +++ b/arch/arm/kernel/vmlinux.lds.S
 @@ -8,7 +8,11 @@
@@ -3284,20 +3291,20 @@ index 7bcee5c..e2f3249 100644
  
  #ifndef CONFIG_XIP_KERNEL
        . = ALIGN(PAGE_SIZE);
-@@ -220,6 +233,11 @@ SECTIONS
-       . = PAGE_OFFSET + TEXT_OFFSET;
+@@ -221,6 +234,11 @@ SECTIONS
  #else
+       . = ALIGN(THREAD_SIZE);
        __init_end = .;
 +
 +#ifdef CONFIG_PAX_KERNEXEC
 +      . = ALIGN(1<<SECTION_SHIFT);
 +#endif
 +
-       . = ALIGN(THREAD_SIZE);
        __data_loc = .;
  #endif
 diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
-index f0e50a0..8d5d36c 100644
+index 9e193c8..3560fe6 100644
 --- a/arch/arm/kvm/arm.c
 +++ b/arch/arm/kvm/arm.c
 @@ -57,7 +57,7 @@ static unsigned long hyp_default_vectors;
@@ -3309,7 +3316,7 @@ index f0e50a0..8d5d36c 100644
  static u8 kvm_next_vmid;
  static DEFINE_SPINLOCK(kvm_vmid_lock);
  
-@@ -408,7 +408,7 @@ void force_vm_exit(const cpumask_t *mask)
+@@ -354,7 +354,7 @@ void force_vm_exit(const cpumask_t *mask)
   */
  static bool need_new_vmid_gen(struct kvm *kvm)
  {
@@ -3318,7 +3325,7 @@ index f0e50a0..8d5d36c 100644
  }
  
  /**
-@@ -441,7 +441,7 @@ static void update_vttbr(struct kvm *kvm)
+@@ -387,7 +387,7 @@ static void update_vttbr(struct kvm *kvm)
  
        /* First user of a new VMID generation? */
        if (unlikely(kvm_next_vmid == 0)) {
@@ -3327,7 +3334,7 @@ index f0e50a0..8d5d36c 100644
                kvm_next_vmid = 1;
  
                /*
-@@ -458,7 +458,7 @@ static void update_vttbr(struct kvm *kvm)
+@@ -404,7 +404,7 @@ static void update_vttbr(struct kvm *kvm)
                kvm_call_hyp(__kvm_flush_vm_context);
        }
  
@@ -3336,6 +3343,15 @@ index f0e50a0..8d5d36c 100644
        kvm->arch.vmid = kvm_next_vmid;
        kvm_next_vmid++;
  
+@@ -980,7 +980,7 @@ static void check_kvm_target_cpu(void *ret)
+ /**
+  * Initialize Hyp-mode and memory mappings on all CPUs.
+  */
+-int kvm_arch_init(void *opaque)
++int kvm_arch_init(const void *opaque)
+ {
+       int err;
+       int ret, cpu;
 diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S
 index 14a0d98..7771a7d 100644
 --- a/arch/arm/lib/clear_user.S
@@ -3448,10 +3464,10 @@ index 7d08b43..f7ca7ea 100644
  #include "csumpartialcopygeneric.S"
  
 diff --git a/arch/arm/lib/delay.c b/arch/arm/lib/delay.c
-index 5306de3..aed6d03 100644
+index 312d43e..21d2322 100644
 --- a/arch/arm/lib/delay.c
 +++ b/arch/arm/lib/delay.c
-@@ -28,7 +28,7 @@
+@@ -29,7 +29,7 @@
  /*
   * Default to the loop-based delay implementation.
   */
@@ -3483,73 +3499,71 @@ index 3e58d71..029817c 100644
        /* See rational for this in __copy_to_user() above. */
        if (n < 64)
 diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
-index f7a07a5..258e1f7 100644
+index 9610792..4dfb851 100644
 --- a/arch/arm/mach-at91/setup.c
 +++ b/arch/arm/mach-at91/setup.c
-@@ -81,7 +81,7 @@ void __init at91_init_sram(int bank, unsigned long base, unsigned int length)
+@@ -83,7 +83,7 @@ void __init at91_init_sram(int bank, unsigned long base, unsigned int length)
  
        desc->pfn = __phys_to_pfn(base);
        desc->length = length;
 -      desc->type = MT_MEMORY_RWX_NONCACHED;
 +      desc->type = MT_MEMORY_RW_NONCACHED;
  
-       pr_info("AT91: sram at 0x%lx of 0x%x mapped at 0x%lx\n",
+       pr_info("sram at 0x%lx of 0x%x mapped at 0x%lx\n",
                base, length, desc->virtual);
-diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
-index 255f33a..507b157 100644
---- a/arch/arm/mach-kirkwood/common.c
-+++ b/arch/arm/mach-kirkwood/common.c
-@@ -157,7 +157,16 @@ static void clk_gate_fn_disable(struct clk_hw *hw)
-       clk_gate_ops.disable(hw);
- }
+diff --git a/arch/arm/mach-keystone/keystone.c b/arch/arm/mach-keystone/keystone.c
+index 7f352de..6dc0929 100644
+--- a/arch/arm/mach-keystone/keystone.c
++++ b/arch/arm/mach-keystone/keystone.c
+@@ -27,7 +27,7 @@
  
--static struct clk_ops clk_gate_fn_ops;
-+static int clk_gate_fn_is_enabled(struct clk_hw *hw)
-+{
-+      return clk_gate_ops.is_enabled(hw);
-+}
-+
-+static struct clk_ops clk_gate_fn_ops = {
-+      .enable = clk_gate_fn_enable,
-+      .disable = clk_gate_fn_disable,
-+      .is_enabled = clk_gate_fn_is_enabled,
-+};
+ #include "keystone.h"
  
- static struct clk __init *clk_register_gate_fn(struct device *dev,
-               const char *name,
-@@ -191,14 +200,6 @@ static struct clk __init *clk_register_gate_fn(struct device *dev,
-       gate_fn->fn_en = fn_en;
-       gate_fn->fn_dis = fn_dis;
--      /* ops is the gate ops, but with our enable/disable functions */
--      if (clk_gate_fn_ops.enable != clk_gate_fn_enable ||
--          clk_gate_fn_ops.disable != clk_gate_fn_disable) {
--              clk_gate_fn_ops = clk_gate_ops;
--              clk_gate_fn_ops.enable = clk_gate_fn_enable;
--              clk_gate_fn_ops.disable = clk_gate_fn_disable;
--      }
--
-       clk = clk_register(dev, &gate_fn->gate.hw);
+-static struct notifier_block platform_nb;
++static notifier_block_no_const platform_nb;
+ static unsigned long keystone_dma_pfn_offset __read_mostly;
+ static int keystone_platform_notifier(struct notifier_block *nb,
+diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c
+index c31f4c0..c86224d 100644
+--- a/arch/arm/mach-mvebu/coherency.c
++++ b/arch/arm/mach-mvebu/coherency.c
+@@ -316,7 +316,7 @@ static void __init armada_370_coherency_init(struct device_node *np)
  
-       if (IS_ERR(clk))
+ /*
+  * This ioremap hook is used on Armada 375/38x to ensure that PCIe
+- * memory areas are mapped as MT_UNCACHED instead of MT_DEVICE. This
++ * memory areas are mapped as MT_UNCACHED_RW instead of MT_DEVICE. This
+  * is needed as a workaround for a deadlock issue between the PCIe
+  * interface and the cache controller.
+  */
+@@ -329,7 +329,7 @@ armada_pcie_wa_ioremap_caller(phys_addr_t phys_addr, size_t size,
+       mvebu_mbus_get_pcie_mem_aperture(&pcie_mem);
+       if (pcie_mem.start <= phys_addr && (phys_addr + size) <= pcie_mem.end)
+-              mtype = MT_UNCACHED;
++              mtype = MT_UNCACHED_RW;
+       return __arm_ioremap_caller(phys_addr, size, mtype, caller);
+ }
 diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
-index aead77a..a2253fa 100644
+index 97767a2..9233746 100644
 --- a/arch/arm/mach-omap2/board-n8x0.c
 +++ b/arch/arm/mach-omap2/board-n8x0.c
-@@ -568,7 +568,7 @@ static int n8x0_menelaus_late_init(struct device *dev)
+@@ -569,7 +569,7 @@ static int n8x0_menelaus_late_init(struct device *dev)
  }
  #endif
  
--static struct menelaus_platform_data n8x0_menelaus_platform_data __initdata = {
-+static struct menelaus_platform_data n8x0_menelaus_platform_data __initconst = {
+-struct menelaus_platform_data n8x0_menelaus_platform_data __initdata = {
++struct menelaus_platform_data n8x0_menelaus_platform_data __initconst = {
        .late_init = n8x0_menelaus_late_init,
  };
  
 diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
-index 9fe8c94..c014a4d 100644
+index 5fa3755..1e8c247 100644
 --- a/arch/arm/mach-omap2/gpmc.c
 +++ b/arch/arm/mach-omap2/gpmc.c
-@@ -148,7 +148,6 @@ struct omap3_gpmc_regs {
+@@ -151,7 +151,6 @@ struct omap3_gpmc_regs {
  };
  
  static struct gpmc_client_irq gpmc_client_irq[GPMC_NR_IRQ];
@@ -3557,7 +3571,7 @@ index 9fe8c94..c014a4d 100644
  static int gpmc_irq_start;
  
  static struct resource        gpmc_mem_root;
-@@ -727,6 +726,18 @@ static void gpmc_irq_noop(struct irq_data *data) { }
+@@ -736,6 +735,18 @@ static void gpmc_irq_noop(struct irq_data *data) { }
  
  static unsigned int gpmc_irq_noop_ret(struct irq_data *data) { return 0; }
  
@@ -3576,7 +3590,7 @@ index 9fe8c94..c014a4d 100644
  static int gpmc_setup_irq(void)
  {
        int i;
-@@ -741,15 +752,6 @@ static int gpmc_setup_irq(void)
+@@ -750,15 +761,6 @@ static int gpmc_setup_irq(void)
                return gpmc_irq_start;
        }
  
@@ -3593,19 +3607,19 @@ index 9fe8c94..c014a4d 100644
        gpmc_client_irq[1].bitmask = GPMC_IRQ_COUNT_EVENT;
  
 diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
-index 667915d..2ee1219 100644
+index 6944ae3..bc587ca 100644
 --- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
 +++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
-@@ -84,7 +84,7 @@ struct cpu_pm_ops {
-       int (*finish_suspend)(unsigned long cpu_state);
+@@ -86,7 +86,7 @@ struct cpu_pm_ops {
        void (*resume)(void);
        void (*scu_prepare)(unsigned int cpu_id, unsigned int cpu_state);
+       void (*hotplug_restart)(void);
 -};
 +} __no_const;
  
  static DEFINE_PER_CPU(struct omap4_cpu_pm_info, omap4_pm_info);
  static struct powerdomain *mpuss_pd;
-@@ -102,7 +102,7 @@ static void dummy_cpu_resume(void)
+@@ -105,7 +105,7 @@ static void dummy_cpu_resume(void)
  static void dummy_scu_prepare(unsigned int cpu_id, unsigned int cpu_state)
  {}
  
@@ -3615,10 +3629,10 @@ index 667915d..2ee1219 100644
        .resume                 = dummy_cpu_resume,
        .scu_prepare            = dummy_scu_prepare,
 diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c
-index 693fe48..c15ea73 100644
+index f961c46..4a453dc 100644
 --- a/arch/arm/mach-omap2/omap-wakeupgen.c
 +++ b/arch/arm/mach-omap2/omap-wakeupgen.c
-@@ -343,7 +343,7 @@ static int irq_cpu_hotplug_notify(struct notifier_block *self,
+@@ -344,7 +344,7 @@ static int irq_cpu_hotplug_notify(struct notifier_block *self,
        return NOTIFY_OK;
  }
  
@@ -3628,7 +3642,7 @@ index 693fe48..c15ea73 100644
  };
  
 diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c
-index 01ef59d..32ae28a8 100644
+index 8c58b71..95b655f 100644
 --- a/arch/arm/mach-omap2/omap_device.c
 +++ b/arch/arm/mach-omap2/omap_device.c
 @@ -510,7 +510,7 @@ void omap_device_delete(struct omap_device *od)
@@ -3669,7 +3683,7 @@ index 78c02b3..c94109a 100644
  struct omap_device *omap_device_alloc(struct platform_device *pdev,
                                      struct omap_hwmod **ohs, int oh_cnt);
 diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
-index 66c60fe..c78950d 100644
+index 716247e..8df346d 100644
 --- a/arch/arm/mach-omap2/omap_hwmod.c
 +++ b/arch/arm/mach-omap2/omap_hwmod.c
 @@ -194,10 +194,10 @@ struct omap_hwmod_soc_ops {
@@ -3709,7 +3723,7 @@ index 95fee54..cfa9cf1 100644
        pwrdm_register_pwrdms(powerdomains_am43xx);
        pwrdm_complete_init();
 diff --git a/arch/arm/mach-omap2/wd_timer.c b/arch/arm/mach-omap2/wd_timer.c
-index d15c7bb..b2d1f0c 100644
+index ff0a68c..b312aa0 100644
 --- a/arch/arm/mach-omap2/wd_timer.c
 +++ b/arch/arm/mach-omap2/wd_timer.c
 @@ -110,7 +110,9 @@ static int __init omap_init_wdt(void)
@@ -3733,7 +3747,7 @@ index d15c7bb..b2d1f0c 100644
                                 sizeof(struct omap_wd_timer_platform_data));
        WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n",
 diff --git a/arch/arm/mach-tegra/cpuidle-tegra20.c b/arch/arm/mach-tegra/cpuidle-tegra20.c
-index b82dcae..44ee5b6 100644
+index b30bf5c..d0825bf 100644
 --- a/arch/arm/mach-tegra/cpuidle-tegra20.c
 +++ b/arch/arm/mach-tegra/cpuidle-tegra20.c
 @@ -180,7 +180,7 @@ static int tegra20_idle_lp2_coupled(struct cpuidle_device *dev,
@@ -3764,7 +3778,7 @@ index 2dea8b5..6499da2 100644
  extern void ux500_cpu_die(unsigned int cpu);
  
 diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
-index 5bf7c3c..571e67e 100644
+index 7eb94e6..799ad3e 100644
 --- a/arch/arm/mm/Kconfig
 +++ b/arch/arm/mm/Kconfig
 @@ -446,6 +446,7 @@ config CPU_32v5
@@ -3783,15 +3797,16 @@ index 5bf7c3c..571e67e 100644
        help
          This option enables or disables the use of domain switching
          via the set_fs() function.
-@@ -799,6 +801,7 @@ config NEED_KUSER_HELPERS
+@@ -798,7 +800,7 @@ config NEED_KUSER_HELPERS
  config KUSER_HELPERS
        bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS
+-      depends on MMU
++      depends on MMU && (!(CPU_V6 || CPU_V6K || CPU_V7) || GRKERNSEC_OLD_ARM_USERLAND)
        default y
-+      depends on !(CPU_V6 || CPU_V6K || CPU_V7) || GRKERNSEC_OLD_ARM_USERLAND
        help
          Warning: disabling this option may break user programs.
-@@ -811,7 +814,7 @@ config KUSER_HELPERS
+@@ -812,7 +814,7 @@ config KUSER_HELPERS
          See Documentation/arm/kernel_user_helpers.txt for details.
  
          However, the fixed address nature of these helpers can be used
@@ -3801,10 +3816,10 @@ index 5bf7c3c..571e67e 100644
  
          If all of the binaries and libraries which run on your platform
 diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c
-index 9240364..a2b8cf3 100644
+index 83792f4..c25d36b 100644
 --- a/arch/arm/mm/alignment.c
 +++ b/arch/arm/mm/alignment.c
-@@ -212,10 +212,12 @@ union offset_union {
+@@ -216,10 +216,12 @@ union offset_union {
  #define __get16_unaligned_check(ins,val,addr)                 \
        do {                                                    \
                unsigned int err = 0, v, a = addr;              \
@@ -3817,7 +3832,7 @@ index 9240364..a2b8cf3 100644
                if (err)                                        \
                        goto fault;                             \
        } while (0)
-@@ -229,6 +231,7 @@ union offset_union {
+@@ -233,6 +235,7 @@ union offset_union {
  #define __get32_unaligned_check(ins,val,addr)                 \
        do {                                                    \
                unsigned int err = 0, v, a = addr;              \
@@ -3825,7 +3840,7 @@ index 9240364..a2b8cf3 100644
                __get8_unaligned_check(ins,v,a,err);            \
                val =  v << ((BE) ? 24 :  0);                   \
                __get8_unaligned_check(ins,v,a,err);            \
-@@ -237,6 +240,7 @@ union offset_union {
+@@ -241,6 +244,7 @@ union offset_union {
                val |= v << ((BE) ?  8 : 16);                   \
                __get8_unaligned_check(ins,v,a,err);            \
                val |= v << ((BE) ?  0 : 24);                   \
@@ -3833,7 +3848,7 @@ index 9240364..a2b8cf3 100644
                if (err)                                        \
                        goto fault;                             \
        } while (0)
-@@ -250,6 +254,7 @@ union offset_union {
+@@ -254,6 +258,7 @@ union offset_union {
  #define __put16_unaligned_check(ins,val,addr)                 \
        do {                                                    \
                unsigned int err = 0, v = val, a = addr;        \
@@ -3841,7 +3856,7 @@ index 9240364..a2b8cf3 100644
                __asm__( FIRST_BYTE_16                          \
         ARM(   "1:     "ins"   %1, [%2], #1\n" )               \
         THUMB( "1:     "ins"   %1, [%2]\n"     )               \
-@@ -269,6 +274,7 @@ union offset_union {
+@@ -273,6 +278,7 @@ union offset_union {
                "       .popsection\n"                          \
                : "=r" (err), "=&r" (v), "=&r" (a)              \
                : "0" (err), "1" (v), "2" (a));                 \
@@ -3849,7 +3864,7 @@ index 9240364..a2b8cf3 100644
                if (err)                                        \
                        goto fault;                             \
        } while (0)
-@@ -282,6 +288,7 @@ union offset_union {
+@@ -286,6 +292,7 @@ union offset_union {
  #define __put32_unaligned_check(ins,val,addr)                 \
        do {                                                    \
                unsigned int err = 0, v = val, a = addr;        \
@@ -3857,7 +3872,7 @@ index 9240364..a2b8cf3 100644
                __asm__( FIRST_BYTE_32                          \
         ARM(   "1:     "ins"   %1, [%2], #1\n" )               \
         THUMB( "1:     "ins"   %1, [%2]\n"     )               \
-@@ -311,6 +318,7 @@ union offset_union {
+@@ -315,6 +322,7 @@ union offset_union {
                "       .popsection\n"                          \
                : "=r" (err), "=&r" (v), "=&r" (a)              \
                : "0" (err), "1" (v), "2" (a));                 \
@@ -3866,17 +3881,17 @@ index 9240364..a2b8cf3 100644
                        goto fault;                             \
        } while (0)
 diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
-index 7abde2c..9df495f 100644
+index 5e65ca8..879e7b3 100644
 --- a/arch/arm/mm/cache-l2x0.c
 +++ b/arch/arm/mm/cache-l2x0.c
-@@ -46,7 +46,7 @@ struct l2x0_of_data {
-       void (*setup)(const struct device_node *, u32 *, u32 *);
-       void (*save)(void);
+@@ -42,7 +42,7 @@ struct l2c_init_data {
+       void (*fixup)(void __iomem *, u32, struct outer_cache_fns *);
+       void (*save)(void __iomem *);
        struct outer_cache_fns outer_cache;
 -};
 +} __do_const;
  
- static bool of_init = false;
+ #define CACHE_LINE_SIZE               32
  
 diff --git a/arch/arm/mm/context.c b/arch/arm/mm/context.c
 index 6eb97b3..ac509f6 100644
@@ -3927,7 +3942,7 @@ index 6eb97b3..ac509f6 100644
                atomic64_set(&mm->context.id, asid);
        }
 diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
-index eb8830a..5360ce7 100644
+index eb8830a..e8ff52e 100644
 --- a/arch/arm/mm/fault.c
 +++ b/arch/arm/mm/fault.c
 @@ -25,6 +25,7 @@
@@ -4041,7 +4056,7 @@ index eb8830a..5360ce7 100644
        printk(KERN_ALERT "Unhandled fault: %s (0x%03x) at 0x%08lx\n",
                inf->name, fsr, addr);
  
-@@ -574,15 +647,98 @@ hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int, struct pt_regs *
+@@ -574,15 +647,104 @@ hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int, struct pt_regs *
        ifsr_info[nr].name = name;
  }
  
@@ -4121,9 +4136,15 @@ index eb8830a..5360ce7 100644
 +
 +#ifdef CONFIG_PAX_REFCOUNT
 +      if (fsr_fs(ifsr) == FAULT_CODE_DEBUG) {
++#ifdef CONFIG_THUMB2_KERNEL
++              unsigned short bkpt;
++
++              if (!probe_kernel_address(pc, bkpt) && cpu_to_le16(bkpt) == 0xbef1) {
++#else
 +              unsigned int bkpt;
 +
 +              if (!probe_kernel_address(pc, bkpt) && cpu_to_le32(bkpt) == 0xe12f1073) {
++#endif
 +                      current->thread.error_code = ifsr;
 +                      current->thread.trap_no = 0;
 +                      pax_report_refcount_overflow(regs);
@@ -4171,10 +4192,10 @@ index cf08bdf..772656c 100644
  unsigned long search_exception_table(unsigned long addr);
  
 diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
-index 2a77ba8..68e6a7a 100644
+index 9481f85..6dae261 100644
 --- a/arch/arm/mm/init.c
 +++ b/arch/arm/mm/init.c
-@@ -30,6 +30,8 @@
+@@ -31,6 +31,8 @@
  #include <asm/setup.h>
  #include <asm/tlb.h>
  #include <asm/fixmap.h>
@@ -4183,7 +4204,7 @@ index 2a77ba8..68e6a7a 100644
  
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
-@@ -627,7 +629,46 @@ void free_initmem(void)
+@@ -619,7 +621,46 @@ void free_initmem(void)
  {
  #ifdef CONFIG_HAVE_TCM
        extern char __tcm_start, __tcm_end;
@@ -4231,7 +4252,7 @@ index 2a77ba8..68e6a7a 100644
        free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link");
  #endif
 diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
-index f9c32ba..8540068 100644
+index d1e5ad7..84dcbf2 100644
 --- a/arch/arm/mm/ioremap.c
 +++ b/arch/arm/mm/ioremap.c
 @@ -392,9 +392,9 @@ __arm_ioremap_exec(phys_addr_t phys_addr, size_t size, bool cached)
@@ -4358,10 +4379,10 @@ index 5e85ed3..b10a7ed 100644
        }
  }
 diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
-index b68c6b2..f66c492 100644
+index 9f98cec..115fcb6 100644
 --- a/arch/arm/mm/mmu.c
 +++ b/arch/arm/mm/mmu.c
-@@ -39,6 +39,22 @@
+@@ -40,6 +40,22 @@
  #include "mm.h"
  #include "tcm.h"
  
@@ -4384,7 +4405,7 @@ index b68c6b2..f66c492 100644
  /*
   * empty_zero_page is a special page that is used for
   * zero-initialized data and COW.
-@@ -235,7 +251,15 @@ __setup("noalign", noalign_setup);
+@@ -239,7 +255,15 @@ __setup("noalign", noalign_setup);
  #define PROT_PTE_S2_DEVICE    PROT_PTE_DEVICE
  #define PROT_SECT_DEVICE      PMD_TYPE_SECT|PMD_SECT_AP_WRITE
  
@@ -4401,7 +4422,7 @@ index b68c6b2..f66c492 100644
        [MT_DEVICE] = {           /* Strongly ordered / ARMv6 shared device */
                .prot_pte       = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED |
                                  L_PTE_SHARED,
-@@ -264,19 +288,19 @@ static struct mem_type mem_types[] = {
+@@ -268,19 +292,19 @@ static struct mem_type mem_types[] = {
                .prot_sect      = PROT_SECT_DEVICE,
                .domain         = DOMAIN_IO,
        },
@@ -4426,7 +4447,7 @@ index b68c6b2..f66c492 100644
                .domain    = DOMAIN_KERNEL,
        },
  #endif
-@@ -284,15 +308,15 @@ static struct mem_type mem_types[] = {
+@@ -288,15 +312,15 @@ static struct mem_type mem_types[] = {
                .prot_pte  = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
                                L_PTE_RDONLY,
                .prot_l1   = PMD_TYPE_TABLE,
@@ -4445,7 +4466,7 @@ index b68c6b2..f66c492 100644
                .prot_pte  = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY,
                .prot_l1   = PMD_TYPE_TABLE,
                .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
-@@ -305,17 +329,30 @@ static struct mem_type mem_types[] = {
+@@ -309,17 +333,30 @@ static struct mem_type mem_types[] = {
                .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
                .domain    = DOMAIN_KERNEL,
        },
@@ -4479,7 +4500,7 @@ index b68c6b2..f66c492 100644
        [MT_MEMORY_RW_DTCM] = {
                .prot_pte  = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
                                L_PTE_XN,
-@@ -323,9 +360,10 @@ static struct mem_type mem_types[] = {
+@@ -327,9 +364,10 @@ static struct mem_type mem_types[] = {
                .prot_sect = PMD_TYPE_SECT | PMD_SECT_XN,
                .domain    = DOMAIN_KERNEL,
        },
@@ -4492,7 +4513,7 @@ index b68c6b2..f66c492 100644
                .domain    = DOMAIN_KERNEL,
        },
        [MT_MEMORY_RW_SO] = {
-@@ -534,9 +572,14 @@ static void __init build_mem_type_table(void)
+@@ -547,9 +585,14 @@ static void __init build_mem_type_table(void)
                 * Mark cache clean areas and XIP ROM read only
                 * from SVC mode and no access from userspace.
                 */
@@ -4509,8 +4530,8 @@ index b68c6b2..f66c492 100644
 +              mem_types[MT_CACHECLEAN_RO].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
  #endif
  
-               if (is_smp()) {
-@@ -552,13 +595,17 @@ static void __init build_mem_type_table(void)
+               /*
+@@ -566,13 +609,17 @@ static void __init build_mem_type_table(void)
                        mem_types[MT_DEVICE_WC].prot_pte |= L_PTE_SHARED;
                        mem_types[MT_DEVICE_CACHED].prot_sect |= PMD_SECT_S;
                        mem_types[MT_DEVICE_CACHED].prot_pte |= L_PTE_SHARED;
@@ -4532,7 +4553,7 @@ index b68c6b2..f66c492 100644
                }
        }
  
-@@ -569,15 +616,20 @@ static void __init build_mem_type_table(void)
+@@ -583,15 +630,20 @@ static void __init build_mem_type_table(void)
        if (cpu_arch >= CPU_ARCH_ARMv6) {
                if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) {
                        /* Non-cacheable Normal is XCB = 001 */
@@ -4556,7 +4577,7 @@ index b68c6b2..f66c492 100644
        }
  
  #ifdef CONFIG_ARM_LPAE
-@@ -593,6 +645,8 @@ static void __init build_mem_type_table(void)
+@@ -607,6 +659,8 @@ static void __init build_mem_type_table(void)
        vecs_pgprot |= PTE_EXT_AF;
  #endif
  
@@ -4565,7 +4586,7 @@ index b68c6b2..f66c492 100644
        for (i = 0; i < 16; i++) {
                pteval_t v = pgprot_val(protection_map[i]);
                protection_map[i] = __pgprot(v | user_pgprot);
-@@ -610,21 +664,24 @@ static void __init build_mem_type_table(void)
+@@ -624,21 +678,24 @@ static void __init build_mem_type_table(void)
  
        mem_types[MT_LOW_VECTORS].prot_l1 |= ecc_mask;
        mem_types[MT_HIGH_VECTORS].prot_l1 |= ecc_mask;
@@ -4596,7 +4617,7 @@ index b68c6b2..f66c492 100644
                break;
        }
        pr_info("Memory policy: %sData cache %s\n",
-@@ -842,7 +899,7 @@ static void __init create_mapping(struct map_desc *md)
+@@ -856,7 +913,7 @@ static void __init create_mapping(struct map_desc *md)
                return;
        }
  
@@ -4605,7 +4626,7 @@ index b68c6b2..f66c492 100644
            md->virtual >= PAGE_OFFSET &&
            (md->virtual < VMALLOC_START || md->virtual >= VMALLOC_END)) {
                printk(KERN_WARNING "BUG: mapping for 0x%08llx"
-@@ -1257,18 +1314,15 @@ void __init arm_mm_memblock_reserve(void)
+@@ -1224,18 +1281,15 @@ void __init arm_mm_memblock_reserve(void)
   * called function.  This means you can't use any function or debugging
   * method which may touch any device, otherwise the kernel _will_ crash.
   */
@@ -4628,7 +4649,7 @@ index b68c6b2..f66c492 100644
  
        for (addr = VMALLOC_START; addr; addr += PMD_SIZE)
                pmd_clear(pmd_off_k(addr));
-@@ -1281,7 +1335,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
+@@ -1248,7 +1302,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
        map.pfn = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & SECTION_MASK);
        map.virtual = MODULES_VADDR;
        map.length = ((unsigned long)_etext - map.virtual + ~SECTION_MASK) & SECTION_MASK;
@@ -4637,7 +4658,7 @@ index b68c6b2..f66c492 100644
        create_mapping(&map);
  #endif
  
-@@ -1292,14 +1346,14 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
+@@ -1259,14 +1313,14 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
        map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS);
        map.virtual = FLUSH_BASE;
        map.length = SZ_1M;
@@ -4654,7 +4675,7 @@ index b68c6b2..f66c492 100644
        create_mapping(&map);
  #endif
  
-@@ -1308,7 +1362,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
+@@ -1275,7 +1329,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
         * location (0xffff0000).  If we aren't using high-vectors, also
         * create a mapping at the low-vectors virtual address.
         */
@@ -4663,7 +4684,7 @@ index b68c6b2..f66c492 100644
        map.virtual = 0xffff0000;
        map.length = PAGE_SIZE;
  #ifdef CONFIG_KUSER_HELPERS
-@@ -1365,8 +1419,10 @@ static void __init kmap_init(void)
+@@ -1335,8 +1389,10 @@ static void __init kmap_init(void)
  static void __init map_lowmem(void)
  {
        struct memblock_region *reg;
@@ -4674,7 +4695,7 @@ index b68c6b2..f66c492 100644
  
        /* Map all the lowmem memory banks. */
        for_each_memblock(memory, reg) {
-@@ -1379,11 +1435,48 @@ static void __init map_lowmem(void)
+@@ -1349,11 +1405,48 @@ static void __init map_lowmem(void)
                if (start >= end)
                        break;
  
@@ -4724,7 +4745,7 @@ index b68c6b2..f66c492 100644
  
                        create_mapping(&map);
                } else {
-@@ -1400,7 +1493,7 @@ static void __init map_lowmem(void)
+@@ -1370,7 +1463,7 @@ static void __init map_lowmem(void)
                        map.pfn = __phys_to_pfn(kernel_x_start);
                        map.virtual = __phys_to_virt(kernel_x_start);
                        map.length = kernel_x_end - kernel_x_start;
@@ -4733,7 +4754,7 @@ index b68c6b2..f66c492 100644
  
                        create_mapping(&map);
  
-@@ -1413,6 +1506,7 @@ static void __init map_lowmem(void)
+@@ -1383,6 +1476,7 @@ static void __init map_lowmem(void)
                                create_mapping(&map);
                        }
                }
@@ -4741,6 +4762,41 @@ index b68c6b2..f66c492 100644
        }
  }
  
+diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c
+index e1268f9..a9755a7 100644
+--- a/arch/arm/net/bpf_jit_32.c
++++ b/arch/arm/net/bpf_jit_32.c
+@@ -20,6 +20,7 @@
+ #include <asm/cacheflush.h>
+ #include <asm/hwcap.h>
+ #include <asm/opcodes.h>
++#include <asm/pgtable.h>
+ #include "bpf_jit_32.h"
+@@ -71,7 +72,11 @@ struct jit_ctx {
+ #endif
+ };
++#ifdef CONFIG_GRKERNSEC_BPF_HARDEN
++int bpf_jit_enable __read_only;
++#else
+ int bpf_jit_enable __read_mostly;
++#endif
+ static u64 jit_get_skb_b(struct sk_buff *skb, unsigned offset)
+ {
+@@ -178,8 +183,10 @@ static void jit_fill_hole(void *area, unsigned int size)
+ {
+       u32 *ptr;
+       /* We are guaranteed to have aligned memory. */
++      pax_open_kernel();
+       for (ptr = area; size >= sizeof(u32); size -= sizeof(u32))
+               *ptr++ = __opcode_to_mem_arm(ARM_INST_UDF);
++      pax_close_kernel();
+ }
+ static void build_prologue(struct jit_ctx *ctx)
 diff --git a/arch/arm/plat-iop/setup.c b/arch/arm/plat-iop/setup.c
 index 5b217f4..c23f40e 100644
 --- a/arch/arm/plat-iop/setup.c
@@ -4781,13 +4837,13 @@ index ce6d763..cfea917 100644
  extern void *samsung_dmadev_get_ops(void);
  extern void *s3c_dma_get_ops(void);
 diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h
-index 66eb764..b529b84 100644
+index 6389d60..b5d3bdd 100644
 --- a/arch/arm64/include/asm/barrier.h
 +++ b/arch/arm64/include/asm/barrier.h
 @@ -41,7 +41,7 @@
  do {                                                                  \
        compiletime_assert_atomic_type(*p);                             \
-       smp_mb();                                                       \
+       barrier();                                                      \
 -      ACCESS_ONCE(*p) = (v);                                          \
 +      ACCESS_ONCE_RW(*p) = (v);                                       \
  } while (0)
@@ -4957,10 +5013,10 @@ index 7caf25d..ee65ac5 100644
  #define __read_mostly __attribute__((__section__(".data..read_mostly")))
  
 diff --git a/arch/frv/include/asm/atomic.h b/arch/frv/include/asm/atomic.h
-index b86329d..6709906 100644
+index 102190a..5334cea 100644
 --- a/arch/frv/include/asm/atomic.h
 +++ b/arch/frv/include/asm/atomic.h
-@@ -186,6 +186,16 @@ static inline void atomic64_dec(atomic64_t *v)
+@@ -181,6 +181,16 @@ static inline void atomic64_dec(atomic64_t *v)
  #define atomic64_cmpxchg(v, old, new) (__cmpxchg_64(old, new, &(v)->counter))
  #define atomic64_xchg(v, new)         (__xchg_64(new, &(v)->counter))
  
@@ -4978,7 +5034,7 @@ index b86329d..6709906 100644
  {
        int c, old;
 diff --git a/arch/frv/include/asm/cache.h b/arch/frv/include/asm/cache.h
-index 2797163..c2a401d 100644
+index 2797163..c2a401df9 100644
 --- a/arch/frv/include/asm/cache.h
 +++ b/arch/frv/include/asm/cache.h
 @@ -12,10 +12,11 @@
@@ -5037,7 +5093,7 @@ index 836f147..4cf23f5 100644
        if (!(addr & ~PAGE_MASK))
                goto success;
 diff --git a/arch/hexagon/include/asm/cache.h b/arch/hexagon/include/asm/cache.h
-index f4ca594..adc72fd6 100644
+index 2635117..fa223cb 100644
 --- a/arch/hexagon/include/asm/cache.h
 +++ b/arch/hexagon/include/asm/cache.h
 @@ -21,9 +21,11 @@
@@ -5055,10 +5111,10 @@ index f4ca594..adc72fd6 100644
  #define __cacheline_aligned   __aligned(L1_CACHE_BYTES)
  #define ____cacheline_aligned __aligned(L1_CACHE_BYTES)
 diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
-index 12c3afe..b1abab2 100644
+index c84c88b..2a6e1ba 100644
 --- a/arch/ia64/Kconfig
 +++ b/arch/ia64/Kconfig
-@@ -546,6 +546,7 @@ source "drivers/sn/Kconfig"
+@@ -549,6 +549,7 @@ source "drivers/sn/Kconfig"
  config KEXEC
        bool "kexec system call"
        depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
@@ -5066,11 +5122,22 @@ index 12c3afe..b1abab2 100644
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
+diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
+index 5441b14..039a446 100644
+--- a/arch/ia64/Makefile
++++ b/arch/ia64/Makefile
+@@ -99,5 +99,6 @@ endef
+ archprepare: make_nr_irqs_h FORCE
+ PHONY += make_nr_irqs_h FORCE
++make_nr_irqs_h: KBUILD_CFLAGS := $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
+ make_nr_irqs_h: FORCE
+       $(Q)$(MAKE) $(build)=arch/ia64/kernel include/generated/nr-irqs.h
 diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h
-index 6e6fe18..a6ae668 100644
+index 0bf0350..2ad1957 100644
 --- a/arch/ia64/include/asm/atomic.h
 +++ b/arch/ia64/include/asm/atomic.h
-@@ -208,6 +208,16 @@ atomic64_add_negative (__s64 i, atomic64_t *v)
+@@ -193,4 +193,14 @@ atomic64_add_negative (__s64 i, atomic64_t *v)
  #define atomic64_inc(v)                       atomic64_add(1, (v))
  #define atomic64_dec(v)                       atomic64_sub(1, (v))
  
@@ -5084,14 +5151,12 @@ index 6e6fe18..a6ae668 100644
 +#define atomic64_dec_unchecked(v)             atomic64_dec(v)
 +#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
 +
- /* Atomic operations are already serializing */
- #define smp_mb__before_atomic_dec()   barrier()
- #define smp_mb__after_atomic_dec()    barrier()
+ #endif /* _ASM_IA64_ATOMIC_H */
 diff --git a/arch/ia64/include/asm/barrier.h b/arch/ia64/include/asm/barrier.h
-index d0a69aa..142f878 100644
+index a48957c..e097b56 100644
 --- a/arch/ia64/include/asm/barrier.h
 +++ b/arch/ia64/include/asm/barrier.h
-@@ -64,7 +64,7 @@
+@@ -67,7 +67,7 @@
  do {                                                                  \
        compiletime_assert_atomic_type(*p);                             \
        barrier();                                                      \
@@ -5507,7 +5572,7 @@ index 76069c1..c2aa816 100644
  }
  
 diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
-index 25c3502..560dae7 100644
+index 6b33457..88b5124 100644
 --- a/arch/ia64/mm/init.c
 +++ b/arch/ia64/mm/init.c
 @@ -120,6 +120,19 @@ ia64_init_addr_space (void)
@@ -5530,6 +5595,15 @@ index 25c3502..560dae7 100644
                vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
                down_write(&current->mm->mmap_sem);
                if (insert_vm_struct(current->mm, vma)) {
+@@ -286,7 +299,7 @@ static int __init gate_vma_init(void)
+       gate_vma.vm_start = FIXADDR_USER_START;
+       gate_vma.vm_end = FIXADDR_USER_END;
+       gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
+-      gate_vma.vm_page_prot = __P101;
++      gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags);
+       return 0;
+ }
 diff --git a/arch/m32r/include/asm/cache.h b/arch/m32r/include/asm/cache.h
 index 40b3ee9..8c2c112 100644
 --- a/arch/m32r/include/asm/cache.h
@@ -5588,7 +5662,7 @@ index 0395c51..5f26031 100644
  #define ARCH_DMA_MINALIGN     L1_CACHE_BYTES
  
 diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
-index 2d6f0de..de5f5ac 100644
+index c7591e8..ecef036 100644
 --- a/arch/metag/include/asm/barrier.h
 +++ b/arch/metag/include/asm/barrier.h
 @@ -89,7 +89,7 @@ static inline void fence(void)
@@ -5601,7 +5675,7 @@ index 2d6f0de..de5f5ac 100644
  
  #define smp_load_acquire(p)                                           \
 diff --git a/arch/metag/mm/hugetlbpage.c b/arch/metag/mm/hugetlbpage.c
-index 3c52fa6..11b2ad8 100644
+index 3c32075..ae0ae75 100644
 --- a/arch/metag/mm/hugetlbpage.c
 +++ b/arch/metag/mm/hugetlbpage.c
 @@ -200,6 +200,7 @@ hugetlb_get_unmapped_area_new_pmd(unsigned long len)
@@ -5631,10 +5705,10 @@ index 4efe96a..60e8699 100644
  #define SMP_CACHE_BYTES       L1_CACHE_BYTES
  
 diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
-index 5cd695f..9a24ad0 100644
+index 9536ef9..9333776 100644
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -2395,6 +2395,7 @@ source "kernel/Kconfig.preempt"
+@@ -2413,6 +2413,7 @@ source "kernel/Kconfig.preempt"
  
  config KEXEC
        bool "Kexec system call"
@@ -5656,7 +5730,7 @@ index 02f2444..506969c 100644
  
  static dma_addr_t octeon_unity_phys_to_dma(struct device *dev, phys_addr_t paddr)
 diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h
-index e8eb3d5..2e665d1 100644
+index 6dd6bfc..903b0d6 100644
 --- a/arch/mips/include/asm/atomic.h
 +++ b/arch/mips/include/asm/atomic.h
 @@ -21,15 +21,39 @@
@@ -5687,20 +5761,20 @@ index e8eb3d5..2e665d1 100644
   *
   * Atomically reads the value of @v.
   */
--#define atomic_read(v)                (*(volatile int *)&(v)->counter)
+-#define atomic_read(v)                ACCESS_ONCE((v)->counter)
 +static inline int atomic_read(const atomic_t *v)
 +{
-+      return (*(volatile const int *) &v->counter);
++      return ACCESS_ONCE(v->counter);
 +}
 +
 +static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
 +{
-+      return (*(volatile const int *) &v->counter);
++      return ACCESS_ONCE(v->counter);
 +}
  
  /*
   * atomic_set - set atomic variable
-@@ -38,7 +62,15 @@
+@@ -38,47 +62,77 @@
   *
   * Atomically sets the value of @v to @i.
   */
@@ -5709,343 +5783,187 @@ index e8eb3d5..2e665d1 100644
 +{
 +      v->counter = i;
 +}
-+
+-#define ATOMIC_OP(op, c_op, asm_op)                                           \
+-static __inline__ void atomic_##op(int i, atomic_t * v)                               \
 +static inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
 +{
 +      v->counter = i;
 +}
- /*
-  * atomic_add - add integer to atomic variable
-@@ -47,7 +79,67 @@
-  *
-  * Atomically adds @i to @v.
-  */
--static __inline__ void atomic_add(int i, atomic_t * v)
-+static __inline__ void atomic_add(int i, atomic_t *v)
-+{
-+      int temp;
-+
-+      if (kernel_uses_llsc && R10000_LLSC_WAR) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     ll      %0, %1          # atomic_add            \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "2:     add     %0, %2                                  \n"
-+#else
-+              "       addu    %0, %2                                  \n"
-+#endif
-+              "       sc      %0, %1                                  \n"
-+              "       beqzl   %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "3:                                                     \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else if (kernel_uses_llsc) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     ll      %0, %1          # atomic_add            \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Exception on overflow. */
-+              "2:     add     %0, %2                                  \n"
-+#else
-+              "       addu    %0, %2                                  \n"
-+#endif
-+              "       sc      %0, %1                                  \n"
-+              "       beqz    %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "3:                                                     \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else {
-+              unsigned long flags;
 +
-+              raw_local_irq_save(flags);
-+              __asm__ __volatile__(
 +#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "1:     add     %0, %1                                  \n"
-+              "2:                                                     \n"
-+              _ASM_EXTABLE(1b, 2b)
++#define __OVERFLOW_POST                               \
++      "       b       4f              \n"     \
++      "       .set    noreorder       \n"     \
++      "3:     b       5f              \n"     \
++      "       move    %0, %1          \n"     \
++      "       .set    reorder         \n"
++#define __OVERFLOW_EXTABLE    \
++      "3:\n"                  \
++      _ASM_EXTABLE(2b, 3b)
 +#else
-+              "       addu    %0, %1                                  \n"
-+#endif
-+              : "+r" (v->counter) : "Ir" (i));
-+              raw_local_irq_restore(flags);
-+      }
-+}
-+
-+static __inline__ void atomic_add_unchecked(int i, atomic_unchecked_t *v)
- {
-       if (kernel_uses_llsc && R10000_LLSC_WAR) {
-               int temp;
-@@ -90,7 +182,67 @@ static __inline__ void atomic_add(int i, atomic_t * v)
-  *
-  * Atomically subtracts @i from @v.
-  */
--static __inline__ void atomic_sub(int i, atomic_t * v)
-+static __inline__ void atomic_sub(int i, atomic_t *v)
-+{
-+      int temp;
-+
-+      if (kernel_uses_llsc && R10000_LLSC_WAR) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     ll      %0, %1          # atomic64_sub          \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Exception on overflow. */
-+              "2:     sub     %0, %2                                  \n"
-+#else
-+              "       subu    %0, %2                                  \n"
-+#endif
-+              "       sc      %0, %1                                  \n"
-+              "       beqzl   %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "3:                                                     \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else if (kernel_uses_llsc) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     ll      %0, %1          # atomic64_sub          \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Exception on overflow. */
-+              "2:     sub     %0, %2                                  \n"
-+#else
-+              "       subu    %0, %2                                  \n"
-+#endif
-+              "       sc      %0, %1                                  \n"
-+              "       beqz    %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "3:                                                     \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else {
-+              unsigned long flags;
-+
-+              raw_local_irq_save(flags);
-+              __asm__ __volatile__(
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "1:     sub     %0, %1                                  \n"
-+              "2:                                                     \n"
-+              _ASM_EXTABLE(1b, 2b)
-+#else
-+              "       subu    %0, %1                                  \n"
-+#endif
-+              : "+r" (v->counter) : "Ir" (i));
-+              raw_local_irq_restore(flags);
-+      }
-+}
-+
-+static __inline__ void atomic_sub_unchecked(long i, atomic_unchecked_t *v)
- {
-       if (kernel_uses_llsc && R10000_LLSC_WAR) {
-               int temp;
-@@ -129,7 +281,93 @@ static __inline__ void atomic_sub(int i, atomic_t * v)
- /*
-  * Same as above, but return the result value
-  */
--static __inline__ int atomic_add_return(int i, atomic_t * v)
-+static __inline__ int atomic_add_return(int i, atomic_t *v)
-+{
-+      int result;
-+      int temp;
-+
-+      smp_mb__before_llsc();
-+
-+      if (kernel_uses_llsc && R10000_LLSC_WAR) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     ll      %1, %2          # atomic_add_return     \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "2:     add     %0, %1, %3                              \n"
-+#else
-+              "       addu    %0, %1, %3                              \n"
-+#endif
-+              "       sc      %0, %2                                  \n"
-+              "       beqzl   %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "       b       4f                                      \n"
-+              "       .set    noreorder                               \n"
-+              "3:     b       5f                                      \n"
-+              "       move    %0, %1                                  \n"
-+              "       .set    reorder                                 \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "4:     addu    %0, %1, %3                              \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "5:                                                     \n"
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (result), "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else if (kernel_uses_llsc) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     ll      %1, %2  # atomic_add_return             \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "2:     add     %0, %1, %3                              \n"
-+#else
-+              "       addu    %0, %1, %3                              \n"
-+#endif
-+              "       sc      %0, %2                                  \n"
-+              "       bnez    %0, 4f                                  \n"
-+              "       b       1b                                      \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "       .set    noreorder                               \n"
-+              "3:     b       5f                                      \n"
-+              "       move    %0, %1                                  \n"
-+              "       .set    reorder                                 \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "4:     addu    %0, %1, %3                              \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "5:                                                     \n"
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (result), "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else {
-+              unsigned long flags;
-+
-+              raw_local_irq_save(flags);
-+              __asm__ __volatile__(
-+              "       lw      %0, %1                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "1:     add     %0, %2                                  \n"
-+#else
-+              "       addu    %0, %2                                  \n"
-+#endif
-+              "       sw      %0, %1                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Note: Dest reg is not modified on overflow */
-+              "2:                                                     \n"
-+              _ASM_EXTABLE(1b, 2b)
-+#endif
-+              : "=&r" (result), "+m" (v->counter) : "Ir" (i));
-+              raw_local_irq_restore(flags);
-+      }
-+
-+      smp_llsc_mb();
-+
-+      return result;
-+}
-+
-+static __inline__ int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
- {
-       int result;
-@@ -178,7 +416,93 @@ static __inline__ int atomic_add_return(int i, atomic_t * v)
-       return result;
- }
++#define __OVERFLOW_POST
++#define __OVERFLOW_EXTABLE
++#endif
++
++#define __ATOMIC_OP(op, suffix, asm_op, extable)                              \
++static inline void atomic_##op##suffix(int i, atomic##suffix##_t * v)         \
+ {                                                                             \
+       if (kernel_uses_llsc && R10000_LLSC_WAR) {                              \
+               int temp;                                                       \
+                                                                               \
+               __asm__ __volatile__(                                           \
+-              "       .set    arch=r4000                              \n"     \
+-              "1:     ll      %0, %1          # atomic_" #op "        \n"     \
+-              "       " #asm_op " %0, %2                              \n"     \
++              "       .set    mips3                                   \n"     \
++              "1:     ll      %0, %1          # atomic_" #op #suffix "\n"     \
++              "2:     " #asm_op " %0, %2                              \n"     \
+               "       sc      %0, %1                                  \n"     \
+               "       beqzl   %0, 1b                                  \n"     \
++              extable                                                         \
+               "       .set    mips0                                   \n"     \
+               : "=&r" (temp), "+m" (v->counter)                               \
+               : "Ir" (i));                                                    \
+       } else if (kernel_uses_llsc) {                                          \
+               int temp;                                                       \
+                                                                               \
+-              do {                                                            \
+-                      __asm__ __volatile__(                                   \
+-                      "       .set    arch=r4000                      \n"     \
+-                      "       ll      %0, %1          # atomic_" #op "\n"     \
+-                      "       " #asm_op " %0, %2                      \n"     \
+-                      "       sc      %0, %1                          \n"     \
+-                      "       .set    mips0                           \n"     \
+-                      : "=&r" (temp), "+m" (v->counter)                       \
+-                      : "Ir" (i));                                            \
+-              } while (unlikely(!temp));                                      \
++              __asm__ __volatile__(                                           \
++              "       .set    mips3                                   \n"     \
++              "       ll      %0, %1          # atomic_" #op #suffix "\n"     \
++              "2:     " #asm_op " %0, %2                              \n"     \
++              "       sc      %0, %1                                  \n"     \
++              "       beqz    %0, 1b                                  \n"     \
++                      extable                                                 \
++              "       .set    mips0                                   \n"     \
++              : "=&r" (temp), "+m" (v->counter)                               \
++              : "Ir" (i));                                                    \
+       } else {                                                                \
+               unsigned long flags;                                            \
+                                                                               \
+               raw_local_irq_save(flags);                                      \
+-              v->counter c_op i;                                              \
++              __asm__ __volatile__(                                           \
++              "2:     " #asm_op " %0, %1                              \n"     \
++              extable                                                         \
++              : "+r" (v->counter) : "Ir" (i));                                \
+               raw_local_irq_restore(flags);                                   \
+       }                                                                       \
+ }                                                                             \
+-#define ATOMIC_OP_RETURN(op, c_op, asm_op)                                    \
+-static __inline__ int atomic_##op##_return(int i, atomic_t * v)                       \
++#define ATOMIC_OP(op, asm_op) __ATOMIC_OP(op, , asm_op##u)                    \
++                            __ATOMIC_OP(op, _unchecked, asm_op)
++
++#define __ATOMIC_OP_RETURN(op, suffix, asm_op, post_op, extable)              \
++static inline int atomic_##op##_return##suffix(int i, atomic##suffix##_t * v) \
+ {                                                                             \
+       int result;                                                             \
+                                                                               \
+@@ -88,37 +142,47 @@ static __inline__ int atomic_##op##_return(int i, atomic_t * v)                   \
+               int temp;                                                       \
+                                                                               \
+               __asm__ __volatile__(                                           \
+-              "       .set    arch=r4000                              \n"     \
+-              "1:     ll      %1, %2          # atomic_" #op "_return \n"     \
+-              "       " #asm_op " %0, %1, %3                          \n"     \
++              "       .set    mips3                                   \n"     \
++              "1:     ll      %1, %2  # atomic_" #op "_return" #suffix "\n"   \
++              "2:     " #asm_op " %0, %1, %3                          \n"     \
+               "       sc      %0, %2                                  \n"     \
+               "       beqzl   %0, 1b                                  \n"     \
+-              "       " #asm_op " %0, %1, %3                          \n"     \
++              post_op                                                         \
++              extable                                                         \
++              "4:     " #asm_op " %0, %1, %3                          \n"     \
++              "5:                                                     \n"     \
+               "       .set    mips0                                   \n"     \
+               : "=&r" (result), "=&r" (temp), "+m" (v->counter)               \
+               : "Ir" (i));                                                    \
+       } else if (kernel_uses_llsc) {                                          \
+               int temp;                                                       \
+                                                                               \
+-              do {                                                            \
+-                      __asm__ __volatile__(                                   \
+-                      "       .set    arch=r4000                      \n"     \
+-                      "       ll      %1, %2  # atomic_" #op "_return \n"     \
+-                      "       " #asm_op " %0, %1, %3                  \n"     \
+-                      "       sc      %0, %2                          \n"     \
+-                      "       .set    mips0                           \n"     \
+-                      : "=&r" (result), "=&r" (temp), "+m" (v->counter)       \
+-                      : "Ir" (i));                                            \
+-              } while (unlikely(!result));                                    \
++              __asm__ __volatile__(                                           \
++              "       .set    mips3                                   \n"     \
++              "1:     ll      %1, %2  # atomic_" #op "_return" #suffix "\n"   \
++              "2:     " #asm_op " %0, %1, %3                          \n"     \
++              "       sc      %0, %2                                  \n"     \
++              "       beqz    %0, 1b                                  \n"     \
++              post_op                                                         \
++              extable                                                         \
++              "4:     " #asm_op " %0, %1, %3                          \n"     \
++              "5:                                                     \n"     \
++              "       .set    mips0                                   \n"     \
++              : "=&r" (result), "=&r" (temp), "+m" (v->counter)               \
++              : "Ir" (i));                                                    \
+                                                                               \
+               result = temp; result c_op i;                                   \
+       } else {                                                                \
+               unsigned long flags;                                            \
+                                                                               \
+               raw_local_irq_save(flags);                                      \
+-              result = v->counter;                                            \
+-              result c_op i;                                                  \
+-              v->counter = result;                                            \
++              __asm__ __volatile__(                                           \
++              "       lw      %0, %1                                  \n"     \
++              "2:     " #asm_op " %0, %1, %2                          \n"     \
++              "       sw      %0, %1                                  \n"     \
++              "3:                                                     \n"     \
++              extable                                                         \
++              : "=&r" (result), "+m" (v->counter) : "Ir" (i));                \
+               raw_local_irq_restore(flags);                                   \
+       }                                                                       \
+                                                                               \
+@@ -127,16 +191,21 @@ static __inline__ int atomic_##op##_return(int i, atomic_t * v)                  \
+       return result;                                                          \
+ }
+-#define ATOMIC_OPS(op, c_op, asm_op)                                          \
+-      ATOMIC_OP(op, c_op, asm_op)                                             \
+-      ATOMIC_OP_RETURN(op, c_op, asm_op)
++#define ATOMIC_OP_RETURN(op, asm_op) __ATOMIC_OP_RETURN(op, , asm_op##u, , __OVERFLOW_EXTABLE)        \
++                                   __ATOMIC_OP_RETURN(op, _unchecked, asm_op, __OVERFLOW_POST, __OVERFLOW_EXTABLE)
+-ATOMIC_OPS(add, +=, addu)
+-ATOMIC_OPS(sub, -=, subu)
++#define ATOMIC_OPS(op, asm_op)                                                        \
++      ATOMIC_OP(op, asm_op)                                                   \
++      ATOMIC_OP_RETURN(op, asm_op)
++
++ATOMIC_OPS(add, add)
++ATOMIC_OPS(sub, sub)
+ #undef ATOMIC_OPS
+ #undef ATOMIC_OP_RETURN
++#undef __ATOMIC_OP_RETURN
+ #undef ATOMIC_OP
++#undef __ATOMIC_OP
  
--static __inline__ int atomic_sub_return(int i, atomic_t * v)
-+static __inline__ int atomic_sub_return(int i, atomic_t *v)
-+{
-+      int result;
-+      int temp;
-+
-+      smp_mb__before_llsc();
-+
-+      if (kernel_uses_llsc && R10000_LLSC_WAR) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     ll      %1, %2          # atomic_sub_return     \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "2:     sub     %0, %1, %3                              \n"
-+#else
-+              "       subu    %0, %1, %3                              \n"
-+#endif
-+              "       sc      %0, %2                                  \n"
-+              "       beqzl   %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "       b       4f                                      \n"
-+              "       .set    noreorder                               \n"
-+              "3:     b       5f                                      \n"
-+              "       move    %0, %1                                  \n"
-+              "       .set    reorder                                 \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "4:     subu    %0, %1, %3                              \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "5:                                                     \n"
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (result), "=&r" (temp), "=m" (v->counter)
-+              : "Ir" (i), "m" (v->counter)
-+              : "memory");
-+      } else if (kernel_uses_llsc) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     ll      %1, %2  # atomic_sub_return             \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "2:     sub     %0, %1, %3                              \n"
-+#else
-+              "       subu    %0, %1, %3                              \n"
-+#endif
-+              "       sc      %0, %2                                  \n"
-+              "       bnez    %0, 4f                                  \n"
-+              "       b       1b                                      \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "       .set    noreorder                               \n"
-+              "3:     b       5f                                      \n"
-+              "       move    %0, %1                                  \n"
-+              "       .set    reorder                                 \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "4:     subu    %0, %1, %3                              \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "5:                                                     \n"
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (result), "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else {
-+              unsigned long flags;
-+
-+              raw_local_irq_save(flags);
-+              __asm__ __volatile__(
-+              "       lw      %0, %1                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "1:     sub     %0, %2                                  \n"
-+#else
-+              "       subu    %0, %2                                  \n"
-+#endif
-+              "       sw      %0, %1                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Note: Dest reg is not modified on overflow */
-+              "2:                                                     \n"
-+              _ASM_EXTABLE(1b, 2b)
-+#endif
-+              : "=&r" (result), "+m" (v->counter) : "Ir" (i));
-+              raw_local_irq_restore(flags);
-+      }
-+
-+      smp_llsc_mb();
-+
-+      return result;
-+}
-+static __inline__ int atomic_sub_return_unchecked(int i, atomic_unchecked_t *v)
- {
-       int result;
-@@ -238,7 +562,7 @@ static __inline__ int atomic_sub_return(int i, atomic_t * v)
+ /*
+  * atomic_sub_if_positive - conditionally subtract integer from atomic variable
+@@ -146,7 +215,7 @@ ATOMIC_OPS(sub, -=, subu)
   * Atomically test @v and subtract @i if @v is greater or equal than @i.
   * The function returns the old value of @v minus @i.
   */
@@ -6054,7 +5972,7 @@ index e8eb3d5..2e665d1 100644
  {
        int result;
  
-@@ -295,8 +619,26 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
+@@ -203,8 +272,26 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
        return result;
  }
  
@@ -6083,7 +6001,7 @@ index e8eb3d5..2e665d1 100644
  
  /**
   * __atomic_add_unless - add unless the number is a given value
-@@ -324,6 +666,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -232,6 +319,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
  
  #define atomic_dec_return(v) atomic_sub_return(1, (v))
  #define atomic_inc_return(v) atomic_add_return(1, (v))
@@ -6094,7 +6012,7 @@ index e8eb3d5..2e665d1 100644
  
  /*
   * atomic_sub_and_test - subtract value from variable and test result
-@@ -345,6 +691,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -253,6 +344,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
   * other cases.
   */
  #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
@@ -6105,7 +6023,7 @@ index e8eb3d5..2e665d1 100644
  
  /*
   * atomic_dec_and_test - decrement by 1 and test
-@@ -369,6 +719,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -277,6 +372,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
   * Atomically increments @v by 1.
   */
  #define atomic_inc(v) atomic_add(1, (v))
@@ -6116,7 +6034,7 @@ index e8eb3d5..2e665d1 100644
  
  /*
   * atomic_dec - decrement and test
-@@ -377,6 +731,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -285,6 +384,10 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
   * Atomically decrements @v by 1.
   */
  #define atomic_dec(v) atomic_sub(1, (v))
@@ -6127,19 +6045,19 @@ index e8eb3d5..2e665d1 100644
  
  /*
   * atomic_add_negative - add and test if negative
-@@ -398,14 +756,30 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -306,54 +409,77 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
   * @v: pointer of type atomic64_t
   *
   */
--#define atomic64_read(v)      (*(volatile long *)&(v)->counter)
+-#define atomic64_read(v)      ACCESS_ONCE((v)->counter)
 +static inline long atomic64_read(const atomic64_t *v)
 +{
-+      return (*(volatile const long *) &v->counter);
++      return ACCESS_ONCE(v->counter);
 +}
 +
 +static inline long atomic64_read_unchecked(const atomic64_unchecked_t *v)
 +{
-+      return (*(volatile const long *) &v->counter);
++      return ACCESS_ONCE(v->counter);
 +}
  
  /*
@@ -6152,346 +6070,175 @@ index e8eb3d5..2e665d1 100644
 +{
 +      v->counter = i;
 +}
-+
+-#define ATOMIC64_OP(op, c_op, asm_op)                                         \
+-static __inline__ void atomic64_##op(long i, atomic64_t * v)                  \
 +static inline void atomic64_set_unchecked(atomic64_unchecked_t *v, long i)
 +{
 +      v->counter = i;
-+}
- /*
-  * atomic64_add - add integer to atomic variable
-@@ -414,7 +788,66 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
-  *
-  * Atomically adds @i to @v.
-  */
--static __inline__ void atomic64_add(long i, atomic64_t * v)
-+static __inline__ void atomic64_add(long i, atomic64_t *v)
-+{
-+      long temp;
-+
-+      if (kernel_uses_llsc && R10000_LLSC_WAR) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     lld     %0, %1          # atomic64_add          \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "2:     dadd    %0, %2                                  \n"
-+#else
-+              "       daddu   %0, %2                                  \n"
-+#endif
-+              "       scd     %0, %1                                  \n"
-+              "       beqzl   %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "3:                                                     \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else if (kernel_uses_llsc) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     lld     %0, %1          # atomic64_add          \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "2:     dadd    %0, %2                                  \n"
-+#else
-+              "       daddu   %0, %2                                  \n"
-+#endif
-+              "       scd     %0, %1                                  \n"
-+              "       beqz    %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "3:                                                     \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else {
-+              unsigned long flags;
-+
-+              raw_local_irq_save(flags);
-+              __asm__ __volatile__(
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "1:     dadd    %0, %1                                  \n"
-+              "2:                                                     \n"
-+              _ASM_EXTABLE(1b, 2b)
-+#else
-+              "       daddu   %0, %1                                  \n"
-+#endif
-+              : "+r" (v->counter) : "Ir" (i));
-+              raw_local_irq_restore(flags);
-+      }
-+}
-+static __inline__ void atomic64_add_unchecked(long i, atomic64_unchecked_t *v)
- {
-       if (kernel_uses_llsc && R10000_LLSC_WAR) {
-               long temp;
-@@ -457,7 +890,67 @@ static __inline__ void atomic64_add(long i, atomic64_t * v)
-  *
-  * Atomically subtracts @i from @v.
-  */
--static __inline__ void atomic64_sub(long i, atomic64_t * v)
-+static __inline__ void atomic64_sub(long i, atomic64_t *v)
-+{
-+      long temp;
-+
-+      if (kernel_uses_llsc && R10000_LLSC_WAR) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     lld     %0, %1          # atomic64_sub          \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Exception on overflow. */
-+              "2:     dsub    %0, %2                                  \n"
-+#else
-+              "       dsubu   %0, %2                                  \n"
-+#endif
-+              "       scd     %0, %1                                  \n"
-+              "       beqzl   %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "3:                                                     \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else if (kernel_uses_llsc) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     lld     %0, %1          # atomic64_sub          \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Exception on overflow. */
-+              "2:     dsub    %0, %2                                  \n"
-+#else
-+              "       dsubu   %0, %2                                  \n"
-+#endif
-+              "       scd     %0, %1                                  \n"
-+              "       beqz    %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "3:                                                     \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else {
-+              unsigned long flags;
-+
-+              raw_local_irq_save(flags);
-+              __asm__ __volatile__(
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "1:     dsub    %0, %1                                  \n"
-+              "2:                                                     \n"
-+              _ASM_EXTABLE(1b, 2b)
-+#else
-+              "       dsubu   %0, %1                                  \n"
-+#endif
-+              : "+r" (v->counter) : "Ir" (i));
-+              raw_local_irq_restore(flags);
-+      }
-+}
-+
-+static __inline__ void atomic64_sub_unchecked(long i, atomic64_unchecked_t *v)
- {
-       if (kernel_uses_llsc && R10000_LLSC_WAR) {
-               long temp;
-@@ -496,7 +989,93 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v)
- /*
-  * Same as above, but return the result value
-  */
--static __inline__ long atomic64_add_return(long i, atomic64_t * v)
-+static __inline__ long atomic64_add_return(long i, atomic64_t *v)
-+{
-+      long result;
-+      long temp;
-+
-+      smp_mb__before_llsc();
-+
-+      if (kernel_uses_llsc && R10000_LLSC_WAR) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     lld     %1, %2          # atomic64_add_return   \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "2:     dadd    %0, %1, %3                              \n"
-+#else
-+              "       daddu   %0, %1, %3                              \n"
-+#endif
-+              "       scd     %0, %2                                  \n"
-+              "       beqzl   %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "       b       4f                                      \n"
-+              "       .set    noreorder                               \n"
-+              "3:     b       5f                                      \n"
-+              "       move    %0, %1                                  \n"
-+              "       .set    reorder                                 \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "4:     daddu   %0, %1, %3                              \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "5:                                                     \n"
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (result), "=&r" (temp), "+m" (v->counter)
-+              : "Ir" (i));
-+      } else if (kernel_uses_llsc) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     lld     %1, %2  # atomic64_add_return           \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "2:     dadd    %0, %1, %3                              \n"
-+#else
-+              "       daddu   %0, %1, %3                              \n"
-+#endif
-+              "       scd     %0, %2                                  \n"
-+              "       bnez    %0, 4f                                  \n"
-+              "       b       1b                                      \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "       .set    noreorder                               \n"
-+              "3:     b       5f                                      \n"
-+              "       move    %0, %1                                  \n"
-+              "       .set    reorder                                 \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "4:     daddu   %0, %1, %3                              \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "5:                                                     \n"
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (result), "=&r" (temp), "=m" (v->counter)
-+              : "Ir" (i), "m" (v->counter)
-+              : "memory");
-+      } else {
-+              unsigned long flags;
-+
-+              raw_local_irq_save(flags);
-+              __asm__ __volatile__(
-+              "       ld      %0, %1                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "1:     dadd    %0, %2                                  \n"
-+#else
-+              "       daddu   %0, %2                                  \n"
-+#endif
-+              "       sd      %0, %1                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Note: Dest reg is not modified on overflow */
-+              "2:                                                     \n"
-+              _ASM_EXTABLE(1b, 2b)
-+#endif
-+              : "=&r" (result), "+m" (v->counter) : "Ir" (i));
-+              raw_local_irq_restore(flags);
-+      }
-+
-+      smp_llsc_mb();
-+
-+      return result;
-+}
-+static __inline__ long atomic64_add_return_unchecked(long i, atomic64_unchecked_t *v)
- {
-       long result;
-@@ -546,7 +1125,97 @@ static __inline__ long atomic64_add_return(long i, atomic64_t * v)
-       return result;
- }
--static __inline__ long atomic64_sub_return(long i, atomic64_t * v)
-+static __inline__ long atomic64_sub_return(long i, atomic64_t *v)
-+{
-+      long result;
-+      long temp;
-+
-+      smp_mb__before_llsc();
-+
-+      if (kernel_uses_llsc && R10000_LLSC_WAR) {
-+              long temp;
-+
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     lld     %1, %2          # atomic64_sub_return   \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "2:     dsub    %0, %1, %3                              \n"
-+#else
-+              "       dsubu   %0, %1, %3                              \n"
-+#endif
-+              "       scd     %0, %2                                  \n"
-+              "       beqzl   %0, 1b                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "       b       4f                                      \n"
-+              "       .set    noreorder                               \n"
-+              "3:     b       5f                                      \n"
-+              "       move    %0, %1                                  \n"
-+              "       .set    reorder                                 \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "4:     dsubu   %0, %1, %3                              \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "5:                                                     \n"
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (result), "=&r" (temp), "=m" (v->counter)
-+              : "Ir" (i), "m" (v->counter)
-+              : "memory");
-+      } else if (kernel_uses_llsc) {
-+              __asm__ __volatile__(
-+              "       .set    mips3                                   \n"
-+              "1:     lld     %1, %2  # atomic64_sub_return           \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "2:     dsub    %0, %1, %3                              \n"
-+#else
-+              "       dsubu   %0, %1, %3                              \n"
-+#endif
-+              "       scd     %0, %2                                  \n"
-+              "       bnez    %0, 4f                                  \n"
-+              "       b       1b                                      \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "       .set    noreorder                               \n"
-+              "3:     b       5f                                      \n"
-+              "       move    %0, %1                                  \n"
-+              "       .set    reorder                                 \n"
-+              _ASM_EXTABLE(2b, 3b)
-+#endif
-+              "4:     dsubu   %0, %1, %3                              \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              "5:                                                     \n"
-+#endif
-+              "       .set    mips0                                   \n"
-+              : "=&r" (result), "=&r" (temp), "=m" (v->counter)
-+              : "Ir" (i), "m" (v->counter)
-+              : "memory");
-+      } else {
-+              unsigned long flags;
-+
-+              raw_local_irq_save(flags);
-+              __asm__ __volatile__(
-+              "       ld      %0, %1                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+                      /* Exception on overflow. */
-+              "1:     dsub    %0, %2                                  \n"
-+#else
-+              "       dsubu   %0, %2                                  \n"
-+#endif
-+              "       sd      %0, %1                                  \n"
-+#ifdef CONFIG_PAX_REFCOUNT
-+              /* Note: Dest reg is not modified on overflow */
-+              "2:                                                     \n"
-+              _ASM_EXTABLE(1b, 2b)
-+#endif
-+              : "=&r" (result), "+m" (v->counter) : "Ir" (i));
-+              raw_local_irq_restore(flags);
-+      }
-+
-+      smp_llsc_mb();
-+
-+      return result;
 +}
 +
-+static __inline__ long atomic64_sub_return_unchecked(long i, atomic64_unchecked_t *v)
- {
-       long result;
++#define __ATOMIC64_OP(op, suffix, asm_op, extable)                            \
++static inline void atomic64_##op##suffix(long i, atomic64##suffix##_t * v)    \
+ {                                                                             \
+       if (kernel_uses_llsc && R10000_LLSC_WAR) {                              \
+               long temp;                                                      \
+                                                                               \
+               __asm__ __volatile__(                                           \
+-              "       .set    arch=r4000                              \n"     \
+-              "1:     lld     %0, %1          # atomic64_" #op "      \n"     \
+-              "       " #asm_op " %0, %2                              \n"     \
++              "       .set    mips3                                   \n"     \
++              "1:     lld     %0, %1          # atomic64_" #op #suffix "\n"   \
++              "2:     " #asm_op " %0, %2                              \n"     \
+               "       scd     %0, %1                                  \n"     \
+               "       beqzl   %0, 1b                                  \n"     \
++              extable                                                         \
+               "       .set    mips0                                   \n"     \
+               : "=&r" (temp), "+m" (v->counter)                               \
+               : "Ir" (i));                                                    \
+       } else if (kernel_uses_llsc) {                                          \
+               long temp;                                                      \
+                                                                               \
+-              do {                                                            \
+-                      __asm__ __volatile__(                                   \
+-                      "       .set    arch=r4000                      \n"     \
+-                      "       lld     %0, %1          # atomic64_" #op "\n"   \
+-                      "       " #asm_op " %0, %2                      \n"     \
+-                      "       scd     %0, %1                          \n"     \
+-                      "       .set    mips0                           \n"     \
+-                      : "=&r" (temp), "+m" (v->counter)                       \
+-                      : "Ir" (i));                                            \
+-              } while (unlikely(!temp));                                      \
++              __asm__ __volatile__(                                           \
++              "       .set    mips3                                   \n"     \
++              "       lld     %0, %1          # atomic64_" #op #suffix "\n"   \
++              "2:     " #asm_op " %0, %2                              \n"     \
++              "       scd     %0, %1                                  \n"     \
++              "       beqz    %0, 1b                                  \n"     \
++                      extable                                                 \
++              "       .set    mips0                                   \n"     \
++              : "=&r" (temp), "+m" (v->counter)                               \
++              : "Ir" (i));                                                    \
+       } else {                                                                \
+               unsigned long flags;                                            \
+                                                                               \
+               raw_local_irq_save(flags);                                      \
+-              v->counter c_op i;                                              \
++              __asm__ __volatile__(                                           \
++              "2:     " #asm_op " %0, %1                              \n"     \
++              extable                                                         \
++              : "+r" (v->counter) : "Ir" (i));                                \
+               raw_local_irq_restore(flags);                                   \
+       }                                                                       \
+ }                                                                             \
+-#define ATOMIC64_OP_RETURN(op, c_op, asm_op)                                  \
+-static __inline__ long atomic64_##op##_return(long i, atomic64_t * v)         \
++#define ATOMIC64_OP(op, asm_op) __ATOMIC64_OP(op, , asm_op##u)                        \
++                              __ATOMIC64_OP(op, _unchecked, asm_op)
++
++#define __ATOMIC64_OP_RETURN(op, suffix, asm_op, post_op, extable)            \
++static inline long atomic64_##op##_return##suffix(long i, atomic64##suffix##_t * v)\
+ {                                                                             \
+       long result;                                                            \
+                                                                               \
+@@ -363,38 +489,48 @@ static __inline__ long atomic64_##op##_return(long i, atomic64_t * v)            \
+               long temp;                                                      \
+                                                                               \
+               __asm__ __volatile__(                                           \
+-              "       .set    arch=r4000                              \n"     \
++              "       .set    mips3                                   \n"     \
+               "1:     lld     %1, %2          # atomic64_" #op "_return\n"    \
+-              "       " #asm_op " %0, %1, %3                          \n"     \
++              "2:     " #asm_op " %0, %1, %3                          \n"     \
+               "       scd     %0, %2                                  \n"     \
+               "       beqzl   %0, 1b                                  \n"     \
+-              "       " #asm_op " %0, %1, %3                          \n"     \
++              post_op                                                         \
++              extable                                                         \
++              "4:     " #asm_op " %0, %1, %3                          \n"     \
++              "5:                                                     \n"     \
+               "       .set    mips0                                   \n"     \
+               : "=&r" (result), "=&r" (temp), "+m" (v->counter)               \
+               : "Ir" (i));                                                    \
+       } else if (kernel_uses_llsc) {                                          \
+               long temp;                                                      \
+                                                                               \
+-              do {                                                            \
+-                      __asm__ __volatile__(                                   \
+-                      "       .set    arch=r4000                      \n"     \
+-                      "       lld     %1, %2  # atomic64_" #op "_return\n"    \
+-                      "       " #asm_op " %0, %1, %3                  \n"     \
+-                      "       scd     %0, %2                          \n"     \
+-                      "       .set    mips0                           \n"     \
+-                      : "=&r" (result), "=&r" (temp), "=m" (v->counter)       \
+-                      : "Ir" (i), "m" (v->counter)                            \
+-                      : "memory");                                            \
+-              } while (unlikely(!result));                                    \
++              __asm__ __volatile__(                                           \
++              "       .set    mips3                                   \n"     \
++              "1:     lld     %1, %2  # atomic64_" #op "_return" #suffix "\n" \
++              "2:     " #asm_op " %0, %1, %3                          \n"     \
++              "       scd     %0, %2                                  \n"     \
++              "       beqz    %0, 1b                                  \n"     \
++              post_op                                                         \
++              extable                                                         \
++              "4:     " #asm_op " %0, %1, %3                          \n"     \
++              "5:                                                     \n"     \
++              "       .set    mips0                                   \n"     \
++              : "=&r" (result), "=&r" (temp), "=m" (v->counter)               \
++              : "Ir" (i), "m" (v->counter)                                    \
++              : "memory");                                                    \
+                                                                               \
+               result = temp; result c_op i;                                   \
+       } else {                                                                \
+               unsigned long flags;                                            \
+                                                                               \
+               raw_local_irq_save(flags);                                      \
+-              result = v->counter;                                            \
+-              result c_op i;                                                  \
+-              v->counter = result;                                            \
++              __asm__ __volatile__(                                           \
++              "       ld      %0, %1                                  \n"     \
++              "2:     " #asm_op " %0, %1, %2                          \n"     \
++              "       sd      %0, %1                                  \n"     \
++              "3:                                                     \n"     \
++              extable                                                         \
++              : "=&r" (result), "+m" (v->counter) : "Ir" (i));                \
+               raw_local_irq_restore(flags);                                   \
+       }                                                                       \
+                                                                               \
+@@ -403,16 +539,23 @@ static __inline__ long atomic64_##op##_return(long i, atomic64_t * v)            \
+       return result;                                                          \
+ }
+-#define ATOMIC64_OPS(op, c_op, asm_op)                                                \
+-      ATOMIC64_OP(op, c_op, asm_op)                                           \
+-      ATOMIC64_OP_RETURN(op, c_op, asm_op)
++#define ATOMIC64_OP_RETURN(op, asm_op) __ATOMIC64_OP_RETURN(op, , asm_op##u, , __OVERFLOW_EXTABLE)    \
++                                     __ATOMIC64_OP_RETURN(op, _unchecked, asm_op, __OVERFLOW_POST, __OVERFLOW_EXTABLE)
+-ATOMIC64_OPS(add, +=, daddu)
+-ATOMIC64_OPS(sub, -=, dsubu)
++#define ATOMIC64_OPS(op, asm_op)                                              \
++      ATOMIC64_OP(op, asm_op)                                                 \
++      ATOMIC64_OP_RETURN(op, asm_op)
++
++ATOMIC64_OPS(add, dadd)
++ATOMIC64_OPS(sub, dsub)
+ #undef ATOMIC64_OPS
+ #undef ATOMIC64_OP_RETURN
++#undef __ATOMIC64_OP_RETURN
+ #undef ATOMIC64_OP
++#undef __ATOMIC64_OP
++#undef __OVERFLOW_EXTABLE
++#undef __OVERFLOW_POST
  
-@@ -605,7 +1274,7 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v)
+ /*
+  * atomic64_sub_if_positive - conditionally subtract integer from atomic variable
+@@ -422,7 +565,7 @@ ATOMIC64_OPS(sub, -=, dsubu)
   * Atomically test @v and subtract @i if @v is greater or equal than @i.
   * The function returns the old value of @v minus @i.
   */
@@ -6500,7 +6247,7 @@ index e8eb3d5..2e665d1 100644
  {
        long result;
  
-@@ -662,9 +1331,26 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
+@@ -479,9 +622,26 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
        return result;
  }
  
@@ -6530,7 +6277,7 @@ index e8eb3d5..2e665d1 100644
  
  /**
   * atomic64_add_unless - add unless the number is a given value
-@@ -694,6 +1380,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+@@ -511,6 +671,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
  
  #define atomic64_dec_return(v) atomic64_sub_return(1, (v))
  #define atomic64_inc_return(v) atomic64_add_return(1, (v))
@@ -6538,7 +6285,7 @@ index e8eb3d5..2e665d1 100644
  
  /*
   * atomic64_sub_and_test - subtract value from variable and test result
-@@ -715,6 +1402,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+@@ -532,6 +693,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
   * other cases.
   */
  #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
@@ -6546,7 +6293,7 @@ index e8eb3d5..2e665d1 100644
  
  /*
   * atomic64_dec_and_test - decrement by 1 and test
-@@ -739,6 +1427,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+@@ -556,6 +718,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
   * Atomically increments @v by 1.
   */
  #define atomic64_inc(v) atomic64_add(1, (v))
@@ -6554,7 +6301,7 @@ index e8eb3d5..2e665d1 100644
  
  /*
   * atomic64_dec - decrement and test
-@@ -747,6 +1436,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+@@ -564,6 +727,7 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
   * Atomically decrements @v by 1.
   */
  #define atomic64_dec(v) atomic64_sub(1, (v))
@@ -6563,7 +6310,7 @@ index e8eb3d5..2e665d1 100644
  /*
   * atomic64_add_negative - add and test if negative
 diff --git a/arch/mips/include/asm/barrier.h b/arch/mips/include/asm/barrier.h
-index e1aa4e4..670b68b 100644
+index d0101dd..266982c 100644
 --- a/arch/mips/include/asm/barrier.h
 +++ b/arch/mips/include/asm/barrier.h
 @@ -184,7 +184,7 @@
@@ -6593,10 +6340,10 @@ index b4db69f..8f3b093 100644
  #define SMP_CACHE_SHIFT               L1_CACHE_SHIFT
  #define SMP_CACHE_BYTES               L1_CACHE_BYTES
 diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
-index d414405..6bb4ba2 100644
+index 1d38fe0..9beabc9 100644
 --- a/arch/mips/include/asm/elf.h
 +++ b/arch/mips/include/asm/elf.h
-@@ -398,13 +398,16 @@ extern const char *__elf_platform;
+@@ -381,13 +381,16 @@ extern const char *__elf_platform;
  #define ELF_ET_DYN_BASE               (TASK_SIZE / 3 * 2)
  #endif
  
@@ -6734,7 +6481,7 @@ index 46dfc3c..a16b13a 100644
  
  /**
 diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h
-index 5699ec3..95def83 100644
+index 3be8180..c4798d5 100644
 --- a/arch/mips/include/asm/page.h
 +++ b/arch/mips/include/asm/page.h
 @@ -120,7 +120,7 @@ extern void copy_user_highpage(struct page *to, struct page *from,
@@ -6763,7 +6510,7 @@ index b336037..5b874cc 100644
  
  /*
 diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h
-index 008324d..f67c239 100644
+index d6d1928..ce4f822 100644
 --- a/arch/mips/include/asm/pgtable.h
 +++ b/arch/mips/include/asm/pgtable.h
 @@ -20,6 +20,9 @@
@@ -6776,20 +6523,8 @@ index 008324d..f67c239 100644
  struct mm_struct;
  struct vm_area_struct;
  
-diff --git a/arch/mips/include/asm/smtc_proc.h b/arch/mips/include/asm/smtc_proc.h
-index 25da651..ae2a259 100644
---- a/arch/mips/include/asm/smtc_proc.h
-+++ b/arch/mips/include/asm/smtc_proc.h
-@@ -18,6 +18,6 @@ extern struct smtc_cpu_proc smtc_cpu_stats[NR_CPUS];
- /* Count of number of recoveries of "stolen" FPU access rights on 34K */
--extern atomic_t smtc_fpu_recoveries;
-+extern atomic_unchecked_t smtc_fpu_recoveries;
- #endif /* __ASM_SMTC_PROC_H */
 diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
-index d2d961d..a674df0 100644
+index 7de8658..c109224 100644
 --- a/arch/mips/include/asm/thread_info.h
 +++ b/arch/mips/include/asm/thread_info.h
 @@ -105,6 +105,9 @@ static inline struct thread_info *current_thread_info(void)
@@ -6831,7 +6566,7 @@ index d2d961d..a674df0 100644
  /*
   * We stash processor id into a COP0 register to retrieve it fast
 diff --git a/arch/mips/include/asm/uaccess.h b/arch/mips/include/asm/uaccess.h
-index a109510..94ee3f6 100644
+index 22a5624..7c96295 100644
 --- a/arch/mips/include/asm/uaccess.h
 +++ b/arch/mips/include/asm/uaccess.h
 @@ -130,6 +130,7 @@ extern u64 __ua_limit;
@@ -6861,7 +6596,7 @@ index 1188e00..41cf144 100644
  #include <linux/module.h>
  #include <linux/elfcore.h>
 diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c
-index 7faf5f2..f3d3cf4 100644
+index 9287678..f870e47 100644
 --- a/arch/mips/kernel/binfmt_elfo32.c
 +++ b/arch/mips/kernel/binfmt_elfo32.c
 @@ -70,6 +70,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
@@ -6877,12 +6612,12 @@ index 7faf5f2..f3d3cf4 100644
 +
  #include <asm/processor.h>
  
- /*
+ #include <linux/module.h>
 diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c
-index 2b91fe8..fe4f6b4 100644
+index 50b3648..c2f3cec 100644
 --- a/arch/mips/kernel/i8259.c
 +++ b/arch/mips/kernel/i8259.c
-@@ -205,7 +205,7 @@ spurious_8259A_irq:
+@@ -201,7 +201,7 @@ spurious_8259A_irq:
                        printk(KERN_DEBUG "spurious 8259A interrupt: IRQ%d.\n", irq);
                        spurious_irq_mask |= irqmask;
                }
@@ -6905,10 +6640,10 @@ index 44a1f79..2bd6aa3 100644
  
  void __init gt641xx_irq_init(void)
 diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
-index d1fea7a..2e591b0 100644
+index d2bfbc2..a8eacd2 100644
 --- a/arch/mips/kernel/irq.c
 +++ b/arch/mips/kernel/irq.c
-@@ -77,17 +77,17 @@ void ack_bad_irq(unsigned int irq)
+@@ -76,17 +76,17 @@ void ack_bad_irq(unsigned int irq)
        printk("unexpected IRQ # %d\n", irq);
  }
  
@@ -6929,7 +6664,7 @@ index d1fea7a..2e591b0 100644
  }
  
  void __init init_IRQ(void)
-@@ -110,7 +110,10 @@ void __init init_IRQ(void)
+@@ -109,7 +109,10 @@ void __init init_IRQ(void)
  #endif
  }
  
@@ -6940,7 +6675,7 @@ index d1fea7a..2e591b0 100644
  static inline void check_stack_overflow(void)
  {
        unsigned long sp;
-@@ -126,6 +129,7 @@ static inline void check_stack_overflow(void)
+@@ -125,6 +128,7 @@ static inline void check_stack_overflow(void)
                printk("do_IRQ: stack overflow: %ld\n",
                       sp - sizeof(struct thread_info));
                dump_stack();
@@ -6948,11 +6683,24 @@ index d1fea7a..2e591b0 100644
        }
  }
  #else
+diff --git a/arch/mips/kernel/pm-cps.c b/arch/mips/kernel/pm-cps.c
+index 0614717..002fa43 100644
+--- a/arch/mips/kernel/pm-cps.c
++++ b/arch/mips/kernel/pm-cps.c
+@@ -172,7 +172,7 @@ int cps_pm_enter_state(enum cps_pm_state state)
+       nc_core_ready_count = nc_addr;
+       /* Ensure ready_count is zero-initialised before the assembly runs */
+-      ACCESS_ONCE(*nc_core_ready_count) = 0;
++      ACCESS_ONCE_RW(*nc_core_ready_count) = 0;
+       coupled_barrier(&per_cpu(pm_barrier, core), online);
+       /* Run the generated entry code */
 diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
-index 60e39dc..b4829bf 100644
+index 636b074..8fbb91f 100644
 --- a/arch/mips/kernel/process.c
 +++ b/arch/mips/kernel/process.c
-@@ -579,15 +579,3 @@ unsigned long get_wchan(struct task_struct *task)
+@@ -520,15 +520,3 @@ unsigned long get_wchan(struct task_struct *task)
  out:
        return pc;
  }
@@ -6969,10 +6717,10 @@ index 60e39dc..b4829bf 100644
 -      return sp & ALMASK;
 -}
 diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
-index f639ccd..e4b110d 100644
+index 9d1487d..10c5da5 100644
 --- a/arch/mips/kernel/ptrace.c
 +++ b/arch/mips/kernel/ptrace.c
-@@ -630,6 +630,10 @@ long arch_ptrace(struct task_struct *child, long request,
+@@ -761,6 +761,10 @@ long arch_ptrace(struct task_struct *child, long request,
        return ret;
  }
  
@@ -6983,7 +6731,7 @@ index f639ccd..e4b110d 100644
  /*
   * Notification of system call entry/exit
   * - triggered by current->work.syscall_trace
-@@ -646,6 +650,11 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
+@@ -777,6 +781,11 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
            tracehook_report_syscall_entry(regs))
                ret = -1;
  
@@ -7027,55 +6775,11 @@ index 07fc524..b9d7f28 100644
                pm_power_off();
 +      BUG();
  }
-diff --git a/arch/mips/kernel/smtc-proc.c b/arch/mips/kernel/smtc-proc.c
-index 38635a9..3fcd5e0 100644
---- a/arch/mips/kernel/smtc-proc.c
-+++ b/arch/mips/kernel/smtc-proc.c
-@@ -31,7 +31,7 @@ unsigned long selfipis[NR_CPUS];
- struct smtc_cpu_proc smtc_cpu_stats[NR_CPUS];
--atomic_t smtc_fpu_recoveries;
-+atomic_unchecked_t smtc_fpu_recoveries;
- static int smtc_proc_show(struct seq_file *m, void *v)
- {
-@@ -48,7 +48,7 @@ static int smtc_proc_show(struct seq_file *m, void *v)
-       for(i = 0; i < NR_CPUS; i++)
-               seq_printf(m, "%d: %ld\n", i, smtc_cpu_stats[i].selfipis);
-       seq_printf(m, "%d Recoveries of \"stolen\" FPU\n",
--                 atomic_read(&smtc_fpu_recoveries));
-+                 atomic_read_unchecked(&smtc_fpu_recoveries));
-       return 0;
- }
-@@ -73,7 +73,7 @@ void init_smtc_stats(void)
-               smtc_cpu_stats[i].selfipis = 0;
-       }
--      atomic_set(&smtc_fpu_recoveries, 0);
-+      atomic_set_unchecked(&smtc_fpu_recoveries, 0);
-       proc_create("smtc", 0444, NULL, &smtc_proc_fops);
- }
-diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
-index c1681d6..9f881d1 100644
---- a/arch/mips/kernel/smtc.c
-+++ b/arch/mips/kernel/smtc.c
-@@ -1359,7 +1359,7 @@ void smtc_soft_dump(void)
-       }
-       smtc_ipi_qdump();
-       printk("%d Recoveries of \"stolen\" FPU\n",
--             atomic_read(&smtc_fpu_recoveries));
-+             atomic_read_unchecked(&smtc_fpu_recoveries));
- }
 diff --git a/arch/mips/kernel/sync-r4k.c b/arch/mips/kernel/sync-r4k.c
-index c24ad5f..9983ab2 100644
+index 2242bdd..b284048 100644
 --- a/arch/mips/kernel/sync-r4k.c
 +++ b/arch/mips/kernel/sync-r4k.c
-@@ -20,8 +20,8 @@
+@@ -18,8 +18,8 @@
  #include <asm/mipsregs.h>
  
  static atomic_t count_start_flag = ATOMIC_INIT(0);
@@ -7086,7 +6790,7 @@ index c24ad5f..9983ab2 100644
  static atomic_t count_reference = ATOMIC_INIT(0);
  
  #define COUNTON 100
-@@ -68,13 +68,13 @@ void synchronise_count_master(int cpu)
+@@ -58,13 +58,13 @@ void synchronise_count_master(int cpu)
  
        for (i = 0; i < NR_LOOPS; i++) {
                /* slaves loop on '!= 2' */
@@ -7103,7 +6807,7 @@ index c24ad5f..9983ab2 100644
  
                /*
                 * Everyone initialises count in the last loop:
-@@ -85,11 +85,11 @@ void synchronise_count_master(int cpu)
+@@ -75,11 +75,11 @@ void synchronise_count_master(int cpu)
                /*
                 * Wait for all slaves to leave the synchronization point:
                 */
@@ -7118,7 +6822,7 @@ index c24ad5f..9983ab2 100644
        }
        /* Arrange for an interrupt in a short while */
        write_c0_compare(read_c0_count() + COUNTON);
-@@ -130,8 +130,8 @@ void synchronise_count_slave(int cpu)
+@@ -112,8 +112,8 @@ void synchronise_count_slave(int cpu)
        initcount = atomic_read(&count_reference);
  
        for (i = 0; i < NR_LOOPS; i++) {
@@ -7129,7 +6833,7 @@ index c24ad5f..9983ab2 100644
                        mb();
  
                /*
-@@ -140,8 +140,8 @@ void synchronise_count_slave(int cpu)
+@@ -122,8 +122,8 @@ void synchronise_count_slave(int cpu)
                if (i == NR_LOOPS-1)
                        write_c0_count(initcount);
  
@@ -7141,10 +6845,10 @@ index c24ad5f..9983ab2 100644
        }
        /* Arrange for an interrupt in a short while */
 diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
-index 8119ac2..b229939 100644
+index 22b19c2..c5cc8c4 100644
 --- a/arch/mips/kernel/traps.c
 +++ b/arch/mips/kernel/traps.c
-@@ -695,7 +695,18 @@ asmlinkage void do_ov(struct pt_regs *regs)
+@@ -688,7 +688,18 @@ asmlinkage void do_ov(struct pt_regs *regs)
        siginfo_t info;
  
        prev_state = exception_enter();
@@ -7164,6 +6868,19 @@ index 8119ac2..b229939 100644
  
        info.si_code = FPE_INTOVF;
        info.si_signo = SIGFPE;
+diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c
+index e3b21e5..ea5ff7c 100644
+--- a/arch/mips/kvm/mips.c
++++ b/arch/mips/kvm/mips.c
+@@ -805,7 +805,7 @@ long kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg)
+       return r;
+ }
+-int kvm_arch_init(void *opaque)
++int kvm_arch_init(const void *opaque)
+ {
+       if (kvm_mips_callbacks) {
+               kvm_err("kvm: module already exists\n");
 diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
 index becc42b..9e43d4b 100644
 --- a/arch/mips/mm/fault.c
@@ -7498,10 +7215,10 @@ index 4ce7a01..449202a 100644
  
  #endif /* __ASM_OPENRISC_CACHE_H */
 diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h
-index 472886c..00e7df9 100644
+index 226f8ca..9d9b87d 100644
 --- a/arch/parisc/include/asm/atomic.h
 +++ b/arch/parisc/include/asm/atomic.h
-@@ -252,6 +252,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
+@@ -273,6 +273,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
        return dec;
  }
  
@@ -7611,10 +7328,10 @@ index 22b89d1..ce34230 100644
  #define PAGE_KERNEL_EXEC      __pgprot(_PAGE_KERNEL_EXEC)
  #define PAGE_KERNEL_RWX       __pgprot(_PAGE_KERNEL_RWX)
 diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h
-index 4006964..fcb3cc2 100644
+index a5cb070..8604ddc 100644
 --- a/arch/parisc/include/asm/uaccess.h
 +++ b/arch/parisc/include/asm/uaccess.h
-@@ -246,10 +246,10 @@ static inline unsigned long __must_check copy_from_user(void *to,
+@@ -243,10 +243,10 @@ static inline unsigned long __must_check copy_from_user(void *to,
                                            const void __user *from,
                                            unsigned long n)
  {
@@ -7991,10 +7708,10 @@ index 3ca9c11..d163ef7 100644
        /*
         * If for any reason at all we couldn't handle the fault, make
 diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
-index c95c4b8..d831f81 100644
+index 88eace4..4ba2591 100644
 --- a/arch/powerpc/Kconfig
 +++ b/arch/powerpc/Kconfig
-@@ -397,6 +397,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE
+@@ -404,6 +404,7 @@ config PPC64_SUPPORTS_MEMORY_FAILURE
  config KEXEC
        bool "kexec system call"
        depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP))
@@ -8003,28 +7720,520 @@ index c95c4b8..d831f81 100644
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
 diff --git a/arch/powerpc/include/asm/atomic.h b/arch/powerpc/include/asm/atomic.h
-index e3b1d41..8e81edf 100644
+index 512d278..d31fadd 100644
 --- a/arch/powerpc/include/asm/atomic.h
 +++ b/arch/powerpc/include/asm/atomic.h
-@@ -523,6 +523,16 @@ static __inline__ long atomic64_inc_not_zero(atomic64_t *v)
-       return t1;
+@@ -12,6 +12,11 @@
+ #define ATOMIC_INIT(i)                { (i) }
++#define _ASM_EXTABLE(from, to)                        \
++"     .section        __ex_table,\"a\"\n"     \
++      PPC_LONG"       " #from ", " #to"\n"    \
++"     .previous\n"
++
+ static __inline__ int atomic_read(const atomic_t *v)
+ {
+       int t;
+@@ -21,39 +26,80 @@ static __inline__ int atomic_read(const atomic_t *v)
+       return t;
  }
  
-+#define atomic64_read_unchecked(v)            atomic64_read(v)
-+#define atomic64_set_unchecked(v, i)          atomic64_set((v), (i))
-+#define atomic64_add_unchecked(a, v)          atomic64_add((a), (v))
-+#define atomic64_add_return_unchecked(a, v)   atomic64_add_return((a), (v))
-+#define atomic64_sub_unchecked(a, v)          atomic64_sub((a), (v))
-+#define atomic64_inc_unchecked(v)             atomic64_inc(v)
-+#define atomic64_inc_return_unchecked(v)      atomic64_inc_return(v)
-+#define atomic64_dec_unchecked(v)             atomic64_dec(v)
-+#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
++static __inline__ int atomic_read_unchecked(const atomic_unchecked_t *v)
++{
++      int t;
++
++      __asm__ __volatile__("lwz%U1%X1 %0,%1" : "=r"(t) : "m"(v->counter));
++
++      return t;
++}
 +
- #endif /* __powerpc64__ */
+ static __inline__ void atomic_set(atomic_t *v, int i)
+ {
+       __asm__ __volatile__("stw%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i));
+ }
  
- #endif /* __KERNEL__ */
+-#define ATOMIC_OP(op, asm_op)                                         \
+-static __inline__ void atomic_##op(int a, atomic_t *v)                        \
++static __inline__ void atomic_set_unchecked(atomic_unchecked_t *v, int i)
++{
++      __asm__ __volatile__("stw%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i));
++}
++
++#ifdef CONFIG_PAX_REFCOUNT
++#define __REFCOUNT_OP(op) op##o.
++#define __OVERFLOW_PRE                        \
++      "       mcrxr   cr0\n"
++#define __OVERFLOW_POST                       \
++      "       bf 4*cr0+so, 3f\n"      \
++      "2:     .long 0x00c00b00\n"     \
++      "3:\n"
++#define __OVERFLOW_EXTABLE \
++      "\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#else
++#define __REFCOUNT_OP(op) op
++#define __OVERFLOW_PRE
++#define __OVERFLOW_POST
++#define __OVERFLOW_EXTABLE
++#endif
++
++#define __ATOMIC_OP(op, suffix, pre_op, asm_op, post_op, extable)     \
++static inline void atomic_##op##suffix(int a, atomic##suffix##_t *v)  \
+ {                                                                     \
+       int t;                                                          \
+                                                                       \
+       __asm__ __volatile__(                                           \
+-"1:   lwarx   %0,0,%3         # atomic_" #op "\n"                     \
++"1:   lwarx   %0,0,%3         # atomic_" #op #suffix "\n"             \
++      pre_op                                                          \
+       #asm_op " %0,%2,%0\n"                                           \
++      post_op                                                         \
+       PPC405_ERR77(0,%3)                                              \
+ "     stwcx.  %0,0,%3 \n"                                             \
+ "     bne-    1b\n"                                                   \
++      extable                                                         \
+       : "=&r" (t), "+m" (v->counter)                                  \
+       : "r" (a), "r" (&v->counter)                                    \
+       : "cc");                                                        \
+ }                                                                     \
+-#define ATOMIC_OP_RETURN(op, asm_op)                                  \
+-static __inline__ int atomic_##op##_return(int a, atomic_t *v)                \
++#define ATOMIC_OP(op, asm_op) __ATOMIC_OP(op, , , asm_op, , )         \
++                            __ATOMIC_OP(op, _unchecked, __OVERFLOW_PRE, __REFCOUNT_OP(asm_op), __OVERFLOW_POST, __OVERFLOW_EXTABLE)
++
++#define __ATOMIC_OP_RETURN(op, suffix, pre_op, asm_op, post_op, extable)\
++static inline int atomic_##op##_return##suffix(int a, atomic##suffix##_t *v)\
+ {                                                                     \
+       int t;                                                          \
+                                                                       \
+       __asm__ __volatile__(                                           \
+       PPC_ATOMIC_ENTRY_BARRIER                                        \
+-"1:   lwarx   %0,0,%2         # atomic_" #op "_return\n"              \
++"1:   lwarx   %0,0,%2         # atomic_" #op "_return" #suffix "\n"   \
++      pre_op                                                          \
+       #asm_op " %0,%1,%0\n"                                           \
++      post_op                                                         \
+       PPC405_ERR77(0,%2)                                              \
+ "     stwcx.  %0,0,%2 \n"                                             \
+ "     bne-    1b\n"                                                   \
++      extable                                                         \
+       PPC_ATOMIC_EXIT_BARRIER                                         \
+       : "=&r" (t)                                                     \
+       : "r" (a), "r" (&v->counter)                                    \
+@@ -62,6 +108,9 @@ static __inline__ int atomic_##op##_return(int a, atomic_t *v)              \
+       return t;                                                       \
+ }
++#define ATOMIC_OP_RETURN(op, asm_op) __ATOMIC_OP_RETURN(op, , , asm_op, , )\
++                                   __ATOMIC_OP_RETURN(op, _unchecked, __OVERFLOW_PRE, __REFCOUNT_OP(asm_op), __OVERFLOW_POST, __OVERFLOW_EXTABLE)
++
+ #define ATOMIC_OPS(op, asm_op) ATOMIC_OP(op, asm_op) ATOMIC_OP_RETURN(op, asm_op)
+ ATOMIC_OPS(add, add)
+@@ -69,42 +118,29 @@ ATOMIC_OPS(sub, subf)
+ #undef ATOMIC_OPS
+ #undef ATOMIC_OP_RETURN
++#undef __ATOMIC_OP_RETURN
+ #undef ATOMIC_OP
++#undef __ATOMIC_OP
+ #define atomic_add_negative(a, v)     (atomic_add_return((a), (v)) < 0)
+-static __inline__ void atomic_inc(atomic_t *v)
+-{
+-      int t;
++/*
++ * atomic_inc - increment atomic variable
++ * @v: pointer of type atomic_t
++ *
++ * Automatically increments @v by 1
++ */
++#define atomic_inc(v) atomic_add(1, (v))
++#define atomic_inc_return(v) atomic_add_return(1, (v))
+-      __asm__ __volatile__(
+-"1:   lwarx   %0,0,%2         # atomic_inc\n\
+-      addic   %0,%0,1\n"
+-      PPC405_ERR77(0,%2)
+-"     stwcx.  %0,0,%2 \n\
+-      bne-    1b"
+-      : "=&r" (t), "+m" (v->counter)
+-      : "r" (&v->counter)
+-      : "cc", "xer");
++static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
++{
++      atomic_add_unchecked(1, v);
+ }
+-static __inline__ int atomic_inc_return(atomic_t *v)
++static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
+ {
+-      int t;
+-
+-      __asm__ __volatile__(
+-      PPC_ATOMIC_ENTRY_BARRIER
+-"1:   lwarx   %0,0,%1         # atomic_inc_return\n\
+-      addic   %0,%0,1\n"
+-      PPC405_ERR77(0,%1)
+-"     stwcx.  %0,0,%1 \n\
+-      bne-    1b"
+-      PPC_ATOMIC_EXIT_BARRIER
+-      : "=&r" (t)
+-      : "r" (&v->counter)
+-      : "cc", "xer", "memory");
+-
+-      return t;
++      return atomic_add_return_unchecked(1, v);
+ }
+ /*
+@@ -117,43 +153,38 @@ static __inline__ int atomic_inc_return(atomic_t *v)
+  */
+ #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
+-static __inline__ void atomic_dec(atomic_t *v)
++static __inline__ int atomic_inc_and_test_unchecked(atomic_unchecked_t *v)
+ {
+-      int t;
+-
+-      __asm__ __volatile__(
+-"1:   lwarx   %0,0,%2         # atomic_dec\n\
+-      addic   %0,%0,-1\n"
+-      PPC405_ERR77(0,%2)\
+-"     stwcx.  %0,0,%2\n\
+-      bne-    1b"
+-      : "=&r" (t), "+m" (v->counter)
+-      : "r" (&v->counter)
+-      : "cc", "xer");
++      return atomic_add_return_unchecked(1, v) == 0;
+ }
+-static __inline__ int atomic_dec_return(atomic_t *v)
++/* 
++ * atomic_dec - decrement atomic variable
++ * @v: pointer of type atomic_t
++ * 
++ * Atomically decrements @v by 1
++ */
++#define atomic_dec(v) atomic_sub(1, (v))
++#define atomic_dec_return(v) atomic_sub_return(1, (v))
++
++static __inline__ void atomic_dec_unchecked(atomic_unchecked_t *v)
+ {
+-      int t;
+-
+-      __asm__ __volatile__(
+-      PPC_ATOMIC_ENTRY_BARRIER
+-"1:   lwarx   %0,0,%1         # atomic_dec_return\n\
+-      addic   %0,%0,-1\n"
+-      PPC405_ERR77(0,%1)
+-"     stwcx.  %0,0,%1\n\
+-      bne-    1b"
+-      PPC_ATOMIC_EXIT_BARRIER
+-      : "=&r" (t)
+-      : "r" (&v->counter)
+-      : "cc", "xer", "memory");
+-
+-      return t;
++      atomic_sub_unchecked(1, v);
+ }
+ #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
+ #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
++static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
++{
++      return cmpxchg(&(v->counter), old, new);
++}
++
++static inline int atomic_xchg_unchecked(atomic_unchecked_t *v, int new) 
++{
++      return xchg(&(v->counter), new);
++}
++
+ /**
+  * __atomic_add_unless - add unless the number is a given value
+  * @v: pointer of type atomic_t
+@@ -171,11 +202,27 @@ static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)
+       PPC_ATOMIC_ENTRY_BARRIER
+ "1:   lwarx   %0,0,%1         # __atomic_add_unless\n\
+       cmpw    0,%0,%3 \n\
+-      beq-    2f \n\
+-      add     %0,%2,%0 \n"
++      beq-    2f \n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     mcrxr   cr0\n"
++"     addo.   %0,%2,%0\n"
++"     bf 4*cr0+so, 4f\n"
++"3:.long " "0x00c00b00""\n"
++"4:\n"
++#else
++      "add    %0,%2,%0 \n"
++#endif
++
+       PPC405_ERR77(0,%2)
+ "     stwcx.  %0,0,%1 \n\
+       bne-    1b \n"
++"5:"
++
++#ifdef CONFIG_PAX_REFCOUNT
++      _ASM_EXTABLE(3b, 5b)
++#endif
++
+       PPC_ATOMIC_EXIT_BARRIER
+ "     subf    %0,%2,%0 \n\
+ 2:"
+@@ -248,6 +295,11 @@ static __inline__ int atomic_dec_if_positive(atomic_t *v)
+ }
+ #define atomic_dec_if_positive atomic_dec_if_positive
++#define smp_mb__before_atomic_dec()     smp_mb()
++#define smp_mb__after_atomic_dec()      smp_mb()
++#define smp_mb__before_atomic_inc()     smp_mb()
++#define smp_mb__after_atomic_inc()      smp_mb()
++
+ #ifdef __powerpc64__
+ #define ATOMIC64_INIT(i)      { (i) }
+@@ -261,37 +313,60 @@ static __inline__ long atomic64_read(const atomic64_t *v)
+       return t;
+ }
++static __inline__ long atomic64_read_unchecked(const atomic64_unchecked_t *v)
++{
++      long t;
++
++      __asm__ __volatile__("ld%U1%X1 %0,%1" : "=r"(t) : "m"(v->counter));
++
++      return t;
++}
++
+ static __inline__ void atomic64_set(atomic64_t *v, long i)
+ {
+       __asm__ __volatile__("std%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i));
+ }
+-#define ATOMIC64_OP(op, asm_op)                                               \
+-static __inline__ void atomic64_##op(long a, atomic64_t *v)           \
++static __inline__ void atomic64_set_unchecked(atomic64_unchecked_t *v, long i)
++{
++      __asm__ __volatile__("std%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i));
++}
++
++#define __ATOMIC64_OP(op, suffix, pre_op, asm_op, post_op, extable)   \
++static inline void atomic64_##op##suffix(long a, atomic64##suffix##_t *v)\
+ {                                                                     \
+       long t;                                                         \
+                                                                       \
+       __asm__ __volatile__(                                           \
+ "1:   ldarx   %0,0,%3         # atomic64_" #op "\n"                   \
++      pre_op                                                          \
+       #asm_op " %0,%2,%0\n"                                           \
++      post_op                                                         \
+ "     stdcx.  %0,0,%3 \n"                                             \
+ "     bne-    1b\n"                                                   \
++      extable                                                         \
+       : "=&r" (t), "+m" (v->counter)                                  \
+       : "r" (a), "r" (&v->counter)                                    \
+       : "cc");                                                        \
+ }
+-#define ATOMIC64_OP_RETURN(op, asm_op)                                        \
+-static __inline__ long atomic64_##op##_return(long a, atomic64_t *v)  \
++#define ATOMIC64_OP(op, asm_op) __ATOMIC64_OP(op, , , asm_op, , )             \
++                              __ATOMIC64_OP(op, _unchecked, __OVERFLOW_PRE, __REFCOUNT_OP(asm_op), __OVERFLOW_POST, __OVERFLOW_EXTABLE)
++
++#define __ATOMIC64_OP_RETURN(op, suffix, pre_op, asm_op, post_op, extable)\
++static inline long atomic64_##op##_return##suffix(long a, atomic64##suffix##_t *v)\
+ {                                                                     \
+       long t;                                                         \
+                                                                       \
+       __asm__ __volatile__(                                           \
+       PPC_ATOMIC_ENTRY_BARRIER                                        \
+ "1:   ldarx   %0,0,%2         # atomic64_" #op "_return\n"            \
++      pre_op                                                          \
+       #asm_op " %0,%1,%0\n"                                           \
++      post_op                                                         \
+ "     stdcx.  %0,0,%2 \n"                                             \
+ "     bne-    1b\n"                                                   \
++      extable                                                         \
+       PPC_ATOMIC_EXIT_BARRIER                                         \
+       : "=&r" (t)                                                     \
+       : "r" (a), "r" (&v->counter)                                    \
+@@ -300,6 +375,9 @@ static __inline__ long atomic64_##op##_return(long a, atomic64_t *v)       \
+       return t;                                                       \
+ }
++#define ATOMIC64_OP_RETURN(op, asm_op) __ATOMIC64_OP_RETURN(op, , , asm_op, , )\
++                                     __ATOMIC64_OP_RETURN(op, _unchecked, __OVERFLOW_PRE, __REFCOUNT_OP(asm_op), __OVERFLOW_POST, __OVERFLOW_EXTABLE)
++
+ #define ATOMIC64_OPS(op, asm_op) ATOMIC64_OP(op, asm_op) ATOMIC64_OP_RETURN(op, asm_op)
+ ATOMIC64_OPS(add, add)
+@@ -307,40 +385,33 @@ ATOMIC64_OPS(sub, subf)
+ #undef ATOMIC64_OPS
+ #undef ATOMIC64_OP_RETURN
++#undef __ATOMIC64_OP_RETURN
+ #undef ATOMIC64_OP
++#undef __ATOMIC64_OP
++#undef __OVERFLOW_EXTABLE
++#undef __OVERFLOW_POST
++#undef __OVERFLOW_PRE
++#undef __REFCOUNT_OP
+ #define atomic64_add_negative(a, v)   (atomic64_add_return((a), (v)) < 0)
+-static __inline__ void atomic64_inc(atomic64_t *v)
+-{
+-      long t;
++/*
++ * atomic64_inc - increment atomic variable
++ * @v: pointer of type atomic64_t
++ *
++ * Automatically increments @v by 1
++ */
++#define atomic64_inc(v) atomic64_add(1, (v))
++#define atomic64_inc_return(v) atomic64_add_return(1, (v))
+-      __asm__ __volatile__(
+-"1:   ldarx   %0,0,%2         # atomic64_inc\n\
+-      addic   %0,%0,1\n\
+-      stdcx.  %0,0,%2 \n\
+-      bne-    1b"
+-      : "=&r" (t), "+m" (v->counter)
+-      : "r" (&v->counter)
+-      : "cc", "xer");
++static inline void atomic64_inc_unchecked(atomic64_unchecked_t *v)
++{
++      atomic64_add_unchecked(1, v);
+ }
+-static __inline__ long atomic64_inc_return(atomic64_t *v)
++static inline long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
+ {
+-      long t;
+-
+-      __asm__ __volatile__(
+-      PPC_ATOMIC_ENTRY_BARRIER
+-"1:   ldarx   %0,0,%1         # atomic64_inc_return\n\
+-      addic   %0,%0,1\n\
+-      stdcx.  %0,0,%1 \n\
+-      bne-    1b"
+-      PPC_ATOMIC_EXIT_BARRIER
+-      : "=&r" (t)
+-      : "r" (&v->counter)
+-      : "cc", "xer", "memory");
+-
+-      return t;
++      return atomic64_add_return_unchecked(1, v);
+ }
+ /*
+@@ -353,36 +424,18 @@ static __inline__ long atomic64_inc_return(atomic64_t *v)
+  */
+ #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
+-static __inline__ void atomic64_dec(atomic64_t *v)
++/* 
++ * atomic64_dec - decrement atomic variable
++ * @v: pointer of type atomic64_t
++ * 
++ * Atomically decrements @v by 1
++ */
++#define atomic64_dec(v) atomic64_sub(1, (v))
++#define atomic64_dec_return(v) atomic64_sub_return(1, (v))
++
++static __inline__ void atomic64_dec_unchecked(atomic64_unchecked_t *v)
+ {
+-      long t;
+-
+-      __asm__ __volatile__(
+-"1:   ldarx   %0,0,%2         # atomic64_dec\n\
+-      addic   %0,%0,-1\n\
+-      stdcx.  %0,0,%2\n\
+-      bne-    1b"
+-      : "=&r" (t), "+m" (v->counter)
+-      : "r" (&v->counter)
+-      : "cc", "xer");
+-}
+-
+-static __inline__ long atomic64_dec_return(atomic64_t *v)
+-{
+-      long t;
+-
+-      __asm__ __volatile__(
+-      PPC_ATOMIC_ENTRY_BARRIER
+-"1:   ldarx   %0,0,%1         # atomic64_dec_return\n\
+-      addic   %0,%0,-1\n\
+-      stdcx.  %0,0,%1\n\
+-      bne-    1b"
+-      PPC_ATOMIC_EXIT_BARRIER
+-      : "=&r" (t)
+-      : "r" (&v->counter)
+-      : "cc", "xer", "memory");
+-
+-      return t;
++      atomic64_sub_unchecked(1, v);
+ }
+ #define atomic64_sub_and_test(a, v)   (atomic64_sub_return((a), (v)) == 0)
+@@ -415,6 +468,16 @@ static __inline__ long atomic64_dec_if_positive(atomic64_t *v)
+ #define atomic64_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
+ #define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
++static inline long atomic64_cmpxchg_unchecked(atomic64_unchecked_t *v, long old, long new)
++{
++      return cmpxchg(&(v->counter), old, new);
++}
++
++static inline long atomic64_xchg_unchecked(atomic64_unchecked_t *v, long new) 
++{
++      return xchg(&(v->counter), new);
++}
++
+ /**
+  * atomic64_add_unless - add unless the number is a given value
+  * @v: pointer of type atomic64_t
+@@ -430,13 +493,29 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
+       __asm__ __volatile__ (
+       PPC_ATOMIC_ENTRY_BARRIER
+-"1:   ldarx   %0,0,%1         # __atomic_add_unless\n\
++"1:   ldarx   %0,0,%1         # atomic64_add_unless\n\
+       cmpd    0,%0,%3 \n\
+-      beq-    2f \n\
+-      add     %0,%2,%0 \n"
++      beq-    2f \n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     mcrxr   cr0\n"
++"     addo.   %0,%2,%0\n"
++"     bf 4*cr0+so, 4f\n"
++"3:.long " "0x00c00b00""\n"
++"4:\n"
++#else
++      "add    %0,%2,%0 \n"
++#endif
++
+ "     stdcx.  %0,0,%1 \n\
+       bne-    1b \n"
+       PPC_ATOMIC_EXIT_BARRIER
++"5:"
++
++#ifdef CONFIG_PAX_REFCOUNT
++      _ASM_EXTABLE(3b, 5b)
++#endif
++
+ "     subf    %0,%2,%0 \n\
+ 2:"
+       : "=&r" (t)
 diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h
-index f89da80..7f5b05a 100644
+index bab79a1..4a3eabc 100644
 --- a/arch/powerpc/include/asm/barrier.h
 +++ b/arch/powerpc/include/asm/barrier.h
 @@ -73,7 +73,7 @@
@@ -8037,18 +8246,18 @@ index f89da80..7f5b05a 100644
  
  #define smp_load_acquire(p)                                           \
 diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
-index ed0afc1..0332825 100644
+index 34a05a1..a1f2c67 100644
 --- a/arch/powerpc/include/asm/cache.h
 +++ b/arch/powerpc/include/asm/cache.h
-@@ -3,6 +3,7 @@
+@@ -4,6 +4,7 @@
  #ifdef __KERNEL__
  
+ #include <asm/reg.h>
 +#include <linux/const.h>
  
  /* bytes per L1 cache line */
  #if defined(CONFIG_8xx) || defined(CONFIG_403GCX)
-@@ -22,7 +23,7 @@
+@@ -23,7 +24,7 @@
  #define L1_CACHE_SHIFT                7
  #endif
  
@@ -8058,7 +8267,7 @@ index ed0afc1..0332825 100644
  #define       SMP_CACHE_BYTES         L1_CACHE_BYTES
  
 diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
-index 935b5e7..7001d2d 100644
+index 888d8f3..66f581c 100644
 --- a/arch/powerpc/include/asm/elf.h
 +++ b/arch/powerpc/include/asm/elf.h
 @@ -28,8 +28,19 @@
@@ -8083,7 +8292,7 @@ index 935b5e7..7001d2d 100644
  
  #define ELF_CORE_EFLAGS (is_elf2_task() ? 2 : 0)
  
-@@ -127,10 +138,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
+@@ -129,10 +140,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
        (0x7ff >> (PAGE_SHIFT - 12)) : \
        (0x3ffff >> (PAGE_SHIFT - 12)))
  
@@ -8120,10 +8329,10 @@ index 5acabbd..7ea14fa 100644
  #endif        /* __KERNEL__ */
  #endif        /* _ASM_POWERPC_KMAP_TYPES_H */
 diff --git a/arch/powerpc/include/asm/local.h b/arch/powerpc/include/asm/local.h
-index b8da913..60b608a 100644
+index b8da913..c02b593 100644
 --- a/arch/powerpc/include/asm/local.h
 +++ b/arch/powerpc/include/asm/local.h
-@@ -9,15 +9,26 @@ typedef struct
+@@ -9,21 +9,65 @@ typedef struct
        atomic_long_t a;
  } local_t;
  
@@ -8150,23 +8359,46 @@ index b8da913..60b608a 100644
  
  static __inline__ long local_add_return(long a, local_t *l)
  {
-@@ -35,6 +46,7 @@ static __inline__ long local_add_return(long a, local_t *l)
-       return t;
- }
-+#define local_add_return_unchecked(i, l) atomic_long_add_return_unchecked((i), (&(l)->a))
- #define local_add_negative(a, l)      (local_add_return((a), (l)) < 0)
-@@ -54,6 +66,7 @@ static __inline__ long local_sub_return(long a, local_t *l)
+       long t;
  
-       return t;
- }
-+#define local_sub_return_unchecked(i, l) atomic_long_sub_return_unchecked((i), (&(l)->a))
- static __inline__ long local_inc_return(local_t *l)
- {
-@@ -101,6 +114,8 @@ static __inline__ long local_dec_return(local_t *l)
+       __asm__ __volatile__(
++"1:"  PPC_LLARX(%0,0,%2,0) "                  # local_add_return\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     mcrxr   cr0\n"
++"     addo.   %0,%1,%0\n"
++"     bf 4*cr0+so, 3f\n"
++"2:.long " "0x00c00b00""\n"
++#else
++"     add     %0,%1,%0\n"
++#endif
++
++"3:\n"
++      PPC405_ERR77(0,%2)
++      PPC_STLCX       "%0,0,%2 \n\
++      bne-    1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
++      : "=&r" (t)
++      : "r" (a), "r" (&(l->a.counter))
++      : "cc", "memory");
++
++      return t;
++}
++
++static __inline__ long local_add_return_unchecked(long a, local_unchecked_t *l)
++{
++      long t;
++
++      __asm__ __volatile__(
+ "1:"  PPC_LLARX(%0,0,%2,0) "                  # local_add_return\n\
+       add     %0,%1,%0\n"
+       PPC405_ERR77(0,%2)
+@@ -101,6 +145,8 @@ static __inline__ long local_dec_return(local_t *l)
  
  #define local_cmpxchg(l, o, n) \
        (cmpxchg_local(&((l)->a.counter), (o), (n)))
@@ -8189,10 +8421,10 @@ index 8565c25..2865190 100644
        return (vm_flags & VM_SAO) ? __pgprot(_PAGE_SAO) : __pgprot(0);
  }
 diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
-index 32e4e21..62afb12 100644
+index 26fe1ae..987ffc5 100644
 --- a/arch/powerpc/include/asm/page.h
 +++ b/arch/powerpc/include/asm/page.h
-@@ -230,8 +230,9 @@ extern long long virt_phys_offset;
+@@ -227,8 +227,9 @@ extern long long virt_phys_offset;
   * and needs to be executable.  This means the whole heap ends
   * up being executable.
   */
@@ -8204,7 +8436,7 @@ index 32e4e21..62afb12 100644
  
  #define VM_DATA_DEFAULT_FLAGS64       (VM_READ | VM_WRITE | \
                                 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
-@@ -259,6 +260,9 @@ extern long long virt_phys_offset;
+@@ -256,6 +257,9 @@ extern long long virt_phys_offset;
  #define is_kernel_addr(x)     ((x) >= PAGE_OFFSET)
  #endif
  
@@ -8215,10 +8447,10 @@ index 32e4e21..62afb12 100644
  /*
   * Use the top bit of the higher-level page table entries to indicate whether
 diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h
-index 88693ce..ac6f9ab 100644
+index d908a46..3753f71 100644
 --- a/arch/powerpc/include/asm/page_64.h
 +++ b/arch/powerpc/include/asm/page_64.h
-@@ -153,15 +153,18 @@ do {                                             \
+@@ -172,15 +172,18 @@ do {                                             \
   * stack by default, so in the absence of a PT_GNU_STACK program header
   * we turn execute permission off.
   */
@@ -8272,7 +8504,7 @@ index 4b0be20..c15a27d 100644
  static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
                                       pte_t *pte)
 diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
-index 3ebb188..e17dddf 100644
+index 316f9a5..ba05c77 100644
 --- a/arch/powerpc/include/asm/pgtable.h
 +++ b/arch/powerpc/include/asm/pgtable.h
 @@ -2,6 +2,7 @@
@@ -8282,7 +8514,7 @@ index 3ebb188..e17dddf 100644
 +#include <linux/const.h>
  #ifndef __ASSEMBLY__
  #include <linux/mmdebug.h>
- #include <asm/processor.h>            /* For TASK_SIZE */
+ #include <linux/mmzone.h>
 diff --git a/arch/powerpc/include/asm/pte-hash32.h b/arch/powerpc/include/asm/pte-hash32.h
 index 4aad413..85d86bf 100644
 --- a/arch/powerpc/include/asm/pte-hash32.h
@@ -8296,10 +8528,10 @@ index 4aad413..85d86bf 100644
  #define _PAGE_NO_CACHE        0x020   /* I: cache inhibit */
  #define _PAGE_WRITETHRU       0x040   /* W: cache write-through */
 diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
-index e5d2e0b..9ac74b1 100644
+index c998279..d13a9f8 100644
 --- a/arch/powerpc/include/asm/reg.h
 +++ b/arch/powerpc/include/asm/reg.h
-@@ -249,6 +249,7 @@
+@@ -251,6 +251,7 @@
  #define SPRN_DBCR     0x136   /* e300 Data Breakpoint Control Reg */
  #define SPRN_DSISR    0x012   /* Data Storage Interrupt Status Register */
  #define   DSISR_NOHPTE                0x40000000      /* no translation found */
@@ -8308,7 +8540,7 @@ index e5d2e0b..9ac74b1 100644
  #define   DSISR_ISSTORE               0x02000000      /* access was a store */
  #define   DSISR_DABRMATCH     0x00400000      /* hit data breakpoint */
 diff --git a/arch/powerpc/include/asm/smp.h b/arch/powerpc/include/asm/smp.h
-index ff51046..b982dd4 100644
+index 5a6614a..d89995d1 100644
 --- a/arch/powerpc/include/asm/smp.h
 +++ b/arch/powerpc/include/asm/smp.h
 @@ -51,7 +51,7 @@ struct smp_ops_t {
@@ -8320,6 +8552,73 @@ index ff51046..b982dd4 100644
  
  extern void smp_send_debugger_break(void);
  extern void start_secondary_resume(void);
+diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h
+index 4dbe072..b803275 100644
+--- a/arch/powerpc/include/asm/spinlock.h
++++ b/arch/powerpc/include/asm/spinlock.h
+@@ -204,13 +204,29 @@ static inline long __arch_read_trylock(arch_rwlock_t *rw)
+       __asm__ __volatile__(
+ "1:   " PPC_LWARX(%0,0,%1,1) "\n"
+       __DO_SIGN_EXTEND
+-"     addic.          %0,%0,1\n\
+-      ble-            2f\n"
++
++#ifdef        CONFIG_PAX_REFCOUNT
++"     mcrxr   cr0\n"
++"     addico.         %0,%0,1\n"
++"     bf 4*cr0+so, 3f\n"
++"2:.long " "0x00c00b00""\n"
++#else
++"     addic.          %0,%0,1\n"
++#endif
++
++"3:\n"
++      "ble-           4f\n"
+       PPC405_ERR77(0,%1)
+ "     stwcx.          %0,0,%1\n\
+       bne-            1b\n"
+       PPC_ACQUIRE_BARRIER
+-"2:"  : "=&r" (tmp)
++"4:"  
++
++#ifdef CONFIG_PAX_REFCOUNT
++      _ASM_EXTABLE(2b,4b)
++#endif
++
++      : "=&r" (tmp)
+       : "r" (&rw->lock)
+       : "cr0", "xer", "memory");
+@@ -286,11 +302,27 @@ static inline void arch_read_unlock(arch_rwlock_t *rw)
+       __asm__ __volatile__(
+       "# read_unlock\n\t"
+       PPC_RELEASE_BARRIER
+-"1:   lwarx           %0,0,%1\n\
+-      addic           %0,%0,-1\n"
++"1:   lwarx           %0,0,%1\n"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"     mcrxr   cr0\n"
++"     addico.         %0,%0,-1\n"
++"     bf 4*cr0+so, 3f\n"
++"2:.long " "0x00c00b00""\n"
++#else
++"     addic.          %0,%0,-1\n"
++#endif
++
++"3:\n"
+       PPC405_ERR77(0,%1)
+ "     stwcx.          %0,0,%1\n\
+       bne-            1b"
++
++#ifdef CONFIG_PAX_REFCOUNT
++"\n4:\n"
++      _ASM_EXTABLE(2b, 4b)
++#endif
++
+       : "=&r"(tmp)
+       : "r"(&rw->lock)
+       : "cr0", "xer", "memory");
 diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h
 index b034ecd..af7e31f 100644
 --- a/arch/powerpc/include/asm/thread_info.h
@@ -8526,10 +8825,10 @@ index 9485b43..3bd3c16 100644
  
  static inline unsigned long clear_user(void __user *addr, unsigned long size)
 diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
-index fcc9a89..07be2bb 100644
+index 502cf69..822e63b 100644
 --- a/arch/powerpc/kernel/Makefile
 +++ b/arch/powerpc/kernel/Makefile
-@@ -26,6 +26,8 @@ CFLAGS_REMOVE_ftrace.o = -pg -mno-sched-epilog
+@@ -27,6 +27,8 @@ CFLAGS_REMOVE_ftrace.o = -pg -mno-sched-epilog
  CFLAGS_REMOVE_time.o = -pg -mno-sched-epilog
  endif
  
@@ -8539,48 +8838,48 @@ index fcc9a89..07be2bb 100644
                                   irq.o align.o signal_32.o pmc.o vdso.o \
                                   process.o systbl.o idle.o \
 diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
-index c1bee3c..5b42583 100644
+index 3e68d1c..72a5ee6 100644
 --- a/arch/powerpc/kernel/exceptions-64e.S
 +++ b/arch/powerpc/kernel/exceptions-64e.S
 @@ -1010,6 +1010,7 @@ storage_fault_common:
        std     r14,_DAR(r1)
        std     r15,_DSISR(r1)
        addi    r3,r1,STACK_FRAME_OVERHEAD
-+      bl      .save_nvgprs
++      bl      save_nvgprs
        mr      r4,r14
        mr      r5,r15
        ld      r14,PACA_EXGEN+EX_R14(r13)
 @@ -1018,8 +1019,7 @@ storage_fault_common:
        cmpdi   r3,0
        bne-    1f
-       b       .ret_from_except_lite
--1:    bl      .save_nvgprs
+       b       ret_from_except_lite
+-1:    bl      save_nvgprs
 -      mr      r5,r3
 +1:    mr      r5,r3
        addi    r3,r1,STACK_FRAME_OVERHEAD
        ld      r4,_DAR(r1)
-       bl      .bad_page_fault
+       bl      bad_page_fault
 diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
-index 3afd391..18f9e36 100644
+index 72e783e..fe058e2 100644
 --- a/arch/powerpc/kernel/exceptions-64s.S
 +++ b/arch/powerpc/kernel/exceptions-64s.S
-@@ -1587,10 +1587,10 @@ handle_page_fault:
+@@ -1588,10 +1588,10 @@ handle_page_fault:
  11:   ld      r4,_DAR(r1)
        ld      r5,_DSISR(r1)
        addi    r3,r1,STACK_FRAME_OVERHEAD
-+      bl      .save_nvgprs
-       bl      .do_page_fault
++      bl      save_nvgprs
+       bl      do_page_fault
        cmpdi   r3,0
        beq+    12f
--      bl      .save_nvgprs
+-      bl      save_nvgprs
        mr      r5,r3
        addi    r3,r1,STACK_FRAME_OVERHEAD
        lwz     r4,_DAR(r1)
 diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
-index ca1cd74..6f0241a 100644
+index c143835..5a9697f 100644
 --- a/arch/powerpc/kernel/irq.c
 +++ b/arch/powerpc/kernel/irq.c
-@@ -447,6 +447,8 @@ void migrate_irqs(void)
+@@ -461,6 +461,8 @@ void migrate_irqs(void)
  }
  #endif
  
@@ -8589,8 +8888,8 @@ index ca1cd74..6f0241a 100644
  static inline void check_stack_overflow(void)
  {
  #ifdef CONFIG_DEBUG_STACKOVERFLOW
-@@ -459,6 +461,7 @@ static inline void check_stack_overflow(void)
-               printk("do_IRQ: stack overflow: %ld\n",
+@@ -473,6 +475,7 @@ static inline void check_stack_overflow(void)
+               pr_err("do_IRQ: stack overflow: %ld\n",
                        sp - sizeof(struct thread_info));
                dump_stack();
 +              gr_handle_kernel_exploit();
@@ -8598,21 +8897,21 @@ index ca1cd74..6f0241a 100644
  #endif
  }
 diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c
-index 6cff040..74ac5d1b 100644
+index c94d2e0..992a9ce 100644
 --- a/arch/powerpc/kernel/module_32.c
 +++ b/arch/powerpc/kernel/module_32.c
-@@ -161,7 +161,7 @@ int module_frob_arch_sections(Elf32_Ehdr *hdr,
+@@ -158,7 +158,7 @@ int module_frob_arch_sections(Elf32_Ehdr *hdr,
                        me->arch.core_plt_section = i;
        }
        if (!me->arch.core_plt_section || !me->arch.init_plt_section) {
--              printk("Module doesn't contain .plt or .init.plt sections.\n");
-+              printk("Module %s doesn't contain .plt or .init.plt sections.\n", me->name);
+-              pr_err("Module doesn't contain .plt or .init.plt sections.\n");
++              pr_err("Module $s doesn't contain .plt or .init.plt sections.\n", me->name);
                return -ENOEXEC;
        }
  
-@@ -191,11 +191,16 @@ static uint32_t do_plt_call(void *location,
+@@ -188,11 +188,16 @@ static uint32_t do_plt_call(void *location,
  
-       DEBUGP("Doing plt for call to 0x%x at 0x%x\n", val, (unsigned int)location);
+       pr_debug("Doing plt for call to 0x%x at 0x%x\n", val, (unsigned int)location);
        /* Init, or core PLT? */
 -      if (location >= mod->module_core
 -          && location < mod->module_core + mod->core_size)
@@ -8630,7 +8929,7 @@ index 6cff040..74ac5d1b 100644
  
        /* Find this entry, or if that fails, the next avail. entry */
        while (entry->jump[0]) {
-@@ -299,7 +304,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
+@@ -296,7 +301,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
        }
  #ifdef CONFIG_DYNAMIC_FTRACE
        module->arch.tramp =
@@ -8640,10 +8939,10 @@ index 6cff040..74ac5d1b 100644
                            sechdrs, module);
  #endif
 diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
-index 31d0215..206af70 100644
+index 923cd2d..ae782a9 100644
 --- a/arch/powerpc/kernel/process.c
 +++ b/arch/powerpc/kernel/process.c
-@@ -1031,8 +1031,8 @@ void show_regs(struct pt_regs * regs)
+@@ -1040,8 +1040,8 @@ void show_regs(struct pt_regs * regs)
         * Lookup NIP late so we have the best change of getting the
         * above info out without failing
         */
@@ -8654,7 +8953,7 @@ index 31d0215..206af70 100644
  #endif
        show_stack(current, (unsigned long *) regs->gpr[1]);
        if (!user_mode(regs))
-@@ -1554,10 +1554,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
+@@ -1560,10 +1560,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
                newsp = stack[0];
                ip = stack[STACK_FRAME_LR_SAVE];
                if (!firstframe || ip != lr) {
@@ -8667,16 +8966,16 @@ index 31d0215..206af70 100644
                                       (void *)current->ret_stack[curr_frame].ret);
                                curr_frame--;
                        }
-@@ -1577,7 +1577,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
+@@ -1583,7 +1583,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
                        struct pt_regs *regs = (struct pt_regs *)
                                (sp + STACK_FRAME_OVERHEAD);
                        lr = regs->link;
--                      printk("--- Exception: %lx at %pS\n    LR = %pS\n",
-+                      printk("--- Exception: %lx at %pA\n    LR = %pA\n",
+-                      printk("--- interrupt: %lx at %pS\n    LR = %pS\n",
++                      printk("--- interrupt: %lx at %pA\n    LR = %pA\n",
                               regs->trap, (void *)regs->nip, (void *)lr);
                        firstframe = 1;
                }
-@@ -1613,58 +1613,3 @@ void notrace __ppc64_runlatch_off(void)
+@@ -1619,58 +1619,3 @@ void notrace __ppc64_runlatch_off(void)
        mtspr(SPRN_CTRLT, ctrl);
  }
  #endif /* CONFIG_PPC64 */
@@ -8736,7 +9035,7 @@ index 31d0215..206af70 100644
 -      return ret;
 -}
 diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
-index 2e3d2bf..35df241 100644
+index f21897b..28c0428 100644
 --- a/arch/powerpc/kernel/ptrace.c
 +++ b/arch/powerpc/kernel/ptrace.c
 @@ -1762,6 +1762,10 @@ long arch_ptrace(struct task_struct *child, long request,
@@ -8762,7 +9061,7 @@ index 2e3d2bf..35df241 100644
        if (test_thread_flag(TIF_SYSCALL_TRACE) &&
            tracehook_report_syscall_entry(regs))
                /*
-@@ -1808,6 +1817,11 @@ void do_syscall_trace_leave(struct pt_regs *regs)
+@@ -1805,6 +1814,11 @@ void do_syscall_trace_leave(struct pt_regs *regs)
  {
        int step;
  
@@ -8775,10 +9074,10 @@ index 2e3d2bf..35df241 100644
  
        if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
 diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
-index 4e47db6..6dcc96e 100644
+index b171001..4ac7ac5 100644
 --- a/arch/powerpc/kernel/signal_32.c
 +++ b/arch/powerpc/kernel/signal_32.c
-@@ -1013,7 +1013,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
+@@ -1011,7 +1011,7 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
        /* Save user registers on the stack */
        frame = &rt_sf->uc.uc_mcontext;
        addr = frame;
@@ -8788,10 +9087,10 @@ index 4e47db6..6dcc96e 100644
                tramp = current->mm->context.vdso_base + vdso32_rt_sigtramp;
        } else {
 diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
-index d501dc4..e5a0de0 100644
+index 2cb0c94..c0c0bc9 100644
 --- a/arch/powerpc/kernel/signal_64.c
 +++ b/arch/powerpc/kernel/signal_64.c
-@@ -760,7 +760,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info,
+@@ -754,7 +754,7 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs
        current->thread.fp_state.fpscr = 0;
  
        /* Set up to return from userspace. */
@@ -8801,10 +9100,18 @@ index d501dc4..e5a0de0 100644
        } else {
                err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
 diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
-index 1bd7ca2..9b78c2f 100644
+index 0dc43f9..a885d33 100644
 --- a/arch/powerpc/kernel/traps.c
 +++ b/arch/powerpc/kernel/traps.c
-@@ -142,6 +142,8 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs)
+@@ -36,6 +36,7 @@
+ #include <linux/debugfs.h>
+ #include <linux/ratelimit.h>
+ #include <linux/context_tracking.h>
++#include <linux/uaccess.h>
+ #include <asm/emulated_ops.h>
+ #include <asm/pgtable.h>
+@@ -142,6 +143,8 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs)
        return flags;
  }
  
@@ -8813,7 +9120,7 @@ index 1bd7ca2..9b78c2f 100644
  static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs,
                               int signr)
  {
-@@ -191,6 +193,9 @@ static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs,
+@@ -191,6 +194,9 @@ static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs,
                panic("Fatal exception in interrupt");
        if (panic_on_oops)
                panic("Fatal exception");
@@ -8823,8 +9130,35 @@ index 1bd7ca2..9b78c2f 100644
        do_exit(signr);
  }
  
+@@ -1137,6 +1143,26 @@ void __kprobes program_check_exception(struct pt_regs *regs)
+       enum ctx_state prev_state = exception_enter();
+       unsigned int reason = get_reason(regs);
++#ifdef CONFIG_PAX_REFCOUNT
++      unsigned int bkpt;
++      const struct exception_table_entry *entry;
++
++      if (reason & REASON_ILLEGAL) {
++              /* Check if PaX bad instruction */
++              if (!probe_kernel_address(regs->nip, bkpt) && bkpt == 0xc00b00) {
++                      current->thread.trap_nr = 0;
++                      pax_report_refcount_overflow(regs);
++                      /* fixup_exception() for PowerPC does not exist, simulate its job */
++                      if ((entry = search_exception_tables(regs->nip)) != NULL) {
++                              regs->nip = entry->fixup;
++                              return;
++                      }
++                      /* fixup_exception() could not handle */
++                      goto bail;
++              }
++      }
++#endif
++
+       /* We can now get here via a FP Unavailable exception if the core
+        * has no FPU, in that case the reason flags will be 0 */
 diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
-index ce74c33..0803371 100644
+index f174351..5722009 100644
 --- a/arch/powerpc/kernel/vdso.c
 +++ b/arch/powerpc/kernel/vdso.c
 @@ -35,6 +35,7 @@
@@ -8854,10 +9188,10 @@ index ce74c33..0803371 100644
                rc = vdso_base;
                goto fail_mmapsem;
 diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
-index 3cf541a..ab2d825 100644
+index c1f8f53..71a3b96 100644
 --- a/arch/powerpc/kvm/powerpc.c
 +++ b/arch/powerpc/kvm/powerpc.c
-@@ -1153,7 +1153,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param)
+@@ -1409,7 +1409,7 @@ void kvmppc_init_lpid(unsigned long nr_lpids_param)
  }
  EXPORT_SYMBOL_GPL(kvmppc_init_lpid);
  
@@ -8902,13 +9236,13 @@ index 5eea6f3..5d10396 100644
  EXPORT_SYMBOL(copy_in_user);
  
 diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
-index 51ab9e7..7d3c78b 100644
+index 08d659a..ab329f4 100644
 --- a/arch/powerpc/mm/fault.c
 +++ b/arch/powerpc/mm/fault.c
 @@ -33,6 +33,10 @@
- #include <linux/magic.h>
  #include <linux/ratelimit.h>
  #include <linux/context_tracking.h>
+ #include <linux/hugetlb.h>
 +#include <linux/slab.h>
 +#include <linux/pagemap.h>
 +#include <linux/compiler.h>
@@ -8950,7 +9284,7 @@ index 51ab9e7..7d3c78b 100644
  /*
   * Check whether the instruction at regs->nip is a store using
   * an update addressing form which will update r1.
-@@ -216,7 +247,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
+@@ -228,7 +259,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
         * indicate errors in DSISR but can validly be set in SRR1.
         */
        if (trap == 0x400)
@@ -8959,7 +9293,7 @@ index 51ab9e7..7d3c78b 100644
        else
                is_write = error_code & DSISR_ISSTORE;
  #else
-@@ -378,7 +409,7 @@ good_area:
+@@ -390,7 +421,7 @@ good_area:
           * "undefined".  Of those that can be set, this is the only
           * one which seems bad.
           */
@@ -8968,7 +9302,7 @@ index 51ab9e7..7d3c78b 100644
                  /* Guarded storage error. */
                goto bad_area;
  #endif /* CONFIG_8xx */
-@@ -393,7 +424,7 @@ good_area:
+@@ -405,7 +436,7 @@ good_area:
                 * processors use the same I/D cache coherency mechanism
                 * as embedded.
                 */
@@ -8977,7 +9311,7 @@ index 51ab9e7..7d3c78b 100644
                        goto bad_area;
  #endif /* CONFIG_PPC_STD_MMU */
  
-@@ -483,6 +514,23 @@ bad_area:
+@@ -495,6 +526,23 @@ bad_area:
  bad_area_nosemaphore:
        /* User mode accesses cause a SIGSEGV */
        if (user_mode(regs)) {
@@ -9063,10 +9397,10 @@ index cb8bdbe..cde4bc7 100644
        }
  }
 diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
-index b0c75cc..ef7fb93 100644
+index ded0ea1..f213a9b 100644
 --- a/arch/powerpc/mm/slice.c
 +++ b/arch/powerpc/mm/slice.c
-@@ -103,7 +103,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
+@@ -105,7 +105,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
        if ((mm->task_size - len) < addr)
                return 0;
        vma = find_vma(mm, addr);
@@ -9116,7 +9450,7 @@ index 4278acf..67fd0e6 100644
  
  static void pciex_clear_intr_all(unsigned int __iomem *base)
 diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
-index 9098692..3d54cd1 100644
+index d966bbe..372124a 100644
 --- a/arch/powerpc/platforms/cell/spufs/file.c
 +++ b/arch/powerpc/platforms/cell/spufs/file.c
 @@ -280,9 +280,9 @@ spufs_mem_mmap_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
@@ -9132,10 +9466,10 @@ index 9098692..3d54cd1 100644
        struct spu_context *ctx = vma->vm_file->private_data;
        unsigned long offset = address - vma->vm_start;
 diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h
-index 1d47061..0714963 100644
+index fa934fe..c296056 100644
 --- a/arch/s390/include/asm/atomic.h
 +++ b/arch/s390/include/asm/atomic.h
-@@ -412,6 +412,16 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v)
+@@ -412,4 +412,14 @@ static inline long long atomic64_dec_if_positive(atomic64_t *v)
  #define atomic64_dec_and_test(_v)     (atomic64_sub_return(1, _v) == 0)
  #define atomic64_inc_not_zero(v)      atomic64_add_unless((v), 1, 0)
  
@@ -9149,14 +9483,12 @@ index 1d47061..0714963 100644
 +#define atomic64_dec_unchecked(v)             atomic64_dec(v)
 +#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
 +
- #define smp_mb__before_atomic_dec()   smp_mb()
- #define smp_mb__after_atomic_dec()    smp_mb()
- #define smp_mb__before_atomic_inc()   smp_mb()
+ #endif /* __ARCH_S390_ATOMIC__  */
 diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
-index 578680f..0eb3b11 100644
+index b5dce65..8aca09a 100644
 --- a/arch/s390/include/asm/barrier.h
 +++ b/arch/s390/include/asm/barrier.h
-@@ -36,7 +36,7 @@
+@@ -39,7 +39,7 @@
  do {                                                                  \
        compiletime_assert_atomic_type(*p);                             \
        barrier();                                                      \
@@ -9182,10 +9514,10 @@ index 4d7ccac..d03d0ad 100644
  
  #define __read_mostly __attribute__((__section__(".data..read_mostly")))
 diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
-index 78f4f87..598ce39 100644
+index f6e43d3..5f57681 100644
 --- a/arch/s390/include/asm/elf.h
 +++ b/arch/s390/include/asm/elf.h
-@@ -162,8 +162,14 @@ extern unsigned int vdso_enabled;
+@@ -163,8 +163,14 @@ extern unsigned int vdso_enabled;
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
  
@@ -9202,14 +9534,14 @@ index 78f4f87..598ce39 100644
  
  /* This yields a mask that user programs can use to figure out what
     instruction set this CPU supports. */
-@@ -222,9 +228,6 @@ struct linux_binprm;
+@@ -223,9 +229,6 @@ struct linux_binprm;
  #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
  int arch_setup_additional_pages(struct linux_binprm *, int);
  
 -extern unsigned long arch_randomize_brk(struct mm_struct *mm);
 -#define arch_randomize_brk arch_randomize_brk
 -
- void *fill_cpu_elf_notes(void *ptr, struct save_area *sa);
+ void *fill_cpu_elf_notes(void *ptr, struct save_area *sa, __vector128 *vxrs);
  
  #endif
 diff --git a/arch/s390/include/asm/exec.h b/arch/s390/include/asm/exec.h
@@ -9225,7 +9557,7 @@ index c4a93d6..4d2a9b4 100644
  
  #endif /* __ASM_EXEC_H */
 diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h
-index 1be64a1..086839d1 100644
+index cd4c68e..6764641 100644
 --- a/arch/s390/include/asm/uaccess.h
 +++ b/arch/s390/include/asm/uaccess.h
 @@ -59,6 +59,7 @@ static inline int __range_ok(unsigned long addr, unsigned long size)
@@ -9236,7 +9568,7 @@ index 1be64a1..086839d1 100644
  #define access_ok(type, addr, size) __access_ok(addr, size)
  
  /*
-@@ -245,6 +246,10 @@ static inline unsigned long __must_check
+@@ -275,6 +276,10 @@ static inline unsigned long __must_check
  copy_to_user(void __user *to, const void *from, unsigned long n)
  {
        might_fault();
@@ -9247,7 +9579,7 @@ index 1be64a1..086839d1 100644
        return __copy_to_user(to, from, n);
  }
  
-@@ -273,10 +278,14 @@ __compiletime_warning("copy_from_user() buffer size is not provably correct")
+@@ -303,10 +308,14 @@ __compiletime_warning("copy_from_user() buffer size is not provably correct")
  static inline unsigned long __must_check
  copy_from_user(void *to, const void __user *from, unsigned long n)
  {
@@ -9340,10 +9672,10 @@ index b89b591..fd9609d 100644
                if (r_type == R_390_GOTPC)
                        rc = apply_rela_bits(loc, val, 1, 32, 0);
 diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
-index dd14532..1dfc145 100644
+index ed84cc2..c05a9d2 100644
 --- a/arch/s390/kernel/process.c
 +++ b/arch/s390/kernel/process.c
-@@ -242,37 +242,3 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -218,37 +218,3 @@ unsigned long get_wchan(struct task_struct *p)
        }
        return 0;
  }
@@ -9569,21 +9901,21 @@ index 6777177..cb5e44f 100644
                addr = vm_unmapped_area(&info);
        }
 diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h
-index be56a24..443328f 100644
+index 4082749..fd97781 100644
 --- a/arch/sparc/include/asm/atomic_64.h
 +++ b/arch/sparc/include/asm/atomic_64.h
-@@ -14,18 +14,40 @@
+@@ -15,18 +15,38 @@
  #define ATOMIC64_INIT(i)      { (i) }
  
- #define atomic_read(v)                (*(volatile int *)&(v)->counter)
+ #define atomic_read(v)                ACCESS_ONCE((v)->counter)
 +static inline int atomic_read_unchecked(const atomic_unchecked_t *v)
 +{
-+      return v->counter;
++      return ACCESS_ONCE(v->counter);
 +}
- #define atomic64_read(v)      (*(volatile long *)&(v)->counter)
+ #define atomic64_read(v)      ACCESS_ONCE((v)->counter)
 +static inline long atomic64_read_unchecked(const atomic64_unchecked_t *v)
 +{
-+      return v->counter;
++      return ACCESS_ONCE(v->counter);
 +}
  
  #define atomic_set(v, i)      (((v)->counter) = i)
@@ -9597,53 +9929,51 @@ index be56a24..443328f 100644
 +      v->counter = i;
 +}
  
- extern void atomic_add(int, atomic_t *);
-+extern void atomic_add_unchecked(int, atomic_unchecked_t *);
- extern void atomic64_add(long, atomic64_t *);
-+extern void atomic64_add_unchecked(long, atomic64_unchecked_t *);
- extern void atomic_sub(int, atomic_t *);
-+extern void atomic_sub_unchecked(int, atomic_unchecked_t *);
- extern void atomic64_sub(long, atomic64_t *);
-+extern void atomic64_sub_unchecked(long, atomic64_unchecked_t *);
+-#define ATOMIC_OP(op)                                                 \
+-void atomic_##op(int, atomic_t *);                                    \
+-void atomic64_##op(long, atomic64_t *);
++#define __ATOMIC_OP(op, suffix)                                               \
++void atomic_##op##suffix(int, atomic##suffix##_t *);                  \
++void atomic64_##op##suffix(long, atomic64##suffix##_t *);
  
- extern int atomic_add_ret(int, atomic_t *);
-+extern int atomic_add_ret_unchecked(int, atomic_unchecked_t *);
- extern long atomic64_add_ret(long, atomic64_t *);
-+extern long atomic64_add_ret_unchecked(long, atomic64_unchecked_t *);
- extern int atomic_sub_ret(int, atomic_t *);
- extern long atomic64_sub_ret(long, atomic64_t *);
+-#define ATOMIC_OP_RETURN(op)                                          \
+-int atomic_##op##_return(int, atomic_t *);                            \
+-long atomic64_##op##_return(long, atomic64_t *);
++#define ATOMIC_OP(op) __ATOMIC_OP(op, ) __ATOMIC_OP(op, _unchecked)
++
++#define __ATOMIC_OP_RETURN(op, suffix)                                        \
++int atomic_##op##_return##suffix(int, atomic##suffix##_t *);          \
++long atomic64_##op##_return##suffix(long, atomic64##suffix##_t *);
++
++#define ATOMIC_OP_RETURN(op) __ATOMIC_OP_RETURN(op, ) __ATOMIC_OP_RETURN(op, _unchecked)
  
-@@ -33,13 +55,29 @@ extern long atomic64_sub_ret(long, atomic64_t *);
- #define atomic64_dec_return(v) atomic64_sub_ret(1, v)
+ #define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op)
  
- #define atomic_inc_return(v) atomic_add_ret(1, v)
-+static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
-+{
-+      return atomic_add_ret_unchecked(1, v);
-+}
- #define atomic64_inc_return(v) atomic64_add_ret(1, v)
-+static inline long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
-+{
-+      return atomic64_add_ret_unchecked(1, v);
-+}
+@@ -35,13 +55,23 @@ ATOMIC_OPS(sub)
  
- #define atomic_sub_return(i, v) atomic_sub_ret(i, v)
- #define atomic64_sub_return(i, v) atomic64_sub_ret(i, v)
+ #undef ATOMIC_OPS
+ #undef ATOMIC_OP_RETURN
++#undef __ATOMIC_OP_RETURN
+ #undef ATOMIC_OP
++#undef __ATOMIC_OP
  
- #define atomic_add_return(i, v) atomic_add_ret(i, v)
-+static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
+ #define atomic_dec_return(v)   atomic_sub_return(1, v)
+ #define atomic64_dec_return(v) atomic64_sub_return(1, v)
+ #define atomic_inc_return(v)   atomic_add_return(1, v)
++static inline int atomic_inc_return_unchecked(atomic_unchecked_t *v)
 +{
-+      return atomic_add_ret_unchecked(i, v);
++      return atomic_add_return_unchecked(1, v);
 +}
- #define atomic64_add_return(i, v) atomic64_add_ret(i, v)
-+static inline long atomic64_add_return_unchecked(long i, atomic64_unchecked_t *v)
+ #define atomic64_inc_return(v) atomic64_add_return(1, v)
++static inline long atomic64_inc_return_unchecked(atomic64_unchecked_t *v)
 +{
-+      return atomic64_add_ret_unchecked(i, v);
++      return atomic64_add_return_unchecked(1, v);
 +}
  
  /*
   * atomic_inc_and_test - increment and test
-@@ -50,6 +88,10 @@ extern long atomic64_sub_ret(long, atomic64_t *);
+@@ -52,6 +82,10 @@ ATOMIC_OPS(sub)
   * other cases.
   */
  #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
@@ -9653,9 +9983,9 @@ index be56a24..443328f 100644
 +}
  #define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
  
- #define atomic_sub_and_test(i, v) (atomic_sub_ret(i, v) == 0)
-@@ -59,25 +101,60 @@ extern long atomic64_sub_ret(long, atomic64_t *);
- #define atomic64_dec_and_test(v) (atomic64_sub_ret(1, v) == 0)
+ #define atomic_sub_and_test(i, v) (atomic_sub_return(i, v) == 0)
+@@ -61,25 +95,60 @@ ATOMIC_OPS(sub)
+ #define atomic64_dec_and_test(v) (atomic64_sub_return(1, v) == 0)
  
  #define atomic_inc(v) atomic_add(1, v)
 +static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
@@ -9679,8 +10009,8 @@ index be56a24..443328f 100644
 +      atomic64_sub_unchecked(1, v);
 +}
  
- #define atomic_add_negative(i, v) (atomic_add_ret(i, v) < 0)
- #define atomic64_add_negative(i, v) (atomic64_add_ret(i, v) < 0)
+ #define atomic_add_negative(i, v) (atomic_add_return(i, v) < 0)
+ #define atomic64_add_negative(i, v) (atomic64_add_return(i, v) < 0)
  
  #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
 +static inline int atomic_cmpxchg_unchecked(atomic_unchecked_t *v, int old, int new)
@@ -9718,7 +10048,7 @@ index be56a24..443328f 100644
                if (likely(old == c))
                        break;
                c = old;
-@@ -88,20 +165,35 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -90,20 +159,35 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
  #define atomic64_cmpxchg(v, o, n) \
        ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n)))
  #define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
@@ -9759,7 +10089,7 @@ index be56a24..443328f 100644
  
  #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
 diff --git a/arch/sparc/include/asm/barrier_64.h b/arch/sparc/include/asm/barrier_64.h
-index b5aad96..99d7465 100644
+index 305dcc3..7835030 100644
 --- a/arch/sparc/include/asm/barrier_64.h
 +++ b/arch/sparc/include/asm/barrier_64.h
 @@ -57,7 +57,7 @@ do { __asm__ __volatile__("ba,pt     %%xcc, 1f\n\t" \
@@ -9826,10 +10156,10 @@ index 370ca1e..d4f4a98 100644
  #define ELF_HWCAP     sparc64_elf_hwcap
  
 diff --git a/arch/sparc/include/asm/pgalloc_32.h b/arch/sparc/include/asm/pgalloc_32.h
-index 9b1c36d..209298b 100644
+index a3890da..f6a408e 100644
 --- a/arch/sparc/include/asm/pgalloc_32.h
 +++ b/arch/sparc/include/asm/pgalloc_32.h
-@@ -33,6 +33,7 @@ static inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp)
+@@ -35,6 +35,7 @@ static inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp)
  }
  
  #define pgd_populate(MM, PGD, PMD)      pgd_set(PGD, PMD)
@@ -9838,16 +10168,24 @@ index 9b1c36d..209298b 100644
  static inline pmd_t *pmd_alloc_one(struct mm_struct *mm,
                                   unsigned long address)
 diff --git a/arch/sparc/include/asm/pgalloc_64.h b/arch/sparc/include/asm/pgalloc_64.h
-index bcfe063..b333142 100644
+index 5e31871..13469c6 100644
 --- a/arch/sparc/include/asm/pgalloc_64.h
 +++ b/arch/sparc/include/asm/pgalloc_64.h
-@@ -26,6 +26,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
+@@ -21,6 +21,7 @@ static inline void __pgd_populate(pgd_t *pgd, pud_t *pud)
  }
  
- #define pud_populate(MM, PUD, PMD)    pud_set(PUD, PMD)
+ #define pgd_populate(MM, PGD, PUD)    __pgd_populate(PGD, PUD)
++#define pgd_populate_kernel(MM, PGD, PMD)     pgd_populate((MM), (PGD), (PMD))
+ static inline pgd_t *pgd_alloc(struct mm_struct *mm)
+ {
+@@ -38,6 +39,7 @@ static inline void __pud_populate(pud_t *pud, pmd_t *pmd)
+ }
+ #define pud_populate(MM, PUD, PMD)    __pud_populate(PUD, PMD)
 +#define pud_populate_kernel(MM, PUD, PMD)     pud_populate((MM), (PUD), (PMD))
  
- static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
+ static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
  {
 diff --git a/arch/sparc/include/asm/pgtable.h b/arch/sparc/include/asm/pgtable.h
 index 59ba6f6..4518128 100644
@@ -9863,10 +10201,10 @@ index 59ba6f6..4518128 100644
 +
  #endif
 diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h
-index 502f632..da1917f 100644
+index b9b91ae..950b91e 100644
 --- a/arch/sparc/include/asm/pgtable_32.h
 +++ b/arch/sparc/include/asm/pgtable_32.h
-@@ -50,6 +50,9 @@ extern unsigned long calc_highpages(void);
+@@ -51,6 +51,9 @@ unsigned long __init bootmem_init(unsigned long *pages_avail);
  #define PAGE_SHARED   SRMMU_PAGE_SHARED
  #define PAGE_COPY     SRMMU_PAGE_COPY
  #define PAGE_READONLY SRMMU_PAGE_RDONLY
@@ -9876,7 +10214,7 @@ index 502f632..da1917f 100644
  #define PAGE_KERNEL   SRMMU_PAGE_KERNEL
  
  /* Top-level page directory - dummy used by init-mm.
-@@ -62,18 +65,18 @@ extern unsigned long ptr_in_current_pgd;
+@@ -63,18 +66,18 @@ extern unsigned long ptr_in_current_pgd;
  
  /*         xwr */
  #define __P000  PAGE_NONE
@@ -9917,6 +10255,21 @@ index 79da178..c2eede8 100644
  #define SRMMU_PAGE_KERNEL  __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \
                                    SRMMU_DIRTY | SRMMU_REF)
  
+diff --git a/arch/sparc/include/asm/setup.h b/arch/sparc/include/asm/setup.h
+index 29d64b1..4272fe8 100644
+--- a/arch/sparc/include/asm/setup.h
++++ b/arch/sparc/include/asm/setup.h
+@@ -55,8 +55,8 @@ int handle_ldf_stq(u32 insn, struct pt_regs *regs);
+ void handle_ld_nf(u32 insn, struct pt_regs *regs);
+ /* init_64.c */
+-extern atomic_t dcpage_flushes;
+-extern atomic_t dcpage_flushes_xcall;
++extern atomic_unchecked_t dcpage_flushes;
++extern atomic_unchecked_t dcpage_flushes_xcall;
+ extern int sysctl_tsb_ratio;
+ #endif
 diff --git a/arch/sparc/include/asm/spinlock_64.h b/arch/sparc/include/asm/spinlock_64.h
 index 9689176..63c18ea 100644
 --- a/arch/sparc/include/asm/spinlock_64.h
@@ -10019,7 +10372,7 @@ index 9689176..63c18ea 100644
        unsigned long mask, tmp1, tmp2, result;
  
 diff --git a/arch/sparc/include/asm/thread_info_32.h b/arch/sparc/include/asm/thread_info_32.h
-index 96efa7a..16858bf 100644
+index 025c984..a216504 100644
 --- a/arch/sparc/include/asm/thread_info_32.h
 +++ b/arch/sparc/include/asm/thread_info_32.h
 @@ -49,6 +49,8 @@ struct thread_info {
@@ -10032,7 +10385,7 @@ index 96efa7a..16858bf 100644
  
  /*
 diff --git a/arch/sparc/include/asm/thread_info_64.h b/arch/sparc/include/asm/thread_info_64.h
-index a5f01ac..703b554 100644
+index 798f027..b009941 100644
 --- a/arch/sparc/include/asm/thread_info_64.h
 +++ b/arch/sparc/include/asm/thread_info_64.h
 @@ -63,6 +63,8 @@ struct thread_info {
@@ -10041,10 +10394,10 @@ index a5f01ac..703b554 100644
  
 +      unsigned long           lowest_stack;
 +
-       unsigned long           fpregs[0] __attribute__ ((aligned(64)));
+       unsigned long           fpregs[(7 * 256) / sizeof(unsigned long)]
+               __attribute__ ((aligned(64)));
  };
-@@ -188,12 +190,13 @@ register struct thread_info *current_thread_info_reg asm("g6");
+@@ -190,12 +192,13 @@ register struct thread_info *current_thread_info_reg asm("g6");
  #define TIF_NEED_RESCHED      3       /* rescheduling necessary */
  /* flag bit 4 is available */
  #define TIF_UNALIGNED         5       /* allowed to do unaligned accesses */
@@ -10059,7 +10412,7 @@ index a5f01ac..703b554 100644
  /* NOTE: Thread flags >= 12 should be ones we have no interest
   *       in using in assembly, else we can't use the mask as
   *       an immediate value in instructions such as andcc.
-@@ -213,12 +216,18 @@ register struct thread_info *current_thread_info_reg asm("g6");
+@@ -215,12 +218,17 @@ register struct thread_info *current_thread_info_reg asm("g6");
  #define _TIF_SYSCALL_AUDIT    (1<<TIF_SYSCALL_AUDIT)
  #define _TIF_SYSCALL_TRACEPOINT       (1<<TIF_SYSCALL_TRACEPOINT)
  #define _TIF_POLLING_NRFLAG   (1<<TIF_POLLING_NRFLAG)
@@ -10074,12 +10427,11 @@ index a5f01ac..703b554 100644
 +      (_TIF_SYSCALL_TRACE | _TIF_SECCOMP | _TIF_SYSCALL_AUDIT | \
 +       _TIF_SYSCALL_TRACEPOINT | _TIF_NOHZ | _TIF_GRSEC_SETXID)
 +
-+
+ #define is_32bit_task()       (test_thread_flag(TIF_32BIT))
  /*
-  * Thread-synchronous status.
-  *
 diff --git a/arch/sparc/include/asm/uaccess.h b/arch/sparc/include/asm/uaccess.h
-index 0167d26..767bb0c 100644
+index bd56c28..4b63d83 100644
 --- a/arch/sparc/include/asm/uaccess.h
 +++ b/arch/sparc/include/asm/uaccess.h
 @@ -1,5 +1,6 @@
@@ -10090,10 +10442,10 @@ index 0167d26..767bb0c 100644
  #include <asm/uaccess_64.h>
  #else
 diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h
-index 53a28dd..50c38c3 100644
+index 9634d08..f55fe4f 100644
 --- a/arch/sparc/include/asm/uaccess_32.h
 +++ b/arch/sparc/include/asm/uaccess_32.h
-@@ -250,27 +250,46 @@ extern unsigned long __copy_user(void __user *to, const void __user *from, unsig
+@@ -250,27 +250,46 @@ unsigned long __copy_user(void __user *to, const void __user *from, unsigned lon
  
  static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
  {
@@ -10145,7 +10497,7 @@ index 53a28dd..50c38c3 100644
  }
  
 diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
-index ad7e178..c9e7423 100644
+index c990a5e..f17b9c1 100644
 --- a/arch/sparc/include/asm/uaccess_64.h
 +++ b/arch/sparc/include/asm/uaccess_64.h
 @@ -10,6 +10,7 @@
@@ -10156,7 +10508,7 @@ index ad7e178..c9e7423 100644
  #include <asm/asi.h>
  #include <asm/spitfire.h>
  #include <asm-generic/uaccess-unaligned.h>
-@@ -214,8 +215,15 @@ extern unsigned long copy_from_user_fixup(void *to, const void __user *from,
+@@ -214,8 +215,15 @@ unsigned long copy_from_user_fixup(void *to, const void __user *from,
  static inline unsigned long __must_check
  copy_from_user(void *to, const void __user *from, unsigned long size)
  {
@@ -10173,7 +10525,7 @@ index ad7e178..c9e7423 100644
        if (unlikely(ret))
                ret = copy_from_user_fixup(to, from, size);
  
-@@ -231,8 +239,15 @@ extern unsigned long copy_to_user_fixup(void __user *to, const void *from,
+@@ -231,8 +239,15 @@ unsigned long copy_to_user_fixup(void __user *to, const void *from,
  static inline unsigned long __must_check
  copy_to_user(void __user *to, const void *from, unsigned long size)
  {
@@ -10191,7 +10543,7 @@ index ad7e178..c9e7423 100644
                ret = copy_to_user_fixup(to, from, size);
        return ret;
 diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile
-index d15cc17..d0ae796 100644
+index 7cf9c6e..6206648 100644
 --- a/arch/sparc/kernel/Makefile
 +++ b/arch/sparc/kernel/Makefile
 @@ -4,7 +4,7 @@
@@ -10204,10 +10556,10 @@ index d15cc17..d0ae796 100644
  extra-y     := head_$(BITS).o
  
 diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
-index 510baec..9ff2607 100644
+index 50e7b62..79fae35 100644
 --- a/arch/sparc/kernel/process_32.c
 +++ b/arch/sparc/kernel/process_32.c
-@@ -115,14 +115,14 @@ void show_regs(struct pt_regs *r)
+@@ -123,14 +123,14 @@ void show_regs(struct pt_regs *r)
  
          printk("PSR: %08lx PC: %08lx NPC: %08lx Y: %08lx    %s\n",
               r->psr, r->pc, r->npc, r->y, print_tainted());
@@ -10224,7 +10576,7 @@ index 510baec..9ff2607 100644
  
        printk("%%L: %08lx %08lx  %08lx %08lx  %08lx %08lx  %08lx %08lx\n",
               rw->locals[0], rw->locals[1], rw->locals[2], rw->locals[3],
-@@ -159,7 +159,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
+@@ -167,7 +167,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
                rw = (struct reg_window32 *) fp;
                pc = rw->ins[7];
                printk("[%08lx : ", pc);
@@ -10234,7 +10586,7 @@ index 510baec..9ff2607 100644
        } while (++count < 16);
        printk("\n");
 diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
-index d7b4967..2edf827 100644
+index 0be7bf9..2b1cba8 100644
 --- a/arch/sparc/kernel/process_64.c
 +++ b/arch/sparc/kernel/process_64.c
 @@ -161,7 +161,7 @@ static void show_regwindow(struct pt_regs *regs)
@@ -10264,7 +10616,7 @@ index d7b4967..2edf827 100644
        show_regwindow(regs);
        show_stack(current, (unsigned long *) regs->u_regs[UREG_FP]);
  }
-@@ -272,7 +272,7 @@ void arch_trigger_all_cpu_backtrace(void)
+@@ -278,7 +278,7 @@ void arch_trigger_all_cpu_backtrace(bool include_self)
                       ((tp && tp->task) ? tp->task->pid : -1));
  
                if (gp->tstate & TSTATE_PRIV) {
@@ -10287,7 +10639,7 @@ index 79cc0d1..ec62734 100644
        .getproplen = prom_getproplen,
        .getproperty = prom_getproperty,
 diff --git a/arch/sparc/kernel/ptrace_64.c b/arch/sparc/kernel/ptrace_64.c
-index c13c9f2..d572c34 100644
+index 9ddc492..27a5619 100644
 --- a/arch/sparc/kernel/ptrace_64.c
 +++ b/arch/sparc/kernel/ptrace_64.c
 @@ -1060,6 +1060,10 @@ long arch_ptrace(struct task_struct *child, long request,
@@ -10313,7 +10665,7 @@ index c13c9f2..d572c34 100644
        if (test_thread_flag(TIF_SYSCALL_TRACE))
                ret = tracehook_report_syscall_entry(regs);
  
-@@ -1093,6 +1102,11 @@ asmlinkage void syscall_trace_leave(struct pt_regs *regs)
+@@ -1088,6 +1097,11 @@ asmlinkage void syscall_trace_leave(struct pt_regs *regs)
        if (test_thread_flag(TIF_NOHZ))
                user_exit();
  
@@ -10326,21 +10678,10 @@ index c13c9f2..d572c34 100644
  
        if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
 diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
-index 745a363..b5566b1 100644
+index da6f1a7..e5dea8f 100644
 --- a/arch/sparc/kernel/smp_64.c
 +++ b/arch/sparc/kernel/smp_64.c
-@@ -868,8 +868,8 @@ extern unsigned long xcall_flush_dcache_page_cheetah;
- extern unsigned long xcall_flush_dcache_page_spitfire;
- #ifdef CONFIG_DEBUG_DCFLUSH
--extern atomic_t dcpage_flushes;
--extern atomic_t dcpage_flushes_xcall;
-+extern atomic_unchecked_t dcpage_flushes;
-+extern atomic_unchecked_t dcpage_flushes_xcall;
- #endif
- static inline void __local_flush_dcache_page(struct page *page)
-@@ -893,7 +893,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
+@@ -887,7 +887,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
                return;
  
  #ifdef CONFIG_DEBUG_DCFLUSH
@@ -10349,7 +10690,7 @@ index 745a363..b5566b1 100644
  #endif
  
        this_cpu = get_cpu();
-@@ -917,7 +917,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
+@@ -911,7 +911,7 @@ void smp_flush_dcache_page_impl(struct page *page, int cpu)
                        xcall_deliver(data0, __pa(pg_addr),
                                      (u64) pg_addr, cpumask_of(cpu));
  #ifdef CONFIG_DEBUG_DCFLUSH
@@ -10358,7 +10699,7 @@ index 745a363..b5566b1 100644
  #endif
                }
        }
-@@ -936,7 +936,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
+@@ -930,7 +930,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
        preempt_disable();
  
  #ifdef CONFIG_DEBUG_DCFLUSH
@@ -10367,7 +10708,7 @@ index 745a363..b5566b1 100644
  #endif
        data0 = 0;
        pg_addr = page_address(page);
-@@ -953,7 +953,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
+@@ -947,7 +947,7 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
                xcall_deliver(data0, __pa(pg_addr),
                              (u64) pg_addr, cpu_online_mask);
  #ifdef CONFIG_DEBUG_DCFLUSH
@@ -10377,10 +10718,10 @@ index 745a363..b5566b1 100644
        }
        __local_flush_dcache_page(page);
 diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c
-index 3a8d184..49498a8 100644
+index 646988d..b88905f 100644
 --- a/arch/sparc/kernel/sys_sparc_32.c
 +++ b/arch/sparc/kernel/sys_sparc_32.c
-@@ -52,7 +52,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
+@@ -54,7 +54,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
        if (len > TASK_SIZE - PAGE_SIZE)
                return -ENOMEM;
        if (!addr)
@@ -10390,10 +10731,10 @@ index 3a8d184..49498a8 100644
        info.flags = 0;
        info.length = len;
 diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
-index beb0b5a..5a153f7 100644
+index c85403d..6af95c9 100644
 --- a/arch/sparc/kernel/sys_sparc_64.c
 +++ b/arch/sparc/kernel/sys_sparc_64.c
-@@ -88,13 +88,14 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
+@@ -89,13 +89,14 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
        struct vm_area_struct * vma;
        unsigned long task_size = TASK_SIZE;
        int do_color_align;
@@ -10409,7 +10750,7 @@ index beb0b5a..5a153f7 100644
                    ((addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1)))
                        return -EINVAL;
                return addr;
-@@ -109,6 +110,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
+@@ -110,6 +111,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
        if (filp || (flags & MAP_SHARED))
                do_color_align = 1;
  
@@ -10420,7 +10761,7 @@ index beb0b5a..5a153f7 100644
        if (addr) {
                if (do_color_align)
                        addr = COLOR_ALIGN(addr, pgoff);
-@@ -116,22 +121,28 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
+@@ -117,22 +122,28 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
                        addr = PAGE_ALIGN(addr);
  
                vma = find_vma(mm, addr);
@@ -10452,7 +10793,7 @@ index beb0b5a..5a153f7 100644
                info.high_limit = task_size;
                addr = vm_unmapped_area(&info);
        }
-@@ -149,6 +160,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -150,6 +161,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        unsigned long task_size = STACK_TOP32;
        unsigned long addr = addr0;
        int do_color_align;
@@ -10460,7 +10801,7 @@ index beb0b5a..5a153f7 100644
        struct vm_unmapped_area_info info;
  
        /* This should only ever run for 32-bit processes.  */
-@@ -158,7 +170,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -159,7 +171,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                /* We do not accept a shared mapping if it would violate
                 * cache aliasing constraints.
                 */
@@ -10469,7 +10810,7 @@ index beb0b5a..5a153f7 100644
                    ((addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1)))
                        return -EINVAL;
                return addr;
-@@ -171,6 +183,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -172,6 +184,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        if (filp || (flags & MAP_SHARED))
                do_color_align = 1;
  
@@ -10480,7 +10821,7 @@ index beb0b5a..5a153f7 100644
        /* requesting a specific address */
        if (addr) {
                if (do_color_align)
-@@ -179,8 +195,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -180,8 +196,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                        addr = PAGE_ALIGN(addr);
  
                vma = find_vma(mm, addr);
@@ -10490,7 +10831,7 @@ index beb0b5a..5a153f7 100644
                        return addr;
        }
  
-@@ -190,6 +205,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -191,6 +206,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        info.high_limit = mm->mmap_base;
        info.align_mask = do_color_align ? (PAGE_MASK & (SHMLBA - 1)) : 0;
        info.align_offset = pgoff << PAGE_SHIFT;
@@ -10498,7 +10839,7 @@ index beb0b5a..5a153f7 100644
        addr = vm_unmapped_area(&info);
  
        /*
-@@ -202,6 +218,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -203,6 +219,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                VM_BUG_ON(addr != -ENOMEM);
                info.flags = 0;
                info.low_limit = TASK_UNMAPPED_BASE;
@@ -10511,7 +10852,7 @@ index beb0b5a..5a153f7 100644
                info.high_limit = STACK_TOP32;
                addr = vm_unmapped_area(&info);
        }
-@@ -258,10 +280,14 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u
+@@ -259,10 +281,14 @@ unsigned long get_fb_unmapped_area(struct file *filp, unsigned long orig_addr, u
  EXPORT_SYMBOL(get_fb_unmapped_area);
  
  /* Essentially the same as PowerPC.  */
@@ -10527,7 +10868,7 @@ index beb0b5a..5a153f7 100644
        if (current->flags & PF_RANDOMIZE) {
                unsigned long val = get_random_int();
                if (test_thread_flag(TIF_32BIT))
-@@ -274,7 +300,7 @@ static unsigned long mmap_rnd(void)
+@@ -275,7 +301,7 @@ static unsigned long mmap_rnd(void)
  
  void arch_pick_mmap_layout(struct mm_struct *mm)
  {
@@ -10536,7 +10877,7 @@ index beb0b5a..5a153f7 100644
        unsigned long gap;
  
        /*
-@@ -287,6 +313,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
+@@ -288,6 +314,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
            gap == RLIM_INFINITY ||
            sysctl_legacy_va_layout) {
                mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
@@ -10549,7 +10890,7 @@ index beb0b5a..5a153f7 100644
                mm->get_unmapped_area = arch_get_unmapped_area;
        } else {
                /* We know it's 32-bit */
-@@ -298,6 +330,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
+@@ -299,6 +331,12 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
                        gap = (task_size / 6 * 5);
  
                mm->mmap_base = PAGE_ALIGN(task_size - gap - random_factor);
@@ -10603,7 +10944,7 @@ index 33a17e7..d87fb1f 100644
  
  2:
 diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c
-index 6629829..036032d 100644
+index 6fd386c5..6907d81 100644
 --- a/arch/sparc/kernel/traps_32.c
 +++ b/arch/sparc/kernel/traps_32.c
 @@ -44,6 +44,8 @@ static void instruction_dump(unsigned long *pc)
@@ -10612,10 +10953,10 @@ index 6629829..036032d 100644
  
 +extern void gr_handle_kernel_exploit(void);
 +
- void die_if_kernel(char *str, struct pt_regs *regs)
+ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
  {
        static int die_counter;
-@@ -76,15 +78,17 @@ void die_if_kernel(char *str, struct pt_regs *regs)
+@@ -76,15 +78,17 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
                      count++ < 30                              &&
                        (((unsigned long) rw) >= PAGE_OFFSET)   &&
                      !(((unsigned long) rw) & 0x7)) {
@@ -10636,10 +10977,10 @@ index 6629829..036032d 100644
  }
  
 diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c
-index 4ced92f..965eeed 100644
+index 981a769..d906eda 100644
 --- a/arch/sparc/kernel/traps_64.c
 +++ b/arch/sparc/kernel/traps_64.c
-@@ -77,7 +77,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p)
+@@ -79,7 +79,7 @@ static void dump_tl1_traplog(struct tl1_traplog *p)
                       i + 1,
                       p->trapstack[i].tstate, p->trapstack[i].tpc,
                       p->trapstack[i].tnpc, p->trapstack[i].tt);
@@ -10648,7 +10989,7 @@ index 4ced92f..965eeed 100644
        }
  }
  
-@@ -97,6 +97,12 @@ void bad_trap(struct pt_regs *regs, long lvl)
+@@ -99,6 +99,12 @@ void bad_trap(struct pt_regs *regs, long lvl)
  
        lvl -= 0x100;
        if (regs->tstate & TSTATE_PRIV) {
@@ -10661,7 +11002,7 @@ index 4ced92f..965eeed 100644
                sprintf(buffer, "Kernel bad sw trap %lx", lvl);
                die_if_kernel(buffer, regs);
        }
-@@ -115,11 +121,16 @@ void bad_trap(struct pt_regs *regs, long lvl)
+@@ -117,11 +123,16 @@ void bad_trap(struct pt_regs *regs, long lvl)
  void bad_trap_tl1(struct pt_regs *regs, long lvl)
  {
        char buffer[32];
@@ -10679,7 +11020,7 @@ index 4ced92f..965eeed 100644
        dump_tl1_traplog((struct tl1_traplog *)(regs + 1));
  
        sprintf (buffer, "Bad trap %lx at tl>0", lvl);
-@@ -1149,7 +1160,7 @@ static void cheetah_log_errors(struct pt_regs *regs, struct cheetah_err_info *in
+@@ -1151,7 +1162,7 @@ static void cheetah_log_errors(struct pt_regs *regs, struct cheetah_err_info *in
               regs->tpc, regs->tnpc, regs->u_regs[UREG_I7], regs->tstate);
        printk("%s" "ERROR(%d): ",
               (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id());
@@ -10688,7 +11029,7 @@ index 4ced92f..965eeed 100644
        printk("%s" "ERROR(%d): M_SYND(%lx),  E_SYND(%lx)%s%s\n",
               (recoverable ? KERN_WARNING : KERN_CRIT), smp_processor_id(),
               (afsr & CHAFSR_M_SYNDROME) >> CHAFSR_M_SYNDROME_SHIFT,
-@@ -1756,7 +1767,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
+@@ -1758,7 +1769,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
                       smp_processor_id(),
                       (type & 0x1) ? 'I' : 'D',
                       regs->tpc);
@@ -10697,7 +11038,7 @@ index 4ced92f..965eeed 100644
                panic("Irrecoverable Cheetah+ parity error.");
        }
  
-@@ -1764,7 +1775,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
+@@ -1766,7 +1777,7 @@ void cheetah_plus_parity_error(int type, struct pt_regs *regs)
               smp_processor_id(),
               (type & 0x1) ? 'I' : 'D',
               regs->tpc);
@@ -10706,7 +11047,7 @@ index 4ced92f..965eeed 100644
  }
  
  struct sun4v_error_entry {
-@@ -1837,8 +1848,8 @@ struct sun4v_error_entry {
+@@ -1839,8 +1850,8 @@ struct sun4v_error_entry {
  /*0x38*/u64           reserved_5;
  };
  
@@ -10717,7 +11058,7 @@ index 4ced92f..965eeed 100644
  
  static const char *sun4v_err_type_to_str(u8 type)
  {
-@@ -1930,7 +1941,7 @@ static void sun4v_report_real_raddr(const char *pfx, struct pt_regs *regs)
+@@ -1932,7 +1943,7 @@ static void sun4v_report_real_raddr(const char *pfx, struct pt_regs *regs)
  }
  
  static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent,
@@ -10726,7 +11067,7 @@ index 4ced92f..965eeed 100644
  {
        u64 *raw_ptr = (u64 *) ent;
        u32 attrs;
-@@ -1988,8 +1999,8 @@ static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent,
+@@ -1990,8 +2001,8 @@ static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent,
  
        show_regs(regs);
  
@@ -10737,7 +11078,7 @@ index 4ced92f..965eeed 100644
                wmb();
                printk("%s: Queue overflowed %d times.\n",
                       pfx, cnt);
-@@ -2046,7 +2057,7 @@ out:
+@@ -2048,7 +2059,7 @@ out:
   */
  void sun4v_resum_overflow(struct pt_regs *regs)
  {
@@ -10746,7 +11087,7 @@ index 4ced92f..965eeed 100644
  }
  
  /* We run with %pil set to PIL_NORMAL_MAX and PSTATE_IE enabled in %pstate.
-@@ -2099,7 +2110,7 @@ void sun4v_nonresum_overflow(struct pt_regs *regs)
+@@ -2101,7 +2112,7 @@ void sun4v_nonresum_overflow(struct pt_regs *regs)
        /* XXX Actually even this can make not that much sense.  Perhaps
         * XXX we should just pull the plug and panic directly from here?
         */
@@ -10754,8 +11095,8 @@ index 4ced92f..965eeed 100644
 +      atomic_inc_unchecked(&sun4v_nonresum_oflow_cnt);
  }
  
- unsigned long sun4v_err_itlb_vaddr;
-@@ -2114,9 +2125,9 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl)
+ static void sun4v_tlb_error(struct pt_regs *regs)
+@@ -2120,9 +2131,9 @@ void sun4v_itlb_error_report(struct pt_regs *regs, int tl)
  
        printk(KERN_EMERG "SUN4V-ITLB: Error at TPC[%lx], tl %d\n",
               regs->tpc, tl);
@@ -10767,7 +11108,7 @@ index 4ced92f..965eeed 100644
               (void *) regs->u_regs[UREG_I7]);
        printk(KERN_EMERG "SUN4V-ITLB: vaddr[%lx] ctx[%lx] "
               "pte[%lx] error[%lx]\n",
-@@ -2138,9 +2149,9 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl)
+@@ -2143,9 +2154,9 @@ void sun4v_dtlb_error_report(struct pt_regs *regs, int tl)
  
        printk(KERN_EMERG "SUN4V-DTLB: Error at TPC[%lx], tl %d\n",
               regs->tpc, tl);
@@ -10779,7 +11120,7 @@ index 4ced92f..965eeed 100644
               (void *) regs->u_regs[UREG_I7]);
        printk(KERN_EMERG "SUN4V-DTLB: vaddr[%lx] ctx[%lx] "
               "pte[%lx] error[%lx]\n",
-@@ -2359,13 +2370,13 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
+@@ -2362,13 +2373,13 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)
                        fp = (unsigned long)sf->fp + STACK_BIAS;
                }
  
@@ -10795,16 +11136,16 @@ index 4ced92f..965eeed 100644
                                graph++;
                        }
                }
-@@ -2383,6 +2394,8 @@ static inline struct reg_window *kernel_stack_up(struct reg_window *rw)
+@@ -2386,6 +2397,8 @@ static inline struct reg_window *kernel_stack_up(struct reg_window *rw)
        return (struct reg_window *) (fp + STACK_BIAS);
  }
  
 +extern void gr_handle_kernel_exploit(void);
 +
- void die_if_kernel(char *str, struct pt_regs *regs)
+ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
  {
        static int die_counter;
-@@ -2411,7 +2424,7 @@ void die_if_kernel(char *str, struct pt_regs *regs)
+@@ -2414,7 +2427,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
                while (rw &&
                       count++ < 30 &&
                       kstack_valid(tp, (unsigned long) rw)) {
@@ -10813,7 +11154,7 @@ index 4ced92f..965eeed 100644
                               (void *) rw->ins[7]);
  
                        rw = kernel_stack_up(rw);
-@@ -2424,8 +2437,10 @@ void die_if_kernel(char *str, struct pt_regs *regs)
+@@ -2427,8 +2440,10 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
                }
                user_instruction_dump ((unsigned int __user *) regs->tpc);
        }
@@ -10826,10 +11167,10 @@ index 4ced92f..965eeed 100644
  }
  EXPORT_SYMBOL(die_if_kernel);
 diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c
-index 35ab8b6..9046547 100644
+index 62098a8..547ab2c 100644
 --- a/arch/sparc/kernel/unaligned_64.c
 +++ b/arch/sparc/kernel/unaligned_64.c
-@@ -295,7 +295,7 @@ static void log_unaligned(struct pt_regs *regs)
+@@ -297,7 +297,7 @@ static void log_unaligned(struct pt_regs *regs)
        static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);
  
        if (__ratelimit(&ratelimit)) {
@@ -10839,7 +11180,7 @@ index 35ab8b6..9046547 100644
        }
  }
 diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile
-index dbe119b..089c7c1 100644
+index 3269b02..64f5231 100644
 --- a/arch/sparc/lib/Makefile
 +++ b/arch/sparc/lib/Makefile
 @@ -2,7 +2,7 @@
@@ -10852,242 +11193,150 @@ index dbe119b..089c7c1 100644
  lib-$(CONFIG_SPARC32) += ashrdi3.o
  lib-$(CONFIG_SPARC32) += memcpy.o memset.o
 diff --git a/arch/sparc/lib/atomic_64.S b/arch/sparc/lib/atomic_64.S
-index 85c233d..68500e0 100644
+index 05dac43..76f8ed4 100644
 --- a/arch/sparc/lib/atomic_64.S
 +++ b/arch/sparc/lib/atomic_64.S
-@@ -17,7 +17,12 @@
- ENTRY(atomic_add) /* %o0 = increment, %o1 = atomic_ptr */
-       BACKOFF_SETUP(%o2)
- 1:    lduw    [%o1], %g1
--      add     %g1, %o0, %g7
-+      addcc   %g1, %o0, %g7
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      tvs     %icc, 6
-+#endif
-+
-       cas     [%o1], %g1, %g7
-       cmp     %g1, %g7
-       bne,pn  %icc, BACKOFF_LABEL(2f, 1b)
-@@ -27,10 +32,28 @@ ENTRY(atomic_add) /* %o0 = increment, %o1 = atomic_ptr */
- 2:    BACKOFF_SPIN(%o2, %o3, 1b)
- ENDPROC(atomic_add)
-+ENTRY(atomic_add_unchecked) /* %o0 = increment, %o1 = atomic_ptr */
-+      BACKOFF_SETUP(%o2)
-+1:    lduw    [%o1], %g1
-+      add     %g1, %o0, %g7
-+      cas     [%o1], %g1, %g7
-+      cmp     %g1, %g7
-+      bne,pn  %icc, 2f
-+       nop
-+      retl
-+       nop
-+2:    BACKOFF_SPIN(%o2, %o3, 1b)
-+ENDPROC(atomic_add_unchecked)
-+
- ENTRY(atomic_sub) /* %o0 = decrement, %o1 = atomic_ptr */
-       BACKOFF_SETUP(%o2)
- 1:    lduw    [%o1], %g1
--      sub     %g1, %o0, %g7
-+      subcc   %g1, %o0, %g7
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      tvs     %icc, 6
-+#endif
-+
-       cas     [%o1], %g1, %g7
-       cmp     %g1, %g7
-       bne,pn  %icc, BACKOFF_LABEL(2f, 1b)
-@@ -40,10 +63,28 @@ ENTRY(atomic_sub) /* %o0 = decrement, %o1 = atomic_ptr */
- 2:    BACKOFF_SPIN(%o2, %o3, 1b)
- ENDPROC(atomic_sub)
-+ENTRY(atomic_sub_unchecked) /* %o0 = decrement, %o1 = atomic_ptr */
-+      BACKOFF_SETUP(%o2)
-+1:    lduw    [%o1], %g1
-+      sub     %g1, %o0, %g7
-+      cas     [%o1], %g1, %g7
-+      cmp     %g1, %g7
-+      bne,pn  %icc, 2f
-+       nop
-+      retl
-+       nop
-+2:    BACKOFF_SPIN(%o2, %o3, 1b)
-+ENDPROC(atomic_sub_unchecked)
-+
- ENTRY(atomic_add_ret) /* %o0 = increment, %o1 = atomic_ptr */
-       BACKOFF_SETUP(%o2)
- 1:    lduw    [%o1], %g1
--      add     %g1, %o0, %g7
-+      addcc   %g1, %o0, %g7
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      tvs     %icc, 6
-+#endif
-+
-       cas     [%o1], %g1, %g7
-       cmp     %g1, %g7
-       bne,pn  %icc, BACKOFF_LABEL(2f, 1b)
-@@ -53,10 +94,29 @@ ENTRY(atomic_add_ret) /* %o0 = increment, %o1 = atomic_ptr */
- 2:    BACKOFF_SPIN(%o2, %o3, 1b)
- ENDPROC(atomic_add_ret)
-+ENTRY(atomic_add_ret_unchecked) /* %o0 = increment, %o1 = atomic_ptr */
-+      BACKOFF_SETUP(%o2)
-+1:    lduw    [%o1], %g1
-+      addcc   %g1, %o0, %g7
-+      cas     [%o1], %g1, %g7
-+      cmp     %g1, %g7
-+      bne,pn  %icc, 2f
-+       add    %g7, %o0, %g7
-+      sra     %g7, 0, %o0
-+      retl
-+       nop
-+2:    BACKOFF_SPIN(%o2, %o3, 1b)
-+ENDPROC(atomic_add_ret_unchecked)
-+
- ENTRY(atomic_sub_ret) /* %o0 = decrement, %o1 = atomic_ptr */
-       BACKOFF_SETUP(%o2)
- 1:    lduw    [%o1], %g1
--      sub     %g1, %o0, %g7
-+      subcc   %g1, %o0, %g7
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      tvs     %icc, 6
-+#endif
-+
-       cas     [%o1], %g1, %g7
-       cmp     %g1, %g7
-       bne,pn  %icc, BACKOFF_LABEL(2f, 1b)
-@@ -69,7 +129,12 @@ ENDPROC(atomic_sub_ret)
- ENTRY(atomic64_add) /* %o0 = increment, %o1 = atomic_ptr */
-       BACKOFF_SETUP(%o2)
- 1:    ldx     [%o1], %g1
--      add     %g1, %o0, %g7
-+      addcc   %g1, %o0, %g7
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      tvs     %xcc, 6
-+#endif
-+
-       casx    [%o1], %g1, %g7
-       cmp     %g1, %g7
-       bne,pn  %xcc, BACKOFF_LABEL(2f, 1b)
-@@ -79,10 +144,28 @@ ENTRY(atomic64_add) /* %o0 = increment, %o1 = atomic_ptr */
- 2:    BACKOFF_SPIN(%o2, %o3, 1b)
- ENDPROC(atomic64_add)
-+ENTRY(atomic64_add_unchecked) /* %o0 = increment, %o1 = atomic_ptr */
-+      BACKOFF_SETUP(%o2)
-+1:    ldx     [%o1], %g1
-+      addcc   %g1, %o0, %g7
-+      casx    [%o1], %g1, %g7
-+      cmp     %g1, %g7
-+      bne,pn  %xcc, 2f
-+       nop
-+      retl
-+       nop
-+2:    BACKOFF_SPIN(%o2, %o3, 1b)
-+ENDPROC(atomic64_add_unchecked)
-+
- ENTRY(atomic64_sub) /* %o0 = decrement, %o1 = atomic_ptr */
-       BACKOFF_SETUP(%o2)
- 1:    ldx     [%o1], %g1
--      sub     %g1, %o0, %g7
-+      subcc   %g1, %o0, %g7
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      tvs     %xcc, 6
-+#endif
-+
-       casx    [%o1], %g1, %g7
-       cmp     %g1, %g7
-       bne,pn  %xcc, BACKOFF_LABEL(2f, 1b)
-@@ -92,10 +175,28 @@ ENTRY(atomic64_sub) /* %o0 = decrement, %o1 = atomic_ptr */
- 2:    BACKOFF_SPIN(%o2, %o3, 1b)
- ENDPROC(atomic64_sub)
-+ENTRY(atomic64_sub_unchecked) /* %o0 = decrement, %o1 = atomic_ptr */
-+      BACKOFF_SETUP(%o2)
-+1:    ldx     [%o1], %g1
-+      subcc   %g1, %o0, %g7
-+      casx    [%o1], %g1, %g7
-+      cmp     %g1, %g7
-+      bne,pn  %xcc, 2f
-+       nop
-+      retl
-+       nop
-+2:    BACKOFF_SPIN(%o2, %o3, 1b)
-+ENDPROC(atomic64_sub_unchecked)
-+
- ENTRY(atomic64_add_ret) /* %o0 = increment, %o1 = atomic_ptr */
-       BACKOFF_SETUP(%o2)
- 1:    ldx     [%o1], %g1
--      add     %g1, %o0, %g7
-+      addcc   %g1, %o0, %g7
-+
+@@ -15,11 +15,22 @@
+        * a value and does the barriers.
+        */
+-#define ATOMIC_OP(op)                                                 \
+-ENTRY(atomic_##op) /* %o0 = increment, %o1 = atomic_ptr */            \
 +#ifdef CONFIG_PAX_REFCOUNT
-+      tvs     %xcc, 6
-+#endif
-+
-       casx    [%o1], %g1, %g7
-       cmp     %g1, %g7
-       bne,pn  %xcc, BACKOFF_LABEL(2f, 1b)
-@@ -105,10 +206,29 @@ ENTRY(atomic64_add_ret) /* %o0 = increment, %o1 = atomic_ptr */
- 2:    BACKOFF_SPIN(%o2, %o3, 1b)
- ENDPROC(atomic64_add_ret)
-+ENTRY(atomic64_add_ret_unchecked) /* %o0 = increment, %o1 = atomic_ptr */
-+      BACKOFF_SETUP(%o2)
-+1:    ldx     [%o1], %g1
-+      addcc   %g1, %o0, %g7
-+      casx    [%o1], %g1, %g7
-+      cmp     %g1, %g7
-+      bne,pn  %xcc, 2f
-+       add    %g7, %o0, %g7
-+      mov     %g7, %o0
-+      retl
-+       nop
-+2:    BACKOFF_SPIN(%o2, %o3, 1b)
-+ENDPROC(atomic64_add_ret_unchecked)
-+
- ENTRY(atomic64_sub_ret) /* %o0 = decrement, %o1 = atomic_ptr */
++#define __REFCOUNT_OP(op) op##cc
++#define __OVERFLOW_IOP tvs    %icc, 6;
++#define __OVERFLOW_XOP tvs    %xcc, 6;
++#else
++#define __REFCOUNT_OP(op) op
++#define __OVERFLOW_IOP
++#define __OVERFLOW_XOP
++#endif
++
++#define __ATOMIC_OP(op, suffix, asm_op, post_op)                      \
++ENTRY(atomic_##op##suffix) /* %o0 = increment, %o1 = atomic_ptr */    \
+       BACKOFF_SETUP(%o2);                                             \
+ 1:    lduw    [%o1], %g1;                                             \
+-      op      %g1, %o0, %g7;                                          \
++      asm_op  %g1, %o0, %g7;                                          \
++      post_op                                                         \
+       cas     [%o1], %g1, %g7;                                        \
+       cmp     %g1, %g7;                                               \
+       bne,pn  %icc, BACKOFF_LABEL(2f, 1b);                            \
+@@ -29,11 +40,15 @@ ENTRY(atomic_##op) /* %o0 = increment, %o1 = atomic_ptr */         \
+ 2:    BACKOFF_SPIN(%o2, %o3, 1b);                                     \
+ ENDPROC(atomic_##op);                                                 \
+-#define ATOMIC_OP_RETURN(op)                                          \
+-ENTRY(atomic_##op##_return) /* %o0 = increment, %o1 = atomic_ptr */   \
++#define ATOMIC_OP(op) __ATOMIC_OP(op, , op, ) \
++                    __ATOMIC_OP(op, _unchecked, __REFCOUNT_OP(op), __OVERFLOW_IOP)
++
++#define __ATOMIC_OP_RETURN(op, suffix, asm_op, post_op)                       \
++ENTRY(atomic_##op##_return##suffix) /* %o0 = increment, %o1 = atomic_ptr */\
+       BACKOFF_SETUP(%o2);                                             \
+ 1:    lduw    [%o1], %g1;                                             \
+-      op      %g1, %o0, %g7;                                          \
++      asm_op  %g1, %o0, %g7;                                          \
++      post_op                                                         \
+       cas     [%o1], %g1, %g7;                                        \
+       cmp     %g1, %g7;                                               \
+       bne,pn  %icc, BACKOFF_LABEL(2f, 1b);                            \
+@@ -43,6 +58,9 @@ ENTRY(atomic_##op##_return) /* %o0 = increment, %o1 = atomic_ptr */  \
+ 2:    BACKOFF_SPIN(%o2, %o3, 1b);                                     \
+ ENDPROC(atomic_##op##_return);
++#define ATOMIC_OP_RETURN(op) __ATOMIC_OP_RETURN(op, , op, ) \
++                           __ATOMIC_OP_RETURN(op, _unchecked, __REFCOUNT_OP(op), __OVERFLOW_IOP)
++
+ #define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op)
+ ATOMIC_OPS(add)
+@@ -50,13 +68,16 @@ ATOMIC_OPS(sub)
+ #undef ATOMIC_OPS
+ #undef ATOMIC_OP_RETURN
++#undef __ATOMIC_OP_RETURN
+ #undef ATOMIC_OP
++#undef __ATOMIC_OP
+-#define ATOMIC64_OP(op)                                                       \
+-ENTRY(atomic64_##op) /* %o0 = increment, %o1 = atomic_ptr */          \
++#define __ATOMIC64_OP(op, suffix, asm_op, post_op)                    \
++ENTRY(atomic64_##op##suffix) /* %o0 = increment, %o1 = atomic_ptr */  \
+       BACKOFF_SETUP(%o2);                                             \
+ 1:    ldx     [%o1], %g1;                                             \
+-      op      %g1, %o0, %g7;                                          \
++      asm_op  %g1, %o0, %g7;                                          \
++      post_op                                                         \
+       casx    [%o1], %g1, %g7;                                        \
+       cmp     %g1, %g7;                                               \
+       bne,pn  %xcc, BACKOFF_LABEL(2f, 1b);                            \
+@@ -66,11 +87,15 @@ ENTRY(atomic64_##op) /* %o0 = increment, %o1 = atomic_ptr */               \
+ 2:    BACKOFF_SPIN(%o2, %o3, 1b);                                     \
+ ENDPROC(atomic64_##op);                                                       \
+-#define ATOMIC64_OP_RETURN(op)                                                \
+-ENTRY(atomic64_##op##_return) /* %o0 = increment, %o1 = atomic_ptr */ \
++#define ATOMIC64_OP(op) __ATOMIC64_OP(op, , op, ) \
++                      __ATOMIC64_OP(op, _unchecked, __REFCOUNT_OP(op), __OVERFLOW_XOP)
++
++#define __ATOMIC64_OP_RETURN(op, suffix, asm_op, post_op)             \
++ENTRY(atomic64_##op##_return##suffix) /* %o0 = increment, %o1 = atomic_ptr */\
+       BACKOFF_SETUP(%o2);                                             \
+ 1:    ldx     [%o1], %g1;                                             \
+-      op      %g1, %o0, %g7;                                          \
++      asm_op  %g1, %o0, %g7;                                          \
++      post_op                                                         \
+       casx    [%o1], %g1, %g7;                                        \
+       cmp     %g1, %g7;                                               \
+       bne,pn  %xcc, BACKOFF_LABEL(2f, 1b);                            \
+@@ -80,6 +105,9 @@ ENTRY(atomic64_##op##_return) /* %o0 = increment, %o1 = atomic_ptr */       \
+ 2:    BACKOFF_SPIN(%o2, %o3, 1b);                                     \
+ ENDPROC(atomic64_##op##_return);
++#define ATOMIC64_OP_RETURN(op) __ATOMIC64_OP_RETURN(op, , op, ) \
++i                            __ATOMIC64_OP_RETURN(op, _unchecked, __REFCOUNT_OP(op), __OVERFLOW_XOP)
++
+ #define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op)
+ ATOMIC64_OPS(add)
+@@ -87,7 +115,12 @@ ATOMIC64_OPS(sub)
+ #undef ATOMIC64_OPS
+ #undef ATOMIC64_OP_RETURN
++#undef __ATOMIC64_OP_RETURN
+ #undef ATOMIC64_OP
++#undef __ATOMIC64_OP
++#undef __OVERFLOW_XOP
++#undef __OVERFLOW_IOP
++#undef __REFCOUNT_OP
+ ENTRY(atomic64_dec_if_positive) /* %o0 = atomic_ptr */
        BACKOFF_SETUP(%o2)
- 1:    ldx     [%o1], %g1
--      sub     %g1, %o0, %g7
-+      subcc   %g1, %o0, %g7
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      tvs     %xcc, 6
-+#endif
-+
-       casx    [%o1], %g1, %g7
-       cmp     %g1, %g7
-       bne,pn  %xcc, BACKOFF_LABEL(2f, 1b)
 diff --git a/arch/sparc/lib/ksyms.c b/arch/sparc/lib/ksyms.c
-index 323335b..ed85ea2 100644
+index 1d649a9..fbc5bfc 100644
 --- a/arch/sparc/lib/ksyms.c
 +++ b/arch/sparc/lib/ksyms.c
-@@ -100,12 +100,18 @@ EXPORT_SYMBOL(__clear_user);
+@@ -101,7 +101,9 @@ EXPORT_SYMBOL(__clear_user);
  /* Atomic counter implementation. */
- EXPORT_SYMBOL(atomic_add);
-+EXPORT_SYMBOL(atomic_add_unchecked);
- EXPORT_SYMBOL(atomic_add_ret);
+ #define ATOMIC_OP(op)                                                 \
+ EXPORT_SYMBOL(atomic_##op);                                           \
+-EXPORT_SYMBOL(atomic64_##op);
++EXPORT_SYMBOL(atomic_##op##_unchecked);                                       \
++EXPORT_SYMBOL(atomic64_##op);                                         \
++EXPORT_SYMBOL(atomic64_##op##_unchecked);
+ #define ATOMIC_OP_RETURN(op)                                          \
+ EXPORT_SYMBOL(atomic_##op##_return);                                  \
+@@ -110,6 +112,8 @@ EXPORT_SYMBOL(atomic64_##op##_return);
+ #define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op)
+ ATOMIC_OPS(add)
 +EXPORT_SYMBOL(atomic_add_ret_unchecked);
- EXPORT_SYMBOL(atomic_sub);
-+EXPORT_SYMBOL(atomic_sub_unchecked);
- EXPORT_SYMBOL(atomic_sub_ret);
- EXPORT_SYMBOL(atomic64_add);
-+EXPORT_SYMBOL(atomic64_add_unchecked);
- EXPORT_SYMBOL(atomic64_add_ret);
 +EXPORT_SYMBOL(atomic64_add_ret_unchecked);
- EXPORT_SYMBOL(atomic64_sub);
-+EXPORT_SYMBOL(atomic64_sub_unchecked);
- EXPORT_SYMBOL(atomic64_sub_ret);
- EXPORT_SYMBOL(atomic64_dec_if_positive);
+ ATOMIC_OPS(sub)
  
+ #undef ATOMIC_OPS
 diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile
 index 30c3ecc..736f015 100644
 --- a/arch/sparc/mm/Makefile
@@ -11102,7 +11351,7 @@ index 30c3ecc..736f015 100644
  obj-$(CONFIG_SPARC64)   += ultra.o tlb.o tsb.o gup.o
  obj-y                   += fault_$(BITS).o
 diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
-index 59dbd46..1dd7f5e 100644
+index 908e8c1..1524793 100644
 --- a/arch/sparc/mm/fault_32.c
 +++ b/arch/sparc/mm/fault_32.c
 @@ -21,6 +21,9 @@
@@ -11115,7 +11364,7 @@ index 59dbd46..1dd7f5e 100644
  
  #include <asm/page.h>
  #include <asm/pgtable.h>
-@@ -159,6 +162,277 @@ static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault)
+@@ -156,6 +159,277 @@ static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault)
        return safe_compute_effective_address(regs, insn);
  }
  
@@ -11393,7 +11642,7 @@ index 59dbd46..1dd7f5e 100644
  static noinline void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
                                      int text_fault)
  {
-@@ -229,6 +503,24 @@ good_area:
+@@ -226,6 +500,24 @@ good_area:
                if (!(vma->vm_flags & VM_WRITE))
                        goto bad_area;
        } else {
@@ -11419,7 +11668,7 @@ index 59dbd46..1dd7f5e 100644
                if (!(vma->vm_flags & (VM_READ | VM_EXEC)))
                        goto bad_area;
 diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
-index 4ced3fc..234f1e4 100644
+index 18fcd71..e4fe821 100644
 --- a/arch/sparc/mm/fault_64.c
 +++ b/arch/sparc/mm/fault_64.c
 @@ -22,6 +22,9 @@
@@ -11432,7 +11681,7 @@ index 4ced3fc..234f1e4 100644
  
  #include <asm/page.h>
  #include <asm/pgtable.h>
-@@ -75,7 +78,7 @@ static void __kprobes bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr)
+@@ -76,7 +79,7 @@ static void __kprobes bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr)
        printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n",
               regs->tpc);
        printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]);
@@ -11441,7 +11690,7 @@ index 4ced3fc..234f1e4 100644
        printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr);
        dump_stack();
        unhandled_fault(regs->tpc, current, regs);
-@@ -281,6 +284,466 @@ static void noinline __kprobes bogus_32bit_fault_tpc(struct pt_regs *regs)
+@@ -279,6 +282,466 @@ static void noinline __kprobes bogus_32bit_fault_tpc(struct pt_regs *regs)
        show_regs(regs);
  }
  
@@ -11908,7 +12157,7 @@ index 4ced3fc..234f1e4 100644
  asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
  {
        enum ctx_state prev_state = exception_enter();
-@@ -352,6 +815,29 @@ retry:
+@@ -353,6 +816,29 @@ retry:
        if (!vma)
                goto bad_area;
  
@@ -12045,10 +12294,10 @@ index d329537..2c3746a 100644
  
  pte_t *huge_pte_alloc(struct mm_struct *mm,
 diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
-index ed3c969..42fe48d 100644
+index 2d91c62..17a8fff 100644
 --- a/arch/sparc/mm/init_64.c
 +++ b/arch/sparc/mm/init_64.c
-@@ -188,9 +188,9 @@ unsigned long sparc64_kern_sec_context __read_mostly;
+@@ -186,9 +186,9 @@ unsigned long sparc64_kern_sec_context __read_mostly;
  int num_kernel_image_mappings;
  
  #ifdef CONFIG_DEBUG_DCFLUSH
@@ -12060,7 +12309,7 @@ index ed3c969..42fe48d 100644
  #endif
  #endif
  
-@@ -198,7 +198,7 @@ inline void flush_dcache_page_impl(struct page *page)
+@@ -196,7 +196,7 @@ inline void flush_dcache_page_impl(struct page *page)
  {
        BUG_ON(tlb_type == hypervisor);
  #ifdef CONFIG_DEBUG_DCFLUSH
@@ -12069,7 +12318,7 @@ index ed3c969..42fe48d 100644
  #endif
  
  #ifdef DCACHE_ALIASING_POSSIBLE
-@@ -466,10 +466,10 @@ void mmu_info(struct seq_file *m)
+@@ -468,10 +468,10 @@ void mmu_info(struct seq_file *m)
  
  #ifdef CONFIG_DEBUG_DCFLUSH
        seq_printf(m, "DCPageFlushes\t: %d\n",
@@ -12083,10 +12332,10 @@ index ed3c969..42fe48d 100644
  #endif /* CONFIG_DEBUG_DCFLUSH */
  }
 diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
-index 85258ca..df97c79 100644
+index 7cca418..53fc030 100644
 --- a/arch/tile/Kconfig
 +++ b/arch/tile/Kconfig
-@@ -190,6 +190,7 @@ source "kernel/Kconfig.hz"
+@@ -192,6 +192,7 @@ source "kernel/Kconfig.hz"
  
  config KEXEC
        bool "kexec system call"
@@ -12095,7 +12344,7 @@ index 85258ca..df97c79 100644
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
 diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h
-index ad220ee..2f537b3 100644
+index 7b11c5f..755a026 100644
 --- a/arch/tile/include/asm/atomic_64.h
 +++ b/arch/tile/include/asm/atomic_64.h
 @@ -105,6 +105,16 @@ static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
@@ -12112,9 +12361,9 @@ index ad220ee..2f537b3 100644
 +#define atomic64_dec_unchecked(v)             atomic64_dec(v)
 +#define atomic64_cmpxchg_unchecked(v, o, n)   atomic64_cmpxchg((v), (o), (n))
 +
- /* Atomic dec and inc don't implement barrier, so provide them if needed. */
- #define smp_mb__before_atomic_dec()   smp_mb()
- #define smp_mb__after_atomic_dec()    smp_mb()
+ /* Define this to indicate that cmpxchg is an efficient operation. */
+ #define __HAVE_ARCH_CMPXCHG
 diff --git a/arch/tile/include/asm/cache.h b/arch/tile/include/asm/cache.h
 index 6160761..00cac88 100644
 --- a/arch/tile/include/asm/cache.h
@@ -12170,7 +12419,7 @@ index e514899..f8743c4 100644
  
        /*
 diff --git a/arch/um/Makefile b/arch/um/Makefile
-index 36e658a..71a5c5a 100644
+index e4b1a96..16162f8 100644
 --- a/arch/um/Makefile
 +++ b/arch/um/Makefile
 @@ -72,6 +72,10 @@ USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -D__KERNEL__,,\
@@ -12217,7 +12466,7 @@ index 2e0a6b1..a64d0f5 100644
  
  #endif
 diff --git a/arch/um/include/asm/page.h b/arch/um/include/asm/page.h
-index 5ff53d9..5850cdf 100644
+index 71c5d13..4c7b9f1 100644
 --- a/arch/um/include/asm/page.h
 +++ b/arch/um/include/asm/page.h
 @@ -14,6 +14,9 @@
@@ -12287,10 +12536,10 @@ index ad8f795..2c7eec6 100644
  /*
   * Memory returned by kmalloc() may be used for DMA, so we must make
 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 6b8b429..7b21fe4 100644
+index 41a503c..cf98b04 100644
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
-@@ -127,7 +127,7 @@ config X86
+@@ -129,7 +129,7 @@ config X86
        select RTC_LIB
        select HAVE_DEBUG_STACKOVERFLOW
        select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64
@@ -12298,8 +12547,8 @@ index 6b8b429..7b21fe4 100644
 +      select HAVE_CC_STACKPROTECTOR if X86_64 || !PAX_MEMORY_UDEREF
        select GENERIC_CPU_AUTOPROBE
        select HAVE_ARCH_AUDITSYSCALL
-@@ -251,7 +251,7 @@ config X86_HT
+       select ARCH_SUPPORTS_ATOMIC_RMW
+@@ -262,7 +262,7 @@ config X86_HT
  
  config X86_32_LAZY_GS
        def_bool y
@@ -12308,7 +12557,7 @@ index 6b8b429..7b21fe4 100644
  
  config ARCH_HWEIGHT_CFLAGS
        string
-@@ -545,6 +545,7 @@ config SCHED_OMIT_FRAME_POINTER
+@@ -600,6 +600,7 @@ config SCHED_OMIT_FRAME_POINTER
  
  menuconfig HYPERVISOR_GUEST
        bool "Linux guest support"
@@ -12316,7 +12565,15 @@ index 6b8b429..7b21fe4 100644
        ---help---
          Say Y here to enable options for running Linux under various hyper-
          visors. This option enables basic hypervisor detection and platform
-@@ -1054,6 +1055,7 @@ choice
+@@ -973,6 +974,7 @@ config VM86
+ config X86_16BIT
+       bool "Enable support for 16-bit segments" if EXPERT
++      depends on !GRKERNSEC
+       default y
+       ---help---
+         This option is required by programs like Wine to run 16-bit
+@@ -1128,6 +1130,7 @@ choice
  
  config NOHIGHMEM
        bool "off"
@@ -12324,7 +12581,7 @@ index 6b8b429..7b21fe4 100644
        ---help---
          Linux can use up to 64 Gigabytes of physical memory on x86 systems.
          However, the address space of 32-bit x86 processors is only 4
-@@ -1090,6 +1092,7 @@ config NOHIGHMEM
+@@ -1164,6 +1167,7 @@ config NOHIGHMEM
  
  config HIGHMEM4G
        bool "4GB"
@@ -12332,7 +12589,7 @@ index 6b8b429..7b21fe4 100644
        ---help---
          Select this if you have a 32-bit processor and between 1 and 4
          gigabytes of physical RAM.
-@@ -1142,7 +1145,7 @@ config PAGE_OFFSET
+@@ -1216,7 +1220,7 @@ config PAGE_OFFSET
        hex
        default 0xB0000000 if VMSPLIT_3G_OPT
        default 0x80000000 if VMSPLIT_2G
@@ -12341,7 +12598,7 @@ index 6b8b429..7b21fe4 100644
        default 0x40000000 if VMSPLIT_1G
        default 0xC0000000
        depends on X86_32
-@@ -1555,6 +1558,7 @@ source kernel/Kconfig.hz
+@@ -1631,6 +1635,7 @@ source kernel/Kconfig.hz
  
  config KEXEC
        bool "kexec system call"
@@ -12349,7 +12606,7 @@ index 6b8b429..7b21fe4 100644
        ---help---
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
-@@ -1706,7 +1710,9 @@ config X86_NEED_RELOCS
+@@ -1816,7 +1821,9 @@ config X86_NEED_RELOCS
  
  config PHYSICAL_ALIGN
        hex "Alignment value to which kernel should be aligned"
@@ -12360,7 +12617,7 @@ index 6b8b429..7b21fe4 100644
        range 0x2000 0x1000000 if X86_32
        range 0x200000 0x1000000 if X86_64
        ---help---
-@@ -1789,6 +1795,7 @@ config COMPAT_VDSO
+@@ -1899,6 +1906,7 @@ config COMPAT_VDSO
        def_bool n
        prompt "Disable the 32-bit vDSO (needed for glibc 2.3.3)"
        depends on X86_32 || IA32_EMULATION
@@ -12422,10 +12679,10 @@ index 61bd2ad..50b625d 100644
          This option helps catch unintended modifications to loadable
          kernel module's text and read-only data. It also prevents execution
 diff --git a/arch/x86/Makefile b/arch/x86/Makefile
-index 33f71b0..c2cefa2 100644
+index 920e616..ac3d4df 100644
 --- a/arch/x86/Makefile
 +++ b/arch/x86/Makefile
-@@ -71,9 +71,6 @@ ifeq ($(CONFIG_X86_32),y)
+@@ -65,9 +65,6 @@ ifeq ($(CONFIG_X86_32),y)
          # CPU-specific tuning. Anything which can be shared with UML should go here.
          include $(srctree)/arch/x86/Makefile_32.cpu
          KBUILD_CFLAGS += $(cflags-y)
@@ -12435,7 +12692,7 @@ index 33f71b0..c2cefa2 100644
  else
          BITS := 64
          UTS_MACHINE := x86_64
-@@ -114,6 +111,9 @@ else
+@@ -107,6 +104,9 @@ else
          KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args)
  endif
  
@@ -12445,9 +12702,17 @@ index 33f71b0..c2cefa2 100644
  # Make sure compiler does not have buggy stack-protector support.
  ifdef CONFIG_CC_STACKPROTECTOR
        cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
-@@ -271,3 +271,12 @@ define archhelp
+@@ -180,6 +180,7 @@ archheaders:
+       $(Q)$(MAKE) $(build)=arch/x86/syscalls all
+ archprepare:
++      $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
+ ifeq ($(CONFIG_KEXEC_FILE),y)
+       $(Q)$(MAKE) $(build)=arch/x86/purgatory arch/x86/purgatory/kexec-purgatory.c
+ endif
+@@ -263,3 +264,9 @@ define archhelp
+   echo  '                  FDARGS="..."  arguments for the booted kernel'
    echo  '                  FDINITRD=file initrd for the booted kernel'
-   echo  '  kvmconfig  - Enable additional options for guest kernel support'
  endef
 +
 +define OLD_LD
@@ -12455,14 +12720,11 @@ index 33f71b0..c2cefa2 100644
 +*** ${VERSION}.${PATCHLEVEL} PaX kernels no longer build correctly with old versions of binutils.
 +*** Please upgrade your binutils to 2.18 or newer
 +endef
-+
-+archprepare:
-+      $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
 diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
-index dbe8dd2..2f0a98f 100644
+index 5b016e2..04ef69c 100644
 --- a/arch/x86/boot/Makefile
 +++ b/arch/x86/boot/Makefile
-@@ -52,6 +52,9 @@ $(obj)/cpustr.h: $(obj)/mkcpustr FORCE
+@@ -55,6 +55,9 @@ endif
  # ---------------------------------------------------------------------------
  
  KBUILD_CFLAGS := $(USERINCLUDE) $(REALMODE_CFLAGS) -D_SETUP
@@ -12508,7 +12770,7 @@ index bd49ec6..94c7f58 100644
  }
  
 diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
-index 0fcd913..3bb5c42 100644
+index 45abc36..97bea2d 100644
 --- a/arch/x86/boot/compressed/Makefile
 +++ b/arch/x86/boot/compressed/Makefile
 @@ -16,6 +16,9 @@ KBUILD_CFLAGS += $(cflags-y)
@@ -12564,7 +12826,7 @@ index a53440e..c3dbf1e 100644
  .previous
  
 diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
-index cbed140..5f2ca57 100644
+index 1d7fbbc..36ecd58 100644
 --- a/arch/x86/boot/compressed/head_32.S
 +++ b/arch/x86/boot/compressed/head_32.S
 @@ -140,10 +140,10 @@ preferred_addr:
@@ -12581,7 +12843,7 @@ index cbed140..5f2ca57 100644
  
        /* Target address to relocate to for decompression */
 diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
-index 0d558ee..58f257e 100644
+index 6b1766c..ad465c9 100644
 --- a/arch/x86/boot/compressed/head_64.S
 +++ b/arch/x86/boot/compressed/head_64.S
 @@ -94,10 +94,10 @@ ENTRY(startup_32)
@@ -12610,7 +12872,7 @@ index 0d558ee..58f257e 100644
  1:
  
        /* Target address to relocate to for decompression */
-@@ -431,8 +431,8 @@ gdt:
+@@ -434,8 +434,8 @@ gdt:
        .long   gdt
        .word   0
        .quad   0x0000000000000000      /* NULL descriptor */
@@ -12622,7 +12884,7 @@ index 0d558ee..58f257e 100644
        .quad   0x0000000000000000      /* TS continued */
  gdt_end:
 diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
-index 57ab74d..7c52182 100644
+index 30dd59a..cd9edc3 100644
 --- a/arch/x86/boot/compressed/misc.c
 +++ b/arch/x86/boot/compressed/misc.c
 @@ -242,7 +242,7 @@ static void handle_relocations(void *output, unsigned long output_len)
@@ -12661,7 +12923,7 @@ index 57ab74d..7c52182 100644
                        break;
                default: /* Ignore other PT_* */ break;
                }
-@@ -395,7 +398,7 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap,
+@@ -402,7 +405,7 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap,
                error("Destination address too large");
  #endif
  #ifndef CONFIG_RELOCATABLE
@@ -12716,10 +12978,10 @@ index 1fd7d57..0f7d096 100644
                err = check_cpuflags();
        } else if (err == 0x01 &&
 diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
-index 84c2234..3ef6360 100644
+index 16ef025..91e033b 100644
 --- a/arch/x86/boot/header.S
 +++ b/arch/x86/boot/header.S
-@@ -420,10 +420,14 @@ setup_data:              .quad 0                 # 64-bit physical pointer to
+@@ -438,10 +438,14 @@ setup_data:              .quad 0                 # 64-bit physical pointer to
                                                # single linked list of
                                                # struct setup_data
  
@@ -13727,7 +13989,7 @@ index e3531f8..e123f35 100644
        ret;
  ENDPROC(cast6_xts_dec_8way)
 diff --git a/arch/x86/crypto/crc32c-pcl-intel-asm_64.S b/arch/x86/crypto/crc32c-pcl-intel-asm_64.S
-index dbc4339..de6e120 100644
+index 26d49eb..c0a8c84 100644
 --- a/arch/x86/crypto/crc32c-pcl-intel-asm_64.S
 +++ b/arch/x86/crypto/crc32c-pcl-intel-asm_64.S
 @@ -45,6 +45,7 @@
@@ -13738,7 +14000,7 @@ index dbc4339..de6e120 100644
  
  ## ISCSI CRC 32 Implementation with crc32 and pclmulqdq Instruction
  
-@@ -312,6 +313,7 @@ do_return:
+@@ -309,6 +310,7 @@ do_return:
        popq    %rsi
        popq    %rdi
        popq    %rbx
@@ -13747,7 +14009,7 @@ index dbc4339..de6e120 100644
  
          ################################################################
 diff --git a/arch/x86/crypto/ghash-clmulni-intel_asm.S b/arch/x86/crypto/ghash-clmulni-intel_asm.S
-index 185fad4..ff4cd36 100644
+index 5d1e007..098cb4f 100644
 --- a/arch/x86/crypto/ghash-clmulni-intel_asm.S
 +++ b/arch/x86/crypto/ghash-clmulni-intel_asm.S
 @@ -18,6 +18,7 @@
@@ -14330,7 +14592,7 @@ index a039d21..524b8b2 100644
        ret
  ENDPROC(twofish_dec_blk)
 diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
-index d21ff89..6da8e6e 100644
+index df91466..74b31cb 100644
 --- a/arch/x86/ia32/ia32_aout.c
 +++ b/arch/x86/ia32/ia32_aout.c
 @@ -153,6 +153,8 @@ static int aout_core_dump(struct coredump_params *cprm)
@@ -14343,7 +14605,7 @@ index d21ff89..6da8e6e 100644
        set_fs(KERNEL_DS);
        has_dumped = 1;
 diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
-index 2206757..85cbcfa 100644
+index f9e181a..300544c 100644
 --- a/arch/x86/ia32/ia32_signal.c
 +++ b/arch/x86/ia32/ia32_signal.c
 @@ -218,7 +218,7 @@ asmlinkage long sys32_sigreturn(void)
@@ -14364,9 +14626,14 @@ index 2206757..85cbcfa 100644
        return (void __user *) sp;
  }
  
-@@ -386,7 +386,7 @@ int ia32_setup_frame(int sig, struct ksignal *ksig,
-                       restorer = VDSO32_SYMBOL(current->mm->context.vdso,
-                                                sigreturn);
+@@ -383,10 +383,10 @@ int ia32_setup_frame(int sig, struct ksignal *ksig,
+       } else {
+               /* Return stub is in 32bit vsyscall page */
+               if (current->mm->context.vdso)
+-                      restorer = current->mm->context.vdso +
+-                              selected_vdso32->sym___kernel_sigreturn;
++                      restorer = (void __force_user *)(current->mm->context.vdso +
++                              selected_vdso32->sym___kernel_sigreturn);
                else
 -                      restorer = &frame->retcode;
 +                      restorer = frame->retcode;
@@ -14391,16 +14658,17 @@ index 2206757..85cbcfa 100644
        };
  
        frame = get_sigframe(ksig, regs, sizeof(*frame), &fpstate);
-@@ -461,16 +461,18 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
+@@ -461,16 +461,19 @@ int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
  
                if (ksig->ka.sa.sa_flags & SA_RESTORER)
                        restorer = ksig->ka.sa.sa_restorer;
 +              else if (current->mm->context.vdso)
 +                      /* Return stub is in 32bit vsyscall page */
-+                      restorer = VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn);
++                      restorer = (void __force_user *)(current->mm->context.vdso +
++                              selected_vdso32->sym___kernel_rt_sigreturn);
                else
--                      restorer = VDSO32_SYMBOL(current->mm->context.vdso,
--                                               rt_sigreturn);
+-                      restorer = current->mm->context.vdso +
+-                              selected_vdso32->sym___kernel_rt_sigreturn;
 +                      restorer = frame->retcode;
                put_user_ex(ptr_to_compat(restorer), &frame->pretcode);
  
@@ -14414,7 +14682,7 @@ index 2206757..85cbcfa 100644
  
        err |= copy_siginfo_to_user32(&frame->info, &ksig->info);
 diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
-index 4299eb0..fefe70e 100644
+index ffe7122..899bad3 100644
 --- a/arch/x86/ia32/ia32entry.S
 +++ b/arch/x86/ia32/ia32entry.S
 @@ -15,8 +15,10 @@
@@ -14492,7 +14760,7 @@ index 4299eb0..fefe70e 100644
        movl    %ebp,%ebp               /* zero extension */
        pushq_cfi $__USER32_DS
        /*CFI_REL_OFFSET ss,0*/
-@@ -135,24 +157,49 @@ ENTRY(ia32_sysenter_target)
+@@ -135,23 +157,46 @@ ENTRY(ia32_sysenter_target)
        CFI_REL_OFFSET rsp,0
        pushfq_cfi
        /*CFI_REL_OFFSET rflags,0*/
@@ -14534,20 +14802,27 @@ index 4299eb0..fefe70e 100644
  1:    movl    (%rbp),%ebp
        _ASM_EXTABLE(1b,ia32_badarg)
        ASM_CLAC
--      orl     $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET)
--      testl   $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)
-+
 +#ifdef CONFIG_PAX_MEMORY_UDEREF
 +      ASM_PAX_CLOSE_USERLAND
 +#endif
 +
+       /*
+        * Sysenter doesn't filter flags, so we need to clear NT
+        * ourselves.  To save a few cycles, we can check whether
+@@ -161,8 +206,9 @@ ENTRY(ia32_sysenter_target)
+       jnz sysenter_fix_flags
+ sysenter_flags_fixed:
+-      orl     $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET)
+-      testl   $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)
 +      GET_THREAD_INFO(%r11)
 +      orl    $TS_COMPAT,TI_status(%r11)
 +      testl  $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r11)
        CFI_REMEMBER_STATE
        jnz  sysenter_tracesys
        cmpq    $(IA32_NR_syscalls-1),%rax
-@@ -162,15 +209,18 @@ sysenter_do_call:
+@@ -172,15 +218,18 @@ sysenter_do_call:
  sysenter_dispatch:
        call    *ia32_sys_call_table(,%rax,8)
        movq    %rax,RAX-ARGOFFSET(%rsp)
@@ -14570,9 +14845,9 @@ index 4299eb0..fefe70e 100644
        CFI_REGISTER rip,rdx
        RESTORE_ARGS 0,24,0,0,0,0
        xorq    %r8,%r8
-@@ -193,6 +243,9 @@ sysexit_from_sys_call:
-       movl %eax,%esi                  /* 2nd arg: syscall number */
-       movl $AUDIT_ARCH_I386,%edi      /* 1st arg: audit arch */
+@@ -205,6 +254,9 @@ sysexit_from_sys_call:
+       movl %ebx,%esi                  /* 2nd arg: 1st syscall arg */
+       movl %eax,%edi                  /* 1st arg: syscall number */
        call __audit_syscall_entry
 +
 +      pax_erase_kstack
@@ -14580,7 +14855,7 @@ index 4299eb0..fefe70e 100644
        movl RAX-ARGOFFSET(%rsp),%eax   /* reload syscall number */
        cmpq $(IA32_NR_syscalls-1),%rax
        ja ia32_badsys
-@@ -204,7 +257,7 @@ sysexit_from_sys_call:
+@@ -216,7 +268,7 @@ sysexit_from_sys_call:
        .endm
  
        .macro auditsys_exit exit
@@ -14589,7 +14864,7 @@ index 4299eb0..fefe70e 100644
        jnz ia32_ret_from_sys_call
        TRACE_IRQS_ON
        ENABLE_INTERRUPTS(CLBR_NONE)
-@@ -215,11 +268,12 @@ sysexit_from_sys_call:
+@@ -227,11 +279,12 @@ sysexit_from_sys_call:
  1:    setbe %al               /* 1 if error, 0 if not */
        movzbl %al,%edi         /* zero-extend that into %edi */
        call __audit_syscall_exit
@@ -14603,7 +14878,7 @@ index 4299eb0..fefe70e 100644
        jz \exit
        CLEAR_RREGS -ARGOFFSET
        jmp int_with_check
-@@ -237,7 +291,7 @@ sysexit_audit:
+@@ -253,7 +306,7 @@ sysenter_fix_flags:
  
  sysenter_tracesys:
  #ifdef CONFIG_AUDITSYSCALL
@@ -14612,7 +14887,7 @@ index 4299eb0..fefe70e 100644
        jz      sysenter_auditsys
  #endif
        SAVE_REST
-@@ -249,6 +303,9 @@ sysenter_tracesys:
+@@ -265,6 +318,9 @@ sysenter_tracesys:
        RESTORE_REST
        cmpq    $(IA32_NR_syscalls-1),%rax
        ja      int_ret_from_sys_call /* sysenter_tracesys has set RAX(%rsp) */
@@ -14622,7 +14897,7 @@ index 4299eb0..fefe70e 100644
        jmp     sysenter_do_call
        CFI_ENDPROC
  ENDPROC(ia32_sysenter_target)
-@@ -276,19 +333,25 @@ ENDPROC(ia32_sysenter_target)
+@@ -292,19 +348,25 @@ ENDPROC(ia32_sysenter_target)
  ENTRY(ia32_cstar_target)
        CFI_STARTPROC32 simple
        CFI_SIGNAL_FRAME
@@ -14650,7 +14925,7 @@ index 4299eb0..fefe70e 100644
        movl    %eax,%eax       /* zero extension */
        movq    %rax,ORIG_RAX-ARGOFFSET(%rsp)
        movq    %rcx,RIP-ARGOFFSET(%rsp)
-@@ -304,12 +367,25 @@ ENTRY(ia32_cstar_target)
+@@ -320,12 +382,25 @@ ENTRY(ia32_cstar_target)
        /* no need to do an access_ok check here because r8 has been
           32bit zero extended */ 
        /* hardware stack frame is complete now */      
@@ -14678,7 +14953,7 @@ index 4299eb0..fefe70e 100644
        CFI_REMEMBER_STATE
        jnz   cstar_tracesys
        cmpq $IA32_NR_syscalls-1,%rax
-@@ -319,13 +395,16 @@ cstar_do_call:
+@@ -335,13 +410,16 @@ cstar_do_call:
  cstar_dispatch:
        call *ia32_sys_call_table(,%rax,8)
        movq %rax,RAX-ARGOFFSET(%rsp)
@@ -14698,7 +14973,7 @@ index 4299eb0..fefe70e 100644
        movl RIP-ARGOFFSET(%rsp),%ecx
        CFI_REGISTER rip,rcx
        movl EFLAGS-ARGOFFSET(%rsp),%r11d       
-@@ -352,7 +431,7 @@ sysretl_audit:
+@@ -368,7 +446,7 @@ sysretl_audit:
  
  cstar_tracesys:
  #ifdef CONFIG_AUDITSYSCALL
@@ -14707,7 +14982,7 @@ index 4299eb0..fefe70e 100644
        jz cstar_auditsys
  #endif
        xchgl %r9d,%ebp
-@@ -366,11 +445,19 @@ cstar_tracesys:
+@@ -382,11 +460,19 @@ cstar_tracesys:
        xchgl %ebp,%r9d
        cmpq $(IA32_NR_syscalls-1),%rax
        ja int_ret_from_sys_call /* cstar_tracesys has set RAX(%rsp) */
@@ -14727,7 +15002,7 @@ index 4299eb0..fefe70e 100644
        movq $-EFAULT,%rax
        jmp ia32_sysret
        CFI_ENDPROC
-@@ -407,19 +494,26 @@ ENTRY(ia32_syscall)
+@@ -423,19 +509,26 @@ ENTRY(ia32_syscall)
        CFI_REL_OFFSET  rip,RIP-RIP
        PARAVIRT_ADJUST_EXCEPTION_FRAME
        SWAPGS
@@ -14761,7 +15036,7 @@ index 4299eb0..fefe70e 100644
        jnz ia32_tracesys
        cmpq $(IA32_NR_syscalls-1),%rax
        ja ia32_badsys
-@@ -442,6 +536,9 @@ ia32_tracesys:
+@@ -458,6 +551,9 @@ ia32_tracesys:
        RESTORE_REST
        cmpq $(IA32_NR_syscalls-1),%rax
        ja  int_ret_from_sys_call       /* ia32_tracesys has set RAX(%rsp) */
@@ -14837,7 +15112,7 @@ index 372231c..51b537d 100644
        .long \orig - .
        .long \alt - .
 diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h
-index 0a3f9c9..c9d081d 100644
+index 473bdbe..b1e3377 100644
 --- a/arch/x86/include/asm/alternative.h
 +++ b/arch/x86/include/asm/alternative.h
 @@ -106,7 +106,7 @@ static inline int alternatives_text_reserved(void *start, void *end)
@@ -14859,7 +15134,7 @@ index 0a3f9c9..c9d081d 100644
        ALTINSTR_REPLACEMENT(newinstr2, feature2, 2)                    \
        ".popsection"
 diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
-index 19b0eba..12254cd 100644
+index 465b309..ab7e51f 100644
 --- a/arch/x86/include/asm/apic.h
 +++ b/arch/x86/include/asm/apic.h
 @@ -45,7 +45,7 @@ static inline void generic_apic_probe(void)
@@ -14894,18 +15169,13 @@ index 20370c6..a2eb9b0 100644
                "popl %%ebp\n\t"
                "popl %%edi\n\t"
 diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
-index b17f4f4..9620151 100644
+index 5e5cd12..3d18208 100644
 --- a/arch/x86/include/asm/atomic.h
 +++ b/arch/x86/include/asm/atomic.h
-@@ -23,7 +23,18 @@
-  */
- static inline int atomic_read(const atomic_t *v)
- {
--      return (*(volatile int *)&(v)->counter);
-+      return (*(volatile const int *)&(v)->counter);
-+}
-+
-+/**
+@@ -28,6 +28,17 @@ static inline int atomic_read(const atomic_t *v)
+ }
+ /**
 + * atomic_read_unchecked - read atomic variable
 + * @v: pointer of type atomic_unchecked_t
 + *
@@ -14913,11 +15183,14 @@ index b17f4f4..9620151 100644
 + */
 +static inline int __intentional_overflow(-1) atomic_read_unchecked(const atomic_unchecked_t *v)
 +{
-+      return (*(volatile const int *)&(v)->counter);
- }
- /**
-@@ -39,6 +50,18 @@ static inline void atomic_set(atomic_t *v, int i)
++      return ACCESS_ONCE((v)->counter);
++}
++
++/**
+  * atomic_set - set atomic variable
+  * @v: pointer of type atomic_t
+  * @i: required value
+@@ -40,6 +51,18 @@ static inline void atomic_set(atomic_t *v, int i)
  }
  
  /**
@@ -14936,7 +15209,7 @@ index b17f4f4..9620151 100644
   * atomic_add - add integer to atomic variable
   * @i: integer value to add
   * @v: pointer of type atomic_t
-@@ -47,7 +70,29 @@ static inline void atomic_set(atomic_t *v, int i)
+@@ -48,7 +71,29 @@ static inline void atomic_set(atomic_t *v, int i)
   */
  static inline void atomic_add(int i, atomic_t *v)
  {
@@ -14967,7 +15240,7 @@ index b17f4f4..9620151 100644
                     : "+m" (v->counter)
                     : "ir" (i));
  }
-@@ -61,7 +106,29 @@ static inline void atomic_add(int i, atomic_t *v)
+@@ -62,7 +107,29 @@ static inline void atomic_add(int i, atomic_t *v)
   */
  static inline void atomic_sub(int i, atomic_t *v)
  {
@@ -14998,7 +15271,7 @@ index b17f4f4..9620151 100644
                     : "+m" (v->counter)
                     : "ir" (i));
  }
-@@ -77,7 +144,7 @@ static inline void atomic_sub(int i, atomic_t *v)
+@@ -78,7 +145,7 @@ static inline void atomic_sub(int i, atomic_t *v)
   */
  static inline int atomic_sub_and_test(int i, atomic_t *v)
  {
@@ -15007,7 +15280,7 @@ index b17f4f4..9620151 100644
  }
  
  /**
-@@ -88,7 +155,27 @@ static inline int atomic_sub_and_test(int i, atomic_t *v)
+@@ -89,7 +156,27 @@ static inline int atomic_sub_and_test(int i, atomic_t *v)
   */
  static inline void atomic_inc(atomic_t *v)
  {
@@ -15036,7 +15309,7 @@ index b17f4f4..9620151 100644
                     : "+m" (v->counter));
  }
  
-@@ -100,7 +187,27 @@ static inline void atomic_inc(atomic_t *v)
+@@ -101,7 +188,27 @@ static inline void atomic_inc(atomic_t *v)
   */
  static inline void atomic_dec(atomic_t *v)
  {
@@ -15065,7 +15338,7 @@ index b17f4f4..9620151 100644
                     : "+m" (v->counter));
  }
  
-@@ -114,7 +221,7 @@ static inline void atomic_dec(atomic_t *v)
+@@ -115,7 +222,7 @@ static inline void atomic_dec(atomic_t *v)
   */
  static inline int atomic_dec_and_test(atomic_t *v)
  {
@@ -15074,7 +15347,7 @@ index b17f4f4..9620151 100644
  }
  
  /**
-@@ -127,7 +234,20 @@ static inline int atomic_dec_and_test(atomic_t *v)
+@@ -128,7 +235,20 @@ static inline int atomic_dec_and_test(atomic_t *v)
   */
  static inline int atomic_inc_and_test(atomic_t *v)
  {
@@ -15096,7 +15369,7 @@ index b17f4f4..9620151 100644
  }
  
  /**
-@@ -141,7 +261,7 @@ static inline int atomic_inc_and_test(atomic_t *v)
+@@ -142,7 +262,7 @@ static inline int atomic_inc_and_test(atomic_t *v)
   */
  static inline int atomic_add_negative(int i, atomic_t *v)
  {
@@ -15105,10 +15378,13 @@ index b17f4f4..9620151 100644
  }
  
  /**
-@@ -153,6 +273,18 @@ static inline int atomic_add_negative(int i, atomic_t *v)
+@@ -152,7 +272,19 @@ static inline int atomic_add_negative(int i, atomic_t *v)
+  *
+  * Atomically adds @i to @v and returns @i + @v
   */
- static inline int atomic_add_return(int i, atomic_t *v)
- {
+-static inline int atomic_add_return(int i, atomic_t *v)
++static inline int __intentional_overflow(-1) atomic_add_return(int i, atomic_t *v)
++{
 +      return i + xadd_check_overflow(&v->counter, i);
 +}
 +
@@ -15120,11 +15396,17 @@ index b17f4f4..9620151 100644
 + * Atomically adds @i to @v and returns @i + @v
 + */
 +static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
-+{
+ {
        return i + xadd(&v->counter, i);
  }
-@@ -169,9 +301,18 @@ static inline int atomic_sub_return(int i, atomic_t *v)
+@@ -164,15 +296,24 @@ static inline int atomic_add_return(int i, atomic_t *v)
+  *
+  * Atomically subtracts @i from @v and returns @v - @i
+  */
+-static inline int atomic_sub_return(int i, atomic_t *v)
++static inline int __intentional_overflow(-1) atomic_sub_return(int i, atomic_t *v)
+ {
+       return atomic_add_return(-i, v);
  }
  
  #define atomic_inc_return(v)  (atomic_add_return(1, v))
@@ -15144,7 +15426,7 @@ index b17f4f4..9620151 100644
  {
        return cmpxchg(&v->counter, old, new);
  }
-@@ -181,6 +322,11 @@ static inline int atomic_xchg(atomic_t *v, int new)
+@@ -182,6 +323,11 @@ static inline int atomic_xchg(atomic_t *v, int new)
        return xchg(&v->counter, new);
  }
  
@@ -15156,7 +15438,7 @@ index b17f4f4..9620151 100644
  /**
   * __atomic_add_unless - add unless the number is already a given value
   * @v: pointer of type atomic_t
-@@ -190,14 +336,27 @@ static inline int atomic_xchg(atomic_t *v, int new)
+@@ -191,14 +337,27 @@ static inline int atomic_xchg(atomic_t *v, int new)
   * Atomically adds @a to @v, so long as @v was not already @u.
   * Returns the old value of @v.
   */
@@ -15188,7 +15470,7 @@ index b17f4f4..9620151 100644
                if (likely(old == c))
                        break;
                c = old;
-@@ -206,6 +365,49 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
+@@ -207,6 +366,49 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
  }
  
  /**
@@ -15238,8 +15520,8 @@ index b17f4f4..9620151 100644
   * atomic_inc_short - increment of a short integer
   * @v: pointer to type int
   *
-@@ -234,14 +436,37 @@ static inline void atomic_or_long(unsigned long *v1, unsigned long v2)
- #endif
+@@ -220,14 +422,37 @@ static inline short int atomic_inc_short(short int *v)
+ }
  
  /* These are x86-specific, used by some header files */
 -#define atomic_clear_mask(mask, addr)                         \
@@ -15281,8 +15563,8 @@ index b17f4f4..9620151 100644
 +                   : "memory");
 +}
  
- /* Atomic operations are already serializing on x86 */
- #define smp_mb__before_atomic_dec()   barrier()
+ #ifdef CONFIG_X86_32
+ # include <asm/atomic64_32.h>
 diff --git a/arch/x86/include/asm/atomic64_32.h b/arch/x86/include/asm/atomic64_32.h
 index b154de7..bf18a5a 100644
 --- a/arch/x86/include/asm/atomic64_32.h
@@ -15459,18 +15741,13 @@ index b154de7..bf18a5a 100644
   * @i: integer value to subtract
   * @v: pointer to type atomic64_t
 diff --git a/arch/x86/include/asm/atomic64_64.h b/arch/x86/include/asm/atomic64_64.h
-index 46e9052..ae45136 100644
+index f8d273e..02f39f3 100644
 --- a/arch/x86/include/asm/atomic64_64.h
 +++ b/arch/x86/include/asm/atomic64_64.h
-@@ -18,7 +18,19 @@
-  */
- static inline long atomic64_read(const atomic64_t *v)
- {
--      return (*(volatile long *)&(v)->counter);
-+      return (*(volatile const long *)&(v)->counter);
-+}
-+
-+/**
+@@ -22,6 +22,18 @@ static inline long atomic64_read(const atomic64_t *v)
+ }
+ /**
 + * atomic64_read_unchecked - read atomic64 variable
 + * @v: pointer of type atomic64_unchecked_t
 + *
@@ -15479,10 +15756,13 @@ index 46e9052..ae45136 100644
 + */
 +static inline long __intentional_overflow(-1) atomic64_read_unchecked(const atomic64_unchecked_t *v)
 +{
-+      return (*(volatile const long *)&(v)->counter);
- }
- /**
++      return ACCESS_ONCE((v)->counter);
++}
++
++/**
+  * atomic64_set - set atomic64 variable
+  * @v: pointer to type atomic64_t
+  * @i: required value
 @@ -34,6 +46,18 @@ static inline void atomic64_set(atomic64_t *v, long i)
  }
  
@@ -15734,7 +16014,7 @@ index 46e9052..ae45136 100644
  
  #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
 diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h
-index 69bbb48..32517fe 100644
+index 0f4460b..fa1ee19 100644
 --- a/arch/x86/include/asm/barrier.h
 +++ b/arch/x86/include/asm/barrier.h
 @@ -107,7 +107,7 @@
@@ -15756,10 +16036,10 @@ index 69bbb48..32517fe 100644
  
  #define smp_load_acquire(p)                                           \
 diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
-index 9fc1af7..776d75a 100644
+index cfe3b95..d01b118 100644
 --- a/arch/x86/include/asm/bitops.h
 +++ b/arch/x86/include/asm/bitops.h
-@@ -49,7 +49,7 @@
+@@ -50,7 +50,7 @@
   * a mask operation on a byte.
   */
  #define IS_IMMEDIATE(nr)              (__builtin_constant_p(nr))
@@ -15768,7 +16048,7 @@ index 9fc1af7..776d75a 100644
  #define CONST_MASK(nr)                        (1 << ((nr) & 7))
  
  /**
-@@ -205,7 +205,7 @@ static inline void change_bit(long nr, volatile unsigned long *addr)
+@@ -203,7 +203,7 @@ static inline void change_bit(long nr, volatile unsigned long *addr)
   */
  static inline int test_and_set_bit(long nr, volatile unsigned long *addr)
  {
@@ -15777,7 +16057,7 @@ index 9fc1af7..776d75a 100644
  }
  
  /**
-@@ -251,7 +251,7 @@ static inline int __test_and_set_bit(long nr, volatile unsigned long *addr)
+@@ -249,7 +249,7 @@ static inline int __test_and_set_bit(long nr, volatile unsigned long *addr)
   */
  static inline int test_and_clear_bit(long nr, volatile unsigned long *addr)
  {
@@ -15786,7 +16066,7 @@ index 9fc1af7..776d75a 100644
  }
  
  /**
-@@ -304,7 +304,7 @@ static inline int __test_and_change_bit(long nr, volatile unsigned long *addr)
+@@ -302,7 +302,7 @@ static inline int __test_and_change_bit(long nr, volatile unsigned long *addr)
   */
  static inline int test_and_change_bit(long nr, volatile unsigned long *addr)
  {
@@ -15795,7 +16075,7 @@ index 9fc1af7..776d75a 100644
  }
  
  static __always_inline int constant_test_bit(long nr, const volatile unsigned long *addr)
-@@ -345,7 +345,7 @@ static int test_bit(int nr, const volatile unsigned long *addr);
+@@ -343,7 +343,7 @@ static int test_bit(int nr, const volatile unsigned long *addr);
   *
   * Undefined if no bit exists, so code should check against 0 first.
   */
@@ -15804,7 +16084,7 @@ index 9fc1af7..776d75a 100644
  {
        asm("rep; bsf %1,%0"
                : "=r" (word)
-@@ -359,7 +359,7 @@ static inline unsigned long __ffs(unsigned long word)
+@@ -357,7 +357,7 @@ static inline unsigned long __ffs(unsigned long word)
   *
   * Undefined if no zero exists, so code should check against ~0UL first.
   */
@@ -15813,7 +16093,7 @@ index 9fc1af7..776d75a 100644
  {
        asm("rep; bsf %1,%0"
                : "=r" (word)
-@@ -373,7 +373,7 @@ static inline unsigned long ffz(unsigned long word)
+@@ -371,7 +371,7 @@ static inline unsigned long ffz(unsigned long word)
   *
   * Undefined if no set bit exists, so code should check against 0 first.
   */
@@ -15822,7 +16102,7 @@ index 9fc1af7..776d75a 100644
  {
        asm("bsr %1,%0"
            : "=r" (word)
-@@ -436,7 +436,7 @@ static inline int ffs(int x)
+@@ -434,7 +434,7 @@ static inline int ffs(int x)
   * set bit if value is nonzero. The last (most significant) bit is
   * at position 32.
   */
@@ -15831,7 +16111,7 @@ index 9fc1af7..776d75a 100644
  {
        int r;
  
-@@ -478,7 +478,7 @@ static inline int fls(int x)
+@@ -476,7 +476,7 @@ static inline int fls(int x)
   * at position 64.
   */
  #ifdef CONFIG_X86_64
@@ -15895,10 +16175,10 @@ index 9863ee3..4a1f8e1 100644
                return _PAGE_CACHE_WC;
        else if (pg_flags == _PGMT_UC_MINUS)
 diff --git a/arch/x86/include/asm/calling.h b/arch/x86/include/asm/calling.h
-index cb4c73b..c473c29 100644
+index 76659b6..72b8439 100644
 --- a/arch/x86/include/asm/calling.h
 +++ b/arch/x86/include/asm/calling.h
-@@ -82,103 +82,113 @@ For 32-bit we have the following conventions - kernel is built with
+@@ -82,107 +82,117 @@ For 32-bit we have the following conventions - kernel is built with
  #define RSP           152
  #define SS            160
  
@@ -15906,7 +16186,7 @@ index cb4c73b..c473c29 100644
 -#define SWFRAME               ORIG_RAX
 +#define ARGOFFSET     R15
  
-       .macro SAVE_ARGS addskip=0, save_rcx=1, save_r891011=1
+       .macro SAVE_ARGS addskip=0, save_rcx=1, save_r891011=1, rax_enosys=0
 -      subq  $9*8+\addskip, %rsp
 -      CFI_ADJUST_CFA_OFFSET   9*8+\addskip
 -      movq_cfi rdi, 8*8
@@ -15923,8 +16203,13 @@ index cb4c73b..c473c29 100644
 +      movq_cfi rcx, RCX
        .endif
  
+       .if \rax_enosys
+-      movq $-ENOSYS, 4*8(%rsp)
++      movq $-ENOSYS, RAX(%rsp)
+       .else
 -      movq_cfi rax, 4*8
 +      movq_cfi rax, RAX
+       .endif
  
        .if \save_r891011
 -      movq_cfi r8,  3*8
@@ -16017,7 +16302,7 @@ index cb4c73b..c473c29 100644
        .if \skiprax
        .else
 -      movq \offset+72(%rsp), %rax
-+      movq RAX(%rsp), %rax
++      movq ORIG_RAX(%rsp), %rax
        .endif
        .endm
  
@@ -16104,10 +16389,10 @@ index f50de69..2b0a458 100644
                clac();
                return ret;
 diff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h
-index d47786a..2d8883e 100644
+index 99c105d7..2f667ac 100644
 --- a/arch/x86/include/asm/cmpxchg.h
 +++ b/arch/x86/include/asm/cmpxchg.h
-@@ -14,8 +14,12 @@ extern void __cmpxchg_wrong_size(void)
+@@ -16,8 +16,12 @@ extern void __cmpxchg_wrong_size(void)
        __compiletime_error("Bad argument size for cmpxchg");
  extern void __xadd_wrong_size(void)
        __compiletime_error("Bad argument size for xadd");
@@ -16120,7 +16405,7 @@ index d47786a..2d8883e 100644
  
  /*
   * Constants for operation sizes. On 32-bit, the 64-bit size it set to
-@@ -67,6 +71,38 @@ extern void __add_wrong_size(void)
+@@ -69,6 +73,38 @@ extern void __add_wrong_size(void)
                __ret;                                                  \
        })
  
@@ -16183,36 +16468,36 @@ index 59c6c40..5e0b22c 100644
  struct compat_timespec {
        compat_time_t   tv_sec;
 diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
-index e265ff9..72c253b 100644
+index 0bb1335..8f1aec7 100644
 --- a/arch/x86/include/asm/cpufeature.h
 +++ b/arch/x86/include/asm/cpufeature.h
-@@ -203,7 +203,7 @@
- #define X86_FEATURE_DECODEASSISTS (8*32+12) /* AMD Decode Assists support */
- #define X86_FEATURE_PAUSEFILTER (8*32+13) /* AMD filtered pause intercept */
- #define X86_FEATURE_PFTHRESHOLD (8*32+14) /* AMD pause filter threshold */
+@@ -207,7 +207,7 @@
+ #define X86_FEATURE_PAUSEFILTER ( 8*32+13) /* AMD filtered pause intercept */
+ #define X86_FEATURE_PFTHRESHOLD ( 8*32+14) /* AMD pause filter threshold */
+ #define X86_FEATURE_VMMCALL     ( 8*32+15) /* Prefer vmmcall to vmcall */
 -
 +#define X86_FEATURE_STRONGUDEREF (8*32+31) /* PaX PCID based strong UDEREF */
  
  /* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9 */
- #define X86_FEATURE_FSGSBASE  (9*32+ 0) /* {RD/WR}{FS/GS}BASE instructions*/
-@@ -211,7 +211,7 @@
- #define X86_FEATURE_BMI1      (9*32+ 3) /* 1st group bit manipulation extensions */
- #define X86_FEATURE_HLE               (9*32+ 4) /* Hardware Lock Elision */
- #define X86_FEATURE_AVX2      (9*32+ 5) /* AVX2 instructions */
--#define X86_FEATURE_SMEP      (9*32+ 7) /* Supervisor Mode Execution Protection */
-+#define X86_FEATURE_SMEP      (9*32+ 7) /* Supervisor Mode Execution Prevention */
- #define X86_FEATURE_BMI2      (9*32+ 8) /* 2nd group bit manipulation extensions */
- #define X86_FEATURE_ERMS      (9*32+ 9) /* Enhanced REP MOVSB/STOSB */
- #define X86_FEATURE_INVPCID   (9*32+10) /* Invalidate Processor Context ID */
-@@ -359,6 +359,7 @@ extern const char * const x86_power_flags[32];
- #undef  cpu_has_centaur_mcr
- #define cpu_has_centaur_mcr   0
+ #define X86_FEATURE_FSGSBASE  ( 9*32+ 0) /* {RD/WR}{FS/GS}BASE instructions*/
+@@ -215,7 +215,7 @@
+ #define X86_FEATURE_BMI1      ( 9*32+ 3) /* 1st group bit manipulation extensions */
+ #define X86_FEATURE_HLE               ( 9*32+ 4) /* Hardware Lock Elision */
+ #define X86_FEATURE_AVX2      ( 9*32+ 5) /* AVX2 instructions */
+-#define X86_FEATURE_SMEP      ( 9*32+ 7) /* Supervisor Mode Execution Protection */
++#define X86_FEATURE_SMEP      ( 9*32+ 7) /* Supervisor Mode Execution Prevention */
+ #define X86_FEATURE_BMI2      ( 9*32+ 8) /* 2nd group bit manipulation extensions */
+ #define X86_FEATURE_ERMS      ( 9*32+ 9) /* Enhanced REP MOVSB/STOSB */
+ #define X86_FEATURE_INVPCID   ( 9*32+10) /* Invalidate Processor Context ID */
+@@ -383,6 +383,7 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
+ #define cpu_has_cx16          boot_cpu_has(X86_FEATURE_CX16)
+ #define cpu_has_eager_fpu     boot_cpu_has(X86_FEATURE_EAGER_FPU)
+ #define cpu_has_topoext               boot_cpu_has(X86_FEATURE_TOPOEXT)
 +#define cpu_has_pcid          boot_cpu_has(X86_FEATURE_PCID)
- #endif /* CONFIG_X86_64 */
  
  #if __GNUC__ >= 4
-@@ -411,7 +412,8 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
+ extern void warn_pre_alternatives(void);
+@@ -434,7 +435,8 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
  
  #ifdef CONFIG_X86_DEBUG_STATIC_CPU_HAS
        t_warn:
@@ -16222,7 +16507,7 @@ index e265ff9..72c253b 100644
                return false;
  #endif
  
-@@ -431,7 +433,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
+@@ -454,7 +456,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
                             ".section .discard,\"aw\",@progbits\n"
                             " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
                             ".previous\n"
@@ -16231,7 +16516,7 @@ index e265ff9..72c253b 100644
                             "3: movb $1,%0\n"
                             "4:\n"
                             ".previous\n"
-@@ -468,7 +470,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
+@@ -491,7 +493,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
                         " .byte 2b - 1b\n"             /* src len */
                         " .byte 4f - 3f\n"             /* repl len */
                         ".previous\n"
@@ -16240,7 +16525,7 @@ index e265ff9..72c253b 100644
                         "3: .byte 0xe9\n .long %l[t_no] - 2b\n"
                         "4:\n"
                         ".previous\n"
-@@ -501,7 +503,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
+@@ -524,7 +526,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
                             ".section .discard,\"aw\",@progbits\n"
                             " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
                             ".previous\n"
@@ -16249,7 +16534,7 @@ index e265ff9..72c253b 100644
                             "3: movb $0,%0\n"
                             "4:\n"
                             ".previous\n"
-@@ -515,7 +517,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
+@@ -538,7 +540,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
                             ".section .discard,\"aw\",@progbits\n"
                             " .byte 0xff + (6f-5f) - (4b-3b)\n" /* size check */
                             ".previous\n"
@@ -16517,10 +16802,20 @@ index ced283a..ffe04cc 100644
        union {
                u64 v64;
 diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
-index 2c71182..731124d 100644
+index ca3347a..1a5082a 100644
 --- a/arch/x86/include/asm/elf.h
 +++ b/arch/x86/include/asm/elf.h
-@@ -243,7 +243,25 @@ extern int force_personality32;
+@@ -75,9 +75,6 @@ typedef struct user_fxsr_struct elf_fpxregset_t;
+ #include <asm/vdso.h>
+-#ifdef CONFIG_X86_64
+-extern unsigned int vdso64_enabled;
+-#endif
+ #if defined(CONFIG_X86_32) || defined(CONFIG_COMPAT)
+ extern unsigned int vdso32_enabled;
+ #endif
+@@ -249,7 +246,25 @@ extern int force_personality32;
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
  
@@ -16546,26 +16841,27 @@ index 2c71182..731124d 100644
  
  /* This yields a mask that user programs can use to figure out what
     instruction set this CPU supports.  This could be done in user space,
-@@ -292,16 +310,12 @@ do {                                                                     \
+@@ -298,17 +313,13 @@ do {                                                                     \
  
  #define ARCH_DLINFO                                                   \
  do {                                                                  \
--      if (vdso_enabled)                                               \
+-      if (vdso64_enabled)                                             \
 -              NEW_AUX_ENT(AT_SYSINFO_EHDR,                            \
--                          (unsigned long)current->mm->context.vdso);  \
+-                          (unsigned long __force)current->mm->context.vdso); \
 +      NEW_AUX_ENT(AT_SYSINFO_EHDR, current->mm->context.vdso);        \
  } while (0)
  
+ /* As a historical oddity, the x32 and x86_64 vDSOs are controlled together. */
  #define ARCH_DLINFO_X32                                                       \
  do {                                                                  \
--      if (vdso_enabled)                                               \
+-      if (vdso64_enabled)                                             \
 -              NEW_AUX_ENT(AT_SYSINFO_EHDR,                            \
--                          (unsigned long)current->mm->context.vdso);  \
+-                          (unsigned long __force)current->mm->context.vdso); \
 +      NEW_AUX_ENT(AT_SYSINFO_EHDR, current->mm->context.vdso);        \
  } while (0)
  
  #define AT_SYSINFO            32
-@@ -316,7 +330,7 @@ else                                                                       \
+@@ -323,10 +334,10 @@ else                                                                     \
  
  #endif /* !CONFIG_X86_32 */
  
@@ -16573,10 +16869,14 @@ index 2c71182..731124d 100644
 +#define VDSO_CURRENT_BASE     (current->mm->context.vdso)
  
  #define VDSO_ENTRY                                                    \
-       ((unsigned long)VDSO32_SYMBOL(VDSO_CURRENT_BASE, vsyscall))
-@@ -332,9 +346,6 @@ extern int x32_setup_additional_pages(struct linux_binprm *bprm,
- extern int syscall32_setup_pages(struct linux_binprm *, int exstack);
- #define compat_arch_setup_additional_pages    syscall32_setup_pages
+-      ((unsigned long)current->mm->context.vdso +                     \
++      (current->mm->context.vdso +                                    \
+        selected_vdso32->sym___kernel_vsyscall)
+ struct linux_binprm;
+@@ -338,9 +349,6 @@ extern int compat_arch_setup_additional_pages(struct linux_binprm *bprm,
+                                             int uses_interp);
+ #define compat_arch_setup_additional_pages compat_arch_setup_additional_pages
  
 -extern unsigned long arch_randomize_brk(struct mm_struct *mm);
 -#define arch_randomize_brk arch_randomize_brk
@@ -16630,7 +16930,7 @@ index 1c7eefe..d0e4702 100644
  };
  
 diff --git a/arch/x86/include/asm/fpu-internal.h b/arch/x86/include/asm/fpu-internal.h
-index cea1c76..6c0d79b 100644
+index e97622f..d0ba77a 100644
 --- a/arch/x86/include/asm/fpu-internal.h
 +++ b/arch/x86/include/asm/fpu-internal.h
 @@ -124,8 +124,11 @@ static inline void sanitize_i387_state(struct task_struct *tsk)
@@ -16728,7 +17028,7 @@ index b4c1f54..e290c08 100644
        pagefault_enable();
  
 diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
-index a307b75..ec74ca2 100644
+index 4615906..788c817 100644
 --- a/arch/x86/include/asm/hw_irq.h
 +++ b/arch/x86/include/asm/hw_irq.h
 @@ -164,8 +164,8 @@ extern void setup_ioapic_dest(void);
@@ -16743,7 +17043,7 @@ index a307b75..ec74ca2 100644
  /* EISA */
  extern void eisa_set_level_irq(unsigned int irq);
 diff --git a/arch/x86/include/asm/i8259.h b/arch/x86/include/asm/i8259.h
-index a203659..9889f1c 100644
+index ccffa53..3c90c87 100644
 --- a/arch/x86/include/asm/i8259.h
 +++ b/arch/x86/include/asm/i8259.h
 @@ -62,7 +62,7 @@ struct legacy_pic {
@@ -16813,7 +17113,7 @@ index b8237d8..3e8864e 100644
   * Convert a virtual cached pointer to an uncached pointer
   */
 diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h
-index bba3cf8..06bc8da 100644
+index 0a8b519..80e7d5b 100644
 --- a/arch/x86/include/asm/irqflags.h
 +++ b/arch/x86/include/asm/irqflags.h
 @@ -141,6 +141,11 @@ static inline notrace unsigned long arch_local_irq_save(void)
@@ -16829,10 +17129,10 @@ index bba3cf8..06bc8da 100644
  #define INTERRUPT_RETURN              iret
  #define ENABLE_INTERRUPTS_SYSEXIT     sti; sysexit
 diff --git a/arch/x86/include/asm/kprobes.h b/arch/x86/include/asm/kprobes.h
-index 9454c16..e4100e3 100644
+index 4421b5d..8543006 100644
 --- a/arch/x86/include/asm/kprobes.h
 +++ b/arch/x86/include/asm/kprobes.h
-@@ -38,13 +38,8 @@ typedef u8 kprobe_opcode_t;
+@@ -37,13 +37,8 @@ typedef u8 kprobe_opcode_t;
  #define RELATIVEJUMP_SIZE 5
  #define RELATIVECALL_OPCODE 0xe8
  #define RELATIVE_ADDR_SIZE 4
@@ -16848,6 +17148,18 @@ index 9454c16..e4100e3 100644
  
  #define flush_insn_slot(p)    do { } while (0)
  
+diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
+index 6ed0c30..74fb6c3 100644
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -51,6 +51,7 @@
+                         | X86_CR0_NW | X86_CR0_CD | X86_CR0_PG))
+ #define CR3_L_MODE_RESERVED_BITS 0xFFFFFF0000000000ULL
++#define CR3_PCID_INVD          (1UL << 63)
+ #define CR4_RESERVED_BITS                                               \
+       (~(unsigned long)(X86_CR4_VME | X86_CR4_PVI | X86_CR4_TSD | X86_CR4_DE\
+                         | X86_CR4_PSE | X86_CR4_PAE | X86_CR4_MCE     \
 diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h
 index 4ad6560..75c7bdd 100644
 --- a/arch/x86/include/asm/local.h
@@ -17052,7 +17364,7 @@ index 0000000..2bfd3ba
 +
 +#endif /* X86_MMAN_H */
 diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
-index 5f55e69..e20bfb1 100644
+index 876e74e..e20bfb1 100644
 --- a/arch/x86/include/asm/mmu.h
 +++ b/arch/x86/include/asm/mmu.h
 @@ -9,7 +9,7 @@
@@ -17068,7 +17380,7 @@ index 5f55e69..e20bfb1 100644
  #endif
  
        struct mutex lock;
--      void *vdso;
+-      void __user *vdso;
 +      unsigned long vdso;
 +
 +#ifdef CONFIG_X86_32
@@ -17086,10 +17398,10 @@ index 5f55e69..e20bfb1 100644
  
  #ifdef CONFIG_SMP
 diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
-index be12c53..4d24039 100644
+index 166af2a..648c200 100644
 --- a/arch/x86/include/asm/mmu_context.h
 +++ b/arch/x86/include/asm/mmu_context.h
-@@ -24,6 +24,20 @@ void destroy_context(struct mm_struct *mm);
+@@ -28,6 +28,20 @@ void destroy_context(struct mm_struct *mm);
  
  static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
  {
@@ -17110,7 +17422,7 @@ index be12c53..4d24039 100644
  #ifdef CONFIG_SMP
        if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK)
                this_cpu_write(cpu_tlbstate.state, TLBSTATE_LAZY);
-@@ -34,16 +48,59 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
+@@ -38,16 +52,59 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
                             struct task_struct *tsk)
  {
        unsigned cpu = smp_processor_id();
@@ -17167,19 +17479,19 @@ index be12c53..4d24039 100644
 +#else
                load_cr3(next->pgd);
 +#endif
+               trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
  
                /* Stop flush ipis for the previous mm */
-               cpumask_clear_cpu(cpu, mm_cpumask(prev));
-@@ -51,9 +108,67 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
+@@ -56,9 +113,67 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
                /* Load the LDT, if the LDT is different: */
                if (unlikely(prev->context.ldt != next->context.ldt))
                        load_LDT_nolock(&next->context);
 +
 +#if defined(CONFIG_X86_32) && defined(CONFIG_PAX_PAGEEXEC) && defined(CONFIG_SMP)
 +              if (!(__supported_pte_mask & _PAGE_NX)) {
-+                      smp_mb__before_clear_bit();
++                      smp_mb__before_atomic();
 +                      cpu_clear(cpu, prev->context.cpu_user_cs_mask);
-+                      smp_mb__after_clear_bit();
++                      smp_mb__after_atomic();
 +                      cpu_set(cpu, next->context.cpu_user_cs_mask);
 +              }
 +#endif
@@ -17239,13 +17551,14 @@ index be12c53..4d24039 100644
                this_cpu_write(cpu_tlbstate.state, TLBSTATE_OK);
                BUG_ON(this_cpu_read(cpu_tlbstate.active_mm) != next);
  
-@@ -70,11 +185,28 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
+@@ -75,12 +190,29 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
                         * tlb flush IPI delivery. We must reload CR3
                         * to make sure to use no freed page tables.
                         */
 +
 +#ifndef CONFIG_PAX_PER_CPU_PGD
                        load_cr3(next->pgd);
+                       trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL);
 +#endif
 +
                        load_LDT_nolock(&next->context);
@@ -17350,7 +17663,7 @@ index 5f2fc44..106caa6 100644
  void unregister_nmi_handler(unsigned int, const char *);
  
 diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h
-index 775873d..04cd306 100644
+index 802dde3..9183e68 100644
 --- a/arch/x86/include/asm/page.h
 +++ b/arch/x86/include/asm/page.h
 @@ -52,6 +52,7 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
@@ -17385,7 +17698,7 @@ index 775873d..04cd306 100644
  
  #include <asm-generic/memory_model.h>
 diff --git a/arch/x86/include/asm/page_64.h b/arch/x86/include/asm/page_64.h
-index 0f1ddee..e2fc3d1 100644
+index f408caf..4a0455e 100644
 --- a/arch/x86/include/asm/page_64.h
 +++ b/arch/x86/include/asm/page_64.h
 @@ -7,9 +7,9 @@
@@ -17645,7 +17958,7 @@ index c4412e9..90e88c5 100644
  {
        return (pud_t *)get_zeroed_page(GFP_KERNEL|__GFP_REPEAT);
 diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h
-index 0d193e2..bf59aeb 100644
+index 206a87f..1623b06 100644
 --- a/arch/x86/include/asm/pgtable-2level.h
 +++ b/arch/x86/include/asm/pgtable-2level.h
 @@ -18,7 +18,9 @@ static inline void native_set_pte(pte_t *ptep , pte_t pte)
@@ -17680,7 +17993,7 @@ index 81bb91b..9392125 100644
  
  /*
 diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
-index b459ddf..b44081b 100644
+index aa97a07..5c53c32 100644
 --- a/arch/x86/include/asm/pgtable.h
 +++ b/arch/x86/include/asm/pgtable.h
 @@ -46,6 +46,7 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page);
@@ -17691,7 +18004,7 @@ index b459ddf..b44081b 100644
  #define pgd_clear(pgd)                        native_pgd_clear(pgd)
  #endif
  
-@@ -83,12 +84,51 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page);
+@@ -83,12 +84,53 @@ extern struct mm_struct *pgd_page_get_mm(struct page *page);
  
  #define arch_end_context_switch(prev) do {} while(0)
  
@@ -17712,6 +18025,7 @@ index b459ddf..b44081b 100644
 +      cr0 = read_cr0() ^ X86_CR0_WP;
 +      BUG_ON(cr0 & X86_CR0_WP);
 +      write_cr0(cr0);
++      barrier();
 +      return cr0 ^ X86_CR0_WP;
 +}
 +
@@ -17719,6 +18033,7 @@ index b459ddf..b44081b 100644
 +{
 +      unsigned long cr0;
 +
++      barrier();
 +      cr0 = read_cr0() ^ X86_CR0_WP;
 +      BUG_ON(!(cr0 & X86_CR0_WP));
 +      write_cr0(cr0);
@@ -17743,7 +18058,7 @@ index b459ddf..b44081b 100644
  static inline int pte_dirty(pte_t pte)
  {
        return pte_flags(pte) & _PAGE_DIRTY;
-@@ -149,6 +189,11 @@ static inline unsigned long pud_pfn(pud_t pud)
+@@ -155,6 +197,11 @@ static inline unsigned long pud_pfn(pud_t pud)
        return (pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT;
  }
  
@@ -17755,7 +18070,7 @@ index b459ddf..b44081b 100644
  #define pte_page(pte) pfn_to_page(pte_pfn(pte))
  
  static inline int pmd_large(pmd_t pte)
-@@ -202,9 +247,29 @@ static inline pte_t pte_wrprotect(pte_t pte)
+@@ -208,9 +255,29 @@ static inline pte_t pte_wrprotect(pte_t pte)
        return pte_clear_flags(pte, _PAGE_RW);
  }
  
@@ -17786,7 +18101,7 @@ index b459ddf..b44081b 100644
  }
  
  static inline pte_t pte_mkdirty(pte_t pte)
-@@ -431,6 +496,16 @@ pte_t *populate_extra_pte(unsigned long vaddr);
+@@ -440,6 +507,16 @@ pte_t *populate_extra_pte(unsigned long vaddr);
  #endif
  
  #ifndef __ASSEMBLY__
@@ -17803,7 +18118,7 @@ index b459ddf..b44081b 100644
  #include <linux/mm_types.h>
  #include <linux/mmdebug.h>
  #include <linux/log2.h>
-@@ -571,7 +646,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
+@@ -586,7 +663,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
   * Currently stuck as a macro due to indirect forward reference to
   * linux/mmzone.h's __section_mem_map_addr() definition:
   */
@@ -17812,7 +18127,7 @@ index b459ddf..b44081b 100644
  
  /* Find an entry in the second-level page table.. */
  static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
-@@ -611,7 +686,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd)
+@@ -626,7 +703,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd)
   * Currently stuck as a macro due to indirect forward reference to
   * linux/mmzone.h's __section_mem_map_addr() definition:
   */
@@ -17821,7 +18136,7 @@ index b459ddf..b44081b 100644
  
  /* to find an entry in a page-table-directory. */
  static inline unsigned long pud_index(unsigned long address)
-@@ -626,7 +701,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
+@@ -641,7 +718,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
  
  static inline int pgd_bad(pgd_t pgd)
  {
@@ -17830,7 +18145,7 @@ index b459ddf..b44081b 100644
  }
  
  static inline int pgd_none(pgd_t pgd)
-@@ -649,7 +724,12 @@ static inline int pgd_none(pgd_t pgd)
+@@ -664,7 +741,12 @@ static inline int pgd_none(pgd_t pgd)
   * pgd_offset() returns a (pgd_t *)
   * pgd_index() is used get the offset into the pgd page's array of pgd_t's;
   */
@@ -17844,7 +18159,7 @@ index b459ddf..b44081b 100644
  /*
   * a shortcut which implies the use of the kernel's pgd, instead
   * of a process's
-@@ -660,6 +740,23 @@ static inline int pgd_none(pgd_t pgd)
+@@ -675,6 +757,23 @@ static inline int pgd_none(pgd_t pgd)
  #define KERNEL_PGD_BOUNDARY   pgd_index(PAGE_OFFSET)
  #define KERNEL_PGD_PTRS               (PTRS_PER_PGD - KERNEL_PGD_BOUNDARY)
  
@@ -17868,7 +18183,7 @@ index b459ddf..b44081b 100644
  #ifndef __ASSEMBLY__
  
  extern int direct_gbpages;
-@@ -826,11 +923,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
+@@ -841,11 +940,24 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
   * dst and src can be on the same page, but the range must not overlap,
   * and must not cross a page boundary.
   */
@@ -17896,7 +18211,7 @@ index b459ddf..b44081b 100644
  static inline int page_level_shift(enum pg_level level)
  {
 diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h
-index 9ee3221..b979c6b 100644
+index b6c0b40..3535d47 100644
 --- a/arch/x86/include/asm/pgtable_32.h
 +++ b/arch/x86/include/asm/pgtable_32.h
 @@ -25,9 +25,6 @@
@@ -17909,7 +18224,7 @@ index 9ee3221..b979c6b 100644
  static inline void pgtable_cache_init(void) { }
  static inline void check_pgt_cache(void) { }
  void paging_init(void);
-@@ -48,6 +45,12 @@ extern void set_pmd_pfn(unsigned long, unsigned long, pgprot_t);
+@@ -45,6 +42,12 @@ void paging_init(void);
  # include <asm/pgtable-2level.h>
  #endif
  
@@ -17922,7 +18237,7 @@ index 9ee3221..b979c6b 100644
  #if defined(CONFIG_HIGHPTE)
  #define pte_offset_map(dir, address)                                  \
        ((pte_t *)kmap_atomic(pmd_page(*(dir))) +               \
-@@ -62,12 +65,17 @@ extern void set_pmd_pfn(unsigned long, unsigned long, pgprot_t);
+@@ -59,12 +62,17 @@ void paging_init(void);
  /* Clear a kernel PTE and flush it from the TLB */
  #define kpte_clear_flush(ptep, vaddr)         \
  do {                                          \
@@ -17974,10 +18289,10 @@ index ed5903b..c7fe163 100644
  #define MODULES_END   VMALLOC_END
  #define MODULES_LEN   (MODULES_VADDR - MODULES_END)
 diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
-index e22c1db..23a625a 100644
+index 4572b2f..4430113 100644
 --- a/arch/x86/include/asm/pgtable_64.h
 +++ b/arch/x86/include/asm/pgtable_64.h
-@@ -16,10 +16,14 @@
+@@ -16,11 +16,16 @@
  
  extern pud_t level3_kernel_pgt[512];
  extern pud_t level3_ident_pgt[512];
@@ -17988,13 +18303,15 @@ index e22c1db..23a625a 100644
  extern pmd_t level2_kernel_pgt[512];
  extern pmd_t level2_fixmap_pgt[512];
 -extern pmd_t level2_ident_pgt[512];
--extern pgd_t init_level4_pgt[];
 +extern pmd_t level2_ident_pgt[512*2];
+ extern pte_t level1_fixmap_pgt[512];
+-extern pgd_t init_level4_pgt[];
++extern pte_t level1_vsyscall_pgt[512];
 +extern pgd_t init_level4_pgt[512];
  
  #define swapper_pg_dir init_level4_pgt
  
-@@ -61,7 +65,9 @@ static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
+@@ -62,7 +67,9 @@ static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
  
  static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
  {
@@ -18004,7 +18321,7 @@ index e22c1db..23a625a 100644
  }
  
  static inline void native_pmd_clear(pmd_t *pmd)
-@@ -97,7 +103,9 @@ static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
+@@ -98,7 +105,9 @@ static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
  
  static inline void native_set_pud(pud_t *pudp, pud_t pud)
  {
@@ -18014,7 +18331,7 @@ index e22c1db..23a625a 100644
  }
  
  static inline void native_pud_clear(pud_t *pud)
-@@ -107,6 +115,13 @@ static inline void native_pud_clear(pud_t *pud)
+@@ -108,6 +117,13 @@ static inline void native_pud_clear(pud_t *pud)
  
  static inline void native_set_pgd(pgd_t *pgdp, pgd_t pgd)
  {
@@ -18029,51 +18346,29 @@ index e22c1db..23a625a 100644
  }
  
 diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h
-index c883bf7..19970b3 100644
+index 7166e25..baaa6fe 100644
 --- a/arch/x86/include/asm/pgtable_64_types.h
 +++ b/arch/x86/include/asm/pgtable_64_types.h
-@@ -61,6 +61,11 @@ typedef struct { pteval_t pte; } pte_t;
+@@ -61,9 +61,14 @@ typedef struct { pteval_t pte; } pte_t;
  #define MODULES_VADDR    (__START_KERNEL_map + KERNEL_IMAGE_SIZE)
  #define MODULES_END      _AC(0xffffffffff000000, UL)
  #define MODULES_LEN   (MODULES_END - MODULES_VADDR)
 +#define MODULES_EXEC_VADDR MODULES_VADDR
 +#define MODULES_EXEC_END MODULES_END
-+
+ #define ESPFIX_PGD_ENTRY _AC(-2, UL)
+ #define ESPFIX_BASE_ADDR (ESPFIX_PGD_ENTRY << PGDIR_SHIFT)
 +#define ktla_ktva(addr)               (addr)
 +#define ktva_ktla(addr)               (addr)
++
  #define EARLY_DYNAMIC_PAGE_TABLES     64
  
+ #endif /* _ASM_X86_PGTABLE_64_DEFS_H */
 diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h
-index eb3d449..8d95316 100644
+index 0778964..0e94758 100644
 --- a/arch/x86/include/asm/pgtable_types.h
 +++ b/arch/x86/include/asm/pgtable_types.h
-@@ -16,13 +16,12 @@
- #define _PAGE_BIT_PSE         7       /* 4 MB (or 2MB) page */
- #define _PAGE_BIT_PAT         7       /* on 4KB pages */
- #define _PAGE_BIT_GLOBAL      8       /* Global TLB entry PPro+ */
--#define _PAGE_BIT_UNUSED1     9       /* available for programmer */
-+#define _PAGE_BIT_SPECIAL     9       /* special mappings, no associated struct page */
- #define _PAGE_BIT_IOMAP               10      /* flag used to indicate IO mapping */
- #define _PAGE_BIT_HIDDEN      11      /* hidden by kmemcheck */
- #define _PAGE_BIT_PAT_LARGE   12      /* On 2MB or 1GB pages */
--#define _PAGE_BIT_SPECIAL     _PAGE_BIT_UNUSED1
--#define _PAGE_BIT_CPA_TEST    _PAGE_BIT_UNUSED1
--#define _PAGE_BIT_SPLITTING   _PAGE_BIT_UNUSED1 /* only valid on a PSE pmd */
-+#define _PAGE_BIT_CPA_TEST    _PAGE_BIT_SPECIAL
-+#define _PAGE_BIT_SPLITTING   _PAGE_BIT_SPECIAL /* only valid on a PSE pmd */
- #define _PAGE_BIT_NX           63       /* No execute: only valid after cpuid check */
- /* If _PAGE_BIT_PRESENT is clear, we use these: */
-@@ -40,7 +39,6 @@
- #define _PAGE_DIRTY   (_AT(pteval_t, 1) << _PAGE_BIT_DIRTY)
- #define _PAGE_PSE     (_AT(pteval_t, 1) << _PAGE_BIT_PSE)
- #define _PAGE_GLOBAL  (_AT(pteval_t, 1) << _PAGE_BIT_GLOBAL)
--#define _PAGE_UNUSED1 (_AT(pteval_t, 1) << _PAGE_BIT_UNUSED1)
- #define _PAGE_IOMAP   (_AT(pteval_t, 1) << _PAGE_BIT_IOMAP)
- #define _PAGE_PAT     (_AT(pteval_t, 1) << _PAGE_BIT_PAT)
- #define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE)
-@@ -87,8 +85,10 @@
+@@ -110,8 +110,10 @@
  
  #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
  #define _PAGE_NX      (_AT(pteval_t, 1) << _PAGE_BIT_NX)
@@ -18085,7 +18380,7 @@ index eb3d449..8d95316 100644
  #endif
  
  #define _PAGE_FILE    (_AT(pteval_t, 1) << _PAGE_BIT_FILE)
-@@ -147,6 +147,9 @@
+@@ -150,6 +152,9 @@
  #define PAGE_READONLY_EXEC    __pgprot(_PAGE_PRESENT | _PAGE_USER |   \
                                         _PAGE_ACCESSED)
  
@@ -18095,7 +18390,7 @@ index eb3d449..8d95316 100644
  #define __PAGE_KERNEL_EXEC                                            \
        (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
  #define __PAGE_KERNEL         (__PAGE_KERNEL_EXEC | _PAGE_NX)
-@@ -157,7 +160,7 @@
+@@ -160,7 +165,7 @@
  #define __PAGE_KERNEL_WC              (__PAGE_KERNEL | _PAGE_CACHE_WC)
  #define __PAGE_KERNEL_NOCACHE         (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
  #define __PAGE_KERNEL_UC_MINUS                (__PAGE_KERNEL | _PAGE_PCD)
@@ -18104,7 +18399,7 @@ index eb3d449..8d95316 100644
  #define __PAGE_KERNEL_VVAR            (__PAGE_KERNEL_RO | _PAGE_USER)
  #define __PAGE_KERNEL_VVAR_NOCACHE    (__PAGE_KERNEL_VVAR | _PAGE_PCD | _PAGE_PWT)
  #define __PAGE_KERNEL_LARGE           (__PAGE_KERNEL | _PAGE_PSE)
-@@ -214,7 +217,7 @@
+@@ -217,7 +222,7 @@
  #ifdef CONFIG_X86_64
  #define __PAGE_KERNEL_IDENT_LARGE_EXEC        __PAGE_KERNEL_LARGE_EXEC
  #else
@@ -18113,7 +18408,7 @@ index eb3d449..8d95316 100644
  #define PDE_IDENT_ATTR         0x063          /* PRESENT+RW+DIRTY+ACCESSED */
  #define PGD_IDENT_ATTR         0x001          /* PRESENT (no other attributes) */
  #endif
-@@ -253,7 +256,17 @@ static inline pgdval_t pgd_flags(pgd_t pgd)
+@@ -256,7 +261,17 @@ static inline pgdval_t pgd_flags(pgd_t pgd)
  {
        return native_pgd_val(pgd) & PTE_FLAGS_MASK;
  }
@@ -18131,7 +18426,7 @@ index eb3d449..8d95316 100644
  #if PAGETABLE_LEVELS > 3
  typedef struct { pudval_t pud; } pud_t;
  
-@@ -267,8 +280,6 @@ static inline pudval_t native_pud_val(pud_t pud)
+@@ -270,8 +285,6 @@ static inline pudval_t native_pud_val(pud_t pud)
        return pud.pud;
  }
  #else
@@ -18140,7 +18435,7 @@ index eb3d449..8d95316 100644
  static inline pudval_t native_pud_val(pud_t pud)
  {
        return native_pgd_val(pud.pgd);
-@@ -288,8 +299,6 @@ static inline pmdval_t native_pmd_val(pmd_t pmd)
+@@ -291,8 +304,6 @@ static inline pmdval_t native_pmd_val(pmd_t pmd)
        return pmd.pmd;
  }
  #else
@@ -18149,7 +18444,7 @@ index eb3d449..8d95316 100644
  static inline pmdval_t native_pmd_val(pmd_t pmd)
  {
        return native_pgd_val(pmd.pud.pgd);
-@@ -329,7 +338,6 @@ typedef struct page *pgtable_t;
+@@ -346,7 +357,6 @@ typedef struct page *pgtable_t;
  
  extern pteval_t __supported_pte_mask;
  extern void set_nx(void);
@@ -18158,7 +18453,7 @@ index eb3d449..8d95316 100644
  #define pgprot_writecombine   pgprot_writecombine
  extern pgprot_t pgprot_writecombine(pgprot_t prot);
 diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h
-index 7024c12..71c46b9 100644
+index 4008734..48f0d81 100644
 --- a/arch/x86/include/asm/preempt.h
 +++ b/arch/x86/include/asm/preempt.h
 @@ -87,7 +87,7 @@ static __always_inline void __preempt_count_sub(int val)
@@ -18171,10 +18466,10 @@ index 7024c12..71c46b9 100644
  
  /*
 diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
-index a4ea023..33aa874 100644
+index eb71ec7..f06532a 100644
 --- a/arch/x86/include/asm/processor.h
 +++ b/arch/x86/include/asm/processor.h
-@@ -128,7 +128,7 @@ struct cpuinfo_x86 {
+@@ -127,7 +127,7 @@ struct cpuinfo_x86 {
        /* Index into per_cpu list: */
        u16                     cpu_index;
        u32                     microcode;
@@ -18183,7 +18478,7 @@ index a4ea023..33aa874 100644
  
  #define X86_VENDOR_INTEL      0
  #define X86_VENDOR_CYRIX      1
-@@ -199,9 +199,21 @@ static inline void native_cpuid(unsigned int *eax, unsigned int *ebx,
+@@ -198,9 +198,21 @@ static inline void native_cpuid(unsigned int *eax, unsigned int *ebx,
            : "memory");
  }
  
@@ -18193,7 +18488,7 @@ index a4ea023..33aa874 100644
 +#define INVPCID_SINGLE_ADDRESS        0UL
 +#define INVPCID_SINGLE_CONTEXT        1UL
 +#define INVPCID_ALL_GLOBAL    2UL
-+#define INVPCID_ALL_MONGLOBAL 3UL
++#define INVPCID_ALL_NONGLOBAL 3UL
 +
 +#define PCID_KERNEL           0UL
 +#define PCID_USER             1UL
@@ -18206,7 +18501,7 @@ index a4ea023..33aa874 100644
  }
  
  #ifdef CONFIG_X86_32
-@@ -283,7 +295,7 @@ struct tss_struct {
+@@ -282,7 +294,7 @@ struct tss_struct {
  
  } ____cacheline_aligned;
  
@@ -18215,7 +18510,7 @@ index a4ea023..33aa874 100644
  
  /*
   * Save the original ist values for checking stack pointers during debugging
-@@ -479,6 +491,7 @@ struct thread_struct {
+@@ -478,6 +490,7 @@ struct thread_struct {
        unsigned short          ds;
        unsigned short          fsindex;
        unsigned short          gsindex;
@@ -18223,7 +18518,7 @@ index a4ea023..33aa874 100644
  #endif
  #ifdef CONFIG_X86_32
        unsigned long           ip;
-@@ -588,29 +601,8 @@ static inline void load_sp0(struct tss_struct *tss,
+@@ -587,29 +600,8 @@ static inline void load_sp0(struct tss_struct *tss,
  extern unsigned long mmu_cr4_features;
  extern u32 *trampoline_cr4_features;
  
@@ -18255,7 +18550,7 @@ index a4ea023..33aa874 100644
  
  typedef struct {
        unsigned long           seg;
-@@ -836,11 +828,18 @@ static inline void spin_lock_prefetch(const void *x)
+@@ -837,11 +829,18 @@ static inline void spin_lock_prefetch(const void *x)
   */
  #define TASK_SIZE             PAGE_OFFSET
  #define TASK_SIZE_MAX         TASK_SIZE
@@ -18276,7 +18571,7 @@ index a4ea023..33aa874 100644
        .vm86_info              = NULL,                                   \
        .sysenter_cs            = __KERNEL_CS,                            \
        .io_bitmap_ptr          = NULL,                                   \
-@@ -854,7 +853,7 @@ static inline void spin_lock_prefetch(const void *x)
+@@ -855,7 +854,7 @@ static inline void spin_lock_prefetch(const void *x)
   */
  #define INIT_TSS  {                                                     \
        .x86_tss = {                                                      \
@@ -18285,7 +18580,7 @@ index a4ea023..33aa874 100644
                .ss0            = __KERNEL_DS,                            \
                .ss1            = __KERNEL_CS,                            \
                .io_bitmap_base = INVALID_IO_BITMAP_OFFSET,               \
-@@ -865,11 +864,7 @@ static inline void spin_lock_prefetch(const void *x)
+@@ -866,11 +865,7 @@ static inline void spin_lock_prefetch(const void *x)
  extern unsigned long thread_saved_pc(struct task_struct *tsk);
  
  #define THREAD_SIZE_LONGS      (THREAD_SIZE/sizeof(unsigned long))
@@ -18298,7 +18593,7 @@ index a4ea023..33aa874 100644
  
  /*
   * The below -8 is to reserve 8 bytes on top of the ring0 stack.
-@@ -884,7 +879,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
+@@ -885,7 +880,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
  #define task_pt_regs(task)                                             \
  ({                                                                     \
         struct pt_regs *__regs__;                                       \
@@ -18307,7 +18602,7 @@ index a4ea023..33aa874 100644
         __regs__ - 1;                                                   \
  })
  
-@@ -894,13 +889,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
+@@ -895,13 +890,13 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
  /*
   * User space process size. 47bits minus one guard page.
   */
@@ -18323,7 +18618,7 @@ index a4ea023..33aa874 100644
  
  #define TASK_SIZE             (test_thread_flag(TIF_ADDR32) ? \
                                        IA32_PAGE_OFFSET : TASK_SIZE_MAX)
-@@ -911,11 +906,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
+@@ -912,11 +907,11 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);
  #define STACK_TOP_MAX         TASK_SIZE_MAX
  
  #define INIT_THREAD  { \
@@ -18337,7 +18632,7 @@ index a4ea023..33aa874 100644
  }
  
  /*
-@@ -943,6 +938,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
+@@ -944,6 +939,10 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
   */
  #define TASK_UNMAPPED_BASE    (PAGE_ALIGN(TASK_SIZE / 3))
  
@@ -18348,7 +18643,7 @@ index a4ea023..33aa874 100644
  #define KSTK_EIP(task)                (task_pt_regs(task)->ip)
  
  /* Get/set a process' ability to use the timestamp counter instruction */
-@@ -969,7 +968,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves)
+@@ -970,7 +969,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves)
        return 0;
  }
  
@@ -18357,7 +18652,7 @@ index a4ea023..33aa874 100644
  extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
  
  void default_idle(void);
-@@ -979,6 +978,6 @@ bool xen_set_default_idle(void);
+@@ -980,6 +979,6 @@ bool xen_set_default_idle(void);
  #define xen_set_default_idle 0
  #endif
  
@@ -18366,10 +18661,10 @@ index a4ea023..33aa874 100644
  void df_debug(struct pt_regs *regs, long error_code);
  #endif /* _ASM_X86_PROCESSOR_H */
 diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
-index 6205f0c..688a3a9 100644
+index 86fc2bb..bd5049a 100644
 --- a/arch/x86/include/asm/ptrace.h
 +++ b/arch/x86/include/asm/ptrace.h
-@@ -84,28 +84,29 @@ static inline unsigned long regs_return_value(struct pt_regs *regs)
+@@ -89,28 +89,29 @@ static inline unsigned long regs_return_value(struct pt_regs *regs)
  }
  
  /*
@@ -18405,7 +18700,7 @@ index 6205f0c..688a3a9 100644
  #endif
  }
  
-@@ -121,15 +122,16 @@ static inline int v8086_mode(struct pt_regs *regs)
+@@ -126,15 +127,16 @@ static inline int v8086_mode(struct pt_regs *regs)
  #ifdef CONFIG_X86_64
  static inline bool user_64bit_mode(struct pt_regs *regs)
  {
@@ -18424,7 +18719,7 @@ index 6205f0c..688a3a9 100644
  #endif
  }
  
-@@ -180,9 +182,11 @@ static inline unsigned long regs_get_register(struct pt_regs *regs,
+@@ -185,9 +187,11 @@ static inline unsigned long regs_get_register(struct pt_regs *regs,
         * Traps from the kernel do not save sp and ss.
         * Use the helper function to retrieve sp.
         */
@@ -18439,6 +18734,21 @@ index 6205f0c..688a3a9 100644
  #endif
        return *(unsigned long *)((unsigned long)regs + offset);
  }
+diff --git a/arch/x86/include/asm/qrwlock.h b/arch/x86/include/asm/qrwlock.h
+index ae0e241..e80b10b 100644
+--- a/arch/x86/include/asm/qrwlock.h
++++ b/arch/x86/include/asm/qrwlock.h
+@@ -7,8 +7,8 @@
+ #define queue_write_unlock queue_write_unlock
+ static inline void queue_write_unlock(struct qrwlock *lock)
+ {
+-        barrier();
+-        ACCESS_ONCE(*(u8 *)&lock->cnts) = 0;
++      barrier();
++      ACCESS_ONCE_RW(*(u8 *)&lock->cnts) = 0;
+ }
+ #endif
 diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h
 index 9c6b890..5305f53 100644
 --- a/arch/x86/include/asm/realmode.h
@@ -18908,7 +19218,7 @@ index 8d3120f..352b440 100644
  
  static __always_inline void clac(void)
 diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h
-index 8cd27e0..7f05ec8 100644
+index 8cd1cc3..827e09e 100644
 --- a/arch/x86/include/asm/smp.h
 +++ b/arch/x86/include/asm/smp.h
 @@ -35,7 +35,7 @@ DECLARE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_core_map);
@@ -18929,7 +19239,7 @@ index 8cd27e0..7f05ec8 100644
  
  /* Globals due to paravirt */
  extern void set_cpu_sibling_map(int cpu);
-@@ -190,14 +190,8 @@ extern unsigned disabled_cpus;
+@@ -191,14 +191,8 @@ extern unsigned disabled_cpus;
  extern int safe_smp_processor_id(void);
  
  #elif defined(CONFIG_X86_64_SMP)
@@ -18946,72 +19256,6 @@ index 8cd27e0..7f05ec8 100644
  #define safe_smp_processor_id()               smp_processor_id()
  
  #endif
-diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h
-index 0f62f54..cb5d0dd 100644
---- a/arch/x86/include/asm/spinlock.h
-+++ b/arch/x86/include/asm/spinlock.h
-@@ -222,6 +222,14 @@ static inline int arch_write_can_lock(arch_rwlock_t *lock)
- static inline void arch_read_lock(arch_rwlock_t *rw)
- {
-       asm volatile(LOCK_PREFIX READ_LOCK_SIZE(dec) " (%0)\n\t"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+                   "jno 0f\n"
-+                   LOCK_PREFIX READ_LOCK_SIZE(inc) " (%0)\n"
-+                   "int $4\n0:\n"
-+                   _ASM_EXTABLE(0b, 0b)
-+#endif
-+
-                    "jns 1f\n"
-                    "call __read_lock_failed\n\t"
-                    "1:\n"
-@@ -231,6 +239,14 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
- static inline void arch_write_lock(arch_rwlock_t *rw)
- {
-       asm volatile(LOCK_PREFIX WRITE_LOCK_SUB(%1) "(%0)\n\t"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+                   "jno 0f\n"
-+                   LOCK_PREFIX WRITE_LOCK_ADD(%1) "(%0)\n"
-+                   "int $4\n0:\n"
-+                   _ASM_EXTABLE(0b, 0b)
-+#endif
-+
-                    "jz 1f\n"
-                    "call __write_lock_failed\n\t"
-                    "1:\n"
-@@ -260,13 +276,29 @@ static inline int arch_write_trylock(arch_rwlock_t *lock)
- static inline void arch_read_unlock(arch_rwlock_t *rw)
- {
--      asm volatile(LOCK_PREFIX READ_LOCK_SIZE(inc) " %0"
-+      asm volatile(LOCK_PREFIX READ_LOCK_SIZE(inc) " %0\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+                   "jno 0f\n"
-+                   LOCK_PREFIX READ_LOCK_SIZE(dec) " %0\n"
-+                   "int $4\n0:\n"
-+                   _ASM_EXTABLE(0b, 0b)
-+#endif
-+
-                    :"+m" (rw->lock) : : "memory");
- }
- static inline void arch_write_unlock(arch_rwlock_t *rw)
- {
--      asm volatile(LOCK_PREFIX WRITE_LOCK_ADD(%1) "%0"
-+      asm volatile(LOCK_PREFIX WRITE_LOCK_ADD(%1) "%0\n"
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+                   "jno 0f\n"
-+                   LOCK_PREFIX WRITE_LOCK_SUB(%1) "%0\n"
-+                   "int $4\n0:\n"
-+                   _ASM_EXTABLE(0b, 0b)
-+#endif
-+
-                    : "+m" (rw->write) : "i" (RW_LOCK_BIAS) : "memory");
- }
 diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h
 index 6a99859..03cb807 100644
 --- a/arch/x86/include/asm/stackprotector.h
@@ -19110,7 +19354,7 @@ index d7f3b3b..3cc39f1 100644
               __switch_canary_iparam                                     \
             : "memory", "cc" __EXTRA_CLOBBER)
 diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
-index 47e5de2..d3dda54 100644
+index 547e344..6be1175 100644
 --- a/arch/x86/include/asm/thread_info.h
 +++ b/arch/x86/include/asm/thread_info.h
 @@ -24,7 +24,6 @@ struct exec_domain;
@@ -19146,7 +19390,7 @@ index 47e5de2..d3dda54 100644
  #define init_stack            (init_thread_union.stack)
  
  #else /* !__ASSEMBLY__ */
-@@ -90,6 +89,7 @@ struct thread_info {
+@@ -91,6 +90,7 @@ struct thread_info {
  #define TIF_SYSCALL_TRACEPOINT        28      /* syscall tracepoint instrumentation */
  #define TIF_ADDR32            29      /* 32-bit address space on 64 bits */
  #define TIF_X32                       30      /* 32-bit native x86-64 binary */
@@ -19154,7 +19398,7 @@ index 47e5de2..d3dda54 100644
  
  #define _TIF_SYSCALL_TRACE    (1 << TIF_SYSCALL_TRACE)
  #define _TIF_NOTIFY_RESUME    (1 << TIF_NOTIFY_RESUME)
-@@ -113,17 +113,18 @@ struct thread_info {
+@@ -115,17 +115,18 @@ struct thread_info {
  #define _TIF_SYSCALL_TRACEPOINT       (1 << TIF_SYSCALL_TRACEPOINT)
  #define _TIF_ADDR32           (1 << TIF_ADDR32)
  #define _TIF_X32              (1 << TIF_X32)
@@ -19175,7 +19419,7 @@ index 47e5de2..d3dda54 100644
  
  /* work to do on interrupt/exception return */
  #define _TIF_WORK_MASK                                                        \
-@@ -134,7 +135,7 @@ struct thread_info {
+@@ -136,7 +137,7 @@ struct thread_info {
  /* work to do on any return to user space */
  #define _TIF_ALLWORK_MASK                                             \
        ((0x0000FFFF & ~_TIF_SECCOMP) | _TIF_SYSCALL_TRACEPOINT |       \
@@ -19184,7 +19428,7 @@ index 47e5de2..d3dda54 100644
  
  /* Only used for 64 bit */
  #define _TIF_DO_NOTIFY_MASK                                           \
-@@ -149,7 +150,6 @@ struct thread_info {
+@@ -151,7 +152,6 @@ struct thread_info {
  #define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW)
  
  #define STACK_WARN            (THREAD_SIZE/8)
@@ -19192,7 +19436,7 @@ index 47e5de2..d3dda54 100644
  
  /*
   * macros/functions for gaining access to the thread information structure
-@@ -160,26 +160,18 @@ struct thread_info {
+@@ -162,26 +162,18 @@ struct thread_info {
  
  DECLARE_PER_CPU(unsigned long, kernel_stack);
  
@@ -19237,7 +19481,7 @@ index 47e5de2..d3dda54 100644
  #endif
  #endif /* _ASM_X86_THREAD_INFO_H */
 diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
-index 04905bf..49203ca 100644
+index 04905bf..1178cdf 100644
 --- a/arch/x86/include/asm/tlbflush.h
 +++ b/arch/x86/include/asm/tlbflush.h
 @@ -17,18 +17,44 @@
@@ -19248,7 +19492,7 @@ index 04905bf..49203ca 100644
 +              u64 descriptor[2];
 +
 +              descriptor[0] = PCID_KERNEL;
-+              asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_ALL_MONGLOBAL) : "memory");
++              asm volatile(__ASM_INVPCID : : "d"(&descriptor), "a"(INVPCID_ALL_NONGLOBAL) : "memory");
 +              return;
 +      }
 +
@@ -19334,7 +19578,7 @@ index 04905bf..49203ca 100644
  }
  
 diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
-index 0d592e0..7437fcc 100644
+index 0d592e0..526f797 100644
 --- a/arch/x86/include/asm/uaccess.h
 +++ b/arch/x86/include/asm/uaccess.h
 @@ -7,6 +7,7 @@
@@ -19751,7 +19995,7 @@ index 0d592e0..7437fcc 100644
 +                      copy_from_user_overflow();
 +              else
 +                      __copy_from_user_overflow(sz, n);
-+      } if (access_ok(VERIFY_READ, from, n))
++      } else if (access_ok(VERIFY_READ, from, n))
 +              n = __copy_from_user(to, from, n);
 +      else if ((long)n > 0)
 +              memset(to, 0, n);
@@ -20264,33 +20508,31 @@ index c949923..c22bfa4 100644
        unsigned long mfn;
  
 diff --git a/arch/x86/include/asm/xsave.h b/arch/x86/include/asm/xsave.h
-index d949ef2..479b9d1 100644
+index 7e7a79a..0824666 100644
 --- a/arch/x86/include/asm/xsave.h
 +++ b/arch/x86/include/asm/xsave.h
-@@ -82,8 +82,11 @@ static inline int xsave_user(struct xsave_struct __user *buf)
+@@ -228,12 +228,16 @@ static inline int xsave_user(struct xsave_struct __user *buf)
        if (unlikely(err))
                return -EFAULT;
  
 +      pax_open_userland();
        __asm__ __volatile__(ASM_STAC "\n"
--                           "1: .byte " REX_PREFIX "0x0f,0xae,0x27\n"
+-                           "1:"XSAVE"\n"
 +                           "1:"
 +                           __copyuser_seg
-+                           ".byte " REX_PREFIX "0x0f,0xae,0x27\n"
++                           XSAVE"\n"
                             "2: " ASM_CLAC "\n"
-                            ".section .fixup,\"ax\"\n"
-                            "3:  movl $-1,%[err]\n"
-@@ -93,18 +96,22 @@ static inline int xsave_user(struct xsave_struct __user *buf)
-                            : [err] "=r" (err)
+                            xstate_fault
                             : "D" (buf), "a" (-1), "d" (-1), "0" (0)
                             : "memory");
 +      pax_close_userland();
        return err;
  }
  
+@@ -243,16 +247,20 @@ static inline int xsave_user(struct xsave_struct __user *buf)
  static inline int xrestore_user(struct xsave_struct __user *buf, u64 mask)
  {
-       int err;
+       int err = 0;
 -      struct xsave_struct *xstate = ((__force struct xsave_struct *)buf);
 +      struct xsave_struct *xstate = ((__force_kernel struct xsave_struct *)buf);
        u32 lmask = mask;
@@ -20298,15 +20540,12 @@ index d949ef2..479b9d1 100644
  
 +      pax_open_userland();
        __asm__ __volatile__(ASM_STAC "\n"
--                           "1: .byte " REX_PREFIX "0x0f,0xae,0x2f\n"
+-                           "1:"XRSTOR"\n"
 +                           "1:"
 +                           __copyuser_seg
-+                           ".byte " REX_PREFIX "0x0f,0xae,0x2f\n"
++                           XRSTOR"\n"
                             "2: " ASM_CLAC "\n"
-                            ".section .fixup,\"ax\"\n"
-                            "3:  movl $-1,%[err]\n"
-@@ -114,6 +121,7 @@ static inline int xrestore_user(struct xsave_struct __user *buf, u64 mask)
-                            : [err] "=r" (err)
+                            xstate_fault
                             : "D" (xstate), "a" (lmask), "d" (hmask), "0" (0)
                             : "memory");       /* memory required? */
 +      pax_close_userland();
@@ -20314,10 +20553,10 @@ index d949ef2..479b9d1 100644
  }
  
 diff --git a/arch/x86/include/uapi/asm/e820.h b/arch/x86/include/uapi/asm/e820.h
-index bbae024..e1528f9 100644
+index d993e33..8db1b18 100644
 --- a/arch/x86/include/uapi/asm/e820.h
 +++ b/arch/x86/include/uapi/asm/e820.h
-@@ -63,7 +63,7 @@ struct e820map {
+@@ -58,7 +58,7 @@ struct e820map {
  #define ISA_START_ADDRESS     0xa0000
  #define ISA_END_ADDRESS               0x100000
  
@@ -20339,7 +20578,7 @@ index 7b0a55a..ad115bf 100644
  
  /* top of stack page */
 diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
-index f4d9600..b45af01 100644
+index 8f1e774..9b4c381 100644
 --- a/arch/x86/kernel/Makefile
 +++ b/arch/x86/kernel/Makefile
 @@ -24,7 +24,7 @@ obj-y                        += time.o ioport.o ldt.o dumpstack.o nmi.o
@@ -20349,13 +20588,13 @@ index f4d9600..b45af01 100644
 -obj-$(CONFIG_X86_32)  += i386_ksyms_32.o
 +obj-$(CONFIG_X86_32)  += sys_i386_32.o i386_ksyms_32.o
  obj-$(CONFIG_X86_64)  += sys_x86_64.o x8664_ksyms_64.o
+ obj-$(CONFIG_X86_64)  += mcount_64.o
  obj-y                 += syscall_$(BITS).o vsyscall_gtod.o
- obj-$(CONFIG_X86_64)  += vsyscall_64.o
 diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index 86281ff..e046fc2 100644
+index a142e77..6222cdd 100644
 --- a/arch/x86/kernel/acpi/boot.c
 +++ b/arch/x86/kernel/acpi/boot.c
-@@ -1296,7 +1296,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
+@@ -1276,7 +1276,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
   * If your system is blacklisted here, but you find that acpi=force
   * works for you, please contact linux-acpi@vger.kernel.org
   */
@@ -20364,7 +20603,7 @@ index 86281ff..e046fc2 100644
        /*
         * Boxes that need ACPI disabled
         */
-@@ -1371,7 +1371,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
+@@ -1351,7 +1351,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
  };
  
  /* second table for DMI checks that should run after early-quirks */
@@ -20411,10 +20650,10 @@ index 665c6b7..eae4d56 100644
  bogus_magic:
        jmp     bogus_magic
 diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
-index df94598..b7162f9 100644
+index 703130f..27a155d 100644
 --- a/arch/x86/kernel/alternative.c
 +++ b/arch/x86/kernel/alternative.c
-@@ -269,6 +269,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
+@@ -268,6 +268,13 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
         */
        for (a = start; a < end; a++) {
                instr = (u8 *)&a->instr_offset + a->instr_offset;
@@ -20428,7 +20667,7 @@ index df94598..b7162f9 100644
                replacement = (u8 *)&a->repl_offset + a->repl_offset;
                BUG_ON(a->replacementlen > a->instrlen);
                BUG_ON(a->instrlen > sizeof(insnbuf));
-@@ -285,6 +292,11 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
+@@ -284,6 +291,11 @@ void __init_or_module apply_alternatives(struct alt_instr *start,
                add_nops(insnbuf + a->replacementlen,
                         a->instrlen - a->replacementlen);
  
@@ -20440,7 +20679,7 @@ index df94598..b7162f9 100644
                text_poke_early(instr, insnbuf, a->instrlen);
        }
  }
-@@ -300,10 +312,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end,
+@@ -299,10 +311,16 @@ static void alternatives_smp_lock(const s32 *start, const s32 *end,
        for (poff = start; poff < end; poff++) {
                u8 *ptr = (u8 *)poff + *poff;
  
@@ -20458,7 +20697,7 @@ index df94598..b7162f9 100644
                        text_poke(ptr, ((unsigned char []){0xf0}), 1);
        }
        mutex_unlock(&text_mutex);
-@@ -318,10 +336,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end,
+@@ -317,10 +335,16 @@ static void alternatives_smp_unlock(const s32 *start, const s32 *end,
        for (poff = start; poff < end; poff++) {
                u8 *ptr = (u8 *)poff + *poff;
  
@@ -20476,7 +20715,7 @@ index df94598..b7162f9 100644
                        text_poke(ptr, ((unsigned char []){0x3E}), 1);
        }
        mutex_unlock(&text_mutex);
-@@ -458,7 +482,7 @@ void __init_or_module apply_paravirt(struct paravirt_patch_site *start,
+@@ -457,7 +481,7 @@ void __init_or_module apply_paravirt(struct paravirt_patch_site *start,
  
                BUG_ON(p->len > MAX_PATCH_LEN);
                /* prep the buffer with the original instructions */
@@ -20485,7 +20724,7 @@ index df94598..b7162f9 100644
                used = pv_init_ops.patch(p->instrtype, p->clobbers, insnbuf,
                                         (unsigned long)p->instr, p->len);
  
-@@ -505,7 +529,7 @@ void __init alternative_instructions(void)
+@@ -504,7 +528,7 @@ void __init alternative_instructions(void)
        if (!uniproc_patched || num_possible_cpus() == 1)
                free_init_pages("SMP alternatives",
                                (unsigned long)__smp_locks,
@@ -20494,7 +20733,7 @@ index df94598..b7162f9 100644
  #endif
  
        apply_paravirt(__parainstructions, __parainstructions_end);
-@@ -525,13 +549,17 @@ void __init alternative_instructions(void)
+@@ -524,13 +548,17 @@ void __init alternative_instructions(void)
   * instructions. And on the local CPU you need to be protected again NMI or MCE
   * handlers seeing an inconsistent instruction while you patch.
   */
@@ -20514,9 +20753,9 @@ index df94598..b7162f9 100644
        local_irq_restore(flags);
        /* Could also do a CLFLUSH here to speed up CPU recovery; but
           that causes hangs on some VIA CPUs. */
-@@ -553,36 +581,22 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode,
+@@ -552,36 +580,22 @@ void *__init_or_module text_poke_early(void *addr, const void *opcode,
   */
- void *__kprobes text_poke(void *addr, const void *opcode, size_t len)
+ void *text_poke(void *addr, const void *opcode, size_t len)
  {
 -      unsigned long flags;
 -      char *vaddr;
@@ -20559,7 +20798,7 @@ index df94598..b7162f9 100644
        return addr;
  }
  
-@@ -602,7 +616,7 @@ int poke_int3_handler(struct pt_regs *regs)
+@@ -601,7 +615,7 @@ int poke_int3_handler(struct pt_regs *regs)
        if (likely(!bp_patching_in_progress))
                return 0;
  
@@ -20568,7 +20807,7 @@ index df94598..b7162f9 100644
                return 0;
  
        /* set up the specified breakpoint handler */
-@@ -636,7 +650,7 @@ int poke_int3_handler(struct pt_regs *regs)
+@@ -635,7 +649,7 @@ int poke_int3_handler(struct pt_regs *regs)
   */
  void *text_poke_bp(void *addr, const void *opcode, size_t len, void *handler)
  {
@@ -20578,7 +20817,7 @@ index df94598..b7162f9 100644
        bp_int3_handler = handler;
        bp_int3_addr = (u8 *)addr + sizeof(int3);
 diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
-index ad28db7..c538b2c 100644
+index ba6cc04..06fd971 100644
 --- a/arch/x86/kernel/apic/apic.c
 +++ b/arch/x86/kernel/apic/apic.c
 @@ -201,7 +201,7 @@ int first_system_vector = 0xfe;
@@ -20590,7 +20829,7 @@ index ad28db7..c538b2c 100644
  
  int pic_mode;
  
-@@ -2000,7 +2000,7 @@ static inline void __smp_error_interrupt(struct pt_regs *regs)
+@@ -1989,7 +1989,7 @@ static inline void __smp_error_interrupt(struct pt_regs *regs)
                apic_write(APIC_ESR, 0);
        v = apic_read(APIC_ESR);
        ack_APIC_irq();
@@ -20600,7 +20839,7 @@ index ad28db7..c538b2c 100644
        apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x",
                    smp_processor_id(), v);
 diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c
-index 7c1b294..e71d27f 100644
+index de918c4..32eed23 100644
 --- a/arch/x86/kernel/apic/apic_flat_64.c
 +++ b/arch/x86/kernel/apic/apic_flat_64.c
 @@ -154,7 +154,7 @@ static int flat_probe(void)
@@ -20612,7 +20851,7 @@ index 7c1b294..e71d27f 100644
        .name                           = "flat",
        .probe                          = flat_probe,
        .acpi_madt_oem_check            = flat_acpi_madt_oem_check,
-@@ -268,7 +268,7 @@ static int physflat_probe(void)
+@@ -260,7 +260,7 @@ static int physflat_probe(void)
        return 0;
  }
  
@@ -20622,10 +20861,10 @@ index 7c1b294..e71d27f 100644
        .name                           = "physical flat",
        .probe                          = physflat_probe,
 diff --git a/arch/x86/kernel/apic/apic_noop.c b/arch/x86/kernel/apic/apic_noop.c
-index 8c7c982..a225910 100644
+index b205cdb..d8503ff 100644
 --- a/arch/x86/kernel/apic/apic_noop.c
 +++ b/arch/x86/kernel/apic/apic_noop.c
-@@ -118,7 +118,7 @@ static void noop_apic_write(u32 reg, u32 v)
+@@ -108,7 +108,7 @@ static void noop_apic_write(u32 reg, u32 v)
        WARN_ON_ONCE(cpu_has_apic && !disable_apic);
  }
  
@@ -20635,10 +20874,10 @@ index 8c7c982..a225910 100644
        .probe                          = noop_probe,
        .acpi_madt_oem_check            = NULL,
 diff --git a/arch/x86/kernel/apic/bigsmp_32.c b/arch/x86/kernel/apic/bigsmp_32.c
-index e4840aa..e7d9dac 100644
+index c4a8d63..fe893ac 100644
 --- a/arch/x86/kernel/apic/bigsmp_32.c
 +++ b/arch/x86/kernel/apic/bigsmp_32.c
-@@ -152,7 +152,7 @@ static int probe_bigsmp(void)
+@@ -147,7 +147,7 @@ static int probe_bigsmp(void)
        return dmi_bigsmp;
  }
  
@@ -20648,10 +20887,10 @@ index e4840aa..e7d9dac 100644
        .name                           = "bigsmp",
        .probe                          = probe_bigsmp,
 diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
-index 992060e..ecdc3b3 100644
+index 1183d54..6158e47 100644
 --- a/arch/x86/kernel/apic/io_apic.c
 +++ b/arch/x86/kernel/apic/io_apic.c
-@@ -1057,7 +1057,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin,
+@@ -1230,7 +1230,7 @@ out:
  }
  EXPORT_SYMBOL(IO_APIC_get_PCI_irq_vector);
  
@@ -20660,7 +20899,7 @@ index 992060e..ecdc3b3 100644
  {
        /* Used to the online set of cpus does not change
         * during assign_irq_vector.
-@@ -1065,7 +1065,7 @@ void lock_vector_lock(void)
+@@ -1238,7 +1238,7 @@ void lock_vector_lock(void)
        raw_spin_lock(&vector_lock);
  }
  
@@ -20669,7 +20908,7 @@ index 992060e..ecdc3b3 100644
  {
        raw_spin_unlock(&vector_lock);
  }
-@@ -2364,7 +2364,7 @@ static void ack_apic_edge(struct irq_data *data)
+@@ -2465,7 +2465,7 @@ static void ack_apic_edge(struct irq_data *data)
        ack_APIC_irq();
  }
  
@@ -20678,7 +20917,7 @@ index 992060e..ecdc3b3 100644
  
  #ifdef CONFIG_GENERIC_PENDING_IRQ
  static bool io_apic_level_ack_pending(struct irq_cfg *cfg)
-@@ -2505,7 +2505,7 @@ static void ack_apic_level(struct irq_data *data)
+@@ -2606,7 +2606,7 @@ static void ack_apic_level(struct irq_data *data)
         * at the cpu.
         */
        if (!(v & (1 << (i & 0x1f)))) {
@@ -20688,7 +20927,7 @@ index 992060e..ecdc3b3 100644
                eoi_ioapic_irq(irq, cfg);
        }
 diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c
-index cceb352..a635fd8 100644
+index bda4886..f9c7195 100644
 --- a/arch/x86/kernel/apic/probe_32.c
 +++ b/arch/x86/kernel/apic/probe_32.c
 @@ -72,7 +72,7 @@ static int probe_default(void)
@@ -20701,7 +20940,7 @@ index cceb352..a635fd8 100644
        .name                           = "default",
        .probe                          = probe_default,
 diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c
-index e66766b..1c008ba 100644
+index e658f21..b695a1a 100644
 --- a/arch/x86/kernel/apic/x2apic_cluster.c
 +++ b/arch/x86/kernel/apic/x2apic_cluster.c
 @@ -182,7 +182,7 @@ update_clusterinfo(struct notifier_block *nfb, unsigned long action, void *hcpu)
@@ -20723,7 +20962,7 @@ index e66766b..1c008ba 100644
        .name                           = "cluster x2apic",
        .probe                          = x2apic_cluster_probe,
 diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c
-index 6d600eb..0300c00 100644
+index 6fae733..5ca17af 100644
 --- a/arch/x86/kernel/apic/x2apic_phys.c
 +++ b/arch/x86/kernel/apic/x2apic_phys.c
 @@ -88,7 +88,7 @@ static int x2apic_phys_probe(void)
@@ -20736,10 +20975,10 @@ index 6d600eb..0300c00 100644
        .name                           = "physical x2apic",
        .probe                          = x2apic_phys_probe,
 diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
-index 7834389..4ffc9c8 100644
+index 8e9dcfd..c61b3e4 100644
 --- a/arch/x86/kernel/apic/x2apic_uv_x.c
 +++ b/arch/x86/kernel/apic/x2apic_uv_x.c
-@@ -350,7 +350,7 @@ static int uv_probe(void)
+@@ -348,7 +348,7 @@ static int uv_probe(void)
        return apic == &apic_x2apic_uv_x;
  }
  
@@ -20749,7 +20988,7 @@ index 7834389..4ffc9c8 100644
        .name                           = "UV large system",
        .probe                          = uv_probe,
 diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
-index 3ab0343..814c4787 100644
+index 5848744..56cb598 100644
 --- a/arch/x86/kernel/apm_32.c
 +++ b/arch/x86/kernel/apm_32.c
 @@ -433,7 +433,7 @@ static DEFINE_MUTEX(apm_mutex);
@@ -20807,7 +21046,7 @@ index 3ab0343..814c4787 100644
        put_cpu();
        return error;
  }
-@@ -2362,12 +2376,15 @@ static int __init apm_init(void)
+@@ -2350,12 +2364,15 @@ static int __init apm_init(void)
         * code to that CPU.
         */
        gdt = get_cpu_gdt_table(0);
@@ -20876,7 +21115,7 @@ index e7c798b..2b2019b 100644
        BLANK();
  
 diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
-index 7fd54f0..0691410 100644
+index e27b49d..85b106c 100644
 --- a/arch/x86/kernel/cpu/Makefile
 +++ b/arch/x86/kernel/cpu/Makefile
 @@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg
@@ -20888,13 +21127,13 @@ index 7fd54f0..0691410 100644
 -CFLAGS_common.o               := $(nostackp)
 -
  obj-y                 := intel_cacheinfo.o scattered.o topology.o
- obj-y                 += proc.o capflags.o powerflags.o common.o
+ obj-y                 += common.o
  obj-y                 += rdrand.o
 diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
-index ce8b8ff..d7d8851 100644
+index 813d29d..6e542d4 100644
 --- a/arch/x86/kernel/cpu/amd.c
 +++ b/arch/x86/kernel/cpu/amd.c
-@@ -728,7 +728,7 @@ static void init_amd(struct cpuinfo_x86 *c)
+@@ -718,7 +718,7 @@ static void init_amd(struct cpuinfo_x86 *c)
  static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size)
  {
        /* AMD errata T13 (order #21922) */
@@ -20904,10 +21143,10 @@ index ce8b8ff..d7d8851 100644
                if (c->x86_model == 3 && c->x86_mask == 0)
                        size = 64;
 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
-index a135239..41fb30a 100644
+index cfa9b5b..19b5084 100644
 --- a/arch/x86/kernel/cpu/common.c
 +++ b/arch/x86/kernel/cpu/common.c
-@@ -88,60 +88,6 @@ static const struct cpu_dev default_cpu = {
+@@ -90,60 +90,6 @@ static const struct cpu_dev default_cpu = {
  
  static const struct cpu_dev *this_cpu = &default_cpu;
  
@@ -20967,8 +21206,8 @@ index a135239..41fb30a 100644
 -
  static int __init x86_xsave_setup(char *s)
  {
-       setup_clear_cpu_cap(X86_FEATURE_XSAVE);
-@@ -293,6 +239,59 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c)
+       if (strlen(s))
+@@ -305,6 +251,59 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c)
        }
  }
  
@@ -21028,7 +21267,7 @@ index a135239..41fb30a 100644
  /*
   * Some CPU features depend on higher CPUID levels, which may not always
   * be available due to CPUID level capping or broken virtualization
-@@ -393,7 +392,7 @@ void switch_to_new_gdt(int cpu)
+@@ -405,7 +404,7 @@ void switch_to_new_gdt(int cpu)
  {
        struct desc_ptr gdt_descr;
  
@@ -21037,7 +21276,7 @@ index a135239..41fb30a 100644
        gdt_descr.size = GDT_SIZE - 1;
        load_gdt(&gdt_descr);
        /* Reload the per-cpu base */
-@@ -883,6 +882,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
+@@ -895,6 +894,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
        setup_smep(c);
        setup_smap(c);
  
@@ -21048,7 +21287,7 @@ index a135239..41fb30a 100644
        /*
         * The vendor-specific functions might have changed features.
         * Now we do "generic changes."
-@@ -891,6 +894,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
+@@ -903,6 +906,10 @@ static void identify_cpu(struct cpuinfo_x86 *c)
        /* Filter out anything that depends on CPUID levels we don't have */
        filter_cpuid_features(c, true);
  
@@ -21059,7 +21298,16 @@ index a135239..41fb30a 100644
        /* If the model name is still unset, do table lookup. */
        if (!c->x86_model_id[0]) {
                const char *p;
-@@ -1079,14 +1086,16 @@ static __init int setup_disablecpuid(char *arg)
+@@ -985,7 +992,7 @@ static void syscall32_cpu_init(void)
+ void enable_sep_cpu(void)
+ {
+       int cpu = get_cpu();
+-      struct tss_struct *tss = &per_cpu(init_tss, cpu);
++      struct tss_struct *tss = init_tss + cpu;
+       if (!boot_cpu_has(X86_FEATURE_SEP)) {
+               put_cpu();
+@@ -1125,14 +1132,16 @@ static __init int setup_disablecpuid(char *arg)
  }
  __setup("clearcpuid=", setup_disablecpuid);
  
@@ -21080,16 +21328,16 @@ index a135239..41fb30a 100644
  
  DEFINE_PER_CPU_FIRST(union irq_stack_union,
                     irq_stack_union) __aligned(PAGE_SIZE) __visible;
-@@ -1246,7 +1255,7 @@ void cpu_init(void)
+@@ -1309,7 +1318,7 @@ void cpu_init(void)
+        */
        load_ucode_ap();
  
-       cpu = stack_smp_processor_id();
 -      t = &per_cpu(init_tss, cpu);
 +      t = init_tss + cpu;
        oist = &per_cpu(orig_ist, cpu);
  
  #ifdef CONFIG_NUMA
-@@ -1281,7 +1290,6 @@ void cpu_init(void)
+@@ -1341,7 +1350,6 @@ void cpu_init(void)
        wrmsrl(MSR_KERNEL_GS_BASE, 0);
        barrier();
  
@@ -21097,7 +21345,7 @@ index a135239..41fb30a 100644
        enable_x2apic();
  
        /*
-@@ -1333,7 +1341,7 @@ void cpu_init(void)
+@@ -1393,7 +1401,7 @@ void cpu_init(void)
  {
        int cpu = smp_processor_id();
        struct task_struct *curr = current;
@@ -21105,12 +21353,12 @@ index a135239..41fb30a 100644
 +      struct tss_struct *t = init_tss + cpu;
        struct thread_struct *thread = &curr->thread;
  
-       show_ucode_info_early();
+       wait_for_master_cpu(cpu);
 diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c
-index a952e9c..58a4cbb 100644
+index c703507..28535e3 100644
 --- a/arch/x86/kernel/cpu/intel_cacheinfo.c
 +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
-@@ -1014,6 +1014,22 @@ static struct attribute *default_attrs[] = {
+@@ -1026,6 +1026,22 @@ static struct attribute *default_attrs[] = {
  };
  
  #ifdef CONFIG_AMD_NB
@@ -21133,7 +21381,7 @@ index a952e9c..58a4cbb 100644
  static struct attribute **amd_l3_attrs(void)
  {
        static struct attribute **attrs;
-@@ -1024,18 +1040,7 @@ static struct attribute **amd_l3_attrs(void)
+@@ -1036,18 +1052,7 @@ static struct attribute **amd_l3_attrs(void)
  
        n = ARRAY_SIZE(default_attrs);
  
@@ -21153,7 +21401,7 @@ index a952e9c..58a4cbb 100644
  
        if (amd_nb_has_feature(AMD_NB_L3_INDEX_DISABLE)) {
                attrs[n++] = &cache_disable_0.attr;
-@@ -1086,6 +1091,13 @@ static struct kobj_type ktype_cache = {
+@@ -1098,6 +1103,13 @@ static struct kobj_type ktype_cache = {
        .default_attrs  = default_attrs,
  };
  
@@ -21167,7 +21415,7 @@ index a952e9c..58a4cbb 100644
  static struct kobj_type ktype_percpu_entry = {
        .sysfs_ops      = &sysfs_ops,
  };
-@@ -1151,20 +1163,26 @@ static int cache_add_dev(struct device *dev)
+@@ -1163,20 +1175,26 @@ static int cache_add_dev(struct device *dev)
                return retval;
        }
  
@@ -21198,7 +21446,7 @@ index a952e9c..58a4cbb 100644
                                              "index%1lu", i);
                if (unlikely(retval)) {
 diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
-index 68317c8..c860d41 100644
+index 61a9668ce..b446a37 100644
 --- a/arch/x86/kernel/cpu/mcheck/mce.c
 +++ b/arch/x86/kernel/cpu/mcheck/mce.c
 @@ -45,6 +45,7 @@
@@ -21209,7 +21457,7 @@ index 68317c8..c860d41 100644
  
  #include "mce-internal.h"
  
-@@ -261,7 +262,7 @@ static void print_mce(struct mce *m)
+@@ -259,7 +260,7 @@ static void print_mce(struct mce *m)
                        !(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "",
                                m->cs, m->ip);
  
@@ -21218,7 +21466,7 @@ index 68317c8..c860d41 100644
                        print_symbol("{%s}", m->ip);
                pr_cont("\n");
        }
-@@ -294,10 +295,10 @@ static void print_mce(struct mce *m)
+@@ -292,10 +293,10 @@ static void print_mce(struct mce *m)
  
  #define PANIC_TIMEOUT 5 /* 5 seconds */
  
@@ -21231,7 +21479,7 @@ index 68317c8..c860d41 100644
  
  /* Panic in progress. Enable interrupts and wait for final IPI */
  static void wait_for_panic(void)
-@@ -321,7 +322,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
+@@ -319,7 +320,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
                /*
                 * Make sure only one CPU runs in machine check panic
                 */
@@ -21240,7 +21488,7 @@ index 68317c8..c860d41 100644
                        wait_for_panic();
                barrier();
  
-@@ -329,7 +330,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
+@@ -327,7 +328,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
                console_verbose();
        } else {
                /* Don't log too much for fake panic */
@@ -21249,7 +21497,7 @@ index 68317c8..c860d41 100644
                        return;
        }
        /* First print corrected ones that are still unlogged */
-@@ -368,7 +369,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
+@@ -366,7 +367,7 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
        if (!fake_panic) {
                if (panic_timeout == 0)
                        panic_timeout = mca_cfg.panic_timeout;
@@ -21258,7 +21506,7 @@ index 68317c8..c860d41 100644
        } else
                pr_emerg(HW_ERR "Fake kernel panic: %s\n", msg);
  }
-@@ -699,7 +700,7 @@ static int mce_timed_out(u64 *t)
+@@ -697,7 +698,7 @@ static int mce_timed_out(u64 *t)
         * might have been modified by someone else.
         */
        rmb();
@@ -21267,7 +21515,7 @@ index 68317c8..c860d41 100644
                wait_for_panic();
        if (!mca_cfg.monarch_timeout)
                goto out;
-@@ -1680,7 +1681,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
+@@ -1674,7 +1675,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
  }
  
  /* Call the installed machine check handler for this CPU setup. */
@@ -21276,7 +21524,7 @@ index 68317c8..c860d41 100644
                                                unexpected_machine_check;
  
  /*
-@@ -1703,7 +1704,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
+@@ -1697,7 +1698,9 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
                return;
        }
  
@@ -21286,7 +21534,7 @@ index 68317c8..c860d41 100644
  
        __mcheck_cpu_init_generic();
        __mcheck_cpu_init_vendor(c);
-@@ -1717,7 +1720,7 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
+@@ -1711,7 +1714,7 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
   */
  
  static DEFINE_SPINLOCK(mce_chrdev_state_lock);
@@ -21295,7 +21543,7 @@ index 68317c8..c860d41 100644
  static int mce_chrdev_open_exclu;     /* already open exclusive? */
  
  static int mce_chrdev_open(struct inode *inode, struct file *file)
-@@ -1725,7 +1728,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
+@@ -1719,7 +1722,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
        spin_lock(&mce_chrdev_state_lock);
  
        if (mce_chrdev_open_exclu ||
@@ -21304,7 +21552,7 @@ index 68317c8..c860d41 100644
                spin_unlock(&mce_chrdev_state_lock);
  
                return -EBUSY;
-@@ -1733,7 +1736,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
+@@ -1727,7 +1730,7 @@ static int mce_chrdev_open(struct inode *inode, struct file *file)
  
        if (file->f_flags & O_EXCL)
                mce_chrdev_open_exclu = 1;
@@ -21313,7 +21561,7 @@ index 68317c8..c860d41 100644
  
        spin_unlock(&mce_chrdev_state_lock);
  
-@@ -1744,7 +1747,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file)
+@@ -1738,7 +1741,7 @@ static int mce_chrdev_release(struct inode *inode, struct file *file)
  {
        spin_lock(&mce_chrdev_state_lock);
  
@@ -21322,7 +21570,7 @@ index 68317c8..c860d41 100644
        mce_chrdev_open_exclu = 0;
  
        spin_unlock(&mce_chrdev_state_lock);
-@@ -2420,7 +2423,7 @@ static __init void mce_init_banks(void)
+@@ -2413,7 +2416,7 @@ static __init void mce_init_banks(void)
  
        for (i = 0; i < mca_cfg.banks; i++) {
                struct mce_bank *b = &mce_banks[i];
@@ -21331,7 +21579,7 @@ index 68317c8..c860d41 100644
  
                sysfs_attr_init(&a->attr);
                a->attr.name    = b->attrname;
-@@ -2492,7 +2495,7 @@ struct dentry *mce_get_debugfs_dir(void)
+@@ -2520,7 +2523,7 @@ struct dentry *mce_get_debugfs_dir(void)
  static void mce_reset(void)
  {
        cpu_missing = 0;
@@ -21385,10 +21633,10 @@ index 7dc5564..1273569 100644
        wmb();
  
 diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
-index 15c9876..0a43909 100644
+index 15c2909..2cef20c 100644
 --- a/arch/x86/kernel/cpu/microcode/core.c
 +++ b/arch/x86/kernel/cpu/microcode/core.c
-@@ -513,7 +513,7 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
+@@ -518,7 +518,7 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
        return NOTIFY_OK;
  }
  
@@ -21398,7 +21646,7 @@ index 15c9876..0a43909 100644
  };
  
 diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c
-index a276fa7..e66810f 100644
+index c6826d1..ad18e14a 100644
 --- a/arch/x86/kernel/cpu/microcode/intel.c
 +++ b/arch/x86/kernel/cpu/microcode/intel.c
 @@ -293,13 +293,13 @@ static enum ucode_state request_microcode_fw(int cpu, struct device *device,
@@ -21418,7 +21666,7 @@ index a276fa7..e66810f 100644
  
  static void microcode_fini_cpu(int cpu)
 diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
-index f961de9..8a9d332 100644
+index ea5f363..cb0e905 100644
 --- a/arch/x86/kernel/cpu/mtrr/main.c
 +++ b/arch/x86/kernel/cpu/mtrr/main.c
 @@ -66,7 +66,7 @@ static DEFINE_MUTEX(mtrr_mutex);
@@ -21444,11 +21692,11 @@ index df5e41f..816c719 100644
  extern int generic_get_free_region(unsigned long base, unsigned long size,
                                   int replace_reg);
 diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
-index ae407f7..39c5b00 100644
+index 143e5f5..5825081 100644
 --- a/arch/x86/kernel/cpu/perf_event.c
 +++ b/arch/x86/kernel/cpu/perf_event.c
-@@ -1367,7 +1367,7 @@ static void __init pmu_check_apic(void)
-       pr_info("no hardware sampling interrupt available.\n");
+@@ -1374,7 +1374,7 @@ static void __init pmu_check_apic(void)
  }
  
 -static struct attribute_group x86_pmu_format_group = {
@@ -21456,7 +21704,7 @@ index ae407f7..39c5b00 100644
        .name = "format",
        .attrs = NULL,
  };
-@@ -1466,7 +1466,7 @@ static struct attribute *events_attr[] = {
+@@ -1473,7 +1473,7 @@ static struct attribute *events_attr[] = {
        NULL,
  };
  
@@ -21465,16 +21713,16 @@ index ae407f7..39c5b00 100644
        .name = "events",
        .attrs = events_attr,
  };
-@@ -1990,7 +1990,7 @@ static unsigned long get_segment_base(unsigned int segment)
+@@ -1997,7 +1997,7 @@ static unsigned long get_segment_base(unsigned int segment)
                if (idx > GDT_ENTRIES)
                        return 0;
  
--              desc = __this_cpu_ptr(&gdt_page.gdt[0]);
+-              desc = raw_cpu_ptr(gdt_page.gdt);
 +              desc = get_cpu_gdt_table(smp_processor_id());
        }
  
        return get_desc_base(desc + idx);
-@@ -2080,7 +2080,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
+@@ -2087,7 +2087,7 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)
                        break;
  
                perf_callchain_store(entry, frame.return_address);
@@ -21497,10 +21745,10 @@ index 639d128..e92d7e5 100644
  
        while (amd_iommu_v2_event_descs[i].attr.attr.name)
 diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
-index adb02aa..9688c02 100644
+index 944bf01..4a4392f 100644
 --- a/arch/x86/kernel/cpu/perf_event_intel.c
 +++ b/arch/x86/kernel/cpu/perf_event_intel.c
-@@ -2308,10 +2308,10 @@ __init int intel_pmu_init(void)
+@@ -2353,10 +2353,10 @@ __init int intel_pmu_init(void)
                x86_pmu.num_counters_fixed = max((int)edx.split.num_counters_fixed, 3);
  
        if (boot_cpu_has(X86_FEATURE_PDCM)) {
@@ -21515,7 +21763,7 @@ index adb02aa..9688c02 100644
  
        intel_ds_init();
 diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
-index 619f769..d510008 100644
+index d64f275..26522ff 100644
 --- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c
 +++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
 @@ -449,7 +449,7 @@ static struct attribute *rapl_events_hsw_attr[] = {
@@ -21528,10 +21776,10 @@ index 619f769..d510008 100644
        .attrs = NULL, /* patched at runtime */
  };
 diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
-index 65bbbea..1438d9e 100644
+index 9762dbd..53d5d21 100644
 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
 +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
-@@ -3693,7 +3693,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types)
+@@ -721,7 +721,7 @@ static void __init uncore_types_exit(struct intel_uncore_type **types)
  static int __init uncore_type_init(struct intel_uncore_type *type)
  {
        struct intel_uncore_pmu *pmus;
@@ -21541,18 +21789,18 @@ index 65bbbea..1438d9e 100644
        int i, j;
  
 diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.h b/arch/x86/kernel/cpu/perf_event_intel_uncore.h
-index 90236f0..54cb20d 100644
+index 18eb78b..18747cc 100644
 --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.h
 +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.h
-@@ -503,7 +503,7 @@ struct intel_uncore_box {
+@@ -114,7 +114,7 @@ struct intel_uncore_box {
  struct uncore_event_desc {
        struct kobj_attribute attr;
        const char *config;
 -};
 +} __do_const;
  
- #define INTEL_UNCORE_EVENT_DESC(_name, _config)                       \
- {                                                             \
+ ssize_t uncore_event_show(struct kobject *kobj,
+                         struct kobj_attribute *attr, char *buf);
 diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c
 index 3225ae6c..ee3c6db 100644
 --- a/arch/x86/kernel/cpuid.c
@@ -21567,10 +21815,10 @@ index 3225ae6c..ee3c6db 100644
        .notifier_call = cpuid_class_cpu_callback,
  };
 diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
-index 507de80..ebaae2a 100644
+index f5ab56d..d3b201a 100644
 --- a/arch/x86/kernel/crash.c
 +++ b/arch/x86/kernel/crash.c
-@@ -58,7 +58,7 @@ static void kdump_nmi_callback(int cpu, struct pt_regs *regs)
+@@ -104,7 +104,7 @@ static void kdump_nmi_callback(int cpu, struct pt_regs *regs)
  #ifdef CONFIG_X86_32
        struct pt_regs fixed_regs;
  
@@ -21628,7 +21876,7 @@ index f6dfd93..892ade4 100644
  
                .__cr3          = __pa_nodebug(swapper_pg_dir),
 diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
-index d9c12d3..7858b62 100644
+index b74ebc7..2c95874 100644
 --- a/arch/x86/kernel/dumpstack.c
 +++ b/arch/x86/kernel/dumpstack.c
 @@ -2,6 +2,9 @@
@@ -21641,7 +21889,15 @@ index d9c12d3..7858b62 100644
  #include <linux/kallsyms.h>
  #include <linux/kprobes.h>
  #include <linux/uaccess.h>
-@@ -40,16 +43,14 @@ void printk_address(unsigned long address)
+@@ -33,23 +36,21 @@ static void printk_stack_address(unsigned long address, int reliable)
+ void printk_address(unsigned long address)
+ {
+-      pr_cont(" [<%p>] %pS\n", (void *)address, (void *)address);
++      pr_cont(" [<%p>] %pA\n", (void *)address, (void *)address);
+ }
+ #ifdef CONFIG_FUNCTION_GRAPH_TRACER
  static void
  print_ftrace_graph_addr(unsigned long addr, void *data,
                        const struct stacktrace_ops *ops,
@@ -21742,16 +21998,16 @@ index d9c12d3..7858b62 100644
        printk_stack_address(addr, reliable);
  }
  
-@@ -224,6 +223,8 @@ unsigned __kprobes long oops_begin(void)
- }
+@@ -225,6 +224,8 @@ unsigned long oops_begin(void)
  EXPORT_SYMBOL_GPL(oops_begin);
+ NOKPROBE_SYMBOL(oops_begin);
  
 +extern void gr_handle_kernel_exploit(void);
 +
- void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)
+ void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
  {
        if (regs && kexec_should_crash(current))
-@@ -245,7 +246,10 @@ void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)
+@@ -246,7 +247,10 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
                panic("Fatal exception in interrupt");
        if (panic_on_oops)
                panic("Fatal exception");
@@ -21761,9 +22017,9 @@ index d9c12d3..7858b62 100644
 +
 +      do_group_exit(signr);
  }
+ NOKPROBE_SYMBOL(oops_end);
  
- int __kprobes __die(const char *str, struct pt_regs *regs, long err)
-@@ -273,7 +277,7 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err)
+@@ -275,7 +279,7 @@ int __die(const char *str, struct pt_regs *regs, long err)
        print_modules();
        show_regs(regs);
  #ifdef CONFIG_X86_32
@@ -21772,7 +22028,7 @@ index d9c12d3..7858b62 100644
                sp = regs->sp;
                ss = regs->ss & 0xffff;
        } else {
-@@ -301,7 +305,7 @@ void die(const char *str, struct pt_regs *regs, long err)
+@@ -304,7 +308,7 @@ void die(const char *str, struct pt_regs *regs, long err)
        unsigned long flags = oops_begin();
        int sig = SIGSEGV;
  
@@ -21870,10 +22126,10 @@ index 5abd4cd..c65733b 100644
 +EXPORT_SYMBOL(pax_check_alloca);
 +#endif
 diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
-index 1abcb50..6c8d702 100644
+index ff86f19..a20c62c 100644
 --- a/arch/x86/kernel/dumpstack_64.c
 +++ b/arch/x86/kernel/dumpstack_64.c
-@@ -154,12 +154,12 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
+@@ -153,12 +153,12 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
                const struct stacktrace_ops *ops, void *data)
  {
        const unsigned cpu = get_cpu();
@@ -21887,7 +22143,7 @@ index 1abcb50..6c8d702 100644
  
        if (!task)
                task = current;
-@@ -180,7 +180,6 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
+@@ -179,7 +179,6 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
         * current stack address. If the stacks consist of nested
         * exceptions
         */
@@ -21895,7 +22151,7 @@ index 1abcb50..6c8d702 100644
        while (!done) {
                unsigned long *stack_end;
                enum stack_type stype;
-@@ -203,7 +202,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
+@@ -202,7 +201,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
                        if (ops->stack(data, id) < 0)
                                break;
  
@@ -21904,7 +22160,7 @@ index 1abcb50..6c8d702 100644
                                             data, stack_end, &graph);
                        ops->stack(data, "<EOE>");
                        /*
-@@ -211,6 +210,8 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
+@@ -210,6 +209,8 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
                         * second-to-last pointer (index -2 to end) in the
                         * exception stack:
                         */
@@ -21913,7 +22169,7 @@ index 1abcb50..6c8d702 100644
                        stack = (unsigned long *) stack_end[-2];
                        done = 0;
                        break;
-@@ -219,7 +220,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
+@@ -218,7 +219,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
  
                        if (ops->stack(data, "IRQ") < 0)
                                break;
@@ -21922,7 +22178,7 @@ index 1abcb50..6c8d702 100644
                                     ops, data, stack_end, &graph);
                        /*
                         * We link to the next stack (which would be
-@@ -241,7 +242,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
+@@ -240,7 +241,9 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
        /*
         * This handles the process stack:
         */
@@ -21933,7 +22189,7 @@ index 1abcb50..6c8d702 100644
        put_cpu();
  }
  EXPORT_SYMBOL(dump_trace);
-@@ -350,3 +353,50 @@ int is_valid_bugaddr(unsigned long ip)
+@@ -349,3 +352,50 @@ int is_valid_bugaddr(unsigned long ip)
  
        return ud2 == 0x0b0f;
  }
@@ -21985,10 +22241,10 @@ index 1abcb50..6c8d702 100644
 +EXPORT_SYMBOL(pax_check_alloca);
 +#endif
 diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
-index 988c00a..4f673b6 100644
+index 49f8864..1cc6d07 100644
 --- a/arch/x86/kernel/e820.c
 +++ b/arch/x86/kernel/e820.c
-@@ -803,8 +803,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void)
+@@ -802,8 +802,8 @@ unsigned long __init e820_end_of_low_ram_pfn(void)
  
  static void early_panic(char *msg)
  {
@@ -22012,7 +22268,7 @@ index 01d1c18..8073693 100644
  #include <asm/processor.h>
  #include <asm/fcntl.h>
 diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
-index 6491353..a918952 100644
+index 344b63f..ccdac7a 100644
 --- a/arch/x86/kernel/entry_32.S
 +++ b/arch/x86/kernel/entry_32.S
 @@ -177,13 +177,153 @@
@@ -22204,7 +22460,7 @@ index 6491353..a918952 100644
  
  ENTRY(ret_from_kernel_thread)
        CFI_STARTPROC
-@@ -344,7 +493,15 @@ ret_from_intr:
+@@ -340,7 +489,15 @@ ret_from_intr:
        andl $SEGMENT_RPL_MASK, %eax
  #endif
        cmpl $USER_RPL, %eax
@@ -22220,7 +22476,7 @@ index 6491353..a918952 100644
  
  ENTRY(resume_userspace)
        LOCKDEP_SYS_EXIT
-@@ -356,8 +513,8 @@ ENTRY(resume_userspace)
+@@ -352,8 +509,8 @@ ENTRY(resume_userspace)
        andl $_TIF_WORK_MASK, %ecx      # is there any work to be done on
                                        # int/exception return?
        jne work_pending
@@ -22231,7 +22487,7 @@ index 6491353..a918952 100644
  
  #ifdef CONFIG_PREEMPT
  ENTRY(resume_kernel)
-@@ -369,7 +526,7 @@ need_resched:
+@@ -365,7 +522,7 @@ need_resched:
        jz restore_all
        call preempt_schedule_irq
        jmp need_resched
@@ -22239,8 +22495,8 @@ index 6491353..a918952 100644
 +ENDPROC(resume_kernel)
  #endif
        CFI_ENDPROC
- /*
-@@ -403,30 +560,45 @@ sysenter_past_esp:
+@@ -395,30 +552,45 @@ sysenter_past_esp:
        /*CFI_REL_OFFSET cs, 0*/
        /*
         * Push current_thread_info()->sysenter_return to the stack.
@@ -22289,7 +22545,7 @@ index 6491353..a918952 100644
        testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
        jnz sysenter_audit
  sysenter_do_call:
-@@ -442,12 +614,24 @@ sysenter_after_call:
+@@ -434,12 +606,24 @@ sysenter_after_call:
        testl $_TIF_ALLWORK_MASK, %ecx
        jne sysexit_audit
  sysenter_exit:
@@ -22314,17 +22570,17 @@ index 6491353..a918952 100644
        PTGS_TO_GS
        ENABLE_INTERRUPTS_SYSEXIT
  
-@@ -464,6 +648,9 @@ sysenter_audit:
-       movl %eax,%edx                  /* 2nd arg: syscall number */
-       movl $AUDIT_ARCH_I386,%eax      /* 1st arg: audit arch */
+@@ -453,6 +637,9 @@ sysenter_audit:
+       pushl_cfi PT_ESI(%esp)          /* a3: 5th arg */
+       pushl_cfi PT_EDX+4(%esp)        /* a2: 4th arg */
        call __audit_syscall_entry
 +
 +      pax_erase_kstack
 +
-       pushl_cfi %ebx
+       popl_cfi %ecx /* get that remapped edx off the stack */
+       popl_cfi %ecx /* get that remapped esi off the stack */
        movl PT_EAX(%esp),%eax          /* reload syscall number */
-       jmp sysenter_do_call
-@@ -489,10 +676,16 @@ sysexit_audit:
+@@ -479,10 +666,16 @@ sysexit_audit:
  
        CFI_ENDPROC
  .pushsection .fixup,"ax"
@@ -22343,7 +22599,7 @@ index 6491353..a918952 100644
        PTGS_TO_GS_EX
  ENDPROC(ia32_sysenter_target)
  
-@@ -507,6 +700,11 @@ ENTRY(system_call)
+@@ -493,6 +686,11 @@ ENTRY(system_call)
        pushl_cfi %eax                  # save orig_eax
        SAVE_ALL
        GET_THREAD_INFO(%ebp)
@@ -22355,7 +22611,7 @@ index 6491353..a918952 100644
                                        # system call tracing in operation / emulation
        testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
        jnz syscall_trace_entry
-@@ -525,6 +723,15 @@ syscall_exit:
+@@ -512,6 +710,15 @@ syscall_exit:
        testl $_TIF_ALLWORK_MASK, %ecx  # current->work
        jne syscall_exit_work
  
@@ -22371,7 +22627,7 @@ index 6491353..a918952 100644
  restore_all:
        TRACE_IRQS_IRET
  restore_all_notrace:
-@@ -576,14 +783,34 @@ ldt_ss:
+@@ -566,14 +773,34 @@ ldt_ss:
   * compensating for the offset by changing to the ESPFIX segment with
   * a base address that matches for the difference.
   */
@@ -22409,7 +22665,7 @@ index 6491353..a918952 100644
        pushl_cfi $__ESPFIX_SS
        pushl_cfi %eax                  /* new kernel esp */
        /* Disable interrupts, but do not irqtrace this section: we
-@@ -612,20 +839,18 @@ work_resched:
+@@ -603,20 +830,18 @@ work_resched:
        movl TI_flags(%ebp), %ecx
        andl $_TIF_WORK_MASK, %ecx      # is there any work to be done other
                                        # than syscall tracing?
@@ -22432,7 +22688,7 @@ index 6491353..a918952 100644
  #endif
        TRACE_IRQS_ON
        ENABLE_INTERRUPTS(CLBR_NONE)
-@@ -646,7 +871,7 @@ work_notifysig_v86:
+@@ -637,7 +862,7 @@ work_notifysig_v86:
        movl %eax, %esp
        jmp 1b
  #endif
@@ -22441,7 +22697,7 @@ index 6491353..a918952 100644
  
        # perform syscall exit tracing
        ALIGN
-@@ -654,11 +879,14 @@ syscall_trace_entry:
+@@ -645,11 +870,14 @@ syscall_trace_entry:
        movl $-ENOSYS,PT_EAX(%esp)
        movl %esp, %eax
        call syscall_trace_enter
@@ -22457,7 +22713,7 @@ index 6491353..a918952 100644
  
        # perform syscall exit tracing
        ALIGN
-@@ -671,26 +899,30 @@ syscall_exit_work:
+@@ -662,26 +890,30 @@ syscall_exit_work:
        movl %esp, %eax
        call syscall_trace_leave
        jmp resume_userspace
@@ -22479,22 +22735,22 @@ index 6491353..a918952 100644
 +ENDPROC(syscall_fault)
  
  syscall_badsys:
-       movl $-ENOSYS,PT_EAX(%esp)
-       jmp syscall_exit
+       movl $-ENOSYS,%eax
+       jmp syscall_after_call
 -END(syscall_badsys)
 +ENDPROC(syscall_badsys)
  
  sysenter_badsys:
-       movl $-ENOSYS,PT_EAX(%esp)
+       movl $-ENOSYS,%eax
        jmp sysenter_after_call
--END(syscall_badsys)
+-END(sysenter_badsys)
 +ENDPROC(sysenter_badsys)
        CFI_ENDPROC
- /*
-  * End of kprobes section
-@@ -706,8 +938,15 @@ END(syscall_badsys)
-  * normal stack and adjusts ESP with the matching offset.
+ .macro FIXUP_ESPFIX_STACK
+@@ -694,8 +926,15 @@ END(sysenter_badsys)
   */
+ #ifdef CONFIG_X86_ESPFIX32
        /* fixup the stack */
 -      mov GDT_ESPFIX_SS + 4, %al /* bits 16..23 */
 -      mov GDT_ESPFIX_SS + 7, %ah /* bits 24..31 */
@@ -22510,7 +22766,7 @@ index 6491353..a918952 100644
        shl $16, %eax
        addl %esp, %eax                 /* the adjusted stack pointer */
        pushl_cfi $__KERNEL_DS
-@@ -760,7 +999,7 @@ vector=vector+1
+@@ -751,7 +990,7 @@ vector=vector+1
    .endr
  2:    jmp common_interrupt
  .endr
@@ -22519,7 +22775,7 @@ index 6491353..a918952 100644
  
  .previous
  END(interrupt)
-@@ -821,7 +1060,7 @@ ENTRY(coprocessor_error)
+@@ -808,7 +1047,7 @@ ENTRY(coprocessor_error)
        pushl_cfi $do_coprocessor_error
        jmp error_code
        CFI_ENDPROC
@@ -22528,7 +22784,7 @@ index 6491353..a918952 100644
  
  ENTRY(simd_coprocessor_error)
        RING0_INT_FRAME
-@@ -834,7 +1073,7 @@ ENTRY(simd_coprocessor_error)
+@@ -821,7 +1060,7 @@ ENTRY(simd_coprocessor_error)
  .section .altinstructions,"a"
        altinstruction_entry 661b, 663f, X86_FEATURE_XMM, 662b-661b, 664f-663f
  .previous
@@ -22537,7 +22793,7 @@ index 6491353..a918952 100644
  663:  pushl $do_simd_coprocessor_error
  664:
  .previous
-@@ -843,7 +1082,7 @@ ENTRY(simd_coprocessor_error)
+@@ -830,7 +1069,7 @@ ENTRY(simd_coprocessor_error)
  #endif
        jmp error_code
        CFI_ENDPROC
@@ -22546,7 +22802,7 @@ index 6491353..a918952 100644
  
  ENTRY(device_not_available)
        RING0_INT_FRAME
-@@ -852,18 +1091,18 @@ ENTRY(device_not_available)
+@@ -839,18 +1078,18 @@ ENTRY(device_not_available)
        pushl_cfi $do_device_not_available
        jmp error_code
        CFI_ENDPROC
@@ -22568,7 +22824,7 @@ index 6491353..a918952 100644
  #endif
  
  ENTRY(overflow)
-@@ -873,7 +1112,7 @@ ENTRY(overflow)
+@@ -860,7 +1099,7 @@ ENTRY(overflow)
        pushl_cfi $do_overflow
        jmp error_code
        CFI_ENDPROC
@@ -22577,7 +22833,7 @@ index 6491353..a918952 100644
  
  ENTRY(bounds)
        RING0_INT_FRAME
-@@ -882,7 +1121,7 @@ ENTRY(bounds)
+@@ -869,7 +1108,7 @@ ENTRY(bounds)
        pushl_cfi $do_bounds
        jmp error_code
        CFI_ENDPROC
@@ -22586,7 +22842,7 @@ index 6491353..a918952 100644
  
  ENTRY(invalid_op)
        RING0_INT_FRAME
-@@ -891,7 +1130,7 @@ ENTRY(invalid_op)
+@@ -878,7 +1117,7 @@ ENTRY(invalid_op)
        pushl_cfi $do_invalid_op
        jmp error_code
        CFI_ENDPROC
@@ -22595,7 +22851,7 @@ index 6491353..a918952 100644
  
  ENTRY(coprocessor_segment_overrun)
        RING0_INT_FRAME
-@@ -900,7 +1139,7 @@ ENTRY(coprocessor_segment_overrun)
+@@ -887,7 +1126,7 @@ ENTRY(coprocessor_segment_overrun)
        pushl_cfi $do_coprocessor_segment_overrun
        jmp error_code
        CFI_ENDPROC
@@ -22604,7 +22860,7 @@ index 6491353..a918952 100644
  
  ENTRY(invalid_TSS)
        RING0_EC_FRAME
-@@ -908,7 +1147,7 @@ ENTRY(invalid_TSS)
+@@ -895,7 +1134,7 @@ ENTRY(invalid_TSS)
        pushl_cfi $do_invalid_TSS
        jmp error_code
        CFI_ENDPROC
@@ -22613,7 +22869,7 @@ index 6491353..a918952 100644
  
  ENTRY(segment_not_present)
        RING0_EC_FRAME
-@@ -916,7 +1155,7 @@ ENTRY(segment_not_present)
+@@ -903,7 +1142,7 @@ ENTRY(segment_not_present)
        pushl_cfi $do_segment_not_present
        jmp error_code
        CFI_ENDPROC
@@ -22622,7 +22878,7 @@ index 6491353..a918952 100644
  
  ENTRY(stack_segment)
        RING0_EC_FRAME
-@@ -924,7 +1163,7 @@ ENTRY(stack_segment)
+@@ -911,7 +1150,7 @@ ENTRY(stack_segment)
        pushl_cfi $do_stack_segment
        jmp error_code
        CFI_ENDPROC
@@ -22631,7 +22887,7 @@ index 6491353..a918952 100644
  
  ENTRY(alignment_check)
        RING0_EC_FRAME
-@@ -932,7 +1171,7 @@ ENTRY(alignment_check)
+@@ -919,7 +1158,7 @@ ENTRY(alignment_check)
        pushl_cfi $do_alignment_check
        jmp error_code
        CFI_ENDPROC
@@ -22640,7 +22896,7 @@ index 6491353..a918952 100644
  
  ENTRY(divide_error)
        RING0_INT_FRAME
-@@ -941,7 +1180,7 @@ ENTRY(divide_error)
+@@ -928,7 +1167,7 @@ ENTRY(divide_error)
        pushl_cfi $do_divide_error
        jmp error_code
        CFI_ENDPROC
@@ -22649,7 +22905,7 @@ index 6491353..a918952 100644
  
  #ifdef CONFIG_X86_MCE
  ENTRY(machine_check)
-@@ -951,7 +1190,7 @@ ENTRY(machine_check)
+@@ -938,7 +1177,7 @@ ENTRY(machine_check)
        pushl_cfi machine_check_vector
        jmp error_code
        CFI_ENDPROC
@@ -22658,16 +22914,16 @@ index 6491353..a918952 100644
  #endif
  
  ENTRY(spurious_interrupt_bug)
-@@ -961,7 +1200,7 @@ ENTRY(spurious_interrupt_bug)
+@@ -948,7 +1187,7 @@ ENTRY(spurious_interrupt_bug)
        pushl_cfi $do_spurious_interrupt_bug
        jmp error_code
        CFI_ENDPROC
 -END(spurious_interrupt_bug)
 +ENDPROC(spurious_interrupt_bug)
- /*
-  * End of kprobes section
-  */
-@@ -1071,7 +1310,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
+ #ifdef CONFIG_XEN
+ /* Xen doesn't set %esp to be precisely what the normal sysenter
+@@ -1054,7 +1293,7 @@ BUILD_INTERRUPT3(hyperv_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
  
  ENTRY(mcount)
        ret
@@ -22675,8 +22931,8 @@ index 6491353..a918952 100644
 +ENDPROC(mcount)
  
  ENTRY(ftrace_caller)
-       cmpl $0, function_trace_stop
-@@ -1104,7 +1343,7 @@ ftrace_graph_call:
+       pushl %eax
+@@ -1084,7 +1323,7 @@ ftrace_graph_call:
  .globl ftrace_stub
  ftrace_stub:
        ret
@@ -22685,7 +22941,7 @@ index 6491353..a918952 100644
  
  ENTRY(ftrace_regs_caller)
        pushf   /* push flags before compare (in cs location) */
-@@ -1208,7 +1447,7 @@ trace:
+@@ -1182,7 +1421,7 @@ trace:
        popl %ecx
        popl %eax
        jmp ftrace_stub
@@ -22694,7 +22950,7 @@ index 6491353..a918952 100644
  #endif /* CONFIG_DYNAMIC_FTRACE */
  #endif /* CONFIG_FUNCTION_TRACER */
  
-@@ -1226,7 +1465,7 @@ ENTRY(ftrace_graph_caller)
+@@ -1200,7 +1439,7 @@ ENTRY(ftrace_graph_caller)
        popl %ecx
        popl %eax
        ret
@@ -22703,7 +22959,7 @@ index 6491353..a918952 100644
  
  .globl return_to_handler
  return_to_handler:
-@@ -1292,15 +1531,18 @@ error_code:
+@@ -1261,15 +1500,18 @@ error_code:
        movl $-1, PT_ORIG_EAX(%esp)     # no syscall to restart
        REG_TO_PTGS %ecx
        SET_KERNEL_GS %ecx
@@ -22724,7 +22980,7 @@ index 6491353..a918952 100644
  
  /*
   * Debug traps and NMI can happen at the one SYSENTER instruction
-@@ -1343,7 +1585,7 @@ debug_stack_correct:
+@@ -1312,7 +1554,7 @@ debug_stack_correct:
        call do_debug
        jmp ret_from_exception
        CFI_ENDPROC
@@ -22733,7 +22989,7 @@ index 6491353..a918952 100644
  
  /*
   * NMI is doubly nasty. It can happen _while_ we're handling
-@@ -1381,6 +1623,9 @@ nmi_stack_correct:
+@@ -1352,6 +1594,9 @@ nmi_stack_correct:
        xorl %edx,%edx          # zero error code
        movl %esp,%eax          # pt_regs pointer
        call do_nmi
@@ -22743,7 +22999,7 @@ index 6491353..a918952 100644
        jmp restore_all_notrace
        CFI_ENDPROC
  
-@@ -1417,12 +1662,15 @@ nmi_espfix_stack:
+@@ -1389,13 +1634,16 @@ nmi_espfix_stack:
        FIXUP_ESPFIX_STACK              # %eax == %esp
        xorl %edx,%edx                  # zero error code
        call do_nmi
@@ -22754,13 +23010,14 @@ index 6491353..a918952 100644
        lss 12+4(%esp), %esp            # back to espfix stack
        CFI_ADJUST_CFA_OFFSET -24
        jmp irq_return
+ #endif
        CFI_ENDPROC
 -END(nmi)
 +ENDPROC(nmi)
  
  ENTRY(int3)
        RING0_INT_FRAME
-@@ -1435,14 +1683,14 @@ ENTRY(int3)
+@@ -1408,14 +1656,14 @@ ENTRY(int3)
        call do_int3
        jmp ret_from_exception
        CFI_ENDPROC
@@ -22777,7 +23034,7 @@ index 6491353..a918952 100644
  
  #ifdef CONFIG_KVM_GUEST
  ENTRY(async_page_fault)
-@@ -1451,7 +1699,7 @@ ENTRY(async_page_fault)
+@@ -1424,6 +1672,6 @@ ENTRY(async_page_fault)
        pushl_cfi $do_async_page_fault
        jmp error_code
        CFI_ENDPROC
@@ -22785,96 +23042,20 @@ index 6491353..a918952 100644
 +ENDPROC(async_page_fault)
  #endif
  
- /*
 diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
-index 1e96c36..3ff710a 100644
+index c0226ab..96a8ab7 100644
 --- a/arch/x86/kernel/entry_64.S
 +++ b/arch/x86/kernel/entry_64.S
 @@ -59,6 +59,8 @@
- #include <asm/context_tracking.h>
  #include <asm/smap.h>
+ #include <asm/pgtable_types.h>
  #include <linux/err.h>
 +#include <asm/pgtable.h>
 +#include <asm/alternative-asm.h>
  
  /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this.  */
  #include <linux/elf-em.h>
-@@ -80,8 +82,9 @@
- #ifdef CONFIG_DYNAMIC_FTRACE
- ENTRY(function_hook)
-+      pax_force_retaddr
-       retq
--END(function_hook)
-+ENDPROC(function_hook)
- /* skip is set if stack has been adjusted */
- .macro ftrace_caller_setup skip=0
-@@ -122,8 +125,9 @@ GLOBAL(ftrace_graph_call)
- #endif
- GLOBAL(ftrace_stub)
-+      pax_force_retaddr
-       retq
--END(ftrace_caller)
-+ENDPROC(ftrace_caller)
- ENTRY(ftrace_regs_caller)
-       /* Save the current flags before compare (in SS location)*/
-@@ -191,7 +195,7 @@ ftrace_restore_flags:
-       popfq
-       jmp  ftrace_stub
--END(ftrace_regs_caller)
-+ENDPROC(ftrace_regs_caller)
- #else /* ! CONFIG_DYNAMIC_FTRACE */
-@@ -212,6 +216,7 @@ ENTRY(function_hook)
- #endif
- GLOBAL(ftrace_stub)
-+      pax_force_retaddr
-       retq
- trace:
-@@ -225,12 +230,13 @@ trace:
- #endif
-       subq $MCOUNT_INSN_SIZE, %rdi
-+      pax_force_fptr ftrace_trace_function
-       call   *ftrace_trace_function
-       MCOUNT_RESTORE_FRAME
-       jmp ftrace_stub
--END(function_hook)
-+ENDPROC(function_hook)
- #endif /* CONFIG_DYNAMIC_FTRACE */
- #endif /* CONFIG_FUNCTION_TRACER */
-@@ -252,8 +258,9 @@ ENTRY(ftrace_graph_caller)
-       MCOUNT_RESTORE_FRAME
-+      pax_force_retaddr
-       retq
--END(ftrace_graph_caller)
-+ENDPROC(ftrace_graph_caller)
- GLOBAL(return_to_handler)
-       subq  $24, %rsp
-@@ -269,7 +276,9 @@ GLOBAL(return_to_handler)
-       movq 8(%rsp), %rdx
-       movq (%rsp), %rax
-       addq $24, %rsp
-+      pax_force_fptr %rdi
-       jmp *%rdi
-+ENDPROC(return_to_handler)
- #endif
-@@ -284,6 +293,430 @@ ENTRY(native_usergs_sysret64)
+@@ -81,6 +83,430 @@ ENTRY(native_usergs_sysret64)
  ENDPROC(native_usergs_sysret64)
  #endif /* CONFIG_PARAVIRT */
  
@@ -23305,7 +23486,7 @@ index 1e96c36..3ff710a 100644
  
  .macro TRACE_IRQS_IRETQ offset=ARGOFFSET
  #ifdef CONFIG_TRACE_IRQFLAGS
-@@ -320,7 +753,7 @@ ENDPROC(native_usergs_sysret64)
+@@ -117,7 +543,7 @@ ENDPROC(native_usergs_sysret64)
  .endm
  
  .macro TRACE_IRQS_IRETQ_DEBUG offset=ARGOFFSET
@@ -23314,7 +23495,7 @@ index 1e96c36..3ff710a 100644
        jnc  1f
        TRACE_IRQS_ON_DEBUG
  1:
-@@ -358,27 +791,6 @@ ENDPROC(native_usergs_sysret64)
+@@ -155,27 +581,6 @@ ENDPROC(native_usergs_sysret64)
        movq \tmp,R11+\offset(%rsp)
        .endm
  
@@ -23342,7 +23523,7 @@ index 1e96c36..3ff710a 100644
  /*
   * initial frame state for interrupts (and exceptions without error code)
   */
-@@ -445,25 +857,26 @@ ENDPROC(native_usergs_sysret64)
+@@ -241,25 +646,26 @@ ENDPROC(native_usergs_sysret64)
  /* save partial stack frame */
        .macro SAVE_ARGS_IRQ
        cld
@@ -23382,7 +23563,7 @@ index 1e96c36..3ff710a 100644
        je 1f
        SWAPGS
        /*
-@@ -483,6 +896,18 @@ ENDPROC(native_usergs_sysret64)
+@@ -279,6 +685,18 @@ ENDPROC(native_usergs_sysret64)
                        0x06 /* DW_OP_deref */, \
                        0x08 /* DW_OP_const1u */, SS+8-RBP, \
                        0x22 /* DW_OP_plus */
@@ -23401,7 +23582,7 @@ index 1e96c36..3ff710a 100644
        /* We entered an interrupt context - irqs are off: */
        TRACE_IRQS_OFF
        .endm
-@@ -514,9 +939,52 @@ ENTRY(save_paranoid)
+@@ -308,9 +726,52 @@ ENTRY(save_paranoid)
        js 1f   /* negative -> in kernel */
        SWAPGS
        xorl %ebx,%ebx
@@ -23453,10 +23634,10 @@ index 1e96c36..3ff710a 100644
 +      ret
 +      CFI_ENDPROC
 +ENDPROC(save_paranoid_nmi)
-       .popsection
  
  /*
-@@ -538,7 +1006,7 @@ ENTRY(ret_from_fork)
+  * A newly forked process directly context switches into this address.
+@@ -331,7 +792,7 @@ ENTRY(ret_from_fork)
  
        RESTORE_REST
  
@@ -23465,7 +23646,7 @@ index 1e96c36..3ff710a 100644
        jz   1f
  
        testl $_TIF_IA32, TI_flags(%rcx)        # 32-bit compat task needs IRET
-@@ -548,15 +1016,13 @@ ENTRY(ret_from_fork)
+@@ -341,15 +802,13 @@ ENTRY(ret_from_fork)
        jmp ret_from_sys_call                   # go to the SYSRET fastpath
  
  1:
@@ -23482,7 +23663,7 @@ index 1e96c36..3ff710a 100644
  
  /*
   * System call entry. Up to 6 arguments in registers are supported.
-@@ -593,7 +1059,7 @@ END(ret_from_fork)
+@@ -386,7 +845,7 @@ END(ret_from_fork)
  ENTRY(system_call)
        CFI_STARTPROC   simple
        CFI_SIGNAL_FRAME
@@ -23491,11 +23672,11 @@ index 1e96c36..3ff710a 100644
        CFI_REGISTER    rip,rcx
        /*CFI_REGISTER  rflags,r11*/
        SWAPGS_UNSAFE_STACK
-@@ -606,16 +1072,23 @@ GLOBAL(system_call_after_swapgs)
+@@ -399,16 +858,23 @@ GLOBAL(system_call_after_swapgs)
  
        movq    %rsp,PER_CPU_VAR(old_rsp)
        movq    PER_CPU_VAR(kernel_stack),%rsp
-+      SAVE_ARGS 8*6,0
++      SAVE_ARGS 8*6, 0, rax_enosys=1
 +      pax_enter_kernel_user
 +
 +#ifdef CONFIG_PAX_RANDKSTACK
@@ -23507,8 +23688,8 @@ index 1e96c36..3ff710a 100644
         * and short:
         */
        ENABLE_INTERRUPTS(CLBR_NONE)
--      SAVE_ARGS 8,0
-       movq  %rax,ORIG_RAX-ARGOFFSET(%rsp)
+-      SAVE_ARGS 8, 0, rax_enosys=1
+       movq_cfi rax,(ORIG_RAX-ARGOFFSET)
        movq  %rcx,RIP-ARGOFFSET(%rsp)
        CFI_REL_OFFSET rip,RIP-ARGOFFSET
 -      testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)
@@ -23517,7 +23698,7 @@ index 1e96c36..3ff710a 100644
        jnz tracesys
  system_call_fastpath:
  #if __SYSCALL_MASK == ~0
-@@ -639,10 +1112,13 @@ sysret_check:
+@@ -432,10 +898,13 @@ sysret_check:
        LOCKDEP_SYS_EXIT
        DISABLE_INTERRUPTS(CLBR_NONE)
        TRACE_IRQS_OFF
@@ -23532,35 +23713,33 @@ index 1e96c36..3ff710a 100644
        /*
         * sysretq will re-enable interrupts:
         */
-@@ -701,6 +1177,9 @@ auditsys:
-       movq %rax,%rsi                  /* 2nd arg: syscall number */
-       movl $AUDIT_ARCH_X86_64,%edi    /* 1st arg: audit arch */
-       call __audit_syscall_entry
-+
-+      pax_erase_kstack
-+
-       LOAD_ARGS 0             /* reload call-clobbered registers */
-       jmp system_call_fastpath
+@@ -494,12 +963,15 @@ sysret_audit:
  
-@@ -722,7 +1201,7 @@ sysret_audit:
        /* Do syscall tracing */
  tracesys:
- #ifdef CONFIG_AUDITSYSCALL
--      testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)
-+      testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%rcx)
-       jz auditsys
- #endif
-       SAVE_REST
-@@ -730,12 +1209,15 @@ tracesys:
-       FIXUP_TOP_OF_STACK %rdi
-       movq %rsp,%rdi
-       call syscall_trace_enter
+-      leaq -REST_SKIP(%rsp), %rdi
++      movq %rsp, %rdi
+       movq $AUDIT_ARCH_X86_64, %rsi
+       call syscall_trace_enter_phase1
+       test %rax, %rax
+       jnz tracesys_phase2             /* if needed, run the slow path */
+-      LOAD_ARGS 0                     /* else restore clobbered regs */
++
++      pax_erase_kstack
 +
++      LOAD_ARGS                       /* else restore clobbered regs */
+       jmp system_call_fastpath        /*      and return to the fast path */
+ tracesys_phase2:
+@@ -510,12 +982,14 @@ tracesys_phase2:
+       movq %rax,%rdx
+       call syscall_trace_enter_phase2
 +      pax_erase_kstack
 +
        /*
         * Reload arg registers from stack in case ptrace changed them.
-        * We don't reload %rax because syscall_trace_enter() returned
+        * We don't reload %rax because syscall_trace_entry_phase2() returned
         * the value it wants us to use in the table lookup.
         */
 -      LOAD_ARGS ARGOFFSET, 1
@@ -23568,7 +23747,7 @@ index 1e96c36..3ff710a 100644
        RESTORE_REST
  #if __SYSCALL_MASK == ~0
        cmpq $__NR_syscall_max,%rax
-@@ -765,7 +1247,9 @@ GLOBAL(int_with_check)
+@@ -545,7 +1019,9 @@ GLOBAL(int_with_check)
        andl %edi,%edx
        jnz   int_careful
        andl    $~TS_COMPAT,TI_status(%rcx)
@@ -23579,7 +23758,7 @@ index 1e96c36..3ff710a 100644
  
        /* Either reschedule or signal or syscall exit tracking needed. */
        /* First do a reschedule test. */
-@@ -811,7 +1295,7 @@ int_restore_rest:
+@@ -591,7 +1067,7 @@ int_restore_rest:
        TRACE_IRQS_OFF
        jmp int_with_check
        CFI_ENDPROC
@@ -23588,7 +23767,7 @@ index 1e96c36..3ff710a 100644
  
        .macro FORK_LIKE func
  ENTRY(stub_\func)
-@@ -824,9 +1308,10 @@ ENTRY(stub_\func)
+@@ -604,9 +1080,10 @@ ENTRY(stub_\func)
        DEFAULT_FRAME 0 8               /* offset 8: return address */
        call sys_\func
        RESTORE_TOP_OF_STACK %r11, 8
@@ -23601,7 +23780,7 @@ index 1e96c36..3ff710a 100644
        .endm
  
        .macro FIXED_FRAME label,func
-@@ -836,9 +1321,10 @@ ENTRY(\label)
+@@ -616,9 +1093,10 @@ ENTRY(\label)
        FIXUP_TOP_OF_STACK %r11, 8-ARGOFFSET
        call \func
        RESTORE_TOP_OF_STACK %r11, 8-ARGOFFSET
@@ -23613,7 +23792,7 @@ index 1e96c36..3ff710a 100644
        .endm
  
        FORK_LIKE  clone
-@@ -846,19 +1332,6 @@ END(\label)
+@@ -626,19 +1104,6 @@ END(\label)
        FORK_LIKE  vfork
        FIXED_FRAME stub_iopl, sys_iopl
  
@@ -23633,7 +23812,7 @@ index 1e96c36..3ff710a 100644
  ENTRY(stub_execve)
        CFI_STARTPROC
        addq $8, %rsp
-@@ -870,7 +1343,7 @@ ENTRY(stub_execve)
+@@ -650,7 +1115,7 @@ ENTRY(stub_execve)
        RESTORE_REST
        jmp int_ret_from_sys_call
        CFI_ENDPROC
@@ -23642,7 +23821,7 @@ index 1e96c36..3ff710a 100644
  
  /*
   * sigreturn is special because it needs to restore all registers on return.
-@@ -887,7 +1360,7 @@ ENTRY(stub_rt_sigreturn)
+@@ -667,7 +1132,7 @@ ENTRY(stub_rt_sigreturn)
        RESTORE_REST
        jmp int_ret_from_sys_call
        CFI_ENDPROC
@@ -23651,7 +23830,7 @@ index 1e96c36..3ff710a 100644
  
  #ifdef CONFIG_X86_X32_ABI
  ENTRY(stub_x32_rt_sigreturn)
-@@ -901,7 +1374,7 @@ ENTRY(stub_x32_rt_sigreturn)
+@@ -681,7 +1146,7 @@ ENTRY(stub_x32_rt_sigreturn)
        RESTORE_REST
        jmp int_ret_from_sys_call
        CFI_ENDPROC
@@ -23660,7 +23839,7 @@ index 1e96c36..3ff710a 100644
  
  ENTRY(stub_x32_execve)
        CFI_STARTPROC
-@@ -915,7 +1388,7 @@ ENTRY(stub_x32_execve)
+@@ -695,7 +1160,7 @@ ENTRY(stub_x32_execve)
        RESTORE_REST
        jmp int_ret_from_sys_call
        CFI_ENDPROC
@@ -23669,7 +23848,7 @@ index 1e96c36..3ff710a 100644
  
  #endif
  
-@@ -952,7 +1425,7 @@ vector=vector+1
+@@ -732,7 +1197,7 @@ vector=vector+1
  2:    jmp common_interrupt
  .endr
        CFI_ENDPROC
@@ -23678,7 +23857,7 @@ index 1e96c36..3ff710a 100644
  
  .previous
  END(interrupt)
-@@ -969,8 +1442,8 @@ END(interrupt)
+@@ -749,8 +1214,8 @@ END(interrupt)
  /* 0(%rsp): ~(interrupt number) */
        .macro interrupt func
        /* reserve pt_regs for scratch regs and rbp */
@@ -23689,7 +23868,7 @@ index 1e96c36..3ff710a 100644
        SAVE_ARGS_IRQ
        call \func
        .endm
-@@ -997,14 +1470,14 @@ ret_from_intr:
+@@ -773,14 +1238,14 @@ ret_from_intr:
  
        /* Restore saved previous stack */
        popq %rsi
@@ -23708,7 +23887,7 @@ index 1e96c36..3ff710a 100644
        je retint_kernel
  
        /* Interrupt came from user space */
-@@ -1026,12 +1499,16 @@ retint_swapgs:         /* return to user-space */
+@@ -802,12 +1267,35 @@ retint_swapgs:          /* return to user-space */
         * The iretq could re-enable interrupts:
         */
        DISABLE_INTERRUPTS(CLBR_ANY)
@@ -23721,20 +23900,60 @@ index 1e96c36..3ff710a 100644
  retint_restore_args:  /* return to kernel space */
        DISABLE_INTERRUPTS(CLBR_ANY)
 +      pax_exit_kernel
++
++#if defined(CONFIG_EFI) && defined(CONFIG_PAX_KERNEXEC)
++      /* This is a quirk to allow IRQs/NMIs/MCEs during early EFI setup,
++       * namely calling EFI runtime services with a phys mapping. We're
++       * starting off with NOPs and patch in the real instrumentation
++       * (BTS/OR) before starting any userland process; even before starting
++       * up the APs.
++       */
++      .pushsection .altinstr_replacement, "a"
++      601: pax_force_retaddr (RIP-ARGOFFSET)
++      602:
++      .popsection
++      603: .fill 602b-601b, 1, 0x90
++      .pushsection .altinstructions, "a"
++      altinstruction_entry 603b, 601b, X86_FEATURE_ALWAYS, 602b-601b, 602b-601b
++      .popsection
++#else
 +      pax_force_retaddr (RIP-ARGOFFSET)
++#endif
++
        /*
         * The iretq could re-enable interrupts:
         */
-@@ -1112,7 +1589,7 @@ ENTRY(retint_kernel)
+@@ -845,15 +1333,15 @@ native_irq_return_ldt:
+       SWAPGS
+       movq PER_CPU_VAR(espfix_waddr),%rdi
+       movq %rax,(0*8)(%rdi)   /* RAX */
+-      movq (2*8)(%rsp),%rax   /* RIP */
++      movq (2*8 + RIP-RIP)(%rsp),%rax /* RIP */
+       movq %rax,(1*8)(%rdi)
+-      movq (3*8)(%rsp),%rax   /* CS */
++      movq (2*8 + CS-RIP)(%rsp),%rax  /* CS */
+       movq %rax,(2*8)(%rdi)
+-      movq (4*8)(%rsp),%rax   /* RFLAGS */
++      movq (2*8 + EFLAGS-RIP)(%rsp),%rax      /* RFLAGS */
+       movq %rax,(3*8)(%rdi)
+-      movq (6*8)(%rsp),%rax   /* SS */
++      movq (2*8 + SS-RIP)(%rsp),%rax  /* SS */
+       movq %rax,(5*8)(%rdi)
+-      movq (5*8)(%rsp),%rax   /* RSP */
++      movq (2*8 + RSP-RIP)(%rsp),%rax /* RSP */
+       movq %rax,(4*8)(%rdi)
+       andl $0xffff0000,%eax
+       popq_cfi %rdi
+@@ -907,7 +1395,7 @@ ENTRY(retint_kernel)
+       jmp exit_intr
  #endif
        CFI_ENDPROC
 -END(common_interrupt)
 +ENDPROC(common_interrupt)
  /*
-  * End of kprobes section
-  */
-@@ -1130,7 +1607,7 @@ ENTRY(\sym)
+  * APIC interrupts.
+@@ -921,7 +1409,7 @@ ENTRY(\sym)
        interrupt \do_sym
        jmp ret_from_intr
        CFI_ENDPROC
@@ -23743,67 +23962,38 @@ index 1e96c36..3ff710a 100644
  .endm
  
  #ifdef CONFIG_TRACING
-@@ -1218,7 +1695,7 @@ ENTRY(\sym)
-       call \do_sym
-       jmp error_exit          /* %ebx: no swapgs flag */
-       CFI_ENDPROC
--END(\sym)
-+ENDPROC(\sym)
- .endm
- .macro paranoidzeroentry sym do_sym
-@@ -1236,10 +1713,10 @@ ENTRY(\sym)
-       call \do_sym
-       jmp paranoid_exit       /* %ebx: no swapgs flag */
-       CFI_ENDPROC
--END(\sym)
-+ENDPROC(\sym)
- .endm
+@@ -994,7 +1482,7 @@ apicinterrupt IRQ_WORK_VECTOR \
+ /*
+  * Exception entry points.
+  */
 -#define INIT_TSS_IST(x) PER_CPU_VAR(init_tss) + (TSS_ist + ((x) - 1) * 8)
 +#define INIT_TSS_IST(x) (TSS_ist + ((x) - 1) * 8)(%r13)
- .macro paranoidzeroentry_ist sym do_sym ist
+ .macro idtentry sym do_sym has_error_code:req paranoid=0 shift_ist=-1
  ENTRY(\sym)
-       INTR_FRAME
-@@ -1252,12 +1729,18 @@ ENTRY(\sym)
-       TRACE_IRQS_OFF_DEBUG
-       movq %rsp,%rdi          /* pt_regs pointer */
-       xorl %esi,%esi          /* no error code */
+@@ -1045,6 +1533,12 @@ ENTRY(\sym)
+       .endif
+       .if \shift_ist != -1
 +#ifdef CONFIG_SMP
 +      imul $TSS_size, PER_CPU_VAR(cpu_number), %r13d
 +      lea init_tss(%r13), %r13
 +#else
 +      lea init_tss(%rip), %r13
 +#endif
-       subq $EXCEPTION_STKSZ, INIT_TSS_IST(\ist)
-       call \do_sym
-       addq $EXCEPTION_STKSZ, INIT_TSS_IST(\ist)
-       jmp paranoid_exit       /* %ebx: no swapgs flag */
-       CFI_ENDPROC
--END(\sym)
-+ENDPROC(\sym)
- .endm
+       subq $EXCEPTION_STKSZ, INIT_TSS_IST(\shift_ist)
+       .endif
  
- .macro errorentry sym do_sym
-@@ -1275,7 +1758,7 @@ ENTRY(\sym)
-       call \do_sym
-       jmp error_exit                  /* %ebx: no swapgs flag */
-       CFI_ENDPROC
--END(\sym)
-+ENDPROC(\sym)
- .endm
+@@ -1061,7 +1555,7 @@ ENTRY(\sym)
+       .endif
  
- #ifdef CONFIG_TRACING
-@@ -1306,7 +1789,7 @@ ENTRY(\sym)
-       call \do_sym
-       jmp paranoid_exit               /* %ebx: no swapgs flag */
        CFI_ENDPROC
 -END(\sym)
 +ENDPROC(\sym)
  .endm
  
- zeroentry divide_error do_divide_error
-@@ -1336,9 +1819,10 @@ gs_change:
+ #ifdef CONFIG_TRACING
+@@ -1102,9 +1596,10 @@ gs_change:
  2:    mfence          /* workaround */
        SWAPGS
        popfq_cfi
@@ -23815,7 +24005,7 @@ index 1e96c36..3ff710a 100644
  
        _ASM_EXTABLE(gs_change,bad_gs)
        .section .fixup,"ax"
-@@ -1366,9 +1850,10 @@ ENTRY(do_softirq_own_stack)
+@@ -1132,9 +1627,10 @@ ENTRY(do_softirq_own_stack)
        CFI_DEF_CFA_REGISTER    rsp
        CFI_ADJUST_CFA_OFFSET   -8
        decl PER_CPU_VAR(irq_count)
@@ -23826,8 +24016,8 @@ index 1e96c36..3ff710a 100644
 +ENDPROC(do_softirq_own_stack)
  
  #ifdef CONFIG_XEN
- zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
-@@ -1406,7 +1891,7 @@ ENTRY(xen_do_hypervisor_callback)   # do_hypervisor_callback(struct *pt_regs)
+ idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0
+@@ -1172,7 +1668,7 @@ ENTRY(xen_do_hypervisor_callback)   # do_hypervisor_callback(struct *pt_regs)
        decl PER_CPU_VAR(irq_count)
        jmp  error_exit
        CFI_ENDPROC
@@ -23836,7 +24026,7 @@ index 1e96c36..3ff710a 100644
  
  /*
   * Hypervisor uses this for application faults while it executes.
-@@ -1465,7 +1950,7 @@ ENTRY(xen_failsafe_callback)
+@@ -1231,7 +1727,7 @@ ENTRY(xen_failsafe_callback)
        SAVE_ALL
        jmp error_exit
        CFI_ENDPROC
@@ -23845,7 +24035,7 @@ index 1e96c36..3ff710a 100644
  
  apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
        xen_hvm_callback_vector xen_evtchn_do_upcall
-@@ -1517,18 +2002,33 @@ ENTRY(paranoid_exit)
+@@ -1278,18 +1774,33 @@ ENTRY(paranoid_exit)
        DEFAULT_FRAME
        DISABLE_INTERRUPTS(CLBR_NONE)
        TRACE_IRQS_OFF_DEBUG
@@ -23881,7 +24071,7 @@ index 1e96c36..3ff710a 100644
        jmp irq_return
  paranoid_userspace:
        GET_THREAD_INFO(%rcx)
-@@ -1557,7 +2057,7 @@ paranoid_schedule:
+@@ -1318,7 +1829,7 @@ paranoid_schedule:
        TRACE_IRQS_OFF
        jmp paranoid_userspace
        CFI_ENDPROC
@@ -23890,9 +24080,9 @@ index 1e96c36..3ff710a 100644
  
  /*
   * Exception entry point. This expects an error code/orig_rax on the stack.
-@@ -1584,12 +2084,23 @@ ENTRY(error_entry)
-       movq_cfi r14, R14+8
-       movq_cfi r15, R15+8
+@@ -1345,12 +1856,23 @@ ENTRY(error_entry)
+       movq %r14, R14+8(%rsp)
+       movq %r15, R15+8(%rsp)
        xorl %ebx,%ebx
 -      testl $3,CS+8(%rsp)
 +      testb $3,CS+8(%rsp)
@@ -23915,16 +24105,16 @@ index 1e96c36..3ff710a 100644
        ret
  
  /*
-@@ -1616,7 +2127,7 @@ bstep_iret:
-       movq %rcx,RIP+8(%rsp)
-       jmp error_swapgs
+@@ -1385,7 +1907,7 @@ error_bad_iret:
+       decl %ebx       /* Return to usergs */
+       jmp error_sti
        CFI_ENDPROC
 -END(error_entry)
 +ENDPROC(error_entry)
  
  
  /* ebx:       no swapgs flag (1: don't need swapgs, 0: need it) */
-@@ -1627,7 +2138,7 @@ ENTRY(error_exit)
+@@ -1396,7 +1918,7 @@ ENTRY(error_exit)
        DISABLE_INTERRUPTS(CLBR_NONE)
        TRACE_IRQS_OFF
        GET_THREAD_INFO(%rcx)
@@ -23933,7 +24123,7 @@ index 1e96c36..3ff710a 100644
        jne retint_kernel
        LOCKDEP_SYS_EXIT_IRQ
        movl TI_flags(%rcx),%edx
-@@ -1636,7 +2147,7 @@ ENTRY(error_exit)
+@@ -1405,7 +1927,7 @@ ENTRY(error_exit)
        jnz retint_careful
        jmp retint_swapgs
        CFI_ENDPROC
@@ -23942,7 +24132,7 @@ index 1e96c36..3ff710a 100644
  
  /*
   * Test if a given stack is an NMI stack or not.
-@@ -1694,9 +2205,11 @@ ENTRY(nmi)
+@@ -1463,9 +1985,11 @@ ENTRY(nmi)
         * If %cs was not the kernel segment, then the NMI triggered in user
         * space, which means it is definitely not nested.
         */
@@ -23955,7 +24145,7 @@ index 1e96c36..3ff710a 100644
        /*
         * Check the special variable on the stack to see if NMIs are
         * executing.
-@@ -1730,8 +2243,7 @@ nested_nmi:
+@@ -1499,8 +2023,7 @@ nested_nmi:
  
  1:
        /* Set up the interrupted NMIs stack to jump to repeat_nmi */
@@ -23965,7 +24155,7 @@ index 1e96c36..3ff710a 100644
        CFI_ADJUST_CFA_OFFSET 1*8
        leaq -10*8(%rsp), %rdx
        pushq_cfi $__KERNEL_DS
-@@ -1749,6 +2261,7 @@ nested_nmi_out:
+@@ -1518,6 +2041,7 @@ nested_nmi_out:
        CFI_RESTORE rdx
  
        /* No need to check faults here */
@@ -23973,7 +24163,7 @@ index 1e96c36..3ff710a 100644
        INTERRUPT_RETURN
  
        CFI_RESTORE_STATE
-@@ -1845,13 +2358,13 @@ end_repeat_nmi:
+@@ -1614,13 +2138,13 @@ end_repeat_nmi:
        subq $ORIG_RAX-R15, %rsp
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
        /*
@@ -23989,7 +24179,7 @@ index 1e96c36..3ff710a 100644
        DEFAULT_FRAME 0
  
        /*
-@@ -1861,9 +2374,9 @@ end_repeat_nmi:
+@@ -1630,9 +2154,9 @@ end_repeat_nmi:
         * NMI itself takes a page fault, the page fault that was preempted
         * will read the information from the NMI page fault and not the
         * origin fault. Save it off and restore it if it changes.
@@ -24001,7 +24191,7 @@ index 1e96c36..3ff710a 100644
  
        /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
        movq %rsp,%rdi
-@@ -1872,31 +2385,36 @@ end_repeat_nmi:
+@@ -1641,29 +2165,34 @@ end_repeat_nmi:
  
        /* Did the NMI take a page fault? Restore cr2 if it did */
        movq %cr2, %rcx
@@ -24041,12 +24231,64 @@ index 1e96c36..3ff710a 100644
 -END(ignore_sysret)
 +ENDPROC(ignore_sysret)
  
- /*
-  * End of kprobes section
+diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c
+index 94d857f..5bce89c 100644
+--- a/arch/x86/kernel/espfix_64.c
++++ b/arch/x86/kernel/espfix_64.c
+@@ -70,8 +70,7 @@ static DEFINE_MUTEX(espfix_init_mutex);
+ #define ESPFIX_MAX_PAGES  DIV_ROUND_UP(CONFIG_NR_CPUS, ESPFIX_STACKS_PER_PAGE)
+ static void *espfix_pages[ESPFIX_MAX_PAGES];
+-static __page_aligned_bss pud_t espfix_pud_page[PTRS_PER_PUD]
+-      __aligned(PAGE_SIZE);
++static pud_t espfix_pud_page[PTRS_PER_PUD] __page_aligned_rodata;
+ static unsigned int page_random, slot_random;
+@@ -122,14 +121,17 @@ static void init_espfix_random(void)
+ void __init init_espfix_bsp(void)
+ {
+       pgd_t *pgd_p;
+-      pteval_t ptemask;
+-
+-      ptemask = __supported_pte_mask;
++      unsigned long index = pgd_index(ESPFIX_BASE_ADDR);
+       /* Install the espfix pud into the kernel page directory */
+-      pgd_p = &init_level4_pgt[pgd_index(ESPFIX_BASE_ADDR)];
++      pgd_p = &init_level4_pgt[index];
+       pgd_populate(&init_mm, pgd_p, (pud_t *)espfix_pud_page);
++#ifdef CONFIG_PAX_PER_CPU_PGD
++      clone_pgd_range(get_cpu_pgd(0, kernel) + index, swapper_pg_dir + index, 1);
++      clone_pgd_range(get_cpu_pgd(0, user) + index, swapper_pg_dir + index, 1);
++#endif
++
+       /* Randomize the locations */
+       init_espfix_random();
+@@ -197,7 +199,7 @@ void init_espfix_ap(void)
+               set_pte(&pte_p[n*PTE_STRIDE], pte);
+       /* Job is done for this CPU and any CPU which shares this page */
+-      ACCESS_ONCE(espfix_pages[page]) = stack_page;
++      ACCESS_ONCE_RW(espfix_pages[page]) = stack_page;
+ unlock_done:
+       mutex_unlock(&espfix_init_mutex);
 diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
-index 52819e8..b6d1dbd 100644
+index 3386dc9..28bdf81 100644
 --- a/arch/x86/kernel/ftrace.c
 +++ b/arch/x86/kernel/ftrace.c
+@@ -88,7 +88,7 @@ static unsigned long text_ip_addr(unsigned long ip)
+        * kernel identity mapping to modify code.
+        */
+       if (within(ip, (unsigned long)_text, (unsigned long)_etext))
+-              ip = (unsigned long)__va(__pa_symbol(ip));
++              ip = (unsigned long)__va(__pa_symbol(ktla_ktva(ip)));
+       return ip;
+ }
 @@ -104,6 +104,8 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code,
  {
        unsigned char replaced[MCOUNT_INSN_SIZE];
@@ -24065,16 +24307,7 @@ index 52819e8..b6d1dbd 100644
  
        ftrace_update_func = ip;
        /* Make sure the breakpoints see the ftrace_update_func update */
-@@ -306,7 +308,7 @@ static int ftrace_write(unsigned long ip, const char *val, int size)
-        * kernel identity mapping to modify code.
-        */
-       if (within(ip, (unsigned long)_text, (unsigned long)_etext))
--              ip = (unsigned long)__va(__pa_symbol(ip));
-+              ip = (unsigned long)__va(__pa_symbol(ktla_ktva(ip)));
-       if (probe_kernel_write((void *)ip, val, size))
-               return -EPERM;
-@@ -319,7 +321,7 @@ static int add_break(unsigned long ip, const char *old)
+@@ -310,7 +312,7 @@ static int add_break(unsigned long ip, const char *old)
        unsigned char replaced[MCOUNT_INSN_SIZE];
        unsigned char brk = BREAKPOINT_INSTRUCTION;
  
@@ -24084,7 +24317,7 @@ index 52819e8..b6d1dbd 100644
  
        /* Make sure it is what we expect it to be */
 diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
-index 068054f..c248bcd 100644
+index eda1a86..8f6df48 100644
 --- a/arch/x86/kernel/head64.c
 +++ b/arch/x86/kernel/head64.c
 @@ -67,12 +67,12 @@ again:
@@ -24129,7 +24362,7 @@ index 068054f..c248bcd 100644
        pmd = (physaddr & PMD_MASK) + early_pmd_flags;
        pmd_p[pmd_index(address)] = pmd;
 @@ -175,7 +175,6 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
-       if (console_loglevel == 10)
+       if (console_loglevel >= CONSOLE_LOGLEVEL_DEBUG)
                early_printk("Kernel alive\n");
  
 -      clear_page(init_level4_pgt);
@@ -24137,7 +24370,7 @@ index 068054f..c248bcd 100644
        init_level4_pgt[511] = early_level4_pgt[511];
  
 diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
-index f36bd42..56ee1534 100644
+index f36bd42..0ab4474 100644
 --- a/arch/x86/kernel/head_32.S
 +++ b/arch/x86/kernel/head_32.S
 @@ -26,6 +26,12 @@
@@ -24549,7 +24782,7 @@ index f36bd42..56ee1534 100644
 +      .quad 0x00009b000000ffff        /* 0xc0 APM CS 16 code (16 bit) */
 +      .quad 0x004093000000ffff        /* 0xc8 APM DS    data */
 +
-+      .quad 0x00c0930000000000        /* 0xd0 - ESPFIX SS */
++      .quad 0x00c093000000ffff        /* 0xd0 - ESPFIX SS */
 +      .quad 0x0040930000000000        /* 0xd8 - PERCPU */
 +      .quad 0x0040910000000017        /* 0xe0 - STACK_CANARY */
 +      .quad 0x0000000000000000        /* 0xe8 - PCIBIOS_CS */
@@ -24560,7 +24793,7 @@ index f36bd42..56ee1534 100644
 +      .fill PAGE_SIZE_asm - GDT_SIZE,1,0
 +      .endr
 diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
-index a468c0a..c7dec74 100644
+index a468c0a..8b5a879 100644
 --- a/arch/x86/kernel/head_64.S
 +++ b/arch/x86/kernel/head_64.S
 @@ -20,6 +20,8 @@
@@ -24612,7 +24845,11 @@ index a468c0a..c7dec74 100644
  
        /*
         * Set up the identity mapping for the switchover.  These
-@@ -177,8 +198,8 @@ ENTRY(secondary_startup_64)
+@@ -174,11 +195,12 @@ ENTRY(secondary_startup_64)
+        * after the boot processor executes this code.
+        */
++      orq     $-1, %rbp
        movq    $(init_level4_pgt - __START_KERNEL_map), %rax
  1:
  
@@ -24623,7 +24860,7 @@ index a468c0a..c7dec74 100644
        movq    %rcx, %cr4
  
        /* Setup early boot stage 4 level pagetables. */
-@@ -199,10 +220,19 @@ ENTRY(secondary_startup_64)
+@@ -199,10 +221,19 @@ ENTRY(secondary_startup_64)
        movl    $MSR_EFER, %ecx
        rdmsr
        btsl    $_EFER_SCE, %eax        /* Enable System Call */
@@ -24631,10 +24868,10 @@ index a468c0a..c7dec74 100644
 +      btl     $(X86_FEATURE_NX & 31),%edi     /* No Execute supported? */
        jnc     1f
        btsl    $_EFER_NX, %eax
++      cmpq    $-1, %rbp
++      je      1f
        btsq    $_PAGE_BIT_NX,early_pmd_flags(%rip)
-+#ifndef CONFIG_EFI
 +      btsq    $_PAGE_BIT_NX, init_level4_pgt + 8*L4_PAGE_OFFSET(%rip)
-+#endif
 +      btsq    $_PAGE_BIT_NX, init_level4_pgt + 8*L4_VMALLOC_START(%rip)
 +      btsq    $_PAGE_BIT_NX, init_level4_pgt + 8*L4_VMALLOC_END(%rip)
 +      btsq    $_PAGE_BIT_NX, init_level4_pgt + 8*L4_VMEMMAP_START(%rip)
@@ -24644,7 +24881,7 @@ index a468c0a..c7dec74 100644
  1:    wrmsr                           /* Make changes effective */
  
        /* Setup cr0 */
-@@ -282,6 +312,7 @@ ENTRY(secondary_startup_64)
+@@ -282,6 +313,7 @@ ENTRY(secondary_startup_64)
         *      REX.W + FF /5 JMP m16:64 Jump far, absolute indirect,
         *              address given in m16:64.
         */
@@ -24652,7 +24889,7 @@ index a468c0a..c7dec74 100644
        movq    initial_code(%rip),%rax
        pushq   $0              # fake return address to stop unwinder
        pushq   $__KERNEL_CS    # set correct cs
-@@ -313,7 +344,7 @@ ENDPROC(start_cpu0)
+@@ -313,7 +345,7 @@ ENDPROC(start_cpu0)
        .quad   INIT_PER_CPU_VAR(irq_stack_union)
  
        GLOBAL(stack_start)
@@ -24661,7 +24898,7 @@ index a468c0a..c7dec74 100644
        .word  0
        __FINITDATA
  
-@@ -391,7 +422,7 @@ ENTRY(early_idt_handler)
+@@ -391,7 +423,7 @@ ENTRY(early_idt_handler)
        call dump_stack
  #ifdef CONFIG_KALLSYMS        
        leaq early_idt_ripmsg(%rip),%rdi
@@ -24670,7 +24907,7 @@ index a468c0a..c7dec74 100644
        call __print_symbol
  #endif
  #endif /* EARLY_PRINTK */
-@@ -420,6 +451,7 @@ ENDPROC(early_idt_handler)
+@@ -420,6 +452,7 @@ ENDPROC(early_idt_handler)
  early_recursion_flag:
        .long 0
  
@@ -24678,7 +24915,7 @@ index a468c0a..c7dec74 100644
  #ifdef CONFIG_EARLY_PRINTK
  early_idt_msg:
        .asciz "PANIC: early exception %02lx rip %lx:%lx error %lx cr2 %lx\n"
-@@ -447,29 +479,52 @@ NEXT_PAGE(early_level4_pgt)
+@@ -447,29 +480,52 @@ NEXT_PAGE(early_level4_pgt)
  NEXT_PAGE(early_dynamic_pgts)
        .fill   512*EARLY_DYNAMIC_PAGE_TABLES,8,0
  
@@ -24740,7 +24977,7 @@ index a468c0a..c7dec74 100644
  
  NEXT_PAGE(level3_kernel_pgt)
        .fill   L3_START_KERNEL,8,0
-@@ -477,6 +532,9 @@ NEXT_PAGE(level3_kernel_pgt)
+@@ -477,6 +533,9 @@ NEXT_PAGE(level3_kernel_pgt)
        .quad   level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE
        .quad   level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE
  
@@ -24750,7 +24987,7 @@ index a468c0a..c7dec74 100644
  NEXT_PAGE(level2_kernel_pgt)
        /*
         * 512 MB kernel mapping. We spend a full page on this pagetable
-@@ -494,28 +552,64 @@ NEXT_PAGE(level2_kernel_pgt)
+@@ -494,28 +553,64 @@ NEXT_PAGE(level2_kernel_pgt)
  NEXT_PAGE(level2_fixmap_pgt)
        .fill   506,8,0
        .quad   level1_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE
@@ -24851,7 +25088,7 @@ index 05fd74f..c3548b1 100644
 +EXPORT_SYMBOL(cpu_pgd);
 +#endif
 diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
-index d5dd808..b6432cf 100644
+index a9a4229..6f4d476 100644
 --- a/arch/x86/kernel/i387.c
 +++ b/arch/x86/kernel/i387.c
 @@ -51,7 +51,7 @@ static inline bool interrupted_kernel_fpu_idle(void)
@@ -24864,7 +25101,7 @@ index d5dd808..b6432cf 100644
  
  /*
 diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
-index 2e977b5..5f2c273 100644
+index e7cc537..67d7372 100644
 --- a/arch/x86/kernel/i8259.c
 +++ b/arch/x86/kernel/i8259.c
 @@ -110,7 +110,7 @@ static int i8259A_irq_pending(unsigned int irq)
@@ -24873,10 +25110,10 @@ index 2e977b5..5f2c273 100644
        disable_irq_nosync(irq);
 -      io_apic_irqs &= ~(1<<irq);
 +      io_apic_irqs &= ~(1UL<<irq);
-       irq_set_chip_and_handler_name(irq, &i8259A_chip, handle_level_irq,
-                                     i8259A_chip.name);
+       irq_set_chip_and_handler(irq, &i8259A_chip, handle_level_irq);
        enable_irq(irq);
-@@ -209,7 +209,7 @@ spurious_8259A_irq:
+ }
+@@ -208,7 +208,7 @@ spurious_8259A_irq:
                               "spurious 8259A interrupt: IRQ%d.\n", irq);
                        spurious_irq_mask |= irqmask;
                }
@@ -24885,7 +25122,7 @@ index 2e977b5..5f2c273 100644
                /*
                 * Theoretically we do not have to handle this IRQ,
                 * but in Linux this does not cause problems and is
-@@ -332,14 +332,16 @@ static void init_8259A(int auto_eoi)
+@@ -349,14 +349,16 @@ static void init_8259A(int auto_eoi)
        /* (slave's support for AEOI in flat mode is to be investigated) */
        outb_pic(SLAVE_ICW4_DEFAULT, PIC_SLAVE_IMR);
  
@@ -24965,7 +25202,7 @@ index 4ddaf66..49d5c18 100644
        regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12);
        t->iopl = level << 12;
 diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
-index 11ccfb0..ec1e46f 100644
+index 922d285..6d20692 100644
 --- a/arch/x86/kernel/irq.c
 +++ b/arch/x86/kernel/irq.c
 @@ -22,7 +22,7 @@
@@ -25135,7 +25372,7 @@ index 63ce838..2ea3e06 100644
                        print_stack_overflow();
                desc->handle_irq(irq, desc);
 diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
-index 4d1c746..55a22d6 100644
+index e4b503d..824fce8 100644
 --- a/arch/x86/kernel/irq_64.c
 +++ b/arch/x86/kernel/irq_64.c
 @@ -26,6 +26,8 @@ EXPORT_PER_CPU_SYMBOL(irq_stat);
@@ -25297,10 +25534,10 @@ index 7ec1d5f..5a7d130 100644
  }
  
 diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
-index 61b17dc..784bfe9 100644
+index 67e6d19..731ed28 100644
 --- a/arch/x86/kernel/kprobes/core.c
 +++ b/arch/x86/kernel/kprobes/core.c
-@@ -119,9 +119,12 @@ static void __kprobes __synthesize_relative_insn(void *from, void *to, u8 op)
+@@ -120,9 +120,12 @@ __synthesize_relative_insn(void *from, void *to, u8 op)
                s32 raddr;
        } __packed *insn;
  
@@ -25314,7 +25551,7 @@ index 61b17dc..784bfe9 100644
  }
  
  /* Insert a jump instruction at address 'from', which jumps to address 'to'.*/
-@@ -164,7 +167,7 @@ int __kprobes can_boost(kprobe_opcode_t *opcodes)
+@@ -168,7 +171,7 @@ int can_boost(kprobe_opcode_t *opcodes)
        kprobe_opcode_t opcode;
        kprobe_opcode_t *orig_opcodes = opcodes;
  
@@ -25323,7 +25560,7 @@ index 61b17dc..784bfe9 100644
                return 0;       /* Page fault may occur on this address. */
  
  retry:
-@@ -238,9 +241,9 @@ __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr)
+@@ -242,9 +245,9 @@ __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr)
         *  for the first byte, we can recover the original instruction
         *  from it and kp->opcode.
         */
@@ -25335,7 +25572,7 @@ index 61b17dc..784bfe9 100644
  }
  
  /*
-@@ -332,7 +335,9 @@ int __kprobes __copy_instruction(u8 *dest, u8 *src)
+@@ -336,7 +339,9 @@ int __copy_instruction(u8 *dest, u8 *src)
        /* Another subsystem puts a breakpoint, failed to recover */
        if (insn.opcode.bytes[0] == BREAKPOINT_INSTRUCTION)
                return 0;
@@ -25345,7 +25582,7 @@ index 61b17dc..784bfe9 100644
  
  #ifdef CONFIG_X86_64
        if (insn_rip_relative(&insn)) {
-@@ -359,7 +364,9 @@ int __kprobes __copy_instruction(u8 *dest, u8 *src)
+@@ -363,7 +368,9 @@ int __copy_instruction(u8 *dest, u8 *src)
                        return 0;
                }
                disp = (u8 *) dest + insn_offset_displacement(&insn);
@@ -25355,7 +25592,7 @@ index 61b17dc..784bfe9 100644
        }
  #endif
        return insn.length;
-@@ -498,7 +505,7 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k
+@@ -505,7 +512,7 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs,
                 * nor set current_kprobe, because it doesn't use single
                 * stepping.
                 */
@@ -25364,7 +25601,7 @@ index 61b17dc..784bfe9 100644
                preempt_enable_no_resched();
                return;
        }
-@@ -515,9 +522,9 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k
+@@ -522,9 +529,9 @@ static void setup_singlestep(struct kprobe *p, struct pt_regs *regs,
        regs->flags &= ~X86_EFLAGS_IF;
        /* single step inline if the instruction is an int3 */
        if (p->opcode == BREAKPOINT_INSTRUCTION)
@@ -25374,9 +25611,18 @@ index 61b17dc..784bfe9 100644
 -              regs->ip = (unsigned long)p->ainsn.insn;
 +              regs->ip = ktva_ktla((unsigned long)p->ainsn.insn);
  }
+ NOKPROBE_SYMBOL(setup_singlestep);
  
- /*
-@@ -596,7 +603,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
+@@ -574,7 +581,7 @@ int kprobe_int3_handler(struct pt_regs *regs)
+       struct kprobe *p;
+       struct kprobe_ctlblk *kcb;
+-      if (user_mode_vm(regs))
++      if (user_mode(regs))
+               return 0;
+       addr = (kprobe_opcode_t *)(regs->ip - sizeof(kprobe_opcode_t));
+@@ -609,7 +616,7 @@ int kprobe_int3_handler(struct pt_regs *regs)
                                setup_singlestep(p, regs, kcb, 0);
                        return 1;
                }
@@ -25385,7 +25631,7 @@ index 61b17dc..784bfe9 100644
                /*
                 * The breakpoint instruction was removed right
                 * after we hit it.  Another cpu has removed
-@@ -642,6 +649,9 @@ static void __used __kprobes kretprobe_trampoline_holder(void)
+@@ -656,6 +663,9 @@ static void __used kretprobe_trampoline_holder(void)
                        "       movq %rax, 152(%rsp)\n"
                        RESTORE_REGS_STRING
                        "       popfq\n"
@@ -25395,8 +25641,8 @@ index 61b17dc..784bfe9 100644
  #else
                        "       pushf\n"
                        SAVE_REGS_STRING
-@@ -779,7 +789,7 @@ static void __kprobes
resume_execution(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb)
+@@ -796,7 +806,7 @@ static void resume_execution(struct kprobe *p, struct pt_regs *regs,
                           struct kprobe_ctlblk *kcb)
  {
        unsigned long *tos = stack_addr(regs);
 -      unsigned long copy_ip = (unsigned long)p->ainsn.insn;
@@ -25404,7 +25650,7 @@ index 61b17dc..784bfe9 100644
        unsigned long orig_ip = (unsigned long)p->addr;
        kprobe_opcode_t *insn = p->ainsn.insn;
  
-@@ -959,7 +969,7 @@ kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, void *d
+@@ -979,7 +989,7 @@ int kprobe_exceptions_notify(struct notifier_block *self, unsigned long val,
        struct die_args *args = data;
        int ret = NOTIFY_DONE;
  
@@ -25412,20 +25658,20 @@ index 61b17dc..784bfe9 100644
 +      if (args->regs && user_mode(args->regs))
                return ret;
  
-       switch (val) {
+       if (val == DIE_GPF) {
 diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
-index 898160b..758cde8 100644
+index f1314d0..15f3154 100644
 --- a/arch/x86/kernel/kprobes/opt.c
 +++ b/arch/x86/kernel/kprobes/opt.c
 @@ -79,6 +79,7 @@ found:
  /* Insert a move instruction which sets a pointer to eax/rdi (1st arg). */
- static void __kprobes synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val)
+ static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val)
  {
 +      pax_open_kernel();
  #ifdef CONFIG_X86_64
        *addr++ = 0x48;
        *addr++ = 0xbf;
-@@ -86,6 +87,7 @@ static void __kprobes synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long v
+@@ -86,6 +87,7 @@ static void synthesize_set_arg1(kprobe_opcode_t *addr, unsigned long val)
        *addr++ = 0xb8;
  #endif
        *(unsigned long *)addr = val;
@@ -25433,16 +25679,16 @@ index 898160b..758cde8 100644
  }
  
  asm (
-@@ -335,7 +337,7 @@ int __kprobes arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
+@@ -337,7 +339,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
         * Verify if the address gap is in 2GB range, because this uses
         * a relative jump.
         */
 -      rel = (long)op->optinsn.insn - (long)op->kp.addr + RELATIVEJUMP_SIZE;
 +      rel = (long)op->optinsn.insn - ktla_ktva((long)op->kp.addr) + RELATIVEJUMP_SIZE;
-       if (abs(rel) > 0x7fffffff)
+       if (abs(rel) > 0x7fffffff) {
+               __arch_remove_optimized_kprobe(op, 0);
                return -ERANGE;
-@@ -350,16 +352,18 @@ int __kprobes arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
+@@ -354,16 +356,18 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op)
        op->optinsn.size = ret;
  
        /* Copy arch-dep-instance from template */
@@ -25464,7 +25710,7 @@ index 898160b..758cde8 100644
                           (u8 *)op->kp.addr + op->optinsn.size);
  
        flush_icache_range((unsigned long) buf,
-@@ -384,7 +388,7 @@ void __kprobes arch_optimize_kprobes(struct list_head *oplist)
+@@ -388,7 +392,7 @@ void arch_optimize_kprobes(struct list_head *oplist)
                WARN_ON(kprobe_disabled(&op->kp));
  
                /* Backup instructions which will be replaced by jump address */
@@ -25473,7 +25719,7 @@ index 898160b..758cde8 100644
                       RELATIVE_ADDR_SIZE);
  
                insn_buf[0] = RELATIVEJUMP_OPCODE;
-@@ -433,7 +437,7 @@ setup_detour_execution(struct kprobe *p, struct pt_regs *regs, int reenter)
+@@ -436,7 +440,7 @@ int setup_detour_execution(struct kprobe *p, struct pt_regs *regs, int reenter)
                /* This kprobe is really able to run optimized path. */
                op = container_of(p, struct optimized_kprobe, kp);
                /* Detour through copied instructions */
@@ -25496,10 +25742,10 @@ index c2bedae..25e7ab60 100644
                .name = "data",
                .mode = S_IRUGO,
 diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
-index dcbbaa1..81ae763 100644
+index c37886d..d851d32 100644
 --- a/arch/x86/kernel/ldt.c
 +++ b/arch/x86/kernel/ldt.c
-@@ -68,13 +68,13 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload)
+@@ -66,13 +66,13 @@ static int alloc_ldt(mm_context_t *pc, int mincount, int reload)
        if (reload) {
  #ifdef CONFIG_SMP
                preempt_disable();
@@ -25515,7 +25761,7 @@ index dcbbaa1..81ae763 100644
  #endif
        }
        if (oldsize) {
-@@ -96,7 +96,7 @@ static inline int copy_ldt(mm_context_t *new, mm_context_t *old)
+@@ -94,7 +94,7 @@ static inline int copy_ldt(mm_context_t *new, mm_context_t *old)
                return err;
  
        for (i = 0; i < old->size; i++)
@@ -25524,7 +25770,7 @@ index dcbbaa1..81ae763 100644
        return 0;
  }
  
-@@ -117,6 +117,24 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
+@@ -115,6 +115,24 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm)
                retval = copy_ldt(&mm->context, &old_mm->context);
                mutex_unlock(&old_mm->context.lock);
        }
@@ -25549,7 +25795,7 @@ index dcbbaa1..81ae763 100644
        return retval;
  }
  
-@@ -231,6 +249,13 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
+@@ -229,6 +247,13 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
                }
        }
  
@@ -25560,11 +25806,11 @@ index dcbbaa1..81ae763 100644
 +      }
 +#endif
 +
-       /*
-        * On x86-64 we do not support 16-bit segments due to
-        * IRET leaking the high bits of the kernel stack address.
+       if (!IS_ENABLED(CONFIG_X86_16BIT) && !ldt_info.seg_32bit) {
+               error = -EINVAL;
+               goto out_unlock;
 diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
-index 1667b1d..16492c5 100644
+index 72e8e31..f2f1605 100644
 --- a/arch/x86/kernel/machine_kexec_32.c
 +++ b/arch/x86/kernel/machine_kexec_32.c
 @@ -25,7 +25,7 @@
@@ -25594,6 +25840,92 @@ index 1667b1d..16492c5 100644
  
        relocate_kernel_ptr = control_page;
        page_list[PA_CONTROL_PAGE] = __pa(control_page);
+diff --git a/arch/x86/kernel/mcount_64.S b/arch/x86/kernel/mcount_64.S
+index c73aecf..4c63630 100644
+--- a/arch/x86/kernel/mcount_64.S
++++ b/arch/x86/kernel/mcount_64.S
+@@ -7,7 +7,7 @@
+ #include <linux/linkage.h>
+ #include <asm/ptrace.h>
+ #include <asm/ftrace.h>
+-
++#include <asm/alternative-asm.h>
+       .code64
+       .section .entry.text, "ax"
+@@ -24,8 +24,9 @@
+ #ifdef CONFIG_DYNAMIC_FTRACE
+ ENTRY(function_hook)
++      pax_force_retaddr
+       retq
+-END(function_hook)
++ENDPROC(function_hook)
+ /* skip is set if stack has been adjusted */
+ .macro ftrace_caller_setup skip=0
+@@ -62,8 +63,9 @@ GLOBAL(ftrace_graph_call)
+ #endif
+ GLOBAL(ftrace_stub)
++      pax_force_retaddr
+       retq
+-END(ftrace_caller)
++ENDPROC(ftrace_caller)
+ ENTRY(ftrace_regs_caller)
+       /* Save the current flags before compare (in SS location)*/
+@@ -127,7 +129,7 @@ GLOBAL(ftrace_regs_call)
+       popfq
+       jmp  ftrace_stub
+-END(ftrace_regs_caller)
++ENDPROC(ftrace_regs_caller)
+ #else /* ! CONFIG_DYNAMIC_FTRACE */
+@@ -145,6 +147,7 @@ ENTRY(function_hook)
+ #endif
+ GLOBAL(ftrace_stub)
++      pax_force_retaddr
+       retq
+ trace:
+@@ -158,12 +161,13 @@ trace:
+ #endif
+       subq $MCOUNT_INSN_SIZE, %rdi
++      pax_force_fptr ftrace_trace_function
+       call   *ftrace_trace_function
+       MCOUNT_RESTORE_FRAME
+       jmp ftrace_stub
+-END(function_hook)
++ENDPROC(function_hook)
+ #endif /* CONFIG_DYNAMIC_FTRACE */
+ #endif /* CONFIG_FUNCTION_TRACER */
+@@ -185,8 +189,9 @@ ENTRY(ftrace_graph_caller)
+       MCOUNT_RESTORE_FRAME
++      pax_force_retaddr
+       retq
+-END(ftrace_graph_caller)
++ENDPROC(ftrace_graph_caller)
+ GLOBAL(return_to_handler)
+       subq  $24, %rsp
+@@ -202,5 +207,7 @@ GLOBAL(return_to_handler)
+       movq 8(%rsp), %rdx
+       movq (%rsp), %rax
+       addq $24, %rsp
++      pax_force_fptr %rdi
+       jmp *%rdi
++ENDPROC(return_to_handler)
+ #endif
 diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
 index e69f988..da078ea 100644
 --- a/arch/x86/kernel/module.c
@@ -25779,7 +26111,7 @@ index c9603ac..9f88728 100644
  };
  
 diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
-index b4872b9..5bf0684 100644
+index c3e985d..110a36a 100644
 --- a/arch/x86/kernel/nmi.c
 +++ b/arch/x86/kernel/nmi.c
 @@ -98,16 +98,16 @@ fs_initcall(nmi_warning_debugfs);
@@ -25801,8 +26133,8 @@ index b4872b9..5bf0684 100644
 +              n->action->handler, whole_msecs, decimal_msecs);
  }
  
- static int __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
-@@ -134,11 +134,11 @@ static int __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2
+ static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
+@@ -134,11 +134,11 @@ static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
                delta = sched_clock() - delta;
                trace_nmi_handler(a->handler, (int)delta, thishandled);
  
@@ -25817,16 +26149,16 @@ index b4872b9..5bf0684 100644
        }
  
        rcu_read_unlock();
-@@ -147,7 +147,7 @@ static int __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2
-       return handled;
+@@ -148,7 +148,7 @@ static int nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
  }
+ NOKPROBE_SYMBOL(nmi_handle);
  
 -int __register_nmi_handler(unsigned int type, struct nmiaction *action)
 +int __register_nmi_handler(unsigned int type, const struct nmiaction *action)
  {
        struct nmi_desc *desc = nmi_to_desc(type);
        unsigned long flags;
-@@ -155,7 +155,8 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
+@@ -156,7 +156,8 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
        if (!action->handler)
                return -EINVAL;
  
@@ -25836,7 +26168,7 @@ index b4872b9..5bf0684 100644
  
        spin_lock_irqsave(&desc->lock, flags);
  
-@@ -173,9 +174,9 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
+@@ -174,9 +175,9 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)
         * event confuses some handlers (kdump uses this flag)
         */
        if (action->flags & NMI_FLAG_FIRST)
@@ -25848,7 +26180,7 @@ index b4872b9..5bf0684 100644
        
        spin_unlock_irqrestore(&desc->lock, flags);
        return 0;
-@@ -198,7 +199,7 @@ void unregister_nmi_handler(unsigned int type, const char *name)
+@@ -199,7 +200,7 @@ void unregister_nmi_handler(unsigned int type, const char *name)
                if (!strcmp(n->name, name)) {
                        WARN(in_nmi(),
                                "Trying to free NMI (%s) from NMI context!\n", n->name);
@@ -25857,8 +26189,8 @@ index b4872b9..5bf0684 100644
                        break;
                }
        }
-@@ -523,6 +524,17 @@ static inline void nmi_nesting_postprocess(void)
- dotraplinkage notrace __kprobes void
+@@ -528,6 +529,17 @@ static inline void nmi_nesting_postprocess(void)
+ dotraplinkage notrace void
  do_nmi(struct pt_regs *regs, long error_code)
  {
 +
@@ -25911,10 +26243,10 @@ index bbb6c73..24a58ef 100644
        .lock_spinning = __PV_IS_CALLEE_SAVE(paravirt_nop),
        .unlock_kick = paravirt_nop,
 diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
-index 1b10af8..45bfbec 100644
+index 548d25f..f8fb99c 100644
 --- a/arch/x86/kernel/paravirt.c
 +++ b/arch/x86/kernel/paravirt.c
-@@ -55,6 +55,9 @@ u64 _paravirt_ident_64(u64 x)
+@@ -56,6 +56,9 @@ u64 _paravirt_ident_64(u64 x)
  {
        return x;
  }
@@ -25924,7 +26256,7 @@ index 1b10af8..45bfbec 100644
  
  void __init default_banner(void)
  {
-@@ -141,16 +144,20 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
+@@ -142,16 +145,20 @@ unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
  
        if (opfunc == NULL)
                /* If there's no function, patch it with a ud2a (BUG) */
@@ -25949,7 +26281,7 @@ index 1b10af8..45bfbec 100644
  
        else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) ||
                 type == PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit) ||
-@@ -175,7 +182,7 @@ unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
+@@ -176,7 +183,7 @@ unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
        if (insn_len > len || start == NULL)
                insn_len = len;
        else
@@ -25958,7 +26290,7 @@ index 1b10af8..45bfbec 100644
  
        return insn_len;
  }
-@@ -299,7 +306,7 @@ enum paravirt_lazy_mode paravirt_get_lazy_mode(void)
+@@ -300,7 +307,7 @@ enum paravirt_lazy_mode paravirt_get_lazy_mode(void)
        return this_cpu_read(paravirt_lazy_mode);
  }
  
@@ -25967,7 +26299,7 @@ index 1b10af8..45bfbec 100644
        .name = "bare hardware",
        .paravirt_enabled = 0,
        .kernel_rpl = 0,
-@@ -310,16 +317,16 @@ struct pv_info pv_info = {
+@@ -311,16 +318,16 @@ struct pv_info pv_info = {
  #endif
  };
  
@@ -25987,7 +26319,7 @@ index 1b10af8..45bfbec 100644
        .save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
        .restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
        .irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
-@@ -331,7 +338,7 @@ __visible struct pv_irq_ops pv_irq_ops = {
+@@ -332,7 +339,7 @@ __visible struct pv_irq_ops pv_irq_ops = {
  #endif
  };
  
@@ -25996,9 +26328,9 @@ index 1b10af8..45bfbec 100644
        .cpuid = native_cpuid,
        .get_debugreg = native_get_debugreg,
        .set_debugreg = native_set_debugreg,
-@@ -389,21 +396,26 @@ __visible struct pv_cpu_ops pv_cpu_ops = {
-       .end_context_switch = paravirt_nop,
};
+@@ -395,21 +402,26 @@ NOKPROBE_SYMBOL(native_get_debugreg);
+ NOKPROBE_SYMBOL(native_set_debugreg);
NOKPROBE_SYMBOL(native_load_idt);
  
 -struct pv_apic_ops pv_apic_ops = {
 +struct pv_apic_ops pv_apic_ops __read_only= {
@@ -26026,7 +26358,7 @@ index 1b10af8..45bfbec 100644
  
        .read_cr2 = native_read_cr2,
        .write_cr2 = native_write_cr2,
-@@ -453,6 +465,7 @@ struct pv_mmu_ops pv_mmu_ops = {
+@@ -459,6 +471,7 @@ struct pv_mmu_ops pv_mmu_ops = {
        .make_pud = PTE_IDENT,
  
        .set_pgd = native_set_pgd,
@@ -26034,7 +26366,7 @@ index 1b10af8..45bfbec 100644
  #endif
  #endif /* PAGETABLE_LEVELS >= 3 */
  
-@@ -473,6 +486,12 @@ struct pv_mmu_ops pv_mmu_ops = {
+@@ -479,6 +492,12 @@ struct pv_mmu_ops pv_mmu_ops = {
        },
  
        .set_fixmap = native_set_fixmap,
@@ -26047,6 +26379,34 @@ index 1b10af8..45bfbec 100644
  };
  
  EXPORT_SYMBOL_GPL(pv_time_ops);
+diff --git a/arch/x86/kernel/paravirt_patch_64.c b/arch/x86/kernel/paravirt_patch_64.c
+index a1da673..b6f5831 100644
+--- a/arch/x86/kernel/paravirt_patch_64.c
++++ b/arch/x86/kernel/paravirt_patch_64.c
+@@ -9,7 +9,11 @@ DEF_NATIVE(pv_irq_ops, save_fl, "pushfq; popq %rax");
+ DEF_NATIVE(pv_mmu_ops, read_cr2, "movq %cr2, %rax");
+ DEF_NATIVE(pv_mmu_ops, read_cr3, "movq %cr3, %rax");
+ DEF_NATIVE(pv_mmu_ops, write_cr3, "movq %rdi, %cr3");
++
++#ifndef CONFIG_PAX_MEMORY_UDEREF
+ DEF_NATIVE(pv_mmu_ops, flush_tlb_single, "invlpg (%rdi)");
++#endif
++
+ DEF_NATIVE(pv_cpu_ops, clts, "clts");
+ DEF_NATIVE(pv_cpu_ops, wbinvd, "wbinvd");
+@@ -57,7 +61,11 @@ unsigned native_patch(u8 type, u16 clobbers, void *ibuf,
+               PATCH_SITE(pv_mmu_ops, read_cr3);
+               PATCH_SITE(pv_mmu_ops, write_cr3);
+               PATCH_SITE(pv_cpu_ops, clts);
++
++#ifndef CONFIG_PAX_MEMORY_UDEREF
+               PATCH_SITE(pv_mmu_ops, flush_tlb_single);
++#endif
++
+               PATCH_SITE(pv_cpu_ops, wbinvd);
+       patch_site:
 diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c
 index 0497f71..7186c0d 100644
 --- a/arch/x86/kernel/pci-calgary_64.c
@@ -26074,47 +26434,20 @@ index 35ccf75..7a15747 100644
  #define DEBUG 1
  
 diff --git a/arch/x86/kernel/pci-swiotlb.c b/arch/x86/kernel/pci-swiotlb.c
-index 6c483ba..d10ce2f 100644
+index 77dd0ad..9ec4723 100644
 --- a/arch/x86/kernel/pci-swiotlb.c
 +++ b/arch/x86/kernel/pci-swiotlb.c
-@@ -32,7 +32,7 @@ static void x86_swiotlb_free_coherent(struct device *dev, size_t size,
-                                     void *vaddr, dma_addr_t dma_addr,
+@@ -33,7 +33,7 @@ void x86_swiotlb_free_coherent(struct device *dev, size_t size,
                                      struct dma_attrs *attrs)
  {
--      swiotlb_free_coherent(dev, size, vaddr, dma_addr);
-+      swiotlb_free_coherent(dev, size, vaddr, dma_addr, attrs);
+       if (is_swiotlb_buffer(dma_to_phys(dev, dma_addr)))
+-              swiotlb_free_coherent(dev, size, vaddr, dma_addr);
++              swiotlb_free_coherent(dev, size, vaddr, dma_addr, attrs);
+       else
+               dma_generic_free_coherent(dev, size, vaddr, dma_addr, attrs);
  }
- static struct dma_map_ops swiotlb_dma_ops = {
-diff --git a/arch/x86/kernel/preempt.S b/arch/x86/kernel/preempt.S
-index ca7f0d5..8996469 100644
---- a/arch/x86/kernel/preempt.S
-+++ b/arch/x86/kernel/preempt.S
-@@ -3,12 +3,14 @@
- #include <asm/dwarf2.h>
- #include <asm/asm.h>
- #include <asm/calling.h>
-+#include <asm/alternative-asm.h>
- ENTRY(___preempt_schedule)
-       CFI_STARTPROC
-       SAVE_ALL
-       call preempt_schedule
-       RESTORE_ALL
-+      pax_force_retaddr
-       ret
-       CFI_ENDPROC
-@@ -19,6 +21,7 @@ ENTRY(___preempt_schedule_context)
-       SAVE_ALL
-       call preempt_schedule_context
-       RESTORE_ALL
-+      pax_force_retaddr
-       ret
-       CFI_ENDPROC
 diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
-index 4505e2a..ae28b0d 100644
+index e127dda..94e384d 100644
 --- a/arch/x86/kernel/process.c
 +++ b/arch/x86/kernel/process.c
 @@ -36,7 +36,8 @@
@@ -26127,16 +26460,16 @@ index 4505e2a..ae28b0d 100644
  
  #ifdef CONFIG_X86_64
  static DEFINE_PER_CPU(unsigned char, is_idle);
-@@ -92,7 +93,7 @@ void arch_task_cache_init(void)
+@@ -94,7 +95,7 @@ void arch_task_cache_init(void)
          task_xstate_cachep =
                kmem_cache_create("task_xstate", xstate_size,
                                  __alignof__(union thread_xstate),
 -                                SLAB_PANIC | SLAB_NOTRACK, NULL);
 +                                SLAB_PANIC | SLAB_NOTRACK | SLAB_USERCOPY, NULL);
+       setup_xstate_comp();
  }
  
- /*
-@@ -105,7 +106,7 @@ void exit_thread(void)
+@@ -108,7 +109,7 @@ void exit_thread(void)
        unsigned long *bp = t->io_bitmap_ptr;
  
        if (bp) {
@@ -26145,7 +26478,7 @@ index 4505e2a..ae28b0d 100644
  
                t->io_bitmap_ptr = NULL;
                clear_thread_flag(TIF_IO_BITMAP);
-@@ -125,6 +126,9 @@ void flush_thread(void)
+@@ -128,6 +129,9 @@ void flush_thread(void)
  {
        struct task_struct *tsk = current;
  
@@ -26155,7 +26488,7 @@ index 4505e2a..ae28b0d 100644
        flush_ptrace_hw_breakpoint(tsk);
        memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
        drop_init_fpu(tsk);
-@@ -271,7 +275,7 @@ static void __exit_idle(void)
+@@ -274,7 +278,7 @@ static void __exit_idle(void)
  void exit_idle(void)
  {
        /* idle loop has pid 0 */
@@ -26164,7 +26497,7 @@ index 4505e2a..ae28b0d 100644
                return;
        __exit_idle();
  }
-@@ -324,7 +328,7 @@ bool xen_set_default_idle(void)
+@@ -327,7 +331,7 @@ bool xen_set_default_idle(void)
        return ret;
  }
  #endif
@@ -26173,7 +26506,7 @@ index 4505e2a..ae28b0d 100644
  {
        local_irq_disable();
        /*
-@@ -453,16 +457,37 @@ static int __init idle_setup(char *str)
+@@ -456,16 +460,37 @@ static int __init idle_setup(char *str)
  }
  early_param("idle", idle_setup);
  
@@ -26222,7 +26555,7 @@ index 4505e2a..ae28b0d 100644
 +}
 +#endif
 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 7bc86bb..0ea06e8 100644
+index 8f3ebfe..e6ced5a 100644
 --- a/arch/x86/kernel/process_32.c
 +++ b/arch/x86/kernel/process_32.c
 @@ -64,6 +64,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread");
@@ -26256,7 +26589,7 @@ index 7bc86bb..0ea06e8 100644
        print_symbol("EIP is at %s\n", regs->ip);
  
        printk(KERN_DEFAULT "EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n",
-@@ -132,20 +132,21 @@ void release_thread(struct task_struct *dead_task)
+@@ -132,21 +132,22 @@ void release_thread(struct task_struct *dead_task)
  int copy_thread(unsigned long clone_flags, unsigned long sp,
        unsigned long arg, struct task_struct *p)
  {
@@ -26268,6 +26601,7 @@ index 7bc86bb..0ea06e8 100644
        p->thread.sp = (unsigned long) childregs;
        p->thread.sp0 = (unsigned long) (childregs+1);
 +      p->tinfo.lowest_stack = (unsigned long)task_stack_page(p);
+       memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps));
  
        if (unlikely(p->flags & PF_KTHREAD)) {
                /* kernel thread */
@@ -26282,7 +26616,7 @@ index 7bc86bb..0ea06e8 100644
                childregs->fs = __KERNEL_PERCPU;
                childregs->bx = sp;     /* function */
                childregs->bp = arg;
-@@ -252,7 +253,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -248,7 +249,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
        struct thread_struct *prev = &prev_p->thread,
                                 *next = &next_p->thread;
        int cpu = smp_processor_id();
@@ -26291,7 +26625,7 @@ index 7bc86bb..0ea06e8 100644
        fpu_switch_t fpu;
  
        /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
-@@ -276,6 +277,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -272,6 +273,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
         */
        lazy_save_gs(prev->gs);
  
@@ -26302,7 +26636,7 @@ index 7bc86bb..0ea06e8 100644
        /*
         * Load the per-thread Thread-Local Storage descriptor.
         */
-@@ -314,9 +319,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -310,9 +315,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
         */
        arch_end_context_switch(next_p);
  
@@ -26315,7 +26649,7 @@ index 7bc86bb..0ea06e8 100644
  
        /*
         * Restore %gs if needed (which is common)
-@@ -326,8 +331,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -322,8 +327,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
  
        switch_fpu_finish(next_p, fpu);
  
@@ -26324,13 +26658,13 @@ index 7bc86bb..0ea06e8 100644
        return prev_p;
  }
  
-@@ -357,4 +360,3 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -353,4 +356,3 @@ unsigned long get_wchan(struct task_struct *p)
        } while (count++ < 16);
        return 0;
  }
 -
 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
-index 898d077..4c458ff 100644
+index 5a2c029..a7f67d3 100644
 --- a/arch/x86/kernel/process_64.c
 +++ b/arch/x86/kernel/process_64.c
 @@ -158,10 +158,11 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
@@ -26344,9 +26678,9 @@ index 898d077..4c458ff 100644
        p->thread.usersp = me->thread.usersp;
 +      p->tinfo.lowest_stack = (unsigned long)task_stack_page(p);
        set_tsk_thread_flag(p, TIF_FORK);
-       p->thread.fpu_counter = 0;
        p->thread.io_bitmap_ptr = NULL;
-@@ -172,6 +173,8 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
+@@ -171,6 +172,8 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
        p->thread.fs = p->thread.fsindex ? 0 : me->thread.fs;
        savesegment(es, p->thread.es);
        savesegment(ds, p->thread.ds);
@@ -26355,7 +26689,7 @@ index 898d077..4c458ff 100644
        memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps));
  
        if (unlikely(p->flags & PF_KTHREAD)) {
-@@ -280,7 +283,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -277,7 +280,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
        struct thread_struct *prev = &prev_p->thread;
        struct thread_struct *next = &next_p->thread;
        int cpu = smp_processor_id();
@@ -26364,17 +26698,18 @@ index 898d077..4c458ff 100644
        unsigned fsindex, gsindex;
        fpu_switch_t fpu;
  
-@@ -303,6 +306,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -331,6 +334,10 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
        if (unlikely(next->ds | prev->ds))
                loadsegment(ds, next->ds);
  
 +      savesegment(ss, prev->ss);
 +      if (unlikely(next->ss != prev->ss))
 +              loadsegment(ss, next->ss);
-       /* We must save %fs and %gs before load_TLS() because
-        * %fs and %gs may be cleared by load_TLS().
-@@ -362,6 +368,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
++
+       /*
+        * Switch FS and GS.
+        *
+@@ -404,6 +411,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
        prev->usersp = this_cpu_read(old_rsp);
        this_cpu_write(old_rsp, next->usersp);
        this_cpu_write(current_task, next_p);
@@ -26382,7 +26717,7 @@ index 898d077..4c458ff 100644
  
        /*
         * If it were not for PREEMPT_ACTIVE we could guarantee that the
-@@ -371,9 +378,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+@@ -413,9 +421,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
        task_thread_info(prev_p)->saved_preempt_count = this_cpu_read(__preempt_count);
        this_cpu_write(__preempt_count, task_thread_info(next_p)->saved_preempt_count);
  
@@ -26393,7 +26728,7 @@ index 898d077..4c458ff 100644
  
        /*
         * Now maybe reload the debug registers and handle I/O bitmaps
-@@ -442,12 +447,11 @@ unsigned long get_wchan(struct task_struct *p)
+@@ -485,12 +491,11 @@ unsigned long get_wchan(struct task_struct *p)
        if (!p || p == current || p->state == TASK_RUNNING)
                return 0;
        stack = (unsigned long)task_stack_page(p);
@@ -26409,7 +26744,7 @@ index 898d077..4c458ff 100644
                ip = *(u64 *)(fp+8);
                if (!in_sched_functions(ip))
 diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
-index 678c0ad..2fc2a7b 100644
+index e510618..5165ac0 100644
 --- a/arch/x86/kernel/ptrace.c
 +++ b/arch/x86/kernel/ptrace.c
 @@ -186,10 +186,10 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs)
@@ -26517,20 +26852,20 @@ index 678c0ad..2fc2a7b 100644
  }
  
  void user_single_step_siginfo(struct task_struct *tsk,
-@@ -1450,6 +1464,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs,
- # define IS_IA32      0
- #endif
+@@ -1455,6 +1469,10 @@ static void do_audit_syscall_entry(struct pt_regs *regs, u32 arch)
+       }
+ }
  
 +#ifdef CONFIG_GRKERNSEC_SETXID
 +extern void gr_delayed_cred_worker(void);
 +#endif
 +
  /*
-  * We must return the syscall number to actually look up in the table.
-  * This can be -1L to skip running any syscall at all.
-@@ -1460,6 +1478,11 @@ long syscall_trace_enter(struct pt_regs *regs)
+  * We can return 0 to resume the syscall or anything else to go to phase
+  * 2.  If we resume the syscall, we need to put something appropriate in
+@@ -1562,6 +1580,11 @@ long syscall_trace_enter_phase2(struct pt_regs *regs, u32 arch,
  
-       user_exit();
+       BUG_ON(regs != task_pt_regs(current));
  
 +#ifdef CONFIG_GRKERNSEC_SETXID
 +      if (unlikely(test_and_clear_thread_flag(TIF_GRSEC_SETXID)))
@@ -26540,7 +26875,7 @@ index 678c0ad..2fc2a7b 100644
        /*
         * If we stepped into a sysenter/syscall insn, it trapped in
         * kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP.
-@@ -1515,6 +1538,11 @@ void syscall_trace_leave(struct pt_regs *regs)
+@@ -1620,6 +1643,11 @@ void syscall_trace_leave(struct pt_regs *regs)
         */
        user_exit();
  
@@ -26585,10 +26920,10 @@ index 2f355d2..e75ed0a 100644
  
        return ret;
 diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
-index 52b1157..c6e67c4 100644
+index 17962e6..47f55db 100644
 --- a/arch/x86/kernel/reboot.c
 +++ b/arch/x86/kernel/reboot.c
-@@ -68,6 +68,11 @@ static int __init set_bios_reboot(const struct dmi_system_id *d)
+@@ -69,6 +69,11 @@ static int __init set_bios_reboot(const struct dmi_system_id *d)
  
  void __noreturn machine_real_restart(unsigned int type)
  {
@@ -26600,7 +26935,7 @@ index 52b1157..c6e67c4 100644
        local_irq_disable();
  
        /*
-@@ -95,7 +100,29 @@ void __noreturn machine_real_restart(unsigned int type)
+@@ -96,7 +101,29 @@ void __noreturn machine_real_restart(unsigned int type)
  
        /* Jump to the identity-mapped low memory code */
  #ifdef CONFIG_X86_32
@@ -26631,7 +26966,7 @@ index 52b1157..c6e67c4 100644
                     "rm" (real_mode_header->machine_real_restart_asm),
                     "a" (type));
  #else
-@@ -486,7 +513,7 @@ void __attribute__((weak)) mach_reboot_fixups(void)
+@@ -500,7 +527,7 @@ void __attribute__((weak)) mach_reboot_fixups(void)
   * This means that this function can never return, it can misbehave
   * by not rebooting properly and hanging.
   */
@@ -26640,7 +26975,7 @@ index 52b1157..c6e67c4 100644
  {
        int i;
        int attempt = 0;
-@@ -610,13 +637,13 @@ void native_machine_shutdown(void)
+@@ -620,13 +647,13 @@ void native_machine_shutdown(void)
  #endif
  }
  
@@ -26656,7 +26991,7 @@ index 52b1157..c6e67c4 100644
  {
        pr_notice("machine restart\n");
  
-@@ -625,7 +652,7 @@ static void native_machine_restart(char *__unused)
+@@ -635,7 +662,7 @@ static void native_machine_restart(char *__unused)
        __machine_emergency_restart(0);
  }
  
@@ -26665,7 +27000,7 @@ index 52b1157..c6e67c4 100644
  {
        /* Stop other cpus and apics */
        machine_shutdown();
-@@ -635,7 +662,7 @@ static void native_machine_halt(void)
+@@ -645,7 +672,7 @@ static void native_machine_halt(void)
        stop_this_cpu(NULL);
  }
  
@@ -26674,7 +27009,7 @@ index 52b1157..c6e67c4 100644
  {
        if (pm_power_off) {
                if (!reboot_force)
-@@ -644,9 +671,10 @@ static void native_machine_power_off(void)
+@@ -654,9 +681,10 @@ static void native_machine_power_off(void)
        }
        /* A fallback in case there is no PM info available */
        tboot_shutdown(TB_SHUTDOWN_HALT);
@@ -26714,7 +27049,7 @@ index 3fd2c69..a444264 100644
  identity_mapped:
        /* set return address to 0 if not preserving context */
 diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 09c76d2..7f33fc2 100644
+index ab08aa2..6d74a3a 100644
 --- a/arch/x86/kernel/setup.c
 +++ b/arch/x86/kernel/setup.c
 @@ -110,6 +110,7 @@
@@ -26810,7 +27145,7 @@ index 09c76d2..7f33fc2 100644
  
        early_reserve_initrd();
  
-@@ -946,14 +989,14 @@ void __init setup_arch(char **cmdline_p)
+@@ -955,14 +998,14 @@ void __init setup_arch(char **cmdline_p)
  
        if (!boot_params.hdr.root_flags)
                root_mountflags &= ~MS_RDONLY;
@@ -26907,7 +27242,7 @@ index 5cdff03..80fa283 100644
                 * Up to this point, the boot CPU has been using .init.data
                 * area.  Reload any changed state for the boot CPU.
 diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
-index 9e5de68..16c53cb 100644
+index ed37a76..39f936e 100644
 --- a/arch/x86/kernel/signal.c
 +++ b/arch/x86/kernel/signal.c
 @@ -190,7 +190,7 @@ static unsigned long align_sigframe(unsigned long sp)
@@ -26919,19 +27254,20 @@ index 9e5de68..16c53cb 100644
  #else /* !CONFIG_X86_32 */
        sp = round_down(sp, 16) - 8;
  #endif
-@@ -298,9 +298,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
+@@ -298,10 +298,9 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
        }
  
        if (current->mm->context.vdso)
--              restorer = VDSO32_SYMBOL(current->mm->context.vdso, sigreturn);
-+              restorer = (__force void __user *)VDSO32_SYMBOL(current->mm->context.vdso, sigreturn);
+-              restorer = current->mm->context.vdso +
+-                      selected_vdso32->sym___kernel_sigreturn;
++              restorer = (void __force_user *)(current->mm->context.vdso + selected_vdso32->sym___kernel_sigreturn);
        else
 -              restorer = &frame->retcode;
 +              restorer = (void __user *)&frame->retcode;
        if (ksig->ka.sa.sa_flags & SA_RESTORER)
                restorer = ksig->ka.sa.sa_restorer;
  
-@@ -314,7 +314,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
+@@ -315,7 +314,7 @@ __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
         * reasons and because gdb uses it as a signature to notice
         * signal handler stack frames.
         */
@@ -26940,19 +27276,20 @@ index 9e5de68..16c53cb 100644
  
        if (err)
                return -EFAULT;
-@@ -361,7 +361,10 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
+@@ -362,8 +361,10 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
                save_altstack_ex(&frame->uc.uc_stack, regs->sp);
  
                /* Set up to return from userspace.  */
--              restorer = VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn);
+-              restorer = current->mm->context.vdso +
+-                      selected_vdso32->sym___kernel_rt_sigreturn;
 +              if (current->mm->context.vdso)
-+                      restorer = (__force void __user *)VDSO32_SYMBOL(current->mm->context.vdso, rt_sigreturn);
++                      restorer = (void __force_user *)(current->mm->context.vdso + selected_vdso32->sym___kernel_rt_sigreturn);
 +              else
-+              restorer = (void __user *)&frame->retcode;
++                      restorer = (void __user *)&frame->retcode;
                if (ksig->ka.sa.sa_flags & SA_RESTORER)
                        restorer = ksig->ka.sa.sa_restorer;
                put_user_ex(restorer, &frame->pretcode);
-@@ -373,7 +376,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
+@@ -375,7 +376,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
                 * reasons and because gdb uses it as a signature to notice
                 * signal handler stack frames.
                 */
@@ -26961,7 +27298,7 @@ index 9e5de68..16c53cb 100644
        } put_user_catch(err);
        
        err |= copy_siginfo_to_user(&frame->info, &ksig->info);
-@@ -609,7 +612,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
+@@ -611,7 +612,12 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
  {
        int usig = signr_convert(ksig->sig);
        sigset_t *set = sigmask_to_save();
@@ -26975,7 +27312,7 @@ index 9e5de68..16c53cb 100644
  
        /* Set up the stack frame */
        if (is_ia32_frame()) {
-@@ -620,7 +628,7 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
+@@ -622,7 +628,7 @@ setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
        } else if (is_x32_frame()) {
                return x32_setup_rt_frame(ksig, cset, regs);
        } else {
@@ -26998,10 +27335,10 @@ index be8e1bd..a3d93fa 100644
        .smp_prepare_cpus       = native_smp_prepare_cpus,
        .smp_cpus_done          = native_smp_cpus_done,
 diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
-index ae2fd975..c0c8d10 100644
+index 668d8f2..84a9d54 100644
 --- a/arch/x86/kernel/smpboot.c
 +++ b/arch/x86/kernel/smpboot.c
-@@ -230,14 +230,17 @@ static void notrace start_secondary(void *unused)
+@@ -194,14 +194,17 @@ static void notrace start_secondary(void *unused)
  
        enable_start_cpu0 = 0;
  
@@ -27023,7 +27360,7 @@ index ae2fd975..c0c8d10 100644
        /*
         * Check TSC synchronization with the BP:
         */
-@@ -757,8 +760,9 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
+@@ -765,8 +768,9 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
        alternatives_enable_smp();
  
        idle->thread.sp = (unsigned long) (((struct pt_regs *)
@@ -27034,7 +27371,7 @@ index ae2fd975..c0c8d10 100644
  
  #ifdef CONFIG_X86_32
        /* Stack for startup_32 can be just as for start_secondary onwards */
-@@ -767,10 +771,10 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
+@@ -775,10 +779,10 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
        clear_tsk_thread_flag(idle, TIF_FORK);
        initial_gs = per_cpu_offset(cpu);
  #endif
@@ -27048,7 +27385,7 @@ index ae2fd975..c0c8d10 100644
        initial_code = (unsigned long)start_secondary;
        stack_start  = idle->thread.sp;
  
-@@ -916,6 +920,15 @@ int native_cpu_up(unsigned int cpu, struct task_struct *tidle)
+@@ -918,6 +922,15 @@ int native_cpu_up(unsigned int cpu, struct task_struct *tidle)
        /* the FPU context is blank, nobody can own it */
        __cpu_disable_lazy_restore(cpu);
  
@@ -27443,7 +27780,7 @@ index 91a4496..bb87552 100644
  
  #ifdef CONFIG_DEBUG_FS
 diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c
-index bf7ef5c..59d0ac9 100644
+index 0fa2960..91eabbe 100644
 --- a/arch/x86/kernel/time.c
 +++ b/arch/x86/kernel/time.c
 @@ -30,9 +30,9 @@ unsigned long profile_pc(struct pt_regs *regs)
@@ -27477,10 +27814,10 @@ index bf7ef5c..59d0ac9 100644
        return pc;
  }
 diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
-index f7fec09..9991981 100644
+index 4e942f3..d0f623f 100644
 --- a/arch/x86/kernel/tls.c
 +++ b/arch/x86/kernel/tls.c
-@@ -84,6 +84,11 @@ int do_set_thread_area(struct task_struct *p, int idx,
+@@ -118,6 +118,11 @@ int do_set_thread_area(struct task_struct *p, int idx,
        if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
                return -EINVAL;
  
@@ -27492,7 +27829,7 @@ index f7fec09..9991981 100644
        set_tls_desc(p, idx, &info, 1);
  
        return 0;
-@@ -200,7 +205,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset,
+@@ -235,7 +240,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset,
  
        if (kbuf)
                info = kbuf;
@@ -27520,10 +27857,10 @@ index 1c113db..287b42e 100644
  static int trace_irq_vector_refcount;
  static DEFINE_MUTEX(irq_vector_mutex);
 diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index f73b5d4..0adcc9a 100644
+index 07ab8e9..99c8456 100644
 --- a/arch/x86/kernel/traps.c
 +++ b/arch/x86/kernel/traps.c
-@@ -66,7 +66,7 @@
+@@ -67,7 +67,7 @@
  #include <asm/proto.h>
  
  /* No need to be aligned, but done to keep all IDTs defined the same way. */
@@ -27532,7 +27869,7 @@ index f73b5d4..0adcc9a 100644
  #else
  #include <asm/processor-flags.h>
  #include <asm/setup.h>
-@@ -75,7 +75,7 @@ asmlinkage int system_call(void);
+@@ -76,7 +76,7 @@ asmlinkage int system_call(void);
  #endif
  
  /* Must be page-aligned because the real IDT is used in a fixmap. */
@@ -27541,10 +27878,10 @@ index f73b5d4..0adcc9a 100644
  
  DECLARE_BITMAP(used_vectors, NR_VECTORS);
  EXPORT_SYMBOL_GPL(used_vectors);
-@@ -107,11 +107,11 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
+@@ -108,11 +108,11 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
  }
  
- static int __kprobes
+ static nokprobe_inline int
 -do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
 +do_trap_no_signal(struct task_struct *tsk, int trapnr, const char *str,
                  struct pt_regs *regs, long error_code)
@@ -27555,7 +27892,7 @@ index f73b5d4..0adcc9a 100644
                /*
                 * Traps 0, 1, 3, 4, and 5 should be forwarded to vm86.
                 * On nmi (interrupt 2), do_trap should not be called.
-@@ -124,12 +124,24 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
+@@ -125,12 +125,24 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
                return -1;
        }
  #endif
@@ -27581,16 +27918,16 @@ index f73b5d4..0adcc9a 100644
                return 0;
        }
  
-@@ -137,7 +149,7 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
+@@ -169,7 +181,7 @@ static siginfo_t *fill_trap_info(struct pt_regs *regs, int signr, int trapnr,
  }
  
- static void __kprobes
+ static void
 -do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
 +do_trap(int trapnr, int signr, const char *str, struct pt_regs *regs,
        long error_code, siginfo_t *info)
  {
        struct task_struct *tsk = current;
-@@ -161,7 +173,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
+@@ -193,7 +205,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
        if (show_unhandled_signals && unhandled_signal(tsk, signr) &&
            printk_ratelimit()) {
                pr_info("%s[%d] trap %s ip:%lx sp:%lx error:%lx",
@@ -27599,7 +27936,7 @@ index f73b5d4..0adcc9a 100644
                        regs->ip, regs->sp, error_code);
                print_vma_addr(" in ", regs->ip);
                pr_cont("\n");
-@@ -251,6 +263,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
+@@ -274,6 +286,11 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
        tsk->thread.error_code = error_code;
        tsk->thread.trap_nr = X86_TRAP_DF;
  
@@ -27611,7 +27948,7 @@ index f73b5d4..0adcc9a 100644
  #ifdef CONFIG_DOUBLEFAULT
        df_debug(regs, error_code);
  #endif
-@@ -273,7 +290,7 @@ do_general_protection(struct pt_regs *regs, long error_code)
+@@ -296,7 +313,7 @@ do_general_protection(struct pt_regs *regs, long error_code)
        conditional_sti(regs);
  
  #ifdef CONFIG_X86_32
@@ -27620,7 +27957,7 @@ index f73b5d4..0adcc9a 100644
                local_irq_enable();
                handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code);
                goto exit;
-@@ -281,18 +298,42 @@ do_general_protection(struct pt_regs *regs, long error_code)
+@@ -304,18 +321,42 @@ do_general_protection(struct pt_regs *regs, long error_code)
  #endif
  
        tsk = current;
@@ -27665,7 +28002,25 @@ index f73b5d4..0adcc9a 100644
        tsk->thread.error_code = error_code;
        tsk->thread.trap_nr = X86_TRAP_GP;
  
-@@ -453,7 +494,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
+@@ -427,13 +468,16 @@ struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s)
+               container_of(task_pt_regs(current),
+                            struct bad_iret_stack, regs);
++      if ((current->thread.sp0 ^ (unsigned long)s) < THREAD_SIZE)
++              new_stack = s;
++
+       /* Copy the IRET target to the new stack. */
+       memmove(&new_stack->regs.ip, (void *)s->regs.sp, 5*8);
+       /* Copy the remainder of the stack from the current stack. */
+       memmove(new_stack, s, offsetof(struct bad_iret_stack, regs.ip));
+-      BUG_ON(!user_mode_vm(&new_stack->regs));
++      BUG_ON(!user_mode(&new_stack->regs));
+       return new_stack;
+ }
+ NOKPROBE_SYMBOL(fixup_bad_iret);
+@@ -519,7 +563,7 @@ dotraplinkage void do_debug(struct pt_regs *regs, long error_code)
        /* It's safe to allow irq's after DR6 has been saved */
        preempt_conditional_sti(regs);
  
@@ -27674,7 +28029,7 @@ index f73b5d4..0adcc9a 100644
                handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code,
                                        X86_TRAP_DB);
                preempt_conditional_cli(regs);
-@@ -468,7 +509,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
+@@ -534,7 +578,7 @@ dotraplinkage void do_debug(struct pt_regs *regs, long error_code)
         * We already checked v86 mode above, so we can check for kernel mode
         * by just checking the CPL of CS.
         */
@@ -27683,7 +28038,7 @@ index f73b5d4..0adcc9a 100644
                tsk->thread.debugreg6 &= ~DR_STEP;
                set_tsk_thread_flag(tsk, TIF_SINGLESTEP);
                regs->flags &= ~X86_EFLAGS_TF;
-@@ -500,7 +541,7 @@ void math_error(struct pt_regs *regs, int error_code, int trapnr)
+@@ -567,7 +611,7 @@ static void math_error(struct pt_regs *regs, int error_code, int trapnr)
                return;
        conditional_sti(regs);
  
@@ -27693,7 +28048,7 @@ index f73b5d4..0adcc9a 100644
                if (!fixup_exception(regs)) {
                        task->thread.error_code = error_code;
 diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
-index 57e5ce1..20b0040 100644
+index b7e50bb..f4a93ae 100644
 --- a/arch/x86/kernel/tsc.c
 +++ b/arch/x86/kernel/tsc.c
 @@ -150,7 +150,7 @@ static void cyc2ns_write_end(int cpu, struct cyc2ns_data *data)
@@ -27706,10 +28061,10 @@ index 57e5ce1..20b0040 100644
  
  /*
 diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c
-index 2ed8459..7cf329f 100644
+index 5d1cbfe..2a21feb 100644
 --- a/arch/x86/kernel/uprobes.c
 +++ b/arch/x86/kernel/uprobes.c
-@@ -629,7 +629,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val,
+@@ -845,7 +845,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val,
        int ret = NOTIFY_DONE;
  
        /* We are only interested in userspace traps */
@@ -27718,9 +28073,9 @@ index 2ed8459..7cf329f 100644
                return NOTIFY_DONE;
  
        switch (val) {
-@@ -719,7 +719,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs
+@@ -919,7 +919,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs
  
-       if (ncopied != rasize) {
+       if (nleft != rasize) {
                pr_err("uprobe: return address clobbered: pid=%d, %%sp=%#lx, "
 -                      "%%ip=%#lx\n", current->pid, regs->sp, regs->ip);
 +                      "%%ip=%#lx\n", task_pid_nr(current), regs->sp, regs->ip);
@@ -28072,7 +28427,7 @@ index 49edf2d..c0d1362 100644
  
  #ifdef CONFIG_SMP
 diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
-index 8b3b3eb..9395aa9 100644
+index 957779f..74e405c 100644
 --- a/arch/x86/kernel/vsyscall_64.c
 +++ b/arch/x86/kernel/vsyscall_64.c
 @@ -54,15 +54,13 @@
@@ -28102,18 +28457,18 @@ index 8b3b3eb..9395aa9 100644
  }
  
  /*
-@@ -332,10 +329,7 @@ void __init map_vsyscall(void)
+@@ -331,10 +328,7 @@ void __init map_vsyscall(void)
+       extern char __vsyscall_page;
        unsigned long physaddr_vsyscall = __pa_symbol(&__vsyscall_page);
-       unsigned long physaddr_vvar_page = __pa_symbol(&__vvar_page);
  
--      __set_fixmap(VSYSCALL_FIRST_PAGE, physaddr_vsyscall,
+-      __set_fixmap(VSYSCALL_PAGE, physaddr_vsyscall,
 -                   vsyscall_mode == NATIVE
 -                   ? PAGE_KERNEL_VSYSCALL
 -                   : PAGE_KERNEL_VVAR);
-+      __set_fixmap(VSYSCALL_FIRST_PAGE, physaddr_vsyscall, PAGE_KERNEL_VVAR);
-       BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_FIRST_PAGE) !=
-                    (unsigned long)VSYSCALL_START);
++      __set_fixmap(VSYSCALL_PAGE, physaddr_vsyscall, PAGE_KERNEL_VVAR);
+       BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_PAGE) !=
+                    (unsigned long)VSYSCALL_ADDR);
+ }
 diff --git a/arch/x86/kernel/x8664_ksyms_64.c b/arch/x86/kernel/x8664_ksyms_64.c
 index 04068192..4d75aa6 100644
 --- a/arch/x86/kernel/x8664_ksyms_64.c
@@ -28167,10 +28522,10 @@ index e48b674..a451dd9 100644
        .read                   = native_io_apic_read,
        .write                  = native_io_apic_write,
 diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
-index a4b451c..8dfe1ad 100644
+index 4c540c4..0b985b0 100644
 --- a/arch/x86/kernel/xsave.c
 +++ b/arch/x86/kernel/xsave.c
-@@ -164,18 +164,18 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame)
+@@ -167,18 +167,18 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame)
  
        /* Setup the bytes not touched by the [f]xsave and reserved for SW. */
        sw_bytes = ia32_frame ? &fx_sw_reserved_ia32 : &fx_sw_reserved;
@@ -28192,7 +28547,7 @@ index a4b451c..8dfe1ad 100644
  
        /*
         * For legacy compatible, we always set FP/SSE bits in the bit
-@@ -190,7 +190,7 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame)
+@@ -193,7 +193,7 @@ static inline int save_xstate_epilog(void __user *buf, int ia32_frame)
         */
        xstate_bv |= XSTATE_FPSSE;
  
@@ -28201,7 +28556,7 @@ index a4b451c..8dfe1ad 100644
  
        return err;
  }
-@@ -199,6 +199,7 @@ static inline int save_user_xstate(struct xsave_struct __user *buf)
+@@ -202,6 +202,7 @@ static inline int save_user_xstate(struct xsave_struct __user *buf)
  {
        int err;
  
@@ -28209,7 +28564,7 @@ index a4b451c..8dfe1ad 100644
        if (use_xsave())
                err = xsave_user(buf);
        else if (use_fxsr())
-@@ -311,6 +312,7 @@ sanitize_restored_xstate(struct task_struct *tsk,
+@@ -312,6 +313,7 @@ sanitize_restored_xstate(struct task_struct *tsk,
   */
  static inline int restore_user_xstate(void __user *buf, u64 xbv, int fx_only)
  {
@@ -28218,10 +28573,10 @@ index a4b451c..8dfe1ad 100644
                if ((unsigned long)buf % 64 || fx_only) {
                        u64 init_bv = pcntxt_mask & ~XSTATE_FPSSE;
 diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
-index f47a104..5ce59a8 100644
+index 976e3a5..8bb998c 100644
 --- a/arch/x86/kvm/cpuid.c
 +++ b/arch/x86/kvm/cpuid.c
-@@ -166,15 +166,20 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu,
+@@ -175,15 +175,20 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu,
                              struct kvm_cpuid2 *cpuid,
                              struct kvm_cpuid_entry2 __user *entries)
  {
@@ -28245,7 +28600,7 @@ index f47a104..5ce59a8 100644
        vcpu->arch.cpuid_nent = cpuid->nent;
        kvm_apic_set_version(vcpu);
        kvm_x86_ops->cpuid_update(vcpu);
-@@ -189,15 +194,19 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
+@@ -196,15 +201,19 @@ int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,
                              struct kvm_cpuid2 *cpuid,
                              struct kvm_cpuid_entry2 __user *entries)
  {
@@ -28268,8 +28623,30 @@ index f47a104..5ce59a8 100644
        return 0;
  
  out:
+diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
+index 9f8a2fa..2df3c3f 100644
+--- a/arch/x86/kvm/emulate.c
++++ b/arch/x86/kvm/emulate.c
+@@ -3519,7 +3519,7 @@ static int check_cr_write(struct x86_emulate_ctxt *ctxt)
+       int cr = ctxt->modrm_reg;
+       u64 efer = 0;
+-      static u64 cr_reserved_bits[] = {
++      static const u64 cr_reserved_bits[] = {
+               0xffffffff00000000ULL,
+               0, 0, 0, /* CR3 checked later */
+               CR4_RESERVED_BITS,
+@@ -3554,7 +3554,7 @@ static int check_cr_write(struct x86_emulate_ctxt *ctxt)
+               ctxt->ops->get_msr(ctxt, MSR_EFER, &efer);
+               if (efer & EFER_LMA)
+-                      rsvd = CR3_L_MODE_RESERVED_BITS;
++                      rsvd = CR3_L_MODE_RESERVED_BITS & ~CR3_PCID_INVD;
+               if (new_val & rsvd)
+                       return emulate_gp(ctxt, 0);
 diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
-index 0069118..c28ec0a 100644
+index b8345dd..f225d71 100644
 --- a/arch/x86/kvm/lapic.c
 +++ b/arch/x86/kvm/lapic.c
 @@ -55,7 +55,7 @@
@@ -28282,10 +28659,10 @@ index 0069118..c28ec0a 100644
  #define APIC_LVT_NUM                  6
  /* 14 is the version for Xeon and Pentium 8.4.8*/
 diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
-index 123efd3..ad7726e 100644
+index fd49c86..77e1aa0 100644
 --- a/arch/x86/kvm/paging_tmpl.h
 +++ b/arch/x86/kvm/paging_tmpl.h
-@@ -331,7 +331,7 @@ retry_walk:
+@@ -343,7 +343,7 @@ retry_walk:
                if (unlikely(kvm_is_error_hva(host_addr)))
                        goto error;
  
@@ -28295,10 +28672,10 @@ index 123efd3..ad7726e 100644
                        goto error;
                walker->ptep_user[walker->level - 1] = ptep_user;
 diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
-index 7f4f9c2..67b1db0 100644
+index 7527cef..c63a838e 100644
 --- a/arch/x86/kvm/svm.c
 +++ b/arch/x86/kvm/svm.c
-@@ -3535,7 +3535,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
+@@ -3564,7 +3564,11 @@ static void reload_tss(struct kvm_vcpu *vcpu)
        int cpu = raw_smp_processor_id();
  
        struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
@@ -28310,7 +28687,7 @@ index 7f4f9c2..67b1db0 100644
        load_TR_desc();
  }
  
-@@ -3936,6 +3940,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -3965,6 +3969,10 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu)
  #endif
  #endif
  
@@ -28322,10 +28699,10 @@ index 7f4f9c2..67b1db0 100644
  
        local_irq_disable();
 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 138ceff..2e584f0 100644
+index 3e556c6..08bbf7f 100644
 --- a/arch/x86/kvm/vmx.c
 +++ b/arch/x86/kvm/vmx.c
-@@ -1339,12 +1339,12 @@ static void vmcs_write64(unsigned long field, u64 value)
+@@ -1366,12 +1366,12 @@ static void vmcs_write64(unsigned long field, u64 value)
  #endif
  }
  
@@ -28340,7 +28717,7 @@ index 138ceff..2e584f0 100644
  {
        vmcs_writel(field, vmcs_readl(field) | mask);
  }
-@@ -1604,7 +1604,11 @@ static void reload_tss(void)
+@@ -1631,7 +1631,11 @@ static void reload_tss(void)
        struct desc_struct *descs;
  
        descs = (void *)gdt->address;
@@ -28352,7 +28729,7 @@ index 138ceff..2e584f0 100644
        load_TR_desc();
  }
  
-@@ -1832,6 +1836,10 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
+@@ -1859,6 +1863,10 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
                vmcs_writel(HOST_TR_BASE, kvm_read_tr_base()); /* 22.2.4 */
                vmcs_writel(HOST_GDTR_BASE, gdt->address);   /* 22.2.4 */
  
@@ -28363,7 +28740,7 @@ index 138ceff..2e584f0 100644
                rdmsrl(MSR_IA32_SYSENTER_ESP, sysenter_esp);
                vmcs_writel(HOST_IA32_SYSENTER_ESP, sysenter_esp); /* 22.2.3 */
                vmx->loaded_vmcs->cpu = cpu;
-@@ -2121,7 +2129,7 @@ static void setup_msrs(struct vcpu_vmx *vmx)
+@@ -2148,7 +2156,7 @@ static void setup_msrs(struct vcpu_vmx *vmx)
   * reads and returns guest's timestamp counter "register"
   * guest_tsc = host_tsc + tsc_offset    -- 21.3
   */
@@ -28372,9 +28749,15 @@ index 138ceff..2e584f0 100644
  {
        u64 host_tsc, tsc_offset;
  
-@@ -3093,8 +3101,11 @@ static __init int hardware_setup(void)
-       if (!cpu_has_vmx_flexpriority())
-               flexpriority_enabled = 0;
+@@ -3146,11 +3154,16 @@ static __init int hardware_setup(void)
+                * page upon invalidation.  No need to do anything if the
+                * processor does not have the APIC_ACCESS_ADDR VMCS field.
+                */
+-              kvm_x86_ops->set_apic_access_page_addr = NULL;
++              pax_open_kernel();
++              *(void **)&kvm_x86_ops->set_apic_access_page_addr = NULL;
++              pax_close_kernel();
+       }
  
 -      if (!cpu_has_vmx_tpr_shadow())
 -              kvm_x86_ops->update_cr8_intercept = NULL;
@@ -28386,7 +28769,7 @@ index 138ceff..2e584f0 100644
  
        if (enable_ept && !cpu_has_vmx_ept_2m_page())
                kvm_disable_largepages();
-@@ -3105,13 +3116,15 @@ static __init int hardware_setup(void)
+@@ -3161,13 +3174,15 @@ static __init int hardware_setup(void)
        if (!cpu_has_vmx_apicv())
                enable_apicv = 0;
  
@@ -28406,18 +28789,18 @@ index 138ceff..2e584f0 100644
  
        if (nested)
                nested_vmx_setup_ctls_msrs();
-@@ -4235,7 +4248,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
+@@ -4274,7 +4289,10 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
+       unsigned long cr4;
  
        vmcs_writel(HOST_CR0, read_cr0() & ~X86_CR0_TS);  /* 22.2.3 */
-       vmcs_writel(HOST_CR4, read_cr4());  /* 22.2.3, 22.2.5 */
 +
 +#ifndef CONFIG_PAX_PER_CPU_PGD
        vmcs_writel(HOST_CR3, read_cr3());  /* 22.2.3  FIXME: shadow tables */
 +#endif
  
-       vmcs_write16(HOST_CS_SELECTOR, __KERNEL_CS);  /* 22.2.4 */
- #ifdef CONFIG_X86_64
-@@ -4257,7 +4273,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
+       /* Save the most likely value for this task's CR4 in the VMCS. */
+       cr4 = read_cr4();
+@@ -4301,7 +4319,7 @@ static void vmx_set_constant_host_state(struct vcpu_vmx *vmx)
        vmcs_writel(HOST_IDTR_BASE, dt.address);   /* 22.2.4 */
        vmx->host_idt_base = dt.address;
  
@@ -28426,7 +28809,7 @@ index 138ceff..2e584f0 100644
  
        rdmsr(MSR_IA32_SYSENTER_CS, low32, high32);
        vmcs_write32(HOST_IA32_SYSENTER_CS, low32);
-@@ -7333,6 +7349,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -7622,6 +7640,12 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
                "jmp 2f \n\t"
                "1: " __ex(ASM_VMX_VMRESUME) "\n\t"
                "2: "
@@ -28439,7 +28822,7 @@ index 138ceff..2e584f0 100644
                /* Save guest registers, load host registers, keep flags */
                "mov %0, %c[wordsize](%%" _ASM_SP ") \n\t"
                "pop %0 \n\t"
-@@ -7385,6 +7407,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -7674,6 +7698,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
  #endif
                [cr2]"i"(offsetof(struct vcpu_vmx, vcpu.arch.cr2)),
                [wordsize]"i"(sizeof(ulong))
@@ -28451,7 +28834,7 @@ index 138ceff..2e584f0 100644
              : "cc", "memory"
  #ifdef CONFIG_X86_64
                , "rax", "rbx", "rdi", "rsi"
-@@ -7398,7 +7425,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -7687,7 +7716,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
        if (debugctlmsr)
                update_debugctlmsr(debugctlmsr);
  
@@ -28460,7 +28843,7 @@ index 138ceff..2e584f0 100644
        /*
         * The sysexit path does not restore ds/es, so we must set them to
         * a reasonable value ourselves.
-@@ -7407,8 +7434,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
+@@ -7696,8 +7725,18 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
         * may be executed in interrupt context, which saves and restore segments
         * around it, nullifying its effect.
         */
@@ -28482,10 +28865,19 @@ index 138ceff..2e584f0 100644
  
        vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP)
 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index 5521f7c..691b7a3 100644
+index 0033df3..db6236d 100644
 --- a/arch/x86/kvm/x86.c
 +++ b/arch/x86/kvm/x86.c
-@@ -1822,8 +1822,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data)
+@@ -732,6 +732,8 @@ EXPORT_SYMBOL_GPL(kvm_set_cr4);
+ int kvm_set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
+ {
++      cr3 &= ~CR3_PCID_INVD;
++
+       if (cr3 == kvm_read_cr3(vcpu) && !pdptrs_changed(vcpu)) {
+               kvm_mmu_sync_roots(vcpu);
+               kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu);
+@@ -1878,8 +1880,8 @@ static int xen_hvm_config(struct kvm_vcpu *vcpu, u64 data)
  {
        struct kvm *kvm = vcpu->kvm;
        int lm = is_long_mode(vcpu);
@@ -28496,7 +28888,7 @@ index 5521f7c..691b7a3 100644
        u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64
                : kvm->arch.xen_hvm_config.blob_size_32;
        u32 page_num = data & ~PAGE_MASK;
-@@ -2738,6 +2738,8 @@ long kvm_arch_dev_ioctl(struct file *filp,
+@@ -2806,6 +2808,8 @@ long kvm_arch_dev_ioctl(struct file *filp,
                if (n < msr_list.nmsrs)
                        goto out;
                r = -EFAULT;
@@ -28505,7 +28897,7 @@ index 5521f7c..691b7a3 100644
                if (copy_to_user(user_msr_list->indices, &msrs_to_save,
                                 num_msrs_to_save * sizeof(u32)))
                        goto out;
-@@ -5574,7 +5576,7 @@ static struct notifier_block pvclock_gtod_notifier = {
+@@ -5670,7 +5674,7 @@ static struct notifier_block pvclock_gtod_notifier = {
  };
  #endif
  
@@ -29015,7 +29407,7 @@ index f5cc9eb..51fa319 100644
        CFI_ENDPROC
  ENDPROC(atomic64_inc_not_zero_cx8)
 diff --git a/arch/x86/lib/checksum_32.S b/arch/x86/lib/checksum_32.S
-index e78b8ee..7e173a8 100644
+index e78b8eee..7e173a8 100644
 --- a/arch/x86/lib/checksum_32.S
 +++ b/arch/x86/lib/checksum_32.S
 @@ -29,7 +29,8 @@
@@ -29300,18 +29692,27 @@ index f2145cf..cea889d 100644
        .byte (clear_page_c - clear_page) - (2f - 1b)   /* offset */
  2:    .byte 0xeb                                      /* jmp <disp8> */
 diff --git a/arch/x86/lib/cmpxchg16b_emu.S b/arch/x86/lib/cmpxchg16b_emu.S
-index 1e572c5..2a162cd 100644
+index 40a1725..5d12ac4 100644
 --- a/arch/x86/lib/cmpxchg16b_emu.S
 +++ b/arch/x86/lib/cmpxchg16b_emu.S
-@@ -53,11 +53,13 @@ this_cpu_cmpxchg16b_emu:
+@@ -8,6 +8,7 @@
+ #include <linux/linkage.h>
+ #include <asm/dwarf2.h>
+ #include <asm/percpu.h>
++#include <asm/alternative-asm.h>
+ .text
  
-       popf
+@@ -46,12 +47,14 @@ CFI_STARTPROC
+       CFI_REMEMBER_STATE
+       popfq_cfi
        mov $1, %al
 +      pax_force_retaddr
        ret
  
-  not_same:
-       popf
+       CFI_RESTORE_STATE
+ .Lnot_same:
+       popfq_cfi
        xor %al,%al
 +      pax_force_retaddr
        ret
@@ -29658,10 +30059,10 @@ index 2419d5f..fe52d0e 100644
        CFI_RESTORE_STATE
  
 diff --git a/arch/x86/lib/csum-wrappers_64.c b/arch/x86/lib/csum-wrappers_64.c
-index 7609e0e..b449b98 100644
+index 1318f75..44c30fd 100644
 --- a/arch/x86/lib/csum-wrappers_64.c
 +++ b/arch/x86/lib/csum-wrappers_64.c
-@@ -53,10 +53,12 @@ csum_partial_copy_from_user(const void __user *src, void *dst,
+@@ -52,10 +52,12 @@ csum_partial_copy_from_user(const void __user *src, void *dst,
                        len -= 2;
                }
        }
@@ -29675,7 +30076,7 @@ index 7609e0e..b449b98 100644
        if (unlikely(*errp))
                goto out_err;
  
-@@ -110,10 +112,12 @@ csum_partial_copy_to_user(const void *src, void __user *dst,
+@@ -109,10 +111,12 @@ csum_partial_copy_to_user(const void *src, void __user *dst,
        }
  
        *errp = 0;
@@ -30515,80 +30916,6 @@ index fc6ba17..d4d989d 100644
  #endif
        xor %eax,%eax
        EXIT
-diff --git a/arch/x86/lib/rwlock.S b/arch/x86/lib/rwlock.S
-index 1cad221..de671ee 100644
---- a/arch/x86/lib/rwlock.S
-+++ b/arch/x86/lib/rwlock.S
-@@ -16,13 +16,34 @@ ENTRY(__write_lock_failed)
-       FRAME
- 0:    LOCK_PREFIX
-       WRITE_LOCK_ADD($RW_LOCK_BIAS) (%__lock_ptr)
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      jno 1234f
-+      LOCK_PREFIX
-+      WRITE_LOCK_SUB($RW_LOCK_BIAS) (%__lock_ptr)
-+      int $4
-+1234:
-+      _ASM_EXTABLE(1234b, 1234b)
-+#endif
-+
- 1:    rep; nop
-       cmpl    $WRITE_LOCK_CMP, (%__lock_ptr)
-       jne     1b
-       LOCK_PREFIX
-       WRITE_LOCK_SUB($RW_LOCK_BIAS) (%__lock_ptr)
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      jno 1234f
-+      LOCK_PREFIX
-+      WRITE_LOCK_ADD($RW_LOCK_BIAS) (%__lock_ptr)
-+      int $4
-+1234:
-+      _ASM_EXTABLE(1234b, 1234b)
-+#endif
-+
-       jnz     0b
-       ENDFRAME
-+      pax_force_retaddr
-       ret
-       CFI_ENDPROC
- END(__write_lock_failed)
-@@ -32,13 +53,34 @@ ENTRY(__read_lock_failed)
-       FRAME
- 0:    LOCK_PREFIX
-       READ_LOCK_SIZE(inc) (%__lock_ptr)
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      jno 1234f
-+      LOCK_PREFIX
-+      READ_LOCK_SIZE(dec) (%__lock_ptr)
-+      int $4
-+1234:
-+      _ASM_EXTABLE(1234b, 1234b)
-+#endif
-+
- 1:    rep; nop
-       READ_LOCK_SIZE(cmp) $1, (%__lock_ptr)
-       js      1b
-       LOCK_PREFIX
-       READ_LOCK_SIZE(dec) (%__lock_ptr)
-+
-+#ifdef CONFIG_PAX_REFCOUNT
-+      jno 1234f
-+      LOCK_PREFIX
-+      READ_LOCK_SIZE(inc) (%__lock_ptr)
-+      int $4
-+1234:
-+      _ASM_EXTABLE(1234b, 1234b)
-+#endif
-+
-       js      0b
-       ENDFRAME
-+      pax_force_retaddr
-       ret
-       CFI_ENDPROC
- END(__read_lock_failed)
 diff --git a/arch/x86/lib/rwsem.S b/arch/x86/lib/rwsem.S
 index 5dff5f0..cadebf4 100644
 --- a/arch/x86/lib/rwsem.S
@@ -30628,18 +30955,18 @@ index 5dff5f0..cadebf4 100644
        CFI_ENDPROC
  ENDPROC(call_rwsem_downgrade_wake)
 diff --git a/arch/x86/lib/thunk_64.S b/arch/x86/lib/thunk_64.S
-index a63efd6..8149fbe 100644
+index b30b5eb..2b57052 100644
 --- a/arch/x86/lib/thunk_64.S
 +++ b/arch/x86/lib/thunk_64.S
-@@ -8,6 +8,7 @@
- #include <linux/linkage.h>
+@@ -9,6 +9,7 @@
  #include <asm/dwarf2.h>
  #include <asm/calling.h>
+ #include <asm/asm.h>
 +#include <asm/alternative-asm.h>
  
        /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
        .macro THUNK name, func, put_ret_addr_in_rdi=0
-@@ -15,11 +16,11 @@
+@@ -16,11 +17,11 @@
  \name:
        CFI_STARTPROC
  
@@ -30654,7 +30981,7 @@ index a63efd6..8149fbe 100644
        .endif
  
        call \func
-@@ -38,8 +39,9 @@
+@@ -47,9 +48,10 @@
  
        /* SAVE_ARGS below is used only for the .cfi directives it contains. */
        CFI_STARTPROC
@@ -30666,6 +30993,7 @@ index a63efd6..8149fbe 100644
 +      pax_force_retaddr
        ret
        CFI_ENDPROC
+       _ASM_NOKPROBE(restore)
 diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c
 index e2f5e21..4b22130 100644
 --- a/arch/x86/lib/usercopy_32.c
@@ -31376,10 +31704,10 @@ index 903ec1e..c4166b2 100644
  }
  
 diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
-index 8e57229..31cce89 100644
+index d973e61..fb868e9 100644
 --- a/arch/x86/mm/fault.c
 +++ b/arch/x86/mm/fault.c
-@@ -14,11 +14,18 @@
+@@ -13,12 +13,19 @@
  #include <linux/hugetlb.h>            /* hstate_index_to_shift        */
  #include <linux/prefetch.h>           /* prefetchw                    */
  #include <linux/context_tracking.h>   /* exception_enter(), ...       */
@@ -31389,7 +31717,8 @@ index 8e57229..31cce89 100644
  #include <asm/traps.h>                        /* dotraplinkage, ...           */
  #include <asm/pgalloc.h>              /* pgd_*(), ...                 */
  #include <asm/kmemcheck.h>            /* kmemcheck_*(), ...           */
- #include <asm/fixmap.h>                       /* VSYSCALL_START               */
+ #include <asm/fixmap.h>                       /* VSYSCALL_ADDR                */
+ #include <asm/vsyscall.h>             /* emulate_vsyscall             */
 +#include <asm/tlbflush.h>
 +
 +#if defined(CONFIG_X86_64) && defined(CONFIG_PAX_MEMORY_UDEREF)
@@ -31398,7 +31727,7 @@ index 8e57229..31cce89 100644
  
  #define CREATE_TRACE_POINTS
  #include <asm/trace/exceptions.h>
-@@ -59,7 +66,7 @@ static inline int __kprobes kprobes_fault(struct pt_regs *regs)
+@@ -59,7 +66,7 @@ static nokprobe_inline int kprobes_fault(struct pt_regs *regs)
        int ret = 0;
  
        /* kprobe_running() needs smp_processor_id() */
@@ -31510,7 +31839,7 @@ index 8e57229..31cce89 100644
  
                        if (!ret)
                                break;
-@@ -281,6 +345,12 @@ static noinline __kprobes int vmalloc_fault(unsigned long address)
+@@ -281,6 +345,12 @@ static noinline int vmalloc_fault(unsigned long address)
         * an interrupt in the middle of a task switch..
         */
        pgd_paddr = read_cr3();
@@ -31523,7 +31852,7 @@ index 8e57229..31cce89 100644
        pmd_k = vmalloc_sync_one(__va(pgd_paddr), address);
        if (!pmd_k)
                return -1;
-@@ -376,11 +446,25 @@ static noinline __kprobes int vmalloc_fault(unsigned long address)
+@@ -377,11 +447,25 @@ static noinline int vmalloc_fault(unsigned long address)
         * happen within a race in page table update. In the later
         * case just flush:
         */
@@ -31550,7 +31879,7 @@ index 8e57229..31cce89 100644
        if (pgd_none(*pgd)) {
                set_pgd(pgd, *pgd_ref);
                arch_flush_lazy_mmu_mode();
-@@ -546,7 +630,7 @@ static int is_errata93(struct pt_regs *regs, unsigned long address)
+@@ -548,7 +632,7 @@ static int is_errata93(struct pt_regs *regs, unsigned long address)
  static int is_errata100(struct pt_regs *regs, unsigned long address)
  {
  #ifdef CONFIG_X86_64
@@ -31559,16 +31888,19 @@ index 8e57229..31cce89 100644
                return 1;
  #endif
        return 0;
-@@ -573,7 +657,7 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
+@@ -575,9 +659,9 @@ static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
  }
  
  static const char nx_warning[] = KERN_CRIT
 -"kernel tried to execute NX-protected page - exploit attempt? (uid: %d)\n";
 +"kernel tried to execute NX-protected page - exploit attempt? (uid: %d, task: %s, pid: %d)\n";
+ static const char smep_warning[] = KERN_CRIT
+-"unable to execute userspace code (SMEP?) (uid: %d)\n";
++"unable to execute userspace code (SMEP?) (uid: %d, task: %s, pid: %d)\n";
  
  static void
  show_fault_oops(struct pt_regs *regs, unsigned long error_code,
-@@ -582,7 +666,7 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
+@@ -586,7 +670,7 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
        if (!oops_may_print())
                return;
  
@@ -31577,12 +31909,17 @@ index 8e57229..31cce89 100644
                unsigned int level;
                pgd_t *pgd;
                pte_t *pte;
-@@ -593,9 +677,21 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
+@@ -597,13 +681,25 @@ show_fault_oops(struct pt_regs *regs, unsigned long error_code,
                pte = lookup_address_in_pgd(pgd, address, &level);
  
                if (pte && pte_present(*pte) && !pte_exec(*pte))
 -                      printk(nx_warning, from_kuid(&init_user_ns, current_uid()));
 +                      printk(nx_warning, from_kuid_munged(&init_user_ns, current_uid()), current->comm, task_pid_nr(current));
+               if (pte && pte_present(*pte) && pte_exec(*pte) &&
+                               (pgd_flags(*pgd) & _PAGE_USER) &&
+                               (read_cr4() & X86_CR4_SMEP))
+-                      printk(smep_warning, from_kuid(&init_user_ns, current_uid()));
++                      printk(smep_warning, from_kuid(&init_user_ns, current_uid()), current->comm, task_pid_nr(current));
        }
  
 +#ifdef CONFIG_PAX_KERNEXEC
@@ -31600,7 +31937,7 @@ index 8e57229..31cce89 100644
        printk(KERN_ALERT "BUG: unable to handle kernel ");
        if (address < PAGE_SIZE)
                printk(KERN_CONT "NULL pointer dereference");
-@@ -776,6 +872,22 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
+@@ -782,6 +878,22 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
                                return;
                }
  #endif
@@ -31623,7 +31960,7 @@ index 8e57229..31cce89 100644
                /* Kernel addresses are always protection faults: */
                if (address >= TASK_SIZE)
                        error_code |= PF_PROT;
-@@ -861,7 +973,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
+@@ -867,7 +979,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
        if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) {
                printk(KERN_ERR
        "MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n",
@@ -31632,7 +31969,7 @@ index 8e57229..31cce89 100644
                code = BUS_MCEERR_AR;
        }
  #endif
-@@ -915,6 +1027,99 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)
+@@ -921,6 +1033,99 @@ static int spurious_fault_check(unsigned long error_code, pte_t *pte)
        return 1;
  }
  
@@ -31732,7 +32069,7 @@ index 8e57229..31cce89 100644
  /*
   * Handle a spurious fault caused by a stale TLB entry.
   *
-@@ -981,6 +1186,9 @@ int show_unhandled_signals = 1;
+@@ -1006,6 +1211,9 @@ int show_unhandled_signals = 1;
  static inline int
  access_error(unsigned long error_code, struct vm_area_struct *vma)
  {
@@ -31742,7 +32079,7 @@ index 8e57229..31cce89 100644
        if (error_code & PF_WRITE) {
                /* write, present and write, not present: */
                if (unlikely(!(vma->vm_flags & VM_WRITE)))
-@@ -1015,7 +1223,7 @@ static inline bool smap_violation(int error_code, struct pt_regs *regs)
+@@ -1040,7 +1248,7 @@ static inline bool smap_violation(int error_code, struct pt_regs *regs)
        if (error_code & PF_USER)
                return false;
  
@@ -31751,7 +32088,7 @@ index 8e57229..31cce89 100644
                return false;
  
        return true;
-@@ -1043,6 +1251,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
+@@ -1068,6 +1276,22 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
        tsk = current;
        mm = tsk->mm;
  
@@ -31774,7 +32111,7 @@ index 8e57229..31cce89 100644
        /*
         * Detect and handle instructions that would cause a page fault for
         * both a tracked kernel page and a userspace page.
-@@ -1120,7 +1344,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
+@@ -1145,7 +1369,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
         * User-mode registers count as a user access even for any
         * potential system fault or CPU buglet:
         */
@@ -31783,7 +32120,7 @@ index 8e57229..31cce89 100644
                local_irq_enable();
                error_code |= PF_USER;
                flags |= FAULT_FLAG_USER;
-@@ -1167,6 +1391,11 @@ retry:
+@@ -1192,6 +1416,11 @@ retry:
                might_sleep();
        }
  
@@ -31795,7 +32132,7 @@ index 8e57229..31cce89 100644
        vma = find_vma(mm, address);
        if (unlikely(!vma)) {
                bad_area(regs, error_code, address);
-@@ -1178,18 +1407,24 @@ retry:
+@@ -1203,18 +1432,24 @@ retry:
                bad_area(regs, error_code, address);
                return;
        }
@@ -31831,9 +32168,9 @@ index 8e57229..31cce89 100644
        if (unlikely(expand_stack(vma, address))) {
                bad_area(regs, error_code, address);
                return;
-@@ -1301,3 +1536,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code)
-       exception_exit(prev_state);
+@@ -1331,3 +1566,292 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code)
  }
+ NOKPROBE_SYMBOL(trace_do_page_fault);
  #endif /* CONFIG_TRACING */
 +
 +#if defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC)
@@ -31857,7 +32194,7 @@ index 8e57229..31cce89 100644
 +
 +#ifdef CONFIG_PAX_SEGMEXEC
 +      if (mm->pax_flags & MF_PAX_SEGMEXEC) {
-+              if (!(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address))
++      if (!(error_code & (PF_PROT | PF_WRITE)) && (ip + SEGMEXEC_TASK_SIZE == address))
 +                      return true;
 +              return false;
 +      }
@@ -32267,7 +32604,7 @@ index 8b977eb..4732c33 100644
  #endif /* CONFIG_HUGETLB_PAGE */
  
 diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
-index f971306..e83e0f6 100644
+index 66dba36..f8082ec 100644
 --- a/arch/x86/mm/init.c
 +++ b/arch/x86/mm/init.c
 @@ -4,6 +4,7 @@
@@ -32285,9 +32622,9 @@ index f971306..e83e0f6 100644
 +#include <asm/desc.h>
 +#include <asm/bios_ebda.h>
  
- #include "mm_internal.h"
-@@ -563,7 +566,18 @@ void __init init_mem_mapping(void)
+ /*
+  * We need to define the tracepoints somewhere, and tlb.c
+@@ -570,7 +573,18 @@ void __init init_mem_mapping(void)
        early_ioremap_page_table_range_init();
  #endif
  
@@ -32306,7 +32643,7 @@ index f971306..e83e0f6 100644
        __flush_tlb_all();
  
        early_memtest(0, max_pfn_mapped << PAGE_SHIFT);
-@@ -579,10 +593,40 @@ void __init init_mem_mapping(void)
+@@ -586,10 +600,40 @@ void __init init_mem_mapping(void)
   * Access has to be given to non-kernel-ram areas as well, these contain the PCI
   * mmio resources as well as potential bios/acpi data regions.
   */
@@ -32348,7 +32685,7 @@ index f971306..e83e0f6 100644
        if (iomem_is_exclusive(pagenr << PAGE_SHIFT))
                return 0;
        if (!page_is_ram(pagenr))
-@@ -628,8 +672,117 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
+@@ -635,8 +679,117 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
  #endif
  }
  
@@ -32467,7 +32804,7 @@ index f971306..e83e0f6 100644
                        (unsigned long)(&__init_begin),
                        (unsigned long)(&__init_end));
 diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
-index e395048..cd38278 100644
+index c8140e1..59257fc 100644
 --- a/arch/x86/mm/init_32.c
 +++ b/arch/x86/mm/init_32.c
 @@ -62,33 +62,6 @@ static noinline int do_test_wp_bit(void);
@@ -32676,8 +33013,8 @@ index e395048..cd38278 100644
 +      permanent_kmaps_init(swapper_pg_dir);
  }
  
--pteval_t __supported_pte_mask __read_mostly = ~(_PAGE_NX | _PAGE_GLOBAL | _PAGE_IOMAP);
-+pteval_t __supported_pte_mask __read_only = ~(_PAGE_NX | _PAGE_GLOBAL | _PAGE_IOMAP);
+-pteval_t __supported_pte_mask __read_mostly = ~(_PAGE_NX | _PAGE_GLOBAL);
++pteval_t __supported_pte_mask __read_only = ~(_PAGE_NX | _PAGE_GLOBAL);
  EXPORT_SYMBOL_GPL(__supported_pte_mask);
  
  /* user-defined highmem size */
@@ -32695,7 +33032,7 @@ index e395048..cd38278 100644
                ((unsigned long)&_etext - (unsigned long)&_text) >> 10);
  
        /*
-@@ -883,6 +885,7 @@ void set_kernel_text_rw(void)
+@@ -884,6 +886,7 @@ void set_kernel_text_rw(void)
        if (!kernel_set_to_readonly)
                return;
  
@@ -32703,7 +33040,7 @@ index e395048..cd38278 100644
        pr_debug("Set kernel text: %lx - %lx for read write\n",
                 start, start+size);
  
-@@ -897,6 +900,7 @@ void set_kernel_text_ro(void)
+@@ -898,6 +901,7 @@ void set_kernel_text_ro(void)
        if (!kernel_set_to_readonly)
                return;
  
@@ -32711,7 +33048,7 @@ index e395048..cd38278 100644
        pr_debug("Set kernel text: %lx - %lx for read only\n",
                 start, start+size);
  
-@@ -925,6 +929,7 @@ void mark_rodata_ro(void)
+@@ -926,6 +930,7 @@ void mark_rodata_ro(void)
        unsigned long start = PFN_ALIGN(_text);
        unsigned long size = PFN_ALIGN(_etext) - start;
  
@@ -32720,19 +33057,19 @@ index e395048..cd38278 100644
        printk(KERN_INFO "Write protecting the kernel text: %luk\n",
                size >> 10);
 diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
-index f35c66c..84b95ef 100644
+index 4e5dfec..6fd6dc5 100644
 --- a/arch/x86/mm/init_64.c
 +++ b/arch/x86/mm/init_64.c
 @@ -151,7 +151,7 @@ early_param("gbpages", parse_direct_gbpages_on);
   * around without checking the pgd every time.
   */
  
--pteval_t __supported_pte_mask __read_mostly = ~_PAGE_IOMAP;
-+pteval_t __supported_pte_mask __read_only = ~(_PAGE_NX | _PAGE_IOMAP);
+-pteval_t __supported_pte_mask __read_mostly = ~0;
++pteval_t __supported_pte_mask __read_only = ~_PAGE_NX;
  EXPORT_SYMBOL_GPL(__supported_pte_mask);
  
  int force_personality32;
-@@ -184,12 +184,29 @@ void sync_global_pgds(unsigned long start, unsigned long end)
+@@ -184,7 +184,12 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed)
  
        for (address = start; address <= end; address += PGDIR_SIZE) {
                const pgd_t *pgd_ref = pgd_offset_k(address);
@@ -32743,7 +33080,9 @@ index f35c66c..84b95ef 100644
                struct page *page;
 +#endif
  
-               if (pgd_none(*pgd_ref))
+               /*
+                * When it is called after memory hot remove, pgd_none()
+@@ -195,6 +200,25 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed)
                        continue;
  
                spin_lock(&pgd_lock);
@@ -32752,27 +33091,34 @@ index f35c66c..84b95ef 100644
 +              for (cpu = 0; cpu < nr_cpu_ids; ++cpu) {
 +                      pgd_t *pgd = pgd_offset_cpu(cpu, user, address);
 +
-+                      if (pgd_none(*pgd))
-+                              set_pgd(pgd, *pgd_ref);
-+                      else
++                      if (!pgd_none(*pgd_ref) && !pgd_none(*pgd))
 +                              BUG_ON(pgd_page_vaddr(*pgd)
 +                                     != pgd_page_vaddr(*pgd_ref));
++
++                      if (removed) {
++                              if (pgd_none(*pgd_ref) && !pgd_none(*pgd))
++                                      pgd_clear(pgd);
++                      } else {
++                              if (pgd_none(*pgd))
++                                      set_pgd(pgd, *pgd_ref);
++                      }
++
 +                      pgd = pgd_offset_cpu(cpu, kernel, address);
 +#else
                list_for_each_entry(page, &pgd_list, lru) {
                        pgd_t *pgd;
                        spinlock_t *pgt_lock;
-@@ -198,6 +215,7 @@ void sync_global_pgds(unsigned long start, unsigned long end)
+@@ -203,6 +227,7 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed)
                        /* the pgt_lock only for Xen */
                        pgt_lock = &pgd_page_get_mm(page)->page_table_lock;
                        spin_lock(pgt_lock);
 +#endif
  
-                       if (pgd_none(*pgd))
-                               set_pgd(pgd, *pgd_ref);
-@@ -205,7 +223,10 @@ void sync_global_pgds(unsigned long start, unsigned long end)
+                       if (!pgd_none(*pgd_ref) && !pgd_none(*pgd))
                                BUG_ON(pgd_page_vaddr(*pgd)
-                                      != pgd_page_vaddr(*pgd_ref));
+@@ -216,7 +241,10 @@ void sync_global_pgds(unsigned long start, unsigned long end, int removed)
+                                       set_pgd(pgd, *pgd_ref);
+                       }
  
 +#ifndef CONFIG_PAX_PER_CPU_PGD
                        spin_unlock(pgt_lock);
@@ -32781,7 +33127,7 @@ index f35c66c..84b95ef 100644
                }
                spin_unlock(&pgd_lock);
        }
-@@ -238,7 +259,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr)
+@@ -249,7 +277,7 @@ static pud_t *fill_pud(pgd_t *pgd, unsigned long vaddr)
  {
        if (pgd_none(*pgd)) {
                pud_t *pud = (pud_t *)spp_getpage();
@@ -32790,7 +33136,7 @@ index f35c66c..84b95ef 100644
                if (pud != pud_offset(pgd, 0))
                        printk(KERN_ERR "PAGETABLE BUG #00! %p <-> %p\n",
                               pud, pud_offset(pgd, 0));
-@@ -250,7 +271,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr)
+@@ -261,7 +289,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr)
  {
        if (pud_none(*pud)) {
                pmd_t *pmd = (pmd_t *) spp_getpage();
@@ -32799,7 +33145,7 @@ index f35c66c..84b95ef 100644
                if (pmd != pmd_offset(pud, 0))
                        printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n",
                               pmd, pmd_offset(pud, 0));
-@@ -279,7 +300,9 @@ void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte)
+@@ -290,7 +318,9 @@ void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte)
        pmd = fill_pmd(pud, vaddr);
        pte = fill_pte(pmd, vaddr);
  
@@ -32809,7 +33155,7 @@ index f35c66c..84b95ef 100644
  
        /*
         * It's enough to flush this one mapping.
-@@ -338,14 +361,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size,
+@@ -349,14 +379,12 @@ static void __init __init_extra_mapping(unsigned long phys, unsigned long size,
                pgd = pgd_offset_k((unsigned long)__va(phys));
                if (pgd_none(*pgd)) {
                        pud = (pud_t *) spp_getpage();
@@ -32826,7 +33172,7 @@ index f35c66c..84b95ef 100644
                }
                pmd = pmd_offset(pud, phys);
                BUG_ON(!pmd_none(*pmd));
-@@ -586,7 +607,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end,
+@@ -597,7 +625,7 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end,
                                              prot);
  
                spin_lock(&init_mm.page_table_lock);
@@ -32835,7 +33181,7 @@ index f35c66c..84b95ef 100644
                spin_unlock(&init_mm.page_table_lock);
        }
        __flush_tlb_all();
-@@ -627,7 +648,7 @@ kernel_physical_mapping_init(unsigned long start,
+@@ -638,7 +666,7 @@ kernel_physical_mapping_init(unsigned long start,
                                                 page_size_mask);
  
                spin_lock(&init_mm.page_table_lock);
@@ -32844,28 +33190,19 @@ index f35c66c..84b95ef 100644
                spin_unlock(&init_mm.page_table_lock);
                pgd_changed = true;
        }
-@@ -1188,8 +1209,8 @@ int kern_addr_valid(unsigned long addr)
+@@ -1217,8 +1245,8 @@ static struct vm_operations_struct gate_vma_ops = {
  static struct vm_area_struct gate_vma = {
-       .vm_start       = VSYSCALL_START,
-       .vm_end         = VSYSCALL_START + (VSYSCALL_MAPPED_PAGES * PAGE_SIZE),
+       .vm_start       = VSYSCALL_ADDR,
+       .vm_end         = VSYSCALL_ADDR + PAGE_SIZE,
 -      .vm_page_prot   = PAGE_READONLY_EXEC,
--      .vm_flags       = VM_READ | VM_EXEC
+-      .vm_flags       = VM_READ | VM_EXEC,
 +      .vm_page_prot   = PAGE_READONLY,
-+      .vm_flags       = VM_READ
++      .vm_flags       = VM_READ,
+       .vm_ops         = &gate_vma_ops,
  };
  
- struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
-@@ -1223,7 +1244,7 @@ int in_gate_area_no_mm(unsigned long addr)
- const char *arch_vma_name(struct vm_area_struct *vma)
- {
--      if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
-+      if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso)
-               return "[vdso]";
-       if (vma == &gate_vma)
-               return "[vsyscall]";
 diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c
-index 7b179b4..6bd17777 100644
+index 7b179b49..6bd17777 100644
 --- a/arch/x86/mm/iomap_32.c
 +++ b/arch/x86/mm/iomap_32.c
 @@ -64,7 +64,11 @@ void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot)
@@ -32881,7 +33218,7 @@ index 7b179b4..6bd17777 100644
  
        return (void *)vaddr;
 diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
-index bc7527e..5e2c495 100644
+index af78e50..0790b03 100644
 --- a/arch/x86/mm/ioremap.c
 +++ b/arch/x86/mm/ioremap.c
 @@ -56,8 +56,8 @@ static int __ioremap_check_ram(unsigned long start_pfn, unsigned long nr_pages,
@@ -32895,7 +33232,7 @@ index bc7527e..5e2c495 100644
                        return 1;
  
        WARN_ONCE(1, "ioremap on RAM pfn 0x%lx\n", start_pfn);
-@@ -268,7 +268,7 @@ EXPORT_SYMBOL(ioremap_prot);
+@@ -280,7 +280,7 @@ EXPORT_SYMBOL(ioremap_prot);
   *
   * Caller must ensure there is only one unmapping for the same pointer.
   */
@@ -32904,7 +33241,7 @@ index bc7527e..5e2c495 100644
  {
        struct vm_struct *p, *o;
  
-@@ -322,6 +322,9 @@ void *xlate_dev_mem_ptr(unsigned long phys)
+@@ -334,6 +334,9 @@ void *xlate_dev_mem_ptr(unsigned long phys)
  
        /* If page is RAM, we can use __va. Otherwise ioremap and unmap. */
        if (page_is_ram(start >> PAGE_SHIFT))
@@ -32914,7 +33251,7 @@ index bc7527e..5e2c495 100644
                return __va(phys);
  
        addr = (void __force *)ioremap_cache(start, PAGE_SIZE);
-@@ -334,13 +337,16 @@ void *xlate_dev_mem_ptr(unsigned long phys)
+@@ -346,13 +349,16 @@ void *xlate_dev_mem_ptr(unsigned long phys)
  void unxlate_dev_mem_ptr(unsigned long phys, void *addr)
  {
        if (page_is_ram(phys >> PAGE_SHIFT))
@@ -32932,7 +33269,7 @@ index bc7527e..5e2c495 100644
  
  static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
  {
-@@ -370,8 +376,7 @@ void __init early_ioremap_init(void)
+@@ -388,8 +394,7 @@ void __init early_ioremap_init(void)
        early_ioremap_setup();
  
        pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
@@ -32943,7 +33280,7 @@ index bc7527e..5e2c495 100644
        /*
         * The boot-ioremap range spans multiple pmds, for which
 diff --git a/arch/x86/mm/kmemcheck/kmemcheck.c b/arch/x86/mm/kmemcheck/kmemcheck.c
-index dd89a13..d77bdcc 100644
+index b4f2e7e..96c9c3e 100644
 --- a/arch/x86/mm/kmemcheck/kmemcheck.c
 +++ b/arch/x86/mm/kmemcheck/kmemcheck.c
 @@ -628,9 +628,9 @@ bool kmemcheck_fault(struct pt_regs *regs, unsigned long address,
@@ -32959,7 +33296,7 @@ index dd89a13..d77bdcc 100644
  
        pte = kmemcheck_pte_lookup(address);
 diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
-index 25e7e13..1964579 100644
+index 919b912..9267313 100644
 --- a/arch/x86/mm/mmap.c
 +++ b/arch/x86/mm/mmap.c
 @@ -52,7 +52,7 @@ static unsigned int stack_maxrandom_size(void)
@@ -33085,11 +33422,11 @@ index 0057a7a..95c7edd 100644
        might_sleep();
        if (is_enabled()) /* recheck and proper locking in *_core() */
 diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
-index 1d045f9..3a00249 100644
+index 1a88370..3f598b5 100644
 --- a/arch/x86/mm/numa.c
 +++ b/arch/x86/mm/numa.c
-@@ -478,7 +478,7 @@ static bool __init numa_meminfo_cover_memory(const struct numa_meminfo *mi)
-       return true;
+@@ -499,7 +499,7 @@ static void __init numa_clear_kernel_node_hotplug(void)
+       }
  }
  
 -static int __init numa_register_memblks(struct numa_meminfo *mi)
@@ -33097,21 +33434,8 @@ index 1d045f9..3a00249 100644
  {
        unsigned long uninitialized_var(pfn_align);
        int i, nid;
-diff --git a/arch/x86/mm/pageattr-test.c b/arch/x86/mm/pageattr-test.c
-index 461bc82..4e091a3 100644
---- a/arch/x86/mm/pageattr-test.c
-+++ b/arch/x86/mm/pageattr-test.c
-@@ -35,7 +35,7 @@ enum {
- static int pte_testbit(pte_t pte)
- {
--      return pte_flags(pte) & _PAGE_UNUSED1;
-+      return pte_flags(pte) & _PAGE_CPA_TEST;
- }
- struct split_state {
 diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
-index ae242a7..1c7998f 100644
+index 36de293..b820ddc 100644
 --- a/arch/x86/mm/pageattr.c
 +++ b/arch/x86/mm/pageattr.c
 @@ -262,7 +262,7 @@ static inline pgprot_t static_protections(pgprot_t prot, unsigned long address,
@@ -33312,7 +33636,7 @@ index 9f0614d..92ae64a 100644
        p += get_opcode(p, &opcode);
        for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
 diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
-index c96314a..433b127 100644
+index 6fb6927..4fc13c0 100644
 --- a/arch/x86/mm/pgtable.c
 +++ b/arch/x86/mm/pgtable.c
 @@ -97,10 +97,71 @@ static inline void pgd_list_del(pgd_t *pgd)
@@ -33588,7 +33912,7 @@ index c96314a..433b127 100644
        paravirt_pgd_free(mm, pgd);
        free_page((unsigned long)pgd);
 diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
-index 4dd8cf6..f9d143e 100644
+index 75cc097..79a097f 100644
 --- a/arch/x86/mm/pgtable_32.c
 +++ b/arch/x86/mm/pgtable_32.c
 @@ -47,10 +47,13 @@ void set_pte_vaddr(unsigned long vaddr, pte_t pteval)
@@ -33661,7 +33985,7 @@ index 90555bf..f5f1828 100644
  }
  
 diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
-index dd8dda1..9e9b0f6 100644
+index ee61c36..e6fedeb 100644
 --- a/arch/x86/mm/tlb.c
 +++ b/arch/x86/mm/tlb.c
 @@ -48,7 +48,11 @@ void leave_mm(int cpu)
@@ -33673,9 +33997,9 @@ index dd8dda1..9e9b0f6 100644
                load_cr3(swapper_pg_dir);
 +#endif
 +
-       }
- }
- EXPORT_SYMBOL_GPL(leave_mm);
+               /*
+                * This gets called in the idle path where RCU
+                * functions differently.  Tracing normally
 diff --git a/arch/x86/mm/uderef_64.c b/arch/x86/mm/uderef_64.c
 new file mode 100644
 index 0000000..dace51c
@@ -33720,7 +34044,7 @@ index 0000000..dace51c
 +EXPORT_SYMBOL(__pax_close_userland);
 +#endif
 diff --git a/arch/x86/net/bpf_jit.S b/arch/x86/net/bpf_jit.S
-index 0149575..f746de8 100644
+index 6440221..f84b5c7 100644
 --- a/arch/x86/net/bpf_jit.S
 +++ b/arch/x86/net/bpf_jit.S
 @@ -9,6 +9,7 @@
@@ -33731,7 +34055,7 @@ index 0149575..f746de8 100644
  
  /*
   * Calling convention :
-@@ -35,6 +36,7 @@ sk_load_word_positive_offset:
+@@ -38,6 +39,7 @@ sk_load_word_positive_offset:
        jle     bpf_slow_path_word
        mov     (SKBDATA,%rsi),%eax
        bswap   %eax                    /* ntohl() */
@@ -33739,7 +34063,7 @@ index 0149575..f746de8 100644
        ret
  
  sk_load_half:
-@@ -52,6 +54,7 @@ sk_load_half_positive_offset:
+@@ -55,6 +57,7 @@ sk_load_half_positive_offset:
        jle     bpf_slow_path_half
        movzwl  (SKBDATA,%rsi),%eax
        rol     $8,%ax                  # ntohs()
@@ -33747,32 +34071,24 @@ index 0149575..f746de8 100644
        ret
  
  sk_load_byte:
-@@ -66,6 +69,7 @@ sk_load_byte_positive_offset:
+@@ -69,6 +72,7 @@ sk_load_byte_positive_offset:
        cmp     %esi,%r9d   /* if (offset >= hlen) goto bpf_slow_path_byte */
        jle     bpf_slow_path_byte
        movzbl  (SKBDATA,%rsi),%eax
 +      pax_force_retaddr
        ret
  
- /**
-@@ -87,6 +91,7 @@ sk_load_byte_msh_positive_offset:
-       movzbl  (SKBDATA,%rsi),%ebx
-       and     $15,%bl
-       shl     $2,%bl
-+      pax_force_retaddr
-       ret
  /* rsi contains offset and can be scratched */
-@@ -109,6 +114,7 @@ bpf_slow_path_word:
+@@ -90,6 +94,7 @@ bpf_slow_path_word:
        js      bpf_error
-       mov     -12(%rbp),%eax
+       mov     - MAX_BPF_STACK + 32(%rbp),%eax
        bswap   %eax
 +      pax_force_retaddr
        ret
  
  bpf_slow_path_half:
-@@ -117,12 +123,14 @@ bpf_slow_path_half:
-       mov     -12(%rbp),%ax
+@@ -98,12 +103,14 @@ bpf_slow_path_half:
+       mov     - MAX_BPF_STACK + 32(%rbp),%ax
        rol     $8,%ax
        movzwl  %ax,%eax
 +      pax_force_retaddr
@@ -33781,20 +34097,12 @@ index 0149575..f746de8 100644
  bpf_slow_path_byte:
        bpf_slow_path_common(1)
        js      bpf_error
-       movzbl  -12(%rbp),%eax
-+      pax_force_retaddr
-       ret
- bpf_slow_path_byte_msh:
-@@ -133,6 +141,7 @@ bpf_slow_path_byte_msh:
-       and     $15,%al
-       shl     $2,%al
-       xchg    %eax,%ebx
+       movzbl  - MAX_BPF_STACK + 32(%rbp),%eax
 +      pax_force_retaddr
        ret
  
  #define sk_negative_common(SIZE)                              \
-@@ -157,6 +166,7 @@ sk_load_word_negative_offset:
+@@ -126,6 +133,7 @@ sk_load_word_negative_offset:
        sk_negative_common(4)
        mov     (%rax), %eax
        bswap   %eax
@@ -33802,7 +34110,7 @@ index 0149575..f746de8 100644
        ret
  
  bpf_slow_path_half_neg:
-@@ -168,6 +178,7 @@ sk_load_half_negative_offset:
+@@ -137,6 +145,7 @@ sk_load_half_negative_offset:
        mov     (%rax),%ax
        rol     $8,%ax
        movzwl  %ax,%eax
@@ -33810,334 +34118,79 @@ index 0149575..f746de8 100644
        ret
  
  bpf_slow_path_byte_neg:
-@@ -177,6 +188,7 @@ sk_load_byte_negative_offset:
+@@ -146,6 +155,7 @@ sk_load_byte_negative_offset:
        .globl  sk_load_byte_negative_offset
        sk_negative_common(1)
        movzbl  (%rax), %eax
 +      pax_force_retaddr
        ret
  
- bpf_slow_path_byte_msh_neg:
-@@ -190,6 +202,7 @@ sk_load_byte_msh_negative_offset:
-       and     $15,%al
-       shl     $2,%al
-       xchg    %eax,%ebx
-+      pax_force_retaddr
-       ret
  bpf_error:
-@@ -197,4 +210,5 @@ bpf_error:
-       xor             %eax,%eax
-       mov             -8(%rbp),%rbx
+@@ -156,4 +166,5 @@ bpf_error:
+       mov     - MAX_BPF_STACK + 16(%rbp),%r14
+       mov     - MAX_BPF_STACK + 24(%rbp),%r15
        leaveq
 +      pax_force_retaddr
        ret
 diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
-index 6d5663a..f1ec380 100644
+index 3f62734..a57894f 100644
 --- a/arch/x86/net/bpf_jit_comp.c
 +++ b/arch/x86/net/bpf_jit_comp.c
-@@ -50,13 +50,90 @@ static inline u8 *emit_code(u8 *ptr, u32 bytes, unsigned int len)
-       return ptr + len;
- }
+@@ -13,7 +13,11 @@
+ #include <linux/if_vlan.h>
+ #include <asm/cacheflush.h>
  
-+#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
-+#define MAX_INSTR_CODE_SIZE 96
-+#else
-+#define MAX_INSTR_CODE_SIZE 64
-+#endif
-+
- #define EMIT(bytes, len)      do { prog = emit_code(prog, bytes, len); } while (0)
- #define EMIT1(b1)             EMIT(b1, 1)
- #define EMIT2(b1, b2)         EMIT((b1) + ((b2) << 8), 2)
- #define EMIT3(b1, b2, b3)     EMIT((b1) + ((b2) << 8) + ((b3) << 16), 3)
- #define EMIT4(b1, b2, b3, b4)   EMIT((b1) + ((b2) << 8) + ((b3) << 16) + ((b4) << 24), 4)
-+
-+#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
-+/* original constant will appear in ecx */
-+#define DILUTE_CONST_SEQUENCE(_off, _key)     \
-+do {                                          \
-+      /* mov ecx, randkey */                  \
-+      EMIT1(0xb9);                            \
-+      EMIT(_key, 4);                          \
-+      /* xor ecx, randkey ^ off */            \
-+      EMIT2(0x81, 0xf1);                      \
-+      EMIT((_key) ^ (_off), 4);               \
-+} while (0)
-+
-+#define EMIT1_off32(b1, _off)                                                         \
-+do {                                                                                  \
-+      switch (b1) {                                                                   \
-+              case 0x05: /* add eax, imm32 */                                         \
-+              case 0x2d: /* sub eax, imm32 */                                         \
-+              case 0x25: /* and eax, imm32 */                                         \
-+              case 0x0d: /* or eax, imm32 */                                          \
-+              case 0xb8: /* mov eax, imm32 */                                         \
-+              case 0x35: /* xor eax, imm32 */                                         \
-+              case 0x3d: /* cmp eax, imm32 */                                         \
-+              case 0xa9: /* test eax, imm32 */                                        \
-+                      DILUTE_CONST_SEQUENCE(_off, randkey);                           \
-+                      EMIT2((b1) - 4, 0xc8); /* convert imm instruction to eax, ecx */\
-+                      break;                                                          \
-+              case 0xbb: /* mov ebx, imm32 */                                         \
-+                      DILUTE_CONST_SEQUENCE(_off, randkey);                           \
-+                      /* mov ebx, ecx */                                              \
-+                      EMIT2(0x89, 0xcb);                                              \
-+                      break;                                                          \
-+              case 0xbe: /* mov esi, imm32 */                                         \
-+                      DILUTE_CONST_SEQUENCE(_off, randkey);                           \
-+                      /* mov esi, ecx */                                              \
-+                      EMIT2(0x89, 0xce);                                              \
-+                      break;                                                          \
-+              case 0xe8: /* call rel imm32, always to known funcs */                  \
-+                      EMIT1(b1);                                                      \
-+                      EMIT(_off, 4);                                                  \
-+                      break;                                                          \
-+              case 0xe9: /* jmp rel imm32 */                                          \
-+                      EMIT1(b1);                                                      \
-+                      EMIT(_off, 4);                                                  \
-+                      /* prevent fall-through, we're not called if off = 0 */         \
-+                      EMIT(0xcccccccc, 4);                                            \
-+                      EMIT(0xcccccccc, 4);                                            \
-+                      break;                                                          \
-+              default:                                                                \
-+                      BUILD_BUG();                                                    \
-+      }                                                                               \
-+} while (0)
-+
-+#define EMIT2_off32(b1, b2, _off)                                     \
-+do {                                                                  \
-+      if ((b1) == 0x8d && (b2) == 0xb3) { /* lea esi, [rbx+imm32] */  \
-+              EMIT2(0x8d, 0xb3); /* lea esi, [rbx+randkey] */         \
-+              EMIT(randkey, 4);                                       \
-+              EMIT2(0x8d, 0xb6); /* lea esi, [esi+off-randkey] */     \
-+              EMIT((_off) - randkey, 4);                              \
-+      } else if ((b1) == 0x69 && (b2) == 0xc0) { /* imul eax, imm32 */\
-+              DILUTE_CONST_SEQUENCE(_off, randkey);                   \
-+              /* imul eax, ecx */                                     \
-+              EMIT3(0x0f, 0xaf, 0xc1);                                \
-+      } else {                                                        \
-+              BUILD_BUG();                                            \
-+      }                                                               \
-+} while (0)
-+#else
- #define EMIT1_off32(b1, off)  do { EMIT1(b1); EMIT(off, 4);} while (0)
-+#define EMIT2_off32(b1, b2, off) do { EMIT2(b1, b2); EMIT(off, 4);} while (0)
-+#endif
- #define CLEAR_A() EMIT2(0x31, 0xc0) /* xor %eax,%eax */
- #define CLEAR_X() EMIT2(0x31, 0xdb) /* xor %ebx,%ebx */
-@@ -91,6 +168,24 @@ do {                                                                       \
- #define X86_JBE 0x76
- #define X86_JA  0x77
-+#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
-+#define APPEND_FLOW_VERIFY()  \
-+do {                          \
-+      /* mov ecx, randkey */  \
-+      EMIT1(0xb9);            \
-+      EMIT(randkey, 4);       \
-+      /* cmp ecx, randkey */  \
-+      EMIT2(0x81, 0xf9);      \
-+      EMIT(randkey, 4);       \
-+      /* jz after 8 int 3s */ \
-+      EMIT2(0x74, 0x08);      \
-+      EMIT(0xcccccccc, 4);    \
-+      EMIT(0xcccccccc, 4);    \
-+} while (0)
++#ifdef CONFIG_GRKERNSEC_BPF_HARDEN
++int bpf_jit_enable __read_only;
 +#else
-+#define APPEND_FLOW_VERIFY() do { } while (0)
+ int bpf_jit_enable __read_mostly;
 +#endif
-+
- #define EMIT_COND_JMP(op, offset)                             \
- do {                                                          \
-       if (is_near(offset))                                    \
-@@ -98,6 +193,7 @@ do {                                                                \
-       else {                                                  \
-               EMIT2(0x0f, op + 0x10);                         \
-               EMIT(offset, 4); /* jxx .+off32 */              \
-+              APPEND_FLOW_VERIFY();                           \
-       }                                                       \
- } while (0)
  
-@@ -145,55 +241,54 @@ static int pkt_type_offset(void)
-       return -1;
- }
--struct bpf_binary_header {
--      unsigned int    pages;
--      /* Note : for security reasons, bpf code will follow a randomly
--       * sized amount of int3 instructions
--       */
--      u8              image[];
--};
--
--static struct bpf_binary_header *bpf_alloc_binary(unsigned int proglen,
-+/* Note : for security reasons, bpf code will follow a randomly
-+ * sized amount of int3 instructions
-+ */
-+static u8 *bpf_alloc_binary(unsigned int proglen,
-                                                 u8 **image_ptr)
+ /*
+  * assembly code in arch/x86/net/bpf_jit.S
+@@ -174,7 +178,9 @@ static inline u8 add_2reg(u8 byte, u32 dst_reg, u32 src_reg)
+ static void jit_fill_hole(void *area, unsigned int size)
  {
-       unsigned int sz, hole;
--      struct bpf_binary_header *header;
-+      u8 *header;
-       /* Most of BPF filters are really small,
-        * but if some of them fill a page, allow at least
-        * 128 extra bytes to insert a random section of int3
-        */
--      sz = round_up(proglen + sizeof(*header) + 128, PAGE_SIZE);
--      header = module_alloc(sz);
-+      sz = round_up(proglen + 128, PAGE_SIZE);
-+      header = module_alloc_exec(sz);
-       if (!header)
-               return NULL;
+       /* fill whole space with int3 instructions */
 +      pax_open_kernel();
-       memset(header, 0xcc, sz); /* fill whole space with int3 instructions */
+       memset(area, 0xcc, size);
 +      pax_close_kernel();
+ }
  
--      header->pages = sz / PAGE_SIZE;
--      hole = min(sz - (proglen + sizeof(*header)), PAGE_SIZE - sizeof(*header));
-+      hole = PAGE_SIZE - (proglen & ~PAGE_MASK);
-       /* insert a random number of int3 instructions before BPF code */
--      *image_ptr = &header->image[prandom_u32() % hole];
-+      *image_ptr = &header[prandom_u32() % hole];
-       return header;
- }
- void bpf_jit_compile(struct sk_filter *fp)
- {
--      u8 temp[64];
-+      u8 temp[MAX_INSTR_CODE_SIZE];
-       u8 *prog;
-       unsigned int proglen, oldproglen = 0;
-       int ilen, i;
-       int t_offset, f_offset;
-       u8 t_op, f_op, seen = 0, pass;
-       u8 *image = NULL;
--      struct bpf_binary_header *header = NULL;
-+      u8 *header = NULL;
-       u8 *func;
-       int pc_ret0 = -1; /* bpf index of first RET #0 instruction (if any) */
-       unsigned int cleanup_addr; /* epilogue code offset */
-       unsigned int *addrs;
-       const struct sock_filter *filter = fp->insns;
-       int flen = fp->len;
-+#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
-+      unsigned int randkey;
-+#endif
-       if (!bpf_jit_enable)
-               return;
-@@ -203,10 +298,10 @@ void bpf_jit_compile(struct sk_filter *fp)
-               return;
-       /* Before first pass, make a rough estimation of addrs[]
--       * each bpf instruction is translated to less than 64 bytes
-+       * each bpf instruction is translated to less than MAX_INSTR_CODE_SIZE bytes
-        */
-       for (proglen = 0, i = 0; i < flen; i++) {
--              proglen += 64;
-+              proglen += MAX_INSTR_CODE_SIZE;
-               addrs[i] = proglen;
-       }
-       cleanup_addr = proglen; /* epilogue address */
-@@ -285,6 +380,10 @@ void bpf_jit_compile(struct sk_filter *fp)
-               for (i = 0; i < flen; i++) {
-                       unsigned int K = filter[i].k;
-+#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
-+                      randkey = prandom_u32();
-+#endif
-+
-                       switch (filter[i].code) {
-                       case BPF_S_ALU_ADD_X: /* A += X; */
-                               seen |= SEEN_XREG;
-@@ -317,10 +416,8 @@ void bpf_jit_compile(struct sk_filter *fp)
-                       case BPF_S_ALU_MUL_K: /* A *= K */
-                               if (is_imm8(K))
-                                       EMIT3(0x6b, 0xc0, K); /* imul imm8,%eax,%eax */
--                              else {
--                                      EMIT2(0x69, 0xc0);              /* imul imm32,%eax */
--                                      EMIT(K, 4);
--                              }
-+                              else
-+                                      EMIT2_off32(0x69, 0xc0, K); /* imul imm32,%eax */
-                               break;
-                       case BPF_S_ALU_DIV_X: /* A /= X; */
-                               seen |= SEEN_XREG;
-@@ -364,7 +461,11 @@ void bpf_jit_compile(struct sk_filter *fp)
-                                       break;
-                               }
-                               EMIT2(0x31, 0xd2);      /* xor %edx,%edx */
-+#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
-+                              DILUTE_CONST_SEQUENCE(K, randkey);
-+#else
-                               EMIT1(0xb9);EMIT(K, 4); /* mov imm32,%ecx */
-+#endif
-                               EMIT2(0xf7, 0xf1);      /* div %ecx */
-                               EMIT2(0x89, 0xd0);      /* mov %edx,%eax */
-                               break;
-@@ -372,7 +473,11 @@ void bpf_jit_compile(struct sk_filter *fp)
-                               if (K == 1)
-                                       break;
-                               EMIT2(0x31, 0xd2);      /* xor %edx,%edx */
-+#ifdef CONFIG_GRKERNSEC_JIT_HARDEN
-+                              DILUTE_CONST_SEQUENCE(K, randkey);
-+#else
-                               EMIT1(0xb9);EMIT(K, 4); /* mov imm32,%ecx */
-+#endif
-                               EMIT2(0xf7, 0xf1);      /* div %ecx */
-                               break;
-                       case BPF_S_ALU_AND_X:
-@@ -643,8 +748,7 @@ common_load_ind:           seen |= SEEN_DATAREF | SEEN_XREG;
-                                       if (is_imm8(K)) {
-                                               EMIT3(0x8d, 0x73, K); /* lea imm8(%rbx), %esi */
-                                       } else {
--                                              EMIT2(0x8d, 0xb3); /* lea imm32(%rbx),%esi */
--                                              EMIT(K, 4);
-+                                              EMIT2_off32(0x8d, 0xb3, K); /* lea imm32(%rbx),%esi */
-                                       }
-                               } else {
-                                       EMIT2(0x89,0xde); /* mov %ebx,%esi */
-@@ -734,10 +838,12 @@ cond_branch:                     f_offset = addrs[i + filter[i].jf] - addrs[i];
-                               if (unlikely(proglen + ilen > oldproglen)) {
-                                       pr_err("bpb_jit_compile fatal error\n");
-                                       kfree(addrs);
--                                      module_free(NULL, header);
-+                                      module_free_exec(NULL, image);
-                                       return;
-                               }
-+                              pax_open_kernel();
-                               memcpy(image + proglen, temp, ilen);
-+                              pax_close_kernel();
+ struct jit_context {
+@@ -894,7 +900,9 @@ common_load:
+                               pr_err("bpf_jit_compile fatal error\n");
+                               return -EFAULT;
                        }
-                       proglen += ilen;
-                       addrs[i] = proglen;
-@@ -770,7 +876,6 @@ cond_branch:                       f_offset = addrs[i + filter[i].jf] - addrs[i];
++                      pax_open_kernel();
+                       memcpy(image + proglen, temp, ilen);
++                      pax_close_kernel();
+               }
+               proglen += ilen;
+               addrs[i] = proglen;
+@@ -966,7 +974,6 @@ void bpf_int_jit_compile(struct bpf_prog *prog)
  
        if (image) {
                bpf_flush_icache(header, image + proglen);
 -              set_memory_ro((unsigned long)header, header->pages);
-               fp->bpf_func = (void *)image;
-               fp->jited = 1;
+               prog->bpf_func = (void *)image;
+               prog->jited = true;
        }
-@@ -783,10 +888,9 @@ static void bpf_jit_free_deferred(struct work_struct *work)
- {
-       struct sk_filter *fp = container_of(work, struct sk_filter, work);
+@@ -979,12 +986,8 @@ void bpf_jit_free(struct bpf_prog *fp)
        unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK;
--      struct bpf_binary_header *header = (void *)addr;
+       struct bpf_binary_header *header = (void *)addr;
+-      if (!fp->jited)
+-              goto free_filter;
++      if (fp->jited)
++              bpf_jit_binary_free(header);
  
 -      set_memory_rw(addr, header->pages);
--      module_free(NULL, header);
-+      set_memory_rw(addr, 1);
-+      module_free_exec(NULL, (void *)addr);
-       kfree(fp);
+-      bpf_jit_binary_free(header);
+-
+-free_filter:
+       bpf_prog_unlock_free(fp);
  }
 diff --git a/arch/x86/oprofile/backtrace.c b/arch/x86/oprofile/backtrace.c
 index 5d04be5..2beeaa2 100644
 --- a/arch/x86/oprofile/backtrace.c
@@ -34175,7 +34228,7 @@ index 5d04be5..2beeaa2 100644
                if (depth)
                        dump_trace(NULL, regs, (unsigned long *)stack, 0,
 diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
-index 379e8bd..6386e09 100644
+index 1d2e639..f6ef82a 100644
 --- a/arch/x86/oprofile/nmi_int.c
 +++ b/arch/x86/oprofile/nmi_int.c
 @@ -23,6 +23,7 @@
@@ -34258,23 +34311,23 @@ index 71e8a67..6a313bb 100644
  struct op_counter_config;
  
 diff --git a/arch/x86/pci/intel_mid_pci.c b/arch/x86/pci/intel_mid_pci.c
-index 84b9d67..260e5ff 100644
+index b9958c3..24229ab 100644
 --- a/arch/x86/pci/intel_mid_pci.c
 +++ b/arch/x86/pci/intel_mid_pci.c
-@@ -245,7 +245,7 @@ int __init intel_mid_pci_init(void)
-       pr_info("Intel MID platform detected, using MID PCI ops\n");
+@@ -250,7 +250,7 @@ int __init intel_mid_pci_init(void)
        pci_mmcfg_late_init();
        pcibios_enable_irq = intel_mid_pci_irq_enable;
+       pcibios_disable_irq = intel_mid_pci_irq_disable;
 -      pci_root_ops = intel_mid_pci_ops;
 +      memcpy((void *)&pci_root_ops, &intel_mid_pci_ops, sizeof pci_root_ops);
        pci_soc_mode = 1;
        /* Continue with standard init */
        return 1;
 diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
-index 84112f5..6334d60 100644
+index eb500c2..eab9e70 100644
 --- a/arch/x86/pci/irq.c
 +++ b/arch/x86/pci/irq.c
-@@ -50,7 +50,7 @@ struct irq_router {
+@@ -51,7 +51,7 @@ struct irq_router {
  struct irq_router_handler {
        u16 vendor;
        int (*probe)(struct irq_router *r, struct pci_dev *router, u16 device);
@@ -34282,8 +34335,8 @@ index 84112f5..6334d60 100644
 +} __do_const;
  
  int (*pcibios_enable_irq)(struct pci_dev *dev) = pirq_enable_irq;
- void (*pcibios_disable_irq)(struct pci_dev *dev) = NULL;
-@@ -790,7 +790,7 @@ static __init int pico_router_probe(struct irq_router *r, struct pci_dev *router
+ void (*pcibios_disable_irq)(struct pci_dev *dev) = pirq_disable_irq;
+@@ -791,7 +791,7 @@ static __init int pico_router_probe(struct irq_router *r, struct pci_dev *router
        return 0;
  }
  
@@ -34292,7 +34345,7 @@ index 84112f5..6334d60 100644
        { PCI_VENDOR_ID_INTEL, intel_router_probe },
        { PCI_VENDOR_ID_AL, ali_router_probe },
        { PCI_VENDOR_ID_ITE, ite_router_probe },
-@@ -817,7 +817,7 @@ static struct pci_dev *pirq_router_dev;
+@@ -818,7 +818,7 @@ static struct pci_dev *pirq_router_dev;
  static void __init pirq_find_router(struct irq_router *r)
  {
        struct irq_routing_table *rt = pirq_table;
@@ -34301,7 +34354,7 @@ index 84112f5..6334d60 100644
  
  #ifdef CONFIG_PCI_BIOS
        if (!rt->signature) {
-@@ -1090,7 +1090,7 @@ static int __init fix_acer_tm360_irqrouting(const struct dmi_system_id *d)
+@@ -1091,7 +1091,7 @@ static int __init fix_acer_tm360_irqrouting(const struct dmi_system_id *d)
        return 0;
  }
  
@@ -34311,19 +34364,19 @@ index 84112f5..6334d60 100644
                .callback = fix_broken_hp_bios_irq9,
                .ident = "HP Pavilion N5400 Series Laptop",
 diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c
-index c77b24a..c979855 100644
+index 9b83b90..4112152 100644
 --- a/arch/x86/pci/pcbios.c
 +++ b/arch/x86/pci/pcbios.c
 @@ -79,7 +79,7 @@ union bios32 {
  static struct {
        unsigned long address;
        unsigned short segment;
--} bios32_indirect = { 0, __KERNEL_CS };
-+} bios32_indirect __read_only = { 0, __PCIBIOS_CS };
+-} bios32_indirect __initdata = { 0, __KERNEL_CS };
++} bios32_indirect __initconst = { 0, __PCIBIOS_CS };
  
  /*
   * Returns the entry point for the given service, NULL on error
-@@ -92,37 +92,80 @@ static unsigned long bios32_service(unsigned long service)
+@@ -92,37 +92,80 @@ static unsigned long __init bios32_service(unsigned long service)
        unsigned long length;           /* %ecx */
        unsigned long entry;            /* %edx */
        unsigned long flags;
@@ -34414,9 +34467,9 @@ index c77b24a..c979855 100644
 -static int pci_bios_present;
 +static int pci_bios_present __read_only;
  
- static int check_pcibios(void)
+ static int __init check_pcibios(void)
  {
-@@ -131,11 +174,13 @@ static int check_pcibios(void)
+@@ -131,11 +174,13 @@ static int __init check_pcibios(void)
        unsigned long flags, pcibios_entry;
  
        if ((pcibios_entry = bios32_service(PCI_SERVICE))) {
@@ -34433,7 +34486,7 @@ index c77b24a..c979855 100644
                        "jc 1f\n\t"
                        "xor %%ah, %%ah\n"
                        "1:"
-@@ -144,7 +189,8 @@ static int check_pcibios(void)
+@@ -144,7 +189,8 @@ static int __init check_pcibios(void)
                          "=b" (ebx),
                          "=c" (ecx)
                        : "1" (PCIBIOS_PCI_BIOS_PRESENT),
@@ -34613,10 +34666,10 @@ index c77b24a..c979855 100644
  }
  EXPORT_SYMBOL(pcibios_set_irq_routing);
 diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
-index 9ee3491..872192f 100644
+index 40e7cda..c7e6672 100644
 --- a/arch/x86/platform/efi/efi_32.c
 +++ b/arch/x86/platform/efi/efi_32.c
-@@ -59,11 +59,22 @@ void efi_call_phys_prelog(void)
+@@ -61,11 +61,22 @@ void __init efi_call_phys_prolog(void)
  {
        struct desc_ptr gdt_descr;
  
@@ -34639,7 +34692,7 @@ index 9ee3491..872192f 100644
        gdt_descr.address = __pa(get_cpu_gdt_table(0));
        gdt_descr.size = GDT_SIZE - 1;
        load_gdt(&gdt_descr);
-@@ -73,11 +84,24 @@ void efi_call_phys_epilog(void)
+@@ -75,11 +86,24 @@ void __init efi_call_phys_epilog(void)
  {
        struct desc_ptr gdt_descr;
  
@@ -34665,10 +34718,10 @@ index 9ee3491..872192f 100644
  
        local_irq_restore(efi_rt_eflags);
 diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
-index 290d397..3906bcd 100644
+index 35aecb6..46177db 100644
 --- a/arch/x86/platform/efi/efi_64.c
 +++ b/arch/x86/platform/efi/efi_64.c
-@@ -99,6 +99,11 @@ void __init efi_call_phys_prelog(void)
+@@ -99,6 +99,11 @@ void __init efi_call_phys_prolog(void)
                vaddress = (unsigned long)__va(pgd * PGDIR_SIZE);
                set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress));
        }
@@ -34692,8 +34745,33 @@ index 290d397..3906bcd 100644
        __flush_tlb_all();
        local_irq_restore(efi_flags);
        early_code_mapping_set_exec(0);
+@@ -146,8 +156,23 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
+       unsigned npages;
+       pgd_t *pgd;
+-      if (efi_enabled(EFI_OLD_MEMMAP))
++      if (efi_enabled(EFI_OLD_MEMMAP)) {
++              /* PaX: We need to disable the NX bit in the PGD, otherwise we won't be
++               * able to execute the EFI services.
++               */
++              if (__supported_pte_mask & _PAGE_NX) {
++                      unsigned long addr = (unsigned long) __va(0);
++                      pgd_t pe = __pgd(pgd_val(*pgd_offset_k(addr)) &  ~_PAGE_NX);
++
++                      pr_alert("PAX: Disabling NX protection for low memory map. Try booting without \"efi=old_map\"\n");
++#ifdef CONFIG_PAX_PER_CPU_PGD
++                      set_pgd(pgd_offset_cpu(0, kernel, addr), pe);
++#endif
++                      set_pgd(pgd_offset_k(addr), pe);
++              }
++
+               return 0;
++      }
+       efi_scratch.efi_pgt = (pgd_t *)(unsigned long)real_mode_header->trampoline_pgd;
+       pgd = __va(efi_scratch.efi_pgt);
 diff --git a/arch/x86/platform/efi/efi_stub_32.S b/arch/x86/platform/efi/efi_stub_32.S
-index fbe66e6..eae5e38 100644
+index 040192b..7d3300f 100644
 --- a/arch/x86/platform/efi/efi_stub_32.S
 +++ b/arch/x86/platform/efi/efi_stub_32.S
 @@ -6,7 +6,9 @@
@@ -34716,7 +34794,7 @@ index fbe66e6..eae5e38 100644
        /*
         * 0. The function can only be called in Linux kernel. So CS has been
 @@ -36,10 +38,24 @@ ENTRY(efi_call_phys)
-        * The mapping of lower virtual memory has been created in prelog and
+        * The mapping of lower virtual memory has been created in prolog and
         * epilog.
         */
 -      movl    $1f, %edx
@@ -34822,7 +34900,7 @@ index fbe66e6..eae5e38 100644
        .long 0
  efi_rt_function_ptr:
 diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S
-index e0984ef..a062dac 100644
+index 5fcda72..cd4dc41 100644
 --- a/arch/x86/platform/efi/efi_stub_64.S
 +++ b/arch/x86/platform/efi/efi_stub_64.S
 @@ -11,6 +11,7 @@
@@ -34833,62 +34911,25 @@ index e0984ef..a062dac 100644
  
  #define SAVE_XMM                      \
        mov %rsp, %rax;                 \
-@@ -81,6 +82,7 @@ ENTRY(efi_call0)
-       RESTORE_PGT
-       addq $32, %rsp
-       RESTORE_XMM
-+      pax_force_retaddr 0, 1
-       ret
- ENDPROC(efi_call0)
-@@ -93,6 +95,7 @@ ENTRY(efi_call1)
-       RESTORE_PGT
-       addq $32, %rsp
-       RESTORE_XMM
-+      pax_force_retaddr 0, 1
-       ret
- ENDPROC(efi_call1)
-@@ -105,6 +108,7 @@ ENTRY(efi_call2)
-       RESTORE_PGT
-       addq $32, %rsp
-       RESTORE_XMM
-+      pax_force_retaddr 0, 1
-       ret
- ENDPROC(efi_call2)
-@@ -118,6 +122,7 @@ ENTRY(efi_call3)
-       RESTORE_PGT
-       addq $32, %rsp
-       RESTORE_XMM
-+      pax_force_retaddr 0, 1
-       ret
- ENDPROC(efi_call3)
-@@ -132,6 +137,7 @@ ENTRY(efi_call4)
-       RESTORE_PGT
-       addq $32, %rsp
-       RESTORE_XMM
-+      pax_force_retaddr 0, 1
-       ret
- ENDPROC(efi_call4)
-@@ -147,6 +153,7 @@ ENTRY(efi_call5)
+@@ -88,6 +89,7 @@ ENTRY(efi_call)
        RESTORE_PGT
        addq $48, %rsp
        RESTORE_XMM
 +      pax_force_retaddr 0, 1
        ret
- ENDPROC(efi_call5)
-@@ -165,6 +172,7 @@ ENTRY(efi_call6)
-       RESTORE_PGT
-       addq $48, %rsp
-       RESTORE_XMM
-+      pax_force_retaddr 0, 1
-       ret
- ENDPROC(efi_call6)
+ ENDPROC(efi_call)
  
+@@ -245,8 +247,8 @@ efi_gdt64:
+       .long   0                       /* Filled out by user */
+       .word   0
+       .quad   0x0000000000000000      /* NULL descriptor */
+-      .quad   0x00af9a000000ffff      /* __KERNEL_CS */
+-      .quad   0x00cf92000000ffff      /* __KERNEL_DS */
++      .quad   0x00af9b000000ffff      /* __KERNEL_CS */
++      .quad   0x00cf93000000ffff      /* __KERNEL_DS */
+       .quad   0x0080890000000000      /* TS descriptor */
+       .quad   0x0000000000000000      /* TS continued */
+ efi_gdt64_end:
 diff --git a/arch/x86/platform/intel-mid/intel-mid.c b/arch/x86/platform/intel-mid/intel-mid.c
 index 1bbedc4..eb795b5 100644
 --- a/arch/x86/platform/intel-mid/intel-mid.c
@@ -34905,6 +34946,52 @@ index 1bbedc4..eb795b5 100644
  }
  
  static unsigned long __init intel_mid_calibrate_tsc(void)
+diff --git a/arch/x86/platform/intel-mid/intel_mid_weak_decls.h b/arch/x86/platform/intel-mid/intel_mid_weak_decls.h
+index 3c1c386..59a68ed 100644
+--- a/arch/x86/platform/intel-mid/intel_mid_weak_decls.h
++++ b/arch/x86/platform/intel-mid/intel_mid_weak_decls.h
+@@ -13,6 +13,6 @@
+ /* For every CPU addition a new get_<cpuname>_ops interface needs
+  * to be added.
+  */
+-extern void *get_penwell_ops(void);
+-extern void *get_cloverview_ops(void);
+-extern void *get_tangier_ops(void);
++extern const void *get_penwell_ops(void);
++extern const void *get_cloverview_ops(void);
++extern const void *get_tangier_ops(void);
+diff --git a/arch/x86/platform/intel-mid/mfld.c b/arch/x86/platform/intel-mid/mfld.c
+index 23381d2..8ddc10e 100644
+--- a/arch/x86/platform/intel-mid/mfld.c
++++ b/arch/x86/platform/intel-mid/mfld.c
+@@ -64,12 +64,12 @@ static void __init penwell_arch_setup(void)
+       pm_power_off = mfld_power_off;
+ }
+-void *get_penwell_ops(void)
++const void *get_penwell_ops(void)
+ {
+       return &penwell_ops;
+ }
+-void *get_cloverview_ops(void)
++const void *get_cloverview_ops(void)
+ {
+       return &penwell_ops;
+ }
+diff --git a/arch/x86/platform/intel-mid/mrfl.c b/arch/x86/platform/intel-mid/mrfl.c
+index aaca917..66eadbc 100644
+--- a/arch/x86/platform/intel-mid/mrfl.c
++++ b/arch/x86/platform/intel-mid/mrfl.c
+@@ -97,7 +97,7 @@ static struct intel_mid_ops tangier_ops = {
+       .arch_setup = tangier_arch_setup,
+ };
+-void *get_tangier_ops(void)
++const void *get_tangier_ops(void)
+ {
+       return &tangier_ops;
+ }
 diff --git a/arch/x86/platform/olpc/olpc_dt.c b/arch/x86/platform/olpc/olpc_dt.c
 index d6ee929..3637cb5 100644
 --- a/arch/x86/platform/olpc/olpc_dt.c
@@ -34919,7 +35006,7 @@ index d6ee929..3637cb5 100644
        .getproplen = olpc_dt_getproplen,
        .getproperty = olpc_dt_getproperty,
 diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
-index 424f4c9..f2a2988 100644
+index 6ec7910..ecdbb11 100644
 --- a/arch/x86/power/cpu.c
 +++ b/arch/x86/power/cpu.c
 @@ -137,11 +137,8 @@ static void do_fpu_end(void)
@@ -34976,10 +35063,10 @@ index bad628a..a102610 100644
  #endif
  }
 diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile
-index 3497f14..cc73b92 100644
+index 7c0d7be..d24dc88 100644
 --- a/arch/x86/realmode/rm/Makefile
 +++ b/arch/x86/realmode/rm/Makefile
-@@ -66,5 +66,8 @@ $(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
+@@ -67,5 +67,8 @@ $(obj)/realmode.relocs: $(obj)/realmode.elf FORCE
  
  KBUILD_CFLAGS := $(LINUXINCLUDE) $(REALMODE_CFLAGS) -D_SETUP -D_WAKEUP \
                   -I$(srctree)/arch/x86/boot
@@ -35100,7 +35187,7 @@ index 604a37e..e49702a 100644
  relocs-objs     := relocs_32.o relocs_64.o relocs_common.o
  PHONY += relocs
 diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
-index bbb1d22..e505211 100644
+index a5efb21..97490e9 100644
 --- a/arch/x86/tools/relocs.c
 +++ b/arch/x86/tools/relocs.c
 @@ -1,5 +1,7 @@
@@ -35341,161 +35428,153 @@ index 80ffa5b..a33bd15 100644
  
        return 0;
 diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
-index c580d12..0a0ba35 100644
+index 5a4affe..9e2d522 100644
 --- a/arch/x86/vdso/Makefile
 +++ b/arch/x86/vdso/Makefile
-@@ -196,7 +196,7 @@ quiet_cmd_vdso = VDSO    $@
+@@ -174,7 +174,7 @@ quiet_cmd_vdso = VDSO    $@
                       -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) && \
                 sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
  
 -VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \
 +VDSO_LDFLAGS = -fPIC -shared -Wl,--no-undefined $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \
-               $(LTO_CFLAGS)
+       $(call cc-ldoption, -Wl$(comma)--build-id) -Wl,-Bsymbolic $(LTO_CFLAGS)
  GCOV_PROFILE := n
  
+diff --git a/arch/x86/vdso/vdso2c.h b/arch/x86/vdso/vdso2c.h
+index 0224987..c7d65a5 100644
+--- a/arch/x86/vdso/vdso2c.h
++++ b/arch/x86/vdso/vdso2c.h
+@@ -12,7 +12,7 @@ static void BITSFUNC(go)(void *raw_addr, size_t raw_len,
+       unsigned long load_size = -1;  /* Work around bogus warning */
+       unsigned long mapping_size;
+       ELF(Ehdr) *hdr = (ELF(Ehdr) *)raw_addr;
+-      int i;
++      unsigned int i;
+       unsigned long j;
+       ELF(Shdr) *symtab_hdr = NULL, *strtab_hdr, *secstrings_hdr,
+               *alt_sec = NULL;
 diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c
-index 310c5f0..766d0a7 100644
+index e904c27..b9eaa03 100644
 --- a/arch/x86/vdso/vdso32-setup.c
 +++ b/arch/x86/vdso/vdso32-setup.c
-@@ -29,6 +29,7 @@
- #include <asm/fixmap.h>
- #include <asm/hpet.h>
- #include <asm/vvar.h>
+@@ -14,6 +14,7 @@
+ #include <asm/cpufeature.h>
+ #include <asm/processor.h>
+ #include <asm/vdso.h>
 +#include <asm/mman.h>
  
  #ifdef CONFIG_COMPAT_VDSO
  #define VDSO_DEFAULT  0
-@@ -99,7 +100,7 @@ void syscall32_cpu_init(void)
- void enable_sep_cpu(void)
- {
-       int cpu = get_cpu();
--      struct tss_struct *tss = &per_cpu(init_tss, cpu);
-+      struct tss_struct *tss = init_tss + cpu;
+diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
+index 970463b..da82d3e 100644
+--- a/arch/x86/vdso/vma.c
++++ b/arch/x86/vdso/vma.c
+@@ -16,10 +16,9 @@
+ #include <asm/vdso.h>
+ #include <asm/page.h>
+ #include <asm/hpet.h>
++#include <asm/mman.h>
  
-       if (!boot_cpu_has(X86_FEATURE_SEP)) {
-               put_cpu();
-@@ -167,7 +168,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
+ #if defined(CONFIG_X86_64)
+-unsigned int __read_mostly vdso64_enabled = 1;
+-
+ extern unsigned short vdso_sync_cpuid;
+ #endif
+@@ -101,6 +100,11 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
+               .pages = no_pages,
+       };
  
++#ifdef CONFIG_PAX_RANDMMAP
++      if (mm->pax_flags & MF_PAX_RANDMMAP)
++              calculate_addr = false;
++#endif
++
+       if (calculate_addr) {
+               addr = vdso_addr(current->mm->start_stack,
+                                image->size - image->sym_vvar_start);
+@@ -111,14 +115,14 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
        down_write(&mm->mmap_sem);
  
--      addr = get_unmapped_area(NULL, 0, vdso32_size + VDSO_OFFSET(VDSO_PREV_PAGES), 0, 0);
-+      addr = get_unmapped_area(NULL, 0, vdso32_size + VDSO_OFFSET(VDSO_PREV_PAGES), 0, MAP_EXECUTABLE);
+       addr = get_unmapped_area(NULL, addr,
+-                               image->size - image->sym_vvar_start, 0, 0);
++                               image->size - image->sym_vvar_start, 0, MAP_EXECUTABLE);
        if (IS_ERR_VALUE(addr)) {
                ret = addr;
                goto up_fail;
-@@ -175,7 +176,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
-       addr += VDSO_OFFSET(VDSO_PREV_PAGES);
+       }
  
--      current->mm->context.vdso = (void *)addr;
-+      current->mm->context.vdso = addr;
+       text_start = addr - image->sym_vvar_start;
+-      current->mm->context.vdso = (void __user *)text_start;
++      mm->context.vdso = text_start;
  
        /*
         * MAYWRITE to allow gdb to COW and set breakpoints
-@@ -224,11 +225,11 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
+@@ -163,15 +167,12 @@ static int map_vdso(const struct vdso_image *image, bool calculate_addr)
+                       hpet_address >> PAGE_SHIFT,
+                       PAGE_SIZE,
+                       pgprot_noncached(PAGE_READONLY));
+-
+-              if (ret)
+-                      goto up_fail;
+       }
  #endif
  
-       current_thread_info()->sysenter_return =
--              VDSO32_SYMBOL(addr, SYSENTER_RETURN);
-+              (void __force_user *)VDSO32_SYMBOL(addr, SYSENTER_RETURN);
-   up_fail:
+ up_fail:
        if (ret)
 -              current->mm->context.vdso = NULL;
 +              current->mm->context.vdso = 0;
  
        up_write(&mm->mmap_sem);
+       return ret;
+@@ -191,8 +192,8 @@ static int load_vdso32(void)
  
-@@ -282,8 +283,14 @@ __initcall(ia32_binfmt_init);
- const char *arch_vma_name(struct vm_area_struct *vma)
- {
--      if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
-+      if (vma->vm_mm && vma->vm_start == vma->vm_mm->context.vdso)
-               return "[vdso]";
-+
-+#ifdef CONFIG_PAX_SEGMEXEC
-+      if (vma->vm_mm && vma->vm_mirror && vma->vm_mirror->vm_start == vma->vm_mm->context.vdso)
-+              return "[vdso]";
-+#endif
-+
-       return NULL;
- }
-diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
-index 1ad1026..1a08abe 100644
---- a/arch/x86/vdso/vma.c
-+++ b/arch/x86/vdso/vma.c
-@@ -17,8 +17,6 @@
- #include <asm/page.h>
- #if defined(CONFIG_X86_64)
--unsigned int __read_mostly vdso_enabled = 1;
--
- DECLARE_VDSO_IMAGE(vdso);
- extern unsigned short vdso_sync_cpuid;
- static unsigned vdso_size;
-@@ -144,7 +142,6 @@ static unsigned long vdso_addr(unsigned long start, unsigned len)
-        * unaligned here as a result of stack start randomization.
-        */
-       addr = PAGE_ALIGN(addr);
--      addr = align_vdso_addr(addr);
+       if (selected_vdso32->sym_VDSO32_SYSENTER_RETURN)
+               current_thread_info()->sysenter_return =
+-                      current->mm->context.vdso +
+-                      selected_vdso32->sym_VDSO32_SYSENTER_RETURN;
++                      (void __force_user *)(current->mm->context.vdso +
++                      selected_vdso32->sym_VDSO32_SYSENTER_RETURN);
  
-       return addr;
+       return 0;
  }
-@@ -157,30 +154,31 @@ static int setup_additional_pages(struct linux_binprm *bprm,
-                                 unsigned size)
+@@ -201,9 +202,6 @@ static int load_vdso32(void)
+ #ifdef CONFIG_X86_64
+ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
  {
-       struct mm_struct *mm = current->mm;
--      unsigned long addr;
-+      unsigned long addr = 0;
-       int ret;
--      if (!vdso_enabled)
+-      if (!vdso64_enabled)
 -              return 0;
 -
-       down_write(&mm->mmap_sem);
-+
-+#ifdef CONFIG_PAX_RANDMMAP
-+      if (!(mm->pax_flags & MF_PAX_RANDMMAP))
-+#endif
-+
-       addr = vdso_addr(mm->start_stack, size);
-+      addr = align_vdso_addr(addr);
-       addr = get_unmapped_area(NULL, addr, size, 0, 0);
-       if (IS_ERR_VALUE(addr)) {
-               ret = addr;
-               goto up_fail;
-       }
--      current->mm->context.vdso = (void *)addr;
-+      mm->context.vdso = addr;
+       return map_vdso(&vdso_image_64, true);
+ }
  
-       ret = install_special_mapping(mm, addr, size,
-                                     VM_READ|VM_EXEC|
-                                     VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC,
-                                     pages);
--      if (ret) {
--              current->mm->context.vdso = NULL;
--              goto up_fail;
+@@ -212,12 +210,8 @@ int compat_arch_setup_additional_pages(struct linux_binprm *bprm,
+                                      int uses_interp)
+ {
+ #ifdef CONFIG_X86_X32_ABI
+-      if (test_thread_flag(TIF_X32)) {
+-              if (!vdso64_enabled)
+-                      return 0;
+-
++      if (test_thread_flag(TIF_X32))
+               return map_vdso(&vdso_image_x32, true);
 -      }
-+      if (ret)
-+              mm->context.vdso = 0;
+ #endif
  
- up_fail:
-       up_write(&mm->mmap_sem);
-@@ -200,11 +198,4 @@ int x32_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
-                                     vdsox32_size);
+       return load_vdso32();
+@@ -229,12 +223,3 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
+       return load_vdso32();
  }
  #endif
 -
+-#ifdef CONFIG_X86_64
 -static __init int vdso_setup(char *s)
 -{
--      vdso_enabled = simple_strtoul(s, NULL, 0);
+-      vdso64_enabled = simple_strtoul(s, NULL, 0);
 -      return 0;
 -}
 -__setup("vdso=", vdso_setup);
- #endif
+-#endif
 diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig
 index e88fda8..76ce7ce 100644
 --- a/arch/x86/xen/Kconfig
@@ -35509,7 +35588,7 @@ index e88fda8..76ce7ce 100644
          This is the Linux Xen port.  Enabling this will allow the
          kernel to boot in a paravirtualized environment under the
 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index c34bfc4..e599673 100644
+index fac5e4f..5b5cf4f 100644
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
 @@ -123,8 +123,6 @@ EXPORT_SYMBOL_GPL(xen_start_info);
@@ -35597,7 +35676,7 @@ index c34bfc4..e599673 100644
  {
        if (pm_power_off)
                pm_power_off();
-@@ -1564,7 +1560,17 @@ asmlinkage __visible void __init xen_start_kernel(void)
+@@ -1573,7 +1569,17 @@ asmlinkage __visible void __init xen_start_kernel(void)
        __userpte_alloc_gfp &= ~__GFP_HIGHMEM;
  
        /* Work out if we support NX */
@@ -35616,7 +35695,7 @@ index c34bfc4..e599673 100644
  
        /* Get mfn list */
        xen_build_dynamic_phys_to_machine();
-@@ -1592,13 +1598,6 @@ asmlinkage __visible void __init xen_start_kernel(void)
+@@ -1601,13 +1607,6 @@ asmlinkage __visible void __init xen_start_kernel(void)
  
        machine_ops = xen_machine_ops;
  
@@ -35631,7 +35710,7 @@ index c34bfc4..e599673 100644
  
  #ifdef CONFIG_ACPI_NUMA
 diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
-index 86e02ea..e3705ca 100644
+index a8a1a3d..8216142 100644
 --- a/arch/x86/xen/mmu.c
 +++ b/arch/x86/xen/mmu.c
 @@ -379,7 +379,7 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
@@ -35643,17 +35722,19 @@ index 86e02ea..e3705ca 100644
  {
        if (val & _PAGE_PRESENT) {
                unsigned long pfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
-@@ -1904,6 +1904,9 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
-               /* L3_k[510] -> level2_kernel_pgt
-                * L3_i[511] -> level2_fixmap_pgt */
+@@ -1867,7 +1867,11 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
+                * L3_k[511] -> level2_fixmap_pgt */
                convert_pfn_mfn(level3_kernel_pgt);
 +              convert_pfn_mfn(level3_vmalloc_start_pgt);
 +              convert_pfn_mfn(level3_vmalloc_end_pgt);
 +              convert_pfn_mfn(level3_vmemmap_pgt);
+               /* L3_k[511][506] -> level1_fixmap_pgt */
++              /* L3_k[511][507] -> level1_vsyscall_pgt */
+               convert_pfn_mfn(level2_fixmap_pgt);
        }
        /* We get [511][511] and have Xen's version of level2_kernel_pgt */
-       l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd);
-@@ -1933,8 +1936,12 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
+@@ -1892,11 +1896,16 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn)
                set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
                set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
                set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
@@ -35665,8 +35746,12 @@ index 86e02ea..e3705ca 100644
 +              set_page_prot(level2_vmemmap_pgt, PAGE_KERNEL_RO);
                set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
                set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
+               set_page_prot(level1_fixmap_pgt, PAGE_KERNEL_RO);
++              set_page_prot(level1_vsyscall_pgt, PAGE_KERNEL_RO);
  
-@@ -2122,6 +2129,7 @@ static void __init xen_post_allocator_init(void)
+               /* Pin down new L4 */
+               pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE,
+@@ -2080,6 +2089,7 @@ static void __init xen_post_allocator_init(void)
        pv_mmu_ops.set_pud = xen_set_pud;
  #if PAGETABLE_LEVELS == 4
        pv_mmu_ops.set_pgd = xen_set_pgd;
@@ -35674,7 +35759,7 @@ index 86e02ea..e3705ca 100644
  #endif
  
        /* This will work as long as patching hasn't happened yet
-@@ -2200,6 +2208,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
+@@ -2158,6 +2168,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
        .pud_val = PV_CALLEE_SAVE(xen_pud_val),
        .make_pud = PV_CALLEE_SAVE(xen_make_pud),
        .set_pgd = xen_set_pgd_hyper,
@@ -35683,10 +35768,10 @@ index 86e02ea..e3705ca 100644
        .alloc_pud = xen_alloc_pmd_init,
        .release_pud = xen_release_pmd_init,
 diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
-index 7005974..54fb05f 100644
+index 4c071ae..00e7049 100644
 --- a/arch/x86/xen/smp.c
 +++ b/arch/x86/xen/smp.c
-@@ -283,17 +283,13 @@ static void __init xen_smp_prepare_boot_cpu(void)
+@@ -288,17 +288,13 @@ static void __init xen_smp_prepare_boot_cpu(void)
  
        if (xen_pv_domain()) {
                if (!xen_feature(XENFEAT_writable_page_tables))
@@ -35706,17 +35791,17 @@ index 7005974..54fb05f 100644
  #endif
  
                xen_filter_cpu_maps();
-@@ -372,7 +368,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
+@@ -379,7 +375,7 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
  #ifdef CONFIG_X86_32
        /* Note: PVH is not yet supported on x86_32. */
        ctxt->user_regs.fs = __KERNEL_PERCPU;
 -      ctxt->user_regs.gs = __KERNEL_STACK_CANARY;
 +      savesegment(gs, ctxt->user_regs.gs);
  #endif
-       ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
+       memset(&ctxt->fpu_ctxt, 0, sizeof(ctxt->fpu_ctxt));
  
-@@ -381,8 +377,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
-       if (!xen_feature(XENFEAT_auto_translated_physmap)) {
+@@ -387,8 +383,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
+               ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
                ctxt->flags = VGCF_IN_KERNEL;
                ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */
 -              ctxt->user_regs.ds = __USER_DS;
@@ -35726,7 +35811,7 @@ index 7005974..54fb05f 100644
                ctxt->user_regs.ss = __KERNEL_DS;
  
                xen_copy_trap_info(ctxt->trap_ctxt);
-@@ -437,14 +433,13 @@ static int xen_cpu_up(unsigned int cpu, struct task_struct *idle)
+@@ -446,14 +442,13 @@ static int xen_cpu_up(unsigned int cpu, struct task_struct *idle)
        int rc;
  
        per_cpu(current_task, cpu) = idle;
@@ -35743,7 +35828,7 @@ index 7005974..54fb05f 100644
  
        xen_setup_runstate_info(cpu);
        xen_setup_timer(cpu);
-@@ -720,7 +715,7 @@ static const struct smp_ops xen_smp_ops __initconst = {
+@@ -732,7 +727,7 @@ static const struct smp_ops xen_smp_ops __initconst = {
  
  void __init xen_smp_init(void)
  {
@@ -35766,7 +35851,7 @@ index fd92a64..1f72641 100644
  #else
        movl %ss:xen_vcpu, %eax
 diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
-index 485b695..fda3e7c 100644
+index 674b2225..f1f5dc1 100644
 --- a/arch/x86/xen/xen-head.S
 +++ b/arch/x86/xen/xen-head.S
 @@ -39,6 +39,17 @@ ENTRY(startup_xen)
@@ -35788,7 +35873,7 @@ index 485b695..fda3e7c 100644
        mov %rsi,xen_start_info
        mov $init_thread_union+THREAD_SIZE,%rsp
 diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
-index 1cb6f4c..9981524 100644
+index 28c7e0b..2acfec7 100644
 --- a/arch/x86/xen/xen-ops.h
 +++ b/arch/x86/xen/xen-ops.h
 @@ -10,8 +10,6 @@
@@ -35861,33 +35946,42 @@ index af00795..2bb8105 100644
  
  #define XCHAL_ICACHE_SIZE             32768   /* I-cache size in bytes or 0 */
  #define XCHAL_DCACHE_SIZE             32768   /* D-cache size in bytes or 0 */
-diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
-index 95ee425..c9c7237 100644
---- a/block/blk-cgroup.c
-+++ b/block/blk-cgroup.c
-@@ -822,7 +822,7 @@ static void blkcg_css_free(struct cgroup_subsys_state *css)
- static struct cgroup_subsys_state *
- blkcg_css_alloc(struct cgroup_subsys_state *parent_css)
- {
--      static atomic64_t id_seq = ATOMIC64_INIT(0);
-+      static atomic64_unchecked_t id_seq = ATOMIC64_INIT(0);
-       struct blkcg *blkcg;
-       if (!parent_css) {
-@@ -836,7 +836,7 @@ blkcg_css_alloc(struct cgroup_subsys_state *parent_css)
-       blkcg->cfq_weight = CFQ_WEIGHT_DEFAULT;
-       blkcg->cfq_leaf_weight = CFQ_WEIGHT_DEFAULT;
--      blkcg->id = atomic64_inc_return(&id_seq); /* root is 0, start from 1 */
-+      blkcg->id = atomic64_inc_return_unchecked(&id_seq); /* root is 0, start from 1 */
- done:
-       spin_lock_init(&blkcg->lock);
-       INIT_RADIX_TREE(&blkcg->blkg_tree, GFP_ATOMIC);
+diff --git a/block/bio.c b/block/bio.c
+index 3e6e198..5c65199 100644
+--- a/block/bio.c
++++ b/block/bio.c
+@@ -1163,7 +1163,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
+               /*
+                * Overflow, abort
+                */
+-              if (end < start)
++              if (end < start || end - start > INT_MAX - nr_pages)
+                       return ERR_PTR(-EINVAL);
+               nr_pages += end - start;
+@@ -1297,7 +1297,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
+               /*
+                * Overflow, abort
+                */
+-              if (end < start)
++              if (end < start || end - start > INT_MAX - nr_pages)
+                       return ERR_PTR(-EINVAL);
+               nr_pages += end - start;
+@@ -1559,7 +1559,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
+       const int read = bio_data_dir(bio) == READ;
+       struct bio_map_data *bmd = bio->bi_private;
+       int i;
+-      char *p = bmd->sgvecs[0].iov_base;
++      char *p = (char __force_kernel *)bmd->sgvecs[0].iov_base;
+       bio_for_each_segment_all(bvec, bio, i) {
+               char *addr = page_address(bvec->bv_page);
 diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c
-index c11d24e..e915d24 100644
+index 0736729..2ec3b48 100644
 --- a/block/blk-iopoll.c
 +++ b/block/blk-iopoll.c
-@@ -74,7 +74,7 @@ void blk_iopoll_complete(struct blk_iopoll *iopoll)
+@@ -74,7 +74,7 @@ void blk_iopoll_complete(struct blk_iopoll *iop)
  }
  EXPORT_SYMBOL(blk_iopoll_complete);
  
@@ -35897,10 +35991,10 @@ index c11d24e..e915d24 100644
        struct list_head *list = this_cpu_ptr(&blk_cpu_iopoll);
        int rearm = 0, budget = blk_iopoll_budget;
 diff --git a/block/blk-map.c b/block/blk-map.c
-index f7b22bc..ec2ddf4 100644
+index f890d43..97b0482 100644
 --- a/block/blk-map.c
 +++ b/block/blk-map.c
-@@ -302,7 +302,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
+@@ -300,7 +300,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
        if (!len || !kbuf)
                return -EINVAL;
  
@@ -35923,7 +36017,7 @@ index 53b1737..08177d2e 100644
        struct list_head *cpu_list, local_list;
  
 diff --git a/block/bsg.c b/block/bsg.c
-index 420a5a9..23834aa 100644
+index 276e869..6fe4c61 100644
 --- a/block/bsg.c
 +++ b/block/bsg.c
 @@ -176,16 +176,24 @@ static int blk_fill_sgv4_hdr_rq(struct request_queue *q, struct request *rq,
@@ -35954,7 +36048,7 @@ index 420a5a9..23834aa 100644
                if (blk_verify_command(rq->cmd, has_write_perm))
                        return -EPERM;
 diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
-index fbd5a67..f24fd95 100644
+index f678c73..f35aa18 100644
 --- a/block/compat_ioctl.c
 +++ b/block/compat_ioctl.c
 @@ -156,7 +156,7 @@ static int compat_cdrom_generic_command(struct block_device *bdev, fmode_t mode,
@@ -35976,10 +36070,10 @@ index fbd5a67..f24fd95 100644
                        err = -EFAULT;
                        goto out;
 diff --git a/block/genhd.c b/block/genhd.c
-index 791f419..89f21c4 100644
+index bd30606..bbc9b90 100644
 --- a/block/genhd.c
 +++ b/block/genhd.c
-@@ -467,21 +467,24 @@ static char *bdevt_str(dev_t devt, char *buf)
+@@ -469,21 +469,24 @@ static char *bdevt_str(dev_t devt, char *buf)
  
  /*
   * Register device numbers dev..(dev+range-1)
@@ -36008,7 +36102,7 @@ index 791f419..89f21c4 100644
  
  EXPORT_SYMBOL(blk_unregister_region);
 diff --git a/block/partitions/efi.c b/block/partitions/efi.c
-index dc51f46..d5446a8 100644
+index 56d08fd..2e07090 100644
 --- a/block/partitions/efi.c
 +++ b/block/partitions/efi.c
 @@ -293,14 +293,14 @@ static gpt_entry *alloc_read_gpt_entries(struct parsed_partitions *state,
@@ -36033,7 +36127,7 @@ index dc51f46..d5446a8 100644
                        (u8 *) pte, count) < count) {
                kfree(pte);
 diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
-index 2648797..92ed21f 100644
+index b0c2a61..10bb6ec 100644
 --- a/block/scsi_ioctl.c
 +++ b/block/scsi_ioctl.c
 @@ -67,7 +67,7 @@ static int scsi_get_bus(struct request_queue *q, int __user *p)
@@ -36045,7 +36139,7 @@ index 2648797..92ed21f 100644
  {
        return jiffies_to_clock_t(q->sg_timeout);
  }
-@@ -224,8 +224,20 @@ EXPORT_SYMBOL(blk_verify_command);
+@@ -227,8 +227,20 @@ EXPORT_SYMBOL(blk_verify_command);
  static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
                             struct sg_io_hdr *hdr, fmode_t mode)
  {
@@ -36067,7 +36161,7 @@ index 2648797..92ed21f 100644
        if (blk_verify_command(rq->cmd, mode & FMODE_WRITE))
                return -EPERM;
  
-@@ -417,6 +429,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
+@@ -431,6 +443,8 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
        int err;
        unsigned int in_len, out_len, bytes, opcode, cmdlen;
        char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
@@ -36076,7 +36170,7 @@ index 2648797..92ed21f 100644
  
        if (!sic)
                return -EINVAL;
-@@ -450,9 +464,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
+@@ -469,9 +483,18 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
         */
        err = -EFAULT;
        rq->cmd_len = cmdlen;
@@ -36097,7 +36191,7 @@ index 2648797..92ed21f 100644
                goto error;
  
 diff --git a/crypto/cryptd.c b/crypto/cryptd.c
-index 7bdd61b..afec999 100644
+index e592c90..c566114 100644
 --- a/crypto/cryptd.c
 +++ b/crypto/cryptd.c
 @@ -63,7 +63,7 @@ struct cryptd_blkcipher_ctx {
@@ -36154,7 +36248,7 @@ index 6921c7f..78e1af7 100644
  
  /*
 diff --git a/drivers/acpi/apei/apei-internal.h b/drivers/acpi/apei/apei-internal.h
-index e5bcd91..74f050d 100644
+index 16129c7..8b675cd 100644
 --- a/drivers/acpi/apei/apei-internal.h
 +++ b/drivers/acpi/apei/apei-internal.h
 @@ -19,7 +19,7 @@ typedef int (*apei_exec_ins_func_t)(struct apei_exec_context *ctx,
@@ -36167,19 +36261,19 @@ index e5bcd91..74f050d 100644
  struct apei_exec_context {
        u32 ip;
 diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
-index dab7cb7..f0d2994 100644
+index fc5f780..e5ac91a 100644
 --- a/drivers/acpi/apei/ghes.c
 +++ b/drivers/acpi/apei/ghes.c
-@@ -500,7 +500,7 @@ static void __ghes_print_estatus(const char *pfx,
+@@ -478,7 +478,7 @@ static void __ghes_print_estatus(const char *pfx,
                                 const struct acpi_hest_generic *generic,
-                                const struct acpi_generic_status *estatus)
+                                const struct acpi_hest_generic_status *estatus)
  {
 -      static atomic_t seqno;
 +      static atomic_unchecked_t seqno;
        unsigned int curr_seqno;
        char pfx_seq[64];
  
-@@ -511,7 +511,7 @@ static void __ghes_print_estatus(const char *pfx,
+@@ -489,7 +489,7 @@ static void __ghes_print_estatus(const char *pfx,
                else
                        pfx = KERN_ERR;
        }
@@ -36206,7 +36300,7 @@ index a83e3c6..c3d617f 100644
        bgrt_kobj = kobject_create_and_add("bgrt", acpi_kobj);
        if (!bgrt_kobj)
 diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
-index 3d8413d..95f638c 100644
+index 7556e7c..89a96bd 100644
 --- a/drivers/acpi/blacklist.c
 +++ b/drivers/acpi/blacklist.c
 @@ -51,7 +51,7 @@ struct acpi_blacklist_item {
@@ -36242,8 +36336,37 @@ index c68e724..e863008 100644
        if (!(*ppos)) {
                /* parse the table header to get the table length */
                if (count <= sizeof(struct acpi_table_header))
+diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c
+index 7db1931..302dd5f 100644
+--- a/drivers/acpi/device_pm.c
++++ b/drivers/acpi/device_pm.c
+@@ -1021,6 +1021,8 @@ EXPORT_SYMBOL_GPL(acpi_subsys_freeze);
+ #endif /* CONFIG_PM_SLEEP */
++static void acpi_dev_pm_detach(struct device *dev, bool power_off);
++
+ static struct dev_pm_domain acpi_general_pm_domain = {
+       .ops = {
+ #ifdef CONFIG_PM_RUNTIME
+@@ -1039,6 +1041,7 @@ static struct dev_pm_domain acpi_general_pm_domain = {
+               .restore_early = acpi_subsys_resume_early,
+ #endif
+       },
++      .detach = acpi_dev_pm_detach
+ };
+ /**
+@@ -1108,7 +1111,6 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on)
+               acpi_device_wakeup(adev, ACPI_STATE_S0, false);
+       }
+-      dev->pm_domain->detach = acpi_dev_pm_detach;
+       return 0;
+ }
+ EXPORT_SYMBOL_GPL(acpi_dev_pm_attach);
 diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
-index 3dca36d..abaf070 100644
+index 17f9ec5..d9a455e 100644
 --- a/drivers/acpi/processor_idle.c
 +++ b/drivers/acpi/processor_idle.c
 @@ -952,7 +952,7 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
@@ -36256,7 +36379,7 @@ index 3dca36d..abaf070 100644
  
        if (!pr->flags.power_setup_done)
 diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c
-index 38cb978..352c761 100644
+index 13e577c..cef11ee 100644
 --- a/drivers/acpi/sysfs.c
 +++ b/drivers/acpi/sysfs.c
 @@ -423,11 +423,11 @@ static u32 num_counters;
@@ -36274,7 +36397,7 @@ index 38cb978..352c761 100644
  static void delete_gpe_attr_array(void)
  {
 diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
-index b986145..82bddb8 100644
+index 97683e4..655f6ba 100644
 --- a/drivers/ata/libahci.c
 +++ b/drivers/ata/libahci.c
 @@ -1252,7 +1252,7 @@ int ahci_kick_engine(struct ata_port *ap)
@@ -36287,10 +36410,10 @@ index b986145..82bddb8 100644
                                unsigned long timeout_msec)
  {
 diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
-index 18d97d5..be690af 100644
+index c5ba15a..75ec7a8 100644
 --- a/drivers/ata/libata-core.c
 +++ b/drivers/ata/libata-core.c
-@@ -98,7 +98,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev);
+@@ -99,7 +99,7 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev);
  static void ata_dev_xfermask(struct ata_device *dev);
  static unsigned long ata_dev_blacklisted(const struct ata_device *dev);
  
@@ -36299,7 +36422,7 @@ index 18d97d5..be690af 100644
  
  struct ata_force_param {
        const char      *name;
-@@ -4858,7 +4858,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
+@@ -4797,7 +4797,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
        struct ata_port *ap;
        unsigned int tag;
  
@@ -36308,7 +36431,7 @@ index 18d97d5..be690af 100644
        ap = qc->ap;
  
        qc->flags = 0;
-@@ -4874,7 +4874,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc)
+@@ -4813,7 +4813,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc)
        struct ata_port *ap;
        struct ata_link *link;
  
@@ -36317,7 +36440,7 @@ index 18d97d5..be690af 100644
        WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE));
        ap = qc->ap;
        link = qc->dev->link;
-@@ -5978,6 +5978,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
+@@ -5917,6 +5917,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
                return;
  
        spin_lock(&lock);
@@ -36325,7 +36448,7 @@ index 18d97d5..be690af 100644
  
        for (cur = ops->inherits; cur; cur = cur->inherits) {
                void **inherit = (void **)cur;
-@@ -5991,8 +5992,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
+@@ -5930,8 +5931,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
                if (IS_ERR(*pp))
                        *pp = NULL;
  
@@ -36336,7 +36459,7 @@ index 18d97d5..be690af 100644
        spin_unlock(&lock);
  }
  
-@@ -6185,7 +6187,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
+@@ -6127,7 +6129,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
  
        /* give ports names and add SCSI hosts */
        for (i = 0; i < host->n_ports; i++) {
@@ -36346,10 +36469,10 @@ index 18d97d5..be690af 100644
        }
  
 diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
-index ef8567d..8bdbd03 100644
+index 0586f66..1a8f74a 100644
 --- a/drivers/ata/libata-scsi.c
 +++ b/drivers/ata/libata-scsi.c
-@@ -4147,7 +4147,7 @@ int ata_sas_port_init(struct ata_port *ap)
+@@ -4151,7 +4151,7 @@ int ata_sas_port_init(struct ata_port *ap)
  
        if (rc)
                return rc;
@@ -36359,7 +36482,7 @@ index ef8567d..8bdbd03 100644
  }
  EXPORT_SYMBOL_GPL(ata_sas_port_init);
 diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h
-index 45b5ab3..98446b8 100644
+index 5f4e0cc..ff2c347 100644
 --- a/drivers/ata/libata.h
 +++ b/drivers/ata/libata.h
 @@ -53,7 +53,7 @@ enum {
@@ -36372,7 +36495,7 @@ index 45b5ab3..98446b8 100644
  extern int libata_fua;
  extern int libata_noacpi;
 diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c
-index 4edb1a8..84e1658 100644
+index 38216b9..4ec6aeb 100644
 --- a/drivers/ata/pata_arasan_cf.c
 +++ b/drivers/ata/pata_arasan_cf.c
 @@ -865,7 +865,9 @@ static int arasan_cf_probe(struct platform_device *pdev)
@@ -36440,7 +36563,7 @@ index f1a9198..f466a4a 100644
    }
    
 diff --git a/drivers/atm/atmtcp.c b/drivers/atm/atmtcp.c
-index 0e3f8f9..765a7a5 100644
+index 480fa6f..947067c 100644
 --- a/drivers/atm/atmtcp.c
 +++ b/drivers/atm/atmtcp.c
 @@ -206,7 +206,7 @@ static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb)
@@ -36472,16 +36595,16 @@ index 0e3f8f9..765a7a5 100644
        return 0;
  }
  
-@@ -299,7 +299,7 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
-       out_vcc = find_vcc(dev, ntohs(hdr->vpi), ntohs(hdr->vci));
+@@ -300,7 +300,7 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
        read_unlock(&vcc_sklist_lock);
        if (!out_vcc) {
+               result = -EUNATCH;
 -              atomic_inc(&vcc->stats->tx_err);
 +              atomic_inc_unchecked(&vcc->stats->tx_err);
                goto done;
        }
        skb_pull(skb,sizeof(struct atmtcp_hdr));
-@@ -311,8 +311,8 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
+@@ -312,8 +312,8 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
        __net_timestamp(new_skb);
        skb_copy_from_linear_data(skb, skb_put(new_skb, skb->len), skb->len);
        out_vcc->push(out_vcc,new_skb);
@@ -36493,7 +36616,7 @@ index 0e3f8f9..765a7a5 100644
        if (vcc->pop) vcc->pop(vcc,skb);
        else dev_kfree_skb(skb);
 diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c
-index b1955ba..b179940 100644
+index d65975a..0b87e20 100644
 --- a/drivers/atm/eni.c
 +++ b/drivers/atm/eni.c
 @@ -522,7 +522,7 @@ static int rx_aal0(struct atm_vcc *vcc)
@@ -36579,7 +36702,7 @@ index 82f2ae0..f205c02 100644
                default: /* Hmm. Haven't written the code to handle the others yet... -- REW */
                        printk (KERN_WARNING "Don't know what to do with RX status %x: %s.\n", 
 diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
-index 204814e..cede831 100644
+index d4725fc..2d4ea65 100644
 --- a/drivers/atm/fore200e.c
 +++ b/drivers/atm/fore200e.c
 @@ -931,9 +931,9 @@ fore200e_tx_irq(struct fore200e* fore200e)
@@ -36639,10 +36762,10 @@ index 204814e..cede831 100644
            fore200e->tx_sat++;
            DPRINTK(2, "tx queue of device %s is saturated, PDU dropped - heartbeat is %08x\n",
 diff --git a/drivers/atm/he.c b/drivers/atm/he.c
-index aa6be26..f70a785 100644
+index c39702b..785b73b 100644
 --- a/drivers/atm/he.c
 +++ b/drivers/atm/he.c
-@@ -1690,7 +1690,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
+@@ -1689,7 +1689,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
  
                if (RBRQ_HBUF_ERR(he_dev->rbrq_head)) {
                        hprintk("HBUF_ERR!  (cid 0x%x)\n", cid);
@@ -36651,7 +36774,7 @@ index aa6be26..f70a785 100644
                        goto return_host_buffers;
                }
  
-@@ -1717,7 +1717,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
+@@ -1716,7 +1716,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
                                RBRQ_LEN_ERR(he_dev->rbrq_head)
                                                        ? "LEN_ERR" : "",
                                                        vcc->vpi, vcc->vci);
@@ -36660,7 +36783,7 @@ index aa6be26..f70a785 100644
                        goto return_host_buffers;
                }
  
-@@ -1769,7 +1769,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
+@@ -1768,7 +1768,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
                vcc->push(vcc, skb);
                spin_lock(&he_dev->global_lock);
  
@@ -36669,7 +36792,7 @@ index aa6be26..f70a785 100644
  
  return_host_buffers:
                ++pdus_assembled;
-@@ -2095,7 +2095,7 @@ __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid)
+@@ -2094,7 +2094,7 @@ __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid)
                                        tpd->vcc->pop(tpd->vcc, tpd->skb);
                                else
                                        dev_kfree_skb_any(tpd->skb);
@@ -36678,7 +36801,7 @@ index aa6be26..f70a785 100644
                        }
                        pci_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status));
                        return;
-@@ -2507,7 +2507,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
+@@ -2506,7 +2506,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
                        vcc->pop(vcc, skb);
                else
                        dev_kfree_skb_any(skb);
@@ -36687,7 +36810,7 @@ index aa6be26..f70a785 100644
                return -EINVAL;
        }
  
-@@ -2518,7 +2518,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
+@@ -2517,7 +2517,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
                        vcc->pop(vcc, skb);
                else
                        dev_kfree_skb_any(skb);
@@ -36696,7 +36819,7 @@ index aa6be26..f70a785 100644
                return -EINVAL;
        }
  #endif
-@@ -2530,7 +2530,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
+@@ -2529,7 +2529,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
                        vcc->pop(vcc, skb);
                else
                        dev_kfree_skb_any(skb);
@@ -36705,7 +36828,7 @@ index aa6be26..f70a785 100644
                spin_unlock_irqrestore(&he_dev->global_lock, flags);
                return -ENOMEM;
        }
-@@ -2572,7 +2572,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
+@@ -2571,7 +2571,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
                                        vcc->pop(vcc, skb);
                                else
                                        dev_kfree_skb_any(skb);
@@ -36714,7 +36837,7 @@ index aa6be26..f70a785 100644
                                spin_unlock_irqrestore(&he_dev->global_lock, flags);
                                return -ENOMEM;
                        }
-@@ -2603,7 +2603,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
+@@ -2602,7 +2602,7 @@ he_send(struct atm_vcc *vcc, struct sk_buff *skb)
        __enqueue_tpd(he_dev, tpd, cid);
        spin_unlock_irqrestore(&he_dev->global_lock, flags);
  
@@ -36746,10 +36869,10 @@ index 1dc0519..1aadaf7 100644
        // free the skb
        hrz_kfree_skb (skb);
 diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
-index 1bdf104..9dc44b1 100644
+index 2b24ed0..b3d6acc 100644
 --- a/drivers/atm/idt77252.c
 +++ b/drivers/atm/idt77252.c
-@@ -812,7 +812,7 @@ drain_scq(struct idt77252_dev *card, struct vc_map *vc)
+@@ -810,7 +810,7 @@ drain_scq(struct idt77252_dev *card, struct vc_map *vc)
                else
                        dev_kfree_skb(skb);
  
@@ -36758,7 +36881,7 @@ index 1bdf104..9dc44b1 100644
        }
  
        atomic_dec(&scq->used);
-@@ -1075,13 +1075,13 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
+@@ -1072,13 +1072,13 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
                        if ((sb = dev_alloc_skb(64)) == NULL) {
                                printk("%s: Can't allocate buffers for aal0.\n",
                                       card->name);
@@ -36774,7 +36897,7 @@ index 1bdf104..9dc44b1 100644
                                dev_kfree_skb(sb);
                                break;
                        }
-@@ -1098,7 +1098,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
+@@ -1095,7 +1095,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
                        ATM_SKB(sb)->vcc = vcc;
                        __net_timestamp(sb);
                        vcc->push(vcc, sb);
@@ -36783,7 +36906,7 @@ index 1bdf104..9dc44b1 100644
  
                        cell += ATM_CELL_PAYLOAD;
                }
-@@ -1135,13 +1135,13 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
+@@ -1132,13 +1132,13 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
                                 "(CDC: %08x)\n",
                                 card->name, len, rpp->len, readl(SAR_REG_CDC));
                        recycle_rx_pool_skb(card, rpp);
@@ -36799,7 +36922,7 @@ index 1bdf104..9dc44b1 100644
                        return;
                }
                if (skb_queue_len(&rpp->queue) > 1) {
-@@ -1152,7 +1152,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
+@@ -1149,7 +1149,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
                                RXPRINTK("%s: Can't alloc RX skb.\n",
                                         card->name);
                                recycle_rx_pool_skb(card, rpp);
@@ -36808,7 +36931,7 @@ index 1bdf104..9dc44b1 100644
                                return;
                        }
                        if (!atm_charge(vcc, skb->truesize)) {
-@@ -1171,7 +1171,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
+@@ -1168,7 +1168,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
                        __net_timestamp(skb);
  
                        vcc->push(vcc, skb);
@@ -36817,7 +36940,7 @@ index 1bdf104..9dc44b1 100644
  
                        return;
                }
-@@ -1193,7 +1193,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
+@@ -1190,7 +1190,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
                __net_timestamp(skb);
  
                vcc->push(vcc, skb);
@@ -36826,7 +36949,7 @@ index 1bdf104..9dc44b1 100644
  
                if (skb->truesize > SAR_FB_SIZE_3)
                        add_rx_skb(card, 3, SAR_FB_SIZE_3, 1);
-@@ -1304,14 +1304,14 @@ idt77252_rx_raw(struct idt77252_dev *card)
+@@ -1301,14 +1301,14 @@ idt77252_rx_raw(struct idt77252_dev *card)
                if (vcc->qos.aal != ATM_AAL0) {
                        RPRINTK("%s: raw cell for non AAL0 vc %u.%u\n",
                                card->name, vpi, vci);
@@ -36843,7 +36966,7 @@ index 1bdf104..9dc44b1 100644
                        goto drop;
                }
  
-@@ -1330,7 +1330,7 @@ idt77252_rx_raw(struct idt77252_dev *card)
+@@ -1327,7 +1327,7 @@ idt77252_rx_raw(struct idt77252_dev *card)
                ATM_SKB(sb)->vcc = vcc;
                __net_timestamp(sb);
                vcc->push(vcc, sb);
@@ -36852,7 +36975,7 @@ index 1bdf104..9dc44b1 100644
  
  drop:
                skb_pull(queue, 64);
-@@ -1955,13 +1955,13 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
+@@ -1952,13 +1952,13 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
  
        if (vc == NULL) {
                printk("%s: NULL connection in send().\n", card->name);
@@ -36868,7 +36991,7 @@ index 1bdf104..9dc44b1 100644
                dev_kfree_skb(skb);
                return -EINVAL;
        }
-@@ -1973,14 +1973,14 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
+@@ -1970,14 +1970,14 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
                break;
        default:
                printk("%s: Unsupported AAL: %d\n", card->name, vcc->qos.aal);
@@ -36885,7 +37008,7 @@ index 1bdf104..9dc44b1 100644
                dev_kfree_skb(skb);
                return -EINVAL;
        }
-@@ -1988,7 +1988,7 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
+@@ -1985,7 +1985,7 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam)
  
        err = queue_skb(card, vc, skb, oam);
        if (err) {
@@ -36894,7 +37017,7 @@ index 1bdf104..9dc44b1 100644
                dev_kfree_skb(skb);
                return err;
        }
-@@ -2011,7 +2011,7 @@ idt77252_send_oam(struct atm_vcc *vcc, void *cell, int flags)
+@@ -2008,7 +2008,7 @@ idt77252_send_oam(struct atm_vcc *vcc, void *cell, int flags)
        skb = dev_alloc_skb(64);
        if (!skb) {
                printk("%s: Out of memory in send_oam().\n", card->name);
@@ -37004,7 +37127,7 @@ index 4217f29..88f547a 100644
               vcc->tx_quota =  vcc->tx_quota * 3 / 4;
              printk("Tx1:  vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
 diff --git a/drivers/atm/lanai.c b/drivers/atm/lanai.c
-index fa7d701..1e404c7 100644
+index 93eaf8d..b4ca7da 100644
 --- a/drivers/atm/lanai.c
 +++ b/drivers/atm/lanai.c
 @@ -1303,7 +1303,7 @@ static void lanai_send_one_aal5(struct lanai_dev *lanai,
@@ -37267,7 +37390,7 @@ index 9988ac9..7c52585 100644
                }
  
 diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
-index 943cf0d..37d15d5 100644
+index 21b0bc6..b5f40ba 100644
 --- a/drivers/atm/solos-pci.c
 +++ b/drivers/atm/solos-pci.c
 @@ -838,7 +838,7 @@ static void solos_bh(unsigned long card_arg)
@@ -37433,10 +37556,10 @@ index 25798db..15f130e 100644
        while (1) {
                spin_lock(&req_lock);
 diff --git a/drivers/base/node.c b/drivers/base/node.c
-index 8f7ed99..700dd0c 100644
+index 472168c..4af587e 100644
 --- a/drivers/base/node.c
 +++ b/drivers/base/node.c
-@@ -624,7 +624,7 @@ static ssize_t print_nodes_state(enum node_states state, char *buf)
+@@ -620,7 +620,7 @@ static ssize_t print_nodes_state(enum node_states state, char *buf)
  struct node_attr {
        struct device_attribute attr;
        enum node_states state;
@@ -37446,44 +37569,32 @@ index 8f7ed99..700dd0c 100644
  static ssize_t show_node_state(struct device *dev,
                               struct device_attribute *attr, char *buf)
 diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
-index ae098a2..0999830 100644
+index fb83d4a..4aa50ec 100644
 --- a/drivers/base/power/domain.c
 +++ b/drivers/base/power/domain.c
-@@ -1821,9 +1821,9 @@ int __pm_genpd_remove_callbacks(struct device *dev, bool clear_td)
-       if (dev->power.subsys_data->domain_data) {
-               gpd_data = to_gpd_data(dev->power.subsys_data->domain_data);
--              gpd_data->ops = (struct gpd_dev_ops){ NULL };
-+              memset(&gpd_data->ops, 0, sizeof(gpd_data->ops));
-               if (clear_td)
--                      gpd_data->td = (struct gpd_timing_data){ 0 };
-+                      memset(&gpd_data->td, 0, sizeof(gpd_data->td));
-               if (--gpd_data->refcount == 0) {
-                       dev->power.subsys_data->domain_data = NULL;
-@@ -1862,7 +1862,7 @@ int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state)
+@@ -1725,7 +1725,7 @@ int pm_genpd_attach_cpuidle(struct generic_pm_domain *genpd, int state)
  {
        struct cpuidle_driver *cpuidle_drv;
-       struct gpd_cpu_data *cpu_data;
+       struct gpd_cpuidle_data *cpuidle_data;
 -      struct cpuidle_state *idle_state;
 +      cpuidle_state_no_const *idle_state;
        int ret = 0;
  
        if (IS_ERR_OR_NULL(genpd) || state < 0)
-@@ -1930,7 +1930,7 @@ int pm_genpd_name_attach_cpuidle(const char *name, int state)
+@@ -1793,7 +1793,7 @@ int pm_genpd_name_attach_cpuidle(const char *name, int state)
  int pm_genpd_detach_cpuidle(struct generic_pm_domain *genpd)
  {
-       struct gpd_cpu_data *cpu_data;
+       struct gpd_cpuidle_data *cpuidle_data;
 -      struct cpuidle_state *idle_state;
 +      cpuidle_state_no_const *idle_state;
        int ret = 0;
  
        if (IS_ERR_OR_NULL(genpd))
 diff --git a/drivers/base/power/sysfs.c b/drivers/base/power/sysfs.c
-index 95b181d1..c4f0e19 100644
+index a9d26ed..74b8405 100644
 --- a/drivers/base/power/sysfs.c
 +++ b/drivers/base/power/sysfs.c
-@@ -185,7 +185,7 @@ static ssize_t rtpm_status_show(struct device *dev,
+@@ -182,7 +182,7 @@ static ssize_t rtpm_status_show(struct device *dev,
                        return -EIO;
                }
        }
@@ -37493,10 +37604,10 @@ index 95b181d1..c4f0e19 100644
  
  static DEVICE_ATTR(runtime_status, 0444, rtpm_status_show, NULL);
 diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
-index 2d56f41..8830f19 100644
+index c2744b3..08fac19 100644
 --- a/drivers/base/power/wakeup.c
 +++ b/drivers/base/power/wakeup.c
-@@ -29,14 +29,14 @@ bool events_check_enabled __read_mostly;
+@@ -32,14 +32,14 @@ static bool pm_abort_suspend __read_mostly;
   * They need to be modified together atomically, so it's better to use one
   * atomic variable to hold them both.
   */
@@ -37513,7 +37624,7 @@ index 2d56f41..8830f19 100644
  
        *cnt = (comb >> IN_PROGRESS_BITS);
        *inpr = comb & MAX_IN_PROGRESS;
-@@ -395,7 +395,7 @@ static void wakeup_source_activate(struct wakeup_source *ws)
+@@ -404,7 +404,7 @@ static void wakeup_source_activate(struct wakeup_source *ws)
                ws->start_prevent_time = ws->last_time;
  
        /* Increment the counter of events in progress. */
@@ -37522,7 +37633,7 @@ index 2d56f41..8830f19 100644
  
        trace_wakeup_source_activate(ws->name, cec);
  }
-@@ -521,7 +521,7 @@ static void wakeup_source_deactivate(struct wakeup_source *ws)
+@@ -530,7 +530,7 @@ static void wakeup_source_deactivate(struct wakeup_source *ws)
         * Increment the counter of registered wakeup events and decrement the
         * couter of wakeup events in progress simultaneously.
         */
@@ -37532,10 +37643,10 @@ index 2d56f41..8830f19 100644
  
        split_counters(&cnt, &inpr);
 diff --git a/drivers/base/syscore.c b/drivers/base/syscore.c
-index e8d11b6..7b1b36f 100644
+index 8d98a32..61d3165 100644
 --- a/drivers/base/syscore.c
 +++ b/drivers/base/syscore.c
-@@ -21,7 +21,7 @@ static DEFINE_MUTEX(syscore_ops_lock);
+@@ -22,7 +22,7 @@ static DEFINE_MUTEX(syscore_ops_lock);
  void register_syscore_ops(struct syscore_ops *ops)
  {
        mutex_lock(&syscore_ops_lock);
@@ -37544,7 +37655,7 @@ index e8d11b6..7b1b36f 100644
        mutex_unlock(&syscore_ops_lock);
  }
  EXPORT_SYMBOL_GPL(register_syscore_ops);
-@@ -33,7 +33,7 @@ EXPORT_SYMBOL_GPL(register_syscore_ops);
+@@ -34,7 +34,7 @@ EXPORT_SYMBOL_GPL(register_syscore_ops);
  void unregister_syscore_ops(struct syscore_ops *ops)
  {
        mutex_lock(&syscore_ops_lock);
@@ -37554,10 +37665,10 @@ index e8d11b6..7b1b36f 100644
  }
  EXPORT_SYMBOL_GPL(unregister_syscore_ops);
 diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
-index 73894ca..69f64ef 100644
+index ff20f19..018f1da 100644
 --- a/drivers/block/cciss.c
 +++ b/drivers/block/cciss.c
-@@ -3011,7 +3011,7 @@ static void start_io(ctlr_info_t *h)
+@@ -3008,7 +3008,7 @@ static void start_io(ctlr_info_t *h)
        while (!list_empty(&h->reqQ)) {
                c = list_entry(h->reqQ.next, CommandList_struct, list);
                /* can't do anything if fifo is full */
@@ -37566,7 +37677,7 @@ index 73894ca..69f64ef 100644
                        dev_warn(&h->pdev->dev, "fifo full\n");
                        break;
                }
-@@ -3021,7 +3021,7 @@ static void start_io(ctlr_info_t *h)
+@@ -3018,7 +3018,7 @@ static void start_io(ctlr_info_t *h)
                h->Qdepth--;
  
                /* Tell the controller execute command */
@@ -37575,7 +37686,7 @@ index 73894ca..69f64ef 100644
  
                /* Put job onto the completed Q */
                addQ(&h->cmpQ, c);
-@@ -3447,17 +3447,17 @@ startio:
+@@ -3444,17 +3444,17 @@ startio:
  
  static inline unsigned long get_next_completion(ctlr_info_t *h)
  {
@@ -37596,7 +37707,7 @@ index 73894ca..69f64ef 100644
                (h->interrupts_enabled == 0));
  }
  
-@@ -3490,7 +3490,7 @@ static inline u32 next_command(ctlr_info_t *h)
+@@ -3487,7 +3487,7 @@ static inline u32 next_command(ctlr_info_t *h)
        u32 a;
  
        if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
@@ -37605,7 +37716,7 @@ index 73894ca..69f64ef 100644
  
        if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
                a = *(h->reply_pool_head); /* Next cmd in ring buffer */
-@@ -4047,7 +4047,7 @@ static void cciss_put_controller_into_performant_mode(ctlr_info_t *h)
+@@ -4044,7 +4044,7 @@ static void cciss_put_controller_into_performant_mode(ctlr_info_t *h)
                trans_support & CFGTBL_Trans_use_short_tags);
  
        /* Change the access methods to the performant access methods */
@@ -37614,7 +37725,7 @@ index 73894ca..69f64ef 100644
        h->transMethod = CFGTBL_Trans_Performant;
  
        return;
-@@ -4325,7 +4325,7 @@ static int cciss_pci_init(ctlr_info_t *h)
+@@ -4318,7 +4318,7 @@ static int cciss_pci_init(ctlr_info_t *h)
        if (prod_index < 0)
                return -ENODEV;
        h->product_name = products[prod_index].product_name;
@@ -37623,7 +37734,7 @@ index 73894ca..69f64ef 100644
  
        if (cciss_board_disabled(h)) {
                dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
-@@ -5057,7 +5057,7 @@ reinit_after_soft_reset:
+@@ -5050,7 +5050,7 @@ reinit_after_soft_reset:
        }
  
        /* make sure the board interrupts are off */
@@ -37632,7 +37743,7 @@ index 73894ca..69f64ef 100644
        rc = cciss_request_irq(h, do_cciss_msix_intr, do_cciss_intx);
        if (rc)
                goto clean2;
-@@ -5107,7 +5107,7 @@ reinit_after_soft_reset:
+@@ -5100,7 +5100,7 @@ reinit_after_soft_reset:
                 * fake ones to scoop up any residual completions.
                 */
                spin_lock_irqsave(&h->lock, flags);
@@ -37641,7 +37752,7 @@ index 73894ca..69f64ef 100644
                spin_unlock_irqrestore(&h->lock, flags);
                free_irq(h->intr[h->intr_mode], h);
                rc = cciss_request_irq(h, cciss_msix_discard_completions,
-@@ -5127,9 +5127,9 @@ reinit_after_soft_reset:
+@@ -5120,9 +5120,9 @@ reinit_after_soft_reset:
                dev_info(&h->pdev->dev, "Board READY.\n");
                dev_info(&h->pdev->dev,
                        "Waiting for stale completions to drain.\n");
@@ -37653,7 +37764,7 @@ index 73894ca..69f64ef 100644
  
                rc = controller_reset_failed(h->cfgtable);
                if (rc)
-@@ -5152,7 +5152,7 @@ reinit_after_soft_reset:
+@@ -5145,7 +5145,7 @@ reinit_after_soft_reset:
        cciss_scsi_setup(h);
  
        /* Turn the interrupts on so we can service requests */
@@ -37662,7 +37773,7 @@ index 73894ca..69f64ef 100644
  
        /* Get the firmware version */
        inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
-@@ -5224,7 +5224,7 @@ static void cciss_shutdown(struct pci_dev *pdev)
+@@ -5217,7 +5217,7 @@ static void cciss_shutdown(struct pci_dev *pdev)
        kfree(flush_buf);
        if (return_code != IO_OK)
                dev_warn(&h->pdev->dev, "Error flushing cache\n");
@@ -37860,11 +37971,24 @@ index be73e9d..7fbf140 100644
  
        cmdlist_t *reqQ;
        cmdlist_t *cmpQ;
+diff --git a/drivers/block/drbd/drbd_bitmap.c b/drivers/block/drbd/drbd_bitmap.c
+index 434c77d..6d3219a 100644
+--- a/drivers/block/drbd/drbd_bitmap.c
++++ b/drivers/block/drbd/drbd_bitmap.c
+@@ -1036,7 +1036,7 @@ static void bm_page_io_async(struct drbd_bm_aio_ctx *ctx, int page_nr) __must_ho
+               submit_bio(rw, bio);
+               /* this should not count as user activity and cause the
+                * resync to throttle -- see drbd_rs_should_slow_down(). */
+-              atomic_add(len >> 9, &device->rs_sect_ev);
++              atomic_add_unchecked(len >> 9, &device->rs_sect_ev);
+       }
+ }
 diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
-index e7093d4..b364085 100644
+index 9b22f8f..f2932af 100644
 --- a/drivers/block/drbd/drbd_int.h
 +++ b/drivers/block/drbd/drbd_int.h
-@@ -331,7 +331,7 @@ struct drbd_epoch {
+@@ -385,7 +385,7 @@ struct drbd_epoch {
        struct drbd_connection *connection;
        struct list_head list;
        unsigned int barrier_nr;
@@ -37873,7 +37997,7 @@ index e7093d4..b364085 100644
        atomic_t active;     /* increased on every req. added, and dec on every finished. */
        unsigned long flags;
  };
-@@ -787,7 +787,7 @@ struct drbd_device {
+@@ -946,7 +946,7 @@ struct drbd_device {
        unsigned int al_tr_number;
        int al_tr_cycle;
        wait_queue_head_t seq_wait;
@@ -37881,8 +38005,19 @@ index e7093d4..b364085 100644
 +      atomic_unchecked_t packet_seq;
        unsigned int peer_seq;
        spinlock_t peer_seq_lock;
-       unsigned int minor;
-@@ -1361,7 +1361,7 @@ static inline int drbd_setsockopt(struct socket *sock, int level, int optname,
+       unsigned long comm_bm_set; /* communicated number of set bits. */
+@@ -955,8 +955,8 @@ struct drbd_device {
+       struct mutex own_state_mutex;
+       struct mutex *state_mutex; /* either own_state_mutex or first_peer_device(device)->connection->cstate_mutex */
+       char congestion_reason;  /* Why we where congested... */
+-      atomic_t rs_sect_in; /* for incoming resync data rate, SyncTarget */
+-      atomic_t rs_sect_ev; /* for submitted resync data rate, both */
++      atomic_unchecked_t rs_sect_in; /* for incoming resync data rate, SyncTarget */
++      atomic_unchecked_t rs_sect_ev; /* for submitted resync data rate, both */
+       int rs_last_sect_ev; /* counter to compare with */
+       int rs_last_events;  /* counter of read or write "events" (unit sectors)
+                             * on the lower level device when we last looked. */
+@@ -1567,7 +1567,7 @@ static inline int drbd_setsockopt(struct socket *sock, int level, int optname,
        char __user *uoptval;
        int err;
  
@@ -37891,28 +38026,11 @@ index e7093d4..b364085 100644
  
        set_fs(KERNEL_DS);
        if (level == SOL_SOCKET)
-diff --git a/drivers/block/drbd/drbd_interval.c b/drivers/block/drbd/drbd_interval.c
-index 89c497c..9c736ae 100644
---- a/drivers/block/drbd/drbd_interval.c
-+++ b/drivers/block/drbd/drbd_interval.c
-@@ -67,9 +67,9 @@ static void augment_rotate(struct rb_node *rb_old, struct rb_node *rb_new)
- }
- static const struct rb_augment_callbacks augment_callbacks = {
--      augment_propagate,
--      augment_copy,
--      augment_rotate,
-+      .propagate = augment_propagate,
-+      .copy = augment_copy,
-+      .rotate = augment_rotate,
- };
- /**
 diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
-index 331e5cc..6d657bce 100644
+index 973c185..05d8b1a 100644
 --- a/drivers/block/drbd/drbd_main.c
 +++ b/drivers/block/drbd/drbd_main.c
-@@ -1322,7 +1322,7 @@ static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet
+@@ -1328,7 +1328,7 @@ static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet
        p->sector = sector;
        p->block_id = block_id;
        p->blksize = blksize;
@@ -37921,7 +38039,7 @@ index 331e5cc..6d657bce 100644
        return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0);
  }
  
-@@ -1628,7 +1628,7 @@ int drbd_send_dblock(struct drbd_peer_device *peer_device, struct drbd_request *
+@@ -1634,7 +1634,7 @@ int drbd_send_dblock(struct drbd_peer_device *peer_device, struct drbd_request *
                return -EIO;
        p->sector = cpu_to_be64(req->i.sector);
        p->block_id = (unsigned long)req;
@@ -37930,7 +38048,18 @@ index 331e5cc..6d657bce 100644
        dp_flags = bio_flags_to_wire(peer_device->connection, req->master_bio->bi_rw);
        if (device->state.conn >= C_SYNC_SOURCE &&
            device->state.conn <= C_PAUSED_SYNC_T)
-@@ -2658,8 +2658,8 @@ void drbd_destroy_connection(struct kref *kref)
+@@ -1915,8 +1915,8 @@ void drbd_init_set_defaults(struct drbd_device *device)
+       atomic_set(&device->unacked_cnt, 0);
+       atomic_set(&device->local_cnt, 0);
+       atomic_set(&device->pp_in_use_by_net, 0);
+-      atomic_set(&device->rs_sect_in, 0);
+-      atomic_set(&device->rs_sect_ev, 0);
++      atomic_set_unchecked(&device->rs_sect_in, 0);
++      atomic_set_unchecked(&device->rs_sect_ev, 0);
+       atomic_set(&device->ap_in_flight, 0);
+       atomic_set(&device->md_io.in_use, 0);
+@@ -2688,8 +2688,8 @@ void drbd_destroy_connection(struct kref *kref)
        struct drbd_connection *connection = container_of(kref, struct drbd_connection, kref);
        struct drbd_resource *resource = connection->resource;
  
@@ -37942,10 +38071,10 @@ index 331e5cc..6d657bce 100644
  
        idr_destroy(&connection->peer_devices);
 diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
-index 526414b..4eb8184 100644
+index 1cd47df..57c53c0 100644
 --- a/drivers/block/drbd/drbd_nl.c
 +++ b/drivers/block/drbd/drbd_nl.c
-@@ -3505,7 +3505,7 @@ out:
+@@ -3645,13 +3645,13 @@ finish:
  
  void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib)
  {
@@ -37954,9 +38083,7 @@ index 526414b..4eb8184 100644
        struct sk_buff *msg;
        struct drbd_genlmsghdr *d_out;
        unsigned seq;
-@@ -3518,7 +3518,7 @@ void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib)
-                       return;
-       }
+       int err = -ENOMEM;
  
 -      seq = atomic_inc_return(&drbd_genl_seq);
 +      seq = atomic_inc_return_unchecked(&drbd_genl_seq);
@@ -37964,10 +38091,10 @@ index 526414b..4eb8184 100644
        if (!msg)
                goto failed;
 diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
-index 68e3992..1aca24a 100644
+index 6960fb0..215d76b 100644
 --- a/drivers/block/drbd/drbd_receiver.c
 +++ b/drivers/block/drbd/drbd_receiver.c
-@@ -826,7 +826,7 @@ int drbd_connected(struct drbd_peer_device *peer_device)
+@@ -870,7 +870,7 @@ int drbd_connected(struct drbd_peer_device *peer_device)
        struct drbd_device *device = peer_device->device;
        int err;
  
@@ -37976,7 +38103,7 @@ index 68e3992..1aca24a 100644
        device->peer_seq = 0;
  
        device->state_mutex = peer_device->connection->agreed_pro_version < 100 ?
-@@ -1188,7 +1188,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
+@@ -1233,7 +1233,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
        do {
                next_epoch = NULL;
  
@@ -37985,7 +38112,7 @@ index 68e3992..1aca24a 100644
  
                switch (ev & ~EV_CLEANUP) {
                case EV_PUT:
-@@ -1228,7 +1228,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
+@@ -1273,7 +1273,7 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_connection *connectio
                                        rv = FE_DESTROYED;
                        } else {
                                epoch->flags = 0;
@@ -37994,7 +38121,7 @@ index 68e3992..1aca24a 100644
                                /* atomic_set(&epoch->active, 0); is already zero */
                                if (rv == FE_STILL_LIVE)
                                        rv = FE_RECYCLED;
-@@ -1456,7 +1456,7 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
+@@ -1550,7 +1550,7 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
                conn_wait_active_ee_empty(connection);
                drbd_flush(connection);
  
@@ -38003,7 +38130,7 @@ index 68e3992..1aca24a 100644
                        epoch = kmalloc(sizeof(struct drbd_epoch), GFP_NOIO);
                        if (epoch)
                                break;
-@@ -1469,11 +1469,11 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
+@@ -1564,11 +1564,11 @@ static int receive_Barrier(struct drbd_connection *connection, struct packet_inf
        }
  
        epoch->flags = 0;
@@ -38017,7 +38144,25 @@ index 68e3992..1aca24a 100644
                list_add(&epoch->list, &connection->current_epoch->list);
                connection->current_epoch = epoch;
                connection->epochs++;
-@@ -2182,7 +2182,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
+@@ -1802,7 +1802,7 @@ static int recv_resync_read(struct drbd_peer_device *peer_device, sector_t secto
+       list_add_tail(&peer_req->w.list, &device->sync_ee);
+       spin_unlock_irq(&device->resource->req_lock);
+-      atomic_add(pi->size >> 9, &device->rs_sect_ev);
++      atomic_add_unchecked(pi->size >> 9, &device->rs_sect_ev);
+       if (drbd_submit_peer_request(device, peer_req, WRITE, DRBD_FAULT_RS_WR) == 0)
+               return 0;
+@@ -1900,7 +1900,7 @@ static int receive_RSDataReply(struct drbd_connection *connection, struct packet
+               drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size);
+       }
+-      atomic_add(pi->size >> 9, &device->rs_sect_in);
++      atomic_add_unchecked(pi->size >> 9, &device->rs_sect_in);
+       return err;
+ }
+@@ -2290,7 +2290,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
  
                err = wait_for_and_update_peer_seq(peer_device, peer_seq);
                drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size);
@@ -38026,7 +38171,7 @@ index 68e3992..1aca24a 100644
                err2 = drbd_drain_block(peer_device, pi->size);
                if (!err)
                        err = err2;
-@@ -2216,7 +2216,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
+@@ -2334,7 +2334,7 @@ static int receive_Data(struct drbd_connection *connection, struct packet_info *
  
        spin_lock(&connection->epoch_lock);
        peer_req->epoch = connection->current_epoch;
@@ -38035,7 +38180,34 @@ index 68e3992..1aca24a 100644
        atomic_inc(&peer_req->epoch->active);
        spin_unlock(&connection->epoch_lock);
  
-@@ -4396,7 +4396,7 @@ struct data_cmd {
+@@ -2479,7 +2479,7 @@ bool drbd_rs_c_min_rate_throttle(struct drbd_device *device)
+       curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
+                     (int)part_stat_read(&disk->part0, sectors[1]) -
+-                      atomic_read(&device->rs_sect_ev);
++                      atomic_read_unchecked(&device->rs_sect_ev);
+       if (atomic_read(&device->ap_actlog_cnt)
+           || !device->rs_last_events || curr_events - device->rs_last_events > 64) {
+@@ -2618,7 +2618,7 @@ static int receive_DataRequest(struct drbd_connection *connection, struct packet
+                       device->use_csums = true;
+               } else if (pi->cmd == P_OV_REPLY) {
+                       /* track progress, we may need to throttle */
+-                      atomic_add(size >> 9, &device->rs_sect_in);
++                      atomic_add_unchecked(size >> 9, &device->rs_sect_in);
+                       peer_req->w.cb = w_e_end_ov_reply;
+                       dec_rs_pending(device);
+                       /* drbd_rs_begin_io done when we sent this request,
+@@ -2691,7 +2691,7 @@ static int receive_DataRequest(struct drbd_connection *connection, struct packet
+               goto out_free_e;
+ submit_for_resync:
+-      atomic_add(size >> 9, &device->rs_sect_ev);
++      atomic_add_unchecked(size >> 9, &device->rs_sect_ev);
+ submit:
+       update_receiver_timing_details(connection, drbd_submit_peer_request);
+@@ -4564,7 +4564,7 @@ struct data_cmd {
        int expect_payload;
        size_t pkt_size;
        int (*fn)(struct drbd_connection *, struct packet_info *);
@@ -38044,7 +38216,7 @@ index 68e3992..1aca24a 100644
  
  static struct data_cmd drbd_cmd_handler[] = {
        [P_DATA]            = { 1, sizeof(struct p_data), receive_Data },
-@@ -4506,7 +4506,7 @@ static void conn_disconnect(struct drbd_connection *connection)
+@@ -4678,7 +4678,7 @@ static void conn_disconnect(struct drbd_connection *connection)
        if (!list_empty(&connection->current_epoch->list))
                drbd_err(connection, "ASSERTION FAILED: connection->current_epoch->list not empty\n");
        /* ok, no more ee's on the fly, it is safe to reset the epoch_size */
@@ -38053,7 +38225,16 @@ index 68e3992..1aca24a 100644
        connection->send.seen_any_write_yet = false;
  
        drbd_info(connection, "Connection closed\n");
-@@ -5281,7 +5281,7 @@ static int connection_finish_peer_reqs(struct drbd_connection *connection)
+@@ -5182,7 +5182,7 @@ static int got_IsInSync(struct drbd_connection *connection, struct packet_info *
+               put_ldev(device);
+       }
+       dec_rs_pending(device);
+-      atomic_add(blksize >> 9, &device->rs_sect_in);
++      atomic_add_unchecked(blksize >> 9, &device->rs_sect_in);
+       return 0;
+ }
+@@ -5470,7 +5470,7 @@ static int connection_finish_peer_reqs(struct drbd_connection *connection)
  struct asender_cmd {
        size_t pkt_size;
        int (*fn)(struct drbd_connection *connection, struct packet_info *);
@@ -38062,8 +38243,41 @@ index 68e3992..1aca24a 100644
  
  static struct asender_cmd asender_tbl[] = {
        [P_PING]            = { 0, got_Ping },
+diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
+index d2d1f97..6a1188f 100644
+--- a/drivers/block/drbd/drbd_worker.c
++++ b/drivers/block/drbd/drbd_worker.c
+@@ -408,7 +408,7 @@ static int read_for_csum(struct drbd_peer_device *peer_device, sector_t sector,
+       list_add_tail(&peer_req->w.list, &device->read_ee);
+       spin_unlock_irq(&device->resource->req_lock);
+-      atomic_add(size >> 9, &device->rs_sect_ev);
++      atomic_add_unchecked(size >> 9, &device->rs_sect_ev);
+       if (drbd_submit_peer_request(device, peer_req, READ, DRBD_FAULT_RS_RD) == 0)
+               return 0;
+@@ -553,7 +553,7 @@ static int drbd_rs_number_requests(struct drbd_device *device)
+       unsigned int sect_in;  /* Number of sectors that came in since the last turn */
+       int number, mxb;
+-      sect_in = atomic_xchg(&device->rs_sect_in, 0);
++      sect_in = atomic_xchg_unchecked(&device->rs_sect_in, 0);
+       device->rs_in_flight -= sect_in;
+       rcu_read_lock();
+@@ -1594,8 +1594,8 @@ void drbd_rs_controller_reset(struct drbd_device *device)
+ {
+       struct fifo_buffer *plan;
+-      atomic_set(&device->rs_sect_in, 0);
+-      atomic_set(&device->rs_sect_ev, 0);
++      atomic_set_unchecked(&device->rs_sect_in, 0);
++      atomic_set_unchecked(&device->rs_sect_ev, 0);
+       device->rs_in_flight = 0;
+       /* Updating the RCU protected object in place is necessary since
 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index f70a230..9dc90d5 100644
+index 6cb1beb..bf490f7 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
 @@ -232,7 +232,7 @@ static int __do_lo_send_write(struct file *file,
@@ -38075,58 +38289,39 @@ index f70a230..9dc90d5 100644
        set_fs(old_fs);
        file_end_write(file);
        if (likely(bw == len))
-diff --git a/drivers/block/null_blk.c b/drivers/block/null_blk.c
-index 091b9ea..f5428f8 100644
---- a/drivers/block/null_blk.c
-+++ b/drivers/block/null_blk.c
-@@ -382,15 +382,25 @@ static int null_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
-       return 0;
- }
+diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c
+index e2bb8af..44b8aef 100644
+--- a/drivers/block/nvme-core.c
++++ b/drivers/block/nvme-core.c
+@@ -73,7 +73,6 @@ static LIST_HEAD(dev_list);
+ static struct task_struct *nvme_thread;
+ static struct workqueue_struct *nvme_workq;
+ static wait_queue_head_t nvme_kthread_wait;
+-static struct notifier_block nvme_nb;
+ static void nvme_reset_failed_dev(struct work_struct *ws);
+@@ -2926,6 +2925,10 @@ static struct pci_driver nvme_driver = {
+       .err_handler    = &nvme_err_handler,
+ };
  
--static struct blk_mq_ops null_mq_ops = {
--      .queue_rq       = null_queue_rq,
--      .map_queue      = blk_mq_map_queue,
-+static struct blk_mq_ops null_mq_single_ops = {
-+      .queue_rq       = null_queue_rq,
-+      .map_queue      = blk_mq_map_queue,
-       .init_hctx      = null_init_hctx,
-       .complete       = null_softirq_done_fn,
-+      .alloc_hctx     = blk_mq_alloc_single_hw_queue,
-+      .free_hctx      = blk_mq_free_single_hw_queue,
++static struct notifier_block nvme_nb = {
++      .notifier_call = &nvme_cpu_notify,
 +};
 +
-+static struct blk_mq_ops null_mq_per_node_ops = {
-+      .queue_rq       = null_queue_rq,
-+      .map_queue      = blk_mq_map_queue,
-+      .init_hctx      = null_init_hctx,
-+      .alloc_hctx     = null_alloc_hctx,
-+      .free_hctx      = null_free_hctx,
- };
- static struct blk_mq_reg null_mq_reg = {
--      .ops            = &null_mq_ops,
-+      .ops            = &null_mq_single_ops,
-       .queue_depth    = 64,
-       .cmd_size       = sizeof(struct nullb_cmd),
-       .flags          = BLK_MQ_F_SHOULD_MERGE,
-@@ -521,13 +531,8 @@ static int null_add_dev(void)
-               null_mq_reg.queue_depth = hw_queue_depth;
-               null_mq_reg.nr_hw_queues = submit_queues;
--              if (use_per_node_hctx) {
--                      null_mq_reg.ops->alloc_hctx = null_alloc_hctx;
--                      null_mq_reg.ops->free_hctx = null_free_hctx;
--              } else {
--                      null_mq_reg.ops->alloc_hctx = blk_mq_alloc_single_hw_queue;
--                      null_mq_reg.ops->free_hctx = blk_mq_free_single_hw_queue;
--              }
-+              if (use_per_node_hctx)
-+                      null_mq_reg.ops = &null_mq_per_node_ops;
+ static int __init nvme_init(void)
+ {
+       int result;
+@@ -2942,7 +2945,6 @@ static int __init nvme_init(void)
+       else if (result > 0)
+               nvme_major = result;
  
-               nullb->q = blk_mq_init_queue(&null_mq_reg, nullb);
-       } else if (queue_mode == NULL_Q_BIO) {
+-      nvme_nb.notifier_call = &nvme_cpu_notify;
+       result = register_hotcpu_notifier(&nvme_nb);
+       if (result)
+               goto unregister_blkdev;
 diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
-index a2af73d..c0b8f61 100644
+index 09e628da..7607aaa 100644
 --- a/drivers/block/pktcdvd.c
 +++ b/drivers/block/pktcdvd.c
 @@ -108,7 +108,7 @@ static int pkt_seq_show(struct seq_file *m, void *p);
@@ -38138,7 +38333,7 @@ index a2af73d..c0b8f61 100644
  }
  
  /*
-@@ -1888,7 +1888,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)
+@@ -1890,7 +1890,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)
                return -EROFS;
        }
        pd->settings.fp = ti.fp;
@@ -38231,18 +38426,18 @@ index f038dba..bb74c08 100644
        int err;
  
 diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
-index 8a3aff7..d7538c2 100644
+index 5d28a45..a538f90 100644
 --- a/drivers/cdrom/cdrom.c
 +++ b/drivers/cdrom/cdrom.c
-@@ -416,7 +416,6 @@ int register_cdrom(struct cdrom_device_info *cdi)
+@@ -610,7 +610,6 @@ int register_cdrom(struct cdrom_device_info *cdi)
        ENSURE(reset, CDC_RESET);
        ENSURE(generic_packet, CDC_GENERIC_PACKET);
        cdi->mc_flags = 0;
 -      cdo->n_minors = 0;
-         cdi->options = CDO_USE_FFLAGS;
-       
-       if (autoclose==1 && CDROM_CAN(CDC_CLOSE_TRAY))
-@@ -436,8 +435,11 @@ int register_cdrom(struct cdrom_device_info *cdi)
+       cdi->options = CDO_USE_FFLAGS;
+       if (autoclose == 1 && CDROM_CAN(CDC_CLOSE_TRAY))
+@@ -630,8 +629,11 @@ int register_cdrom(struct cdrom_device_info *cdi)
        else
                cdi->cdda_method = CDDA_OLD;
  
@@ -38254,17 +38449,17 @@ index 8a3aff7..d7538c2 100644
 +              pax_close_kernel();
 +      }
  
-       cdinfo(CD_REG_UNREG, "drive \"/dev/%s\" registered\n", cdi->name);
+       cd_dbg(CD_REG_UNREG, "drive \"/dev/%s\" registered\n", cdi->name);
        mutex_lock(&cdrom_mutex);
-@@ -458,7 +460,6 @@ void unregister_cdrom(struct cdrom_device_info *cdi)
+@@ -652,7 +654,6 @@ void unregister_cdrom(struct cdrom_device_info *cdi)
        if (cdi->exit)
                cdi->exit(cdi);
  
 -      cdi->ops->n_minors--;
-       cdinfo(CD_REG_UNREG, "drive \"/dev/%s\" unregistered\n", cdi->name);
+       cd_dbg(CD_REG_UNREG, "drive \"/dev/%s\" unregistered\n", cdi->name);
  }
  
-@@ -2107,7 +2108,7 @@ static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
+@@ -2126,7 +2127,7 @@ static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
         */
        nr = nframes;
        do {
@@ -38273,7 +38468,7 @@ index 8a3aff7..d7538c2 100644
                if (cgc.buffer)
                        break;
  
-@@ -3429,7 +3430,7 @@ static int cdrom_print_info(const char *header, int val, char *info,
+@@ -3434,7 +3435,7 @@ static int cdrom_print_info(const char *header, int val, char *info,
        struct cdrom_device_info *cdi;
        int ret;
  
@@ -38283,7 +38478,7 @@ index 8a3aff7..d7538c2 100644
                return 1;
  
 diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c
-index 51e75ad..39c4c76 100644
+index 584bc31..e64a12c 100644
 --- a/drivers/cdrom/gdrom.c
 +++ b/drivers/cdrom/gdrom.c
 @@ -491,7 +491,6 @@ static struct cdrom_device_ops gdrom_ops = {
@@ -38295,7 +38490,7 @@ index 51e75ad..39c4c76 100644
  
  static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode)
 diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
-index 6e9f74a..50c7cea 100644
+index efefd12..4f1d494 100644
 --- a/drivers/char/Kconfig
 +++ b/drivers/char/Kconfig
 @@ -8,7 +8,8 @@ source "drivers/tty/Kconfig"
@@ -38330,10 +38525,10 @@ index a48e05b..6bac831 100644
                        kfree(usegment);
                        kfree(ksegment);
 diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c
-index b297033..fa217ca 100644
+index 09f17eb..8531d2f 100644
 --- a/drivers/char/agp/frontend.c
 +++ b/drivers/char/agp/frontend.c
-@@ -819,7 +819,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg)
+@@ -806,7 +806,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg)
        if (copy_from_user(&reserve, arg, sizeof(struct agp_region)))
                return -EFAULT;
  
@@ -38342,7 +38537,7 @@ index b297033..fa217ca 100644
                return -EFAULT;
  
        client = agp_find_client_by_pid(reserve.pid);
-@@ -849,7 +849,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg)
+@@ -836,7 +836,7 @@ static int agpioc_reserve_wrap(struct agp_file_private *priv, void __user *arg)
                if (segment == NULL)
                        return -ENOMEM;
  
@@ -38376,21 +38571,8 @@ index d5d4cd8..22d561d 100644
                  struct hpet_info *info)
  {
        struct hpet_timer __iomem *timer;
-diff --git a/drivers/char/hw_random/intel-rng.c b/drivers/char/hw_random/intel-rng.c
-index 86fe45c..c0ea948 100644
---- a/drivers/char/hw_random/intel-rng.c
-+++ b/drivers/char/hw_random/intel-rng.c
-@@ -314,7 +314,7 @@ PFX "RNG, try using the 'no_fwh_detect' option.\n";
-               if (no_fwh_detect)
-                       return -ENODEV;
--              printk(warning);
-+              printk("%s", warning);
-               return -EBUSY;
-       }
 diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
-index e6db938..835e3a2 100644
+index f816211..89eadea 100644
 --- a/drivers/char/ipmi/ipmi_msghandler.c
 +++ b/drivers/char/ipmi/ipmi_msghandler.c
 @@ -438,7 +438,7 @@ struct ipmi_smi {
@@ -38414,7 +38596,7 @@ index e6db938..835e3a2 100644
  
  static int is_lan_addr(struct ipmi_addr *addr)
  {
-@@ -2926,7 +2926,7 @@ int ipmi_register_smi(struct ipmi_smi_handlers *handlers,
+@@ -2925,7 +2925,7 @@ int ipmi_register_smi(struct ipmi_smi_handlers *handlers,
        INIT_LIST_HEAD(&intf->cmd_rcvrs);
        init_waitqueue_head(&intf->waitq);
        for (i = 0; i < IPMI_NUM_STATS; i++)
@@ -38424,7 +38606,7 @@ index e6db938..835e3a2 100644
        intf->proc_dir = NULL;
  
 diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
-index 1c4bb4f..719e873 100644
+index 5c4e1f6..0ea58f9 100644
 --- a/drivers/char/ipmi/ipmi_si_intf.c
 +++ b/drivers/char/ipmi/ipmi_si_intf.c
 @@ -285,7 +285,7 @@ struct smi_info {
@@ -38448,7 +38630,7 @@ index 1c4bb4f..719e873 100644
  
  #define SI_MAX_PARMS 4
  
-@@ -3374,7 +3374,7 @@ static int try_smi_init(struct smi_info *new_smi)
+@@ -3377,7 +3377,7 @@ static int try_smi_init(struct smi_info *new_smi)
        atomic_set(&new_smi->req_events, 0);
        new_smi->run_to_completion = false;
        for (i = 0; i < SI_NUM_STATS; i++)
@@ -38458,7 +38640,7 @@ index 1c4bb4f..719e873 100644
        new_smi->interrupt_disabled = true;
        atomic_set(&new_smi->stop_operation, 0);
 diff --git a/drivers/char/mem.c b/drivers/char/mem.c
-index 917403f..dddd899 100644
+index 524b707..29d07c1 100644
 --- a/drivers/char/mem.c
 +++ b/drivers/char/mem.c
 @@ -18,6 +18,7 @@
@@ -38583,7 +38765,7 @@ index 917403f..dddd899 100644
                                return -EFAULT;
                        buf += sz;
                        p += sz;
-@@ -827,6 +874,9 @@ static const struct memdev {
+@@ -797,6 +844,9 @@ static const struct memdev {
  #ifdef CONFIG_PRINTK
        [11] = { "kmsg", 0644, &kmsg_fops, NULL },
  #endif
@@ -38593,7 +38775,7 @@ index 917403f..dddd899 100644
  };
  
  static int memory_open(struct inode *inode, struct file *filp)
-@@ -898,7 +948,7 @@ static int __init chr_dev_init(void)
+@@ -868,7 +918,7 @@ static int __init chr_dev_init(void)
                        continue;
  
                device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor),
@@ -38616,22 +38798,19 @@ index 9df78e2..01ba9ae 100644
  
        *ppos = i;
 diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c
-index 8320abd..ec48108 100644
+index 0ea9986..e7b07e4 100644
 --- a/drivers/char/pcmcia/synclink_cs.c
 +++ b/drivers/char/pcmcia/synclink_cs.c
-@@ -2345,9 +2345,9 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp)
+@@ -2345,7 +2345,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp)
  
        if (debug_level >= DEBUG_LEVEL_INFO)
                printk("%s(%d):mgslpc_close(%s) entry, count=%d\n",
 -                       __FILE__, __LINE__, info->device_name, port->count);
 +                       __FILE__, __LINE__, info->device_name, atomic_read(&port->count));
  
--      WARN_ON(!port->count);
-+      WARN_ON(!atomic_read(&port->count));
        if (tty_port_close_start(port, tty, filp) == 0)
                goto cleanup;
-@@ -2365,7 +2365,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp)
+@@ -2363,7 +2363,7 @@ static void mgslpc_close(struct tty_struct *tty, struct file * filp)
  cleanup:
        if (debug_level >= DEBUG_LEVEL_INFO)
                printk("%s(%d):mgslpc_close(%s) exit, count=%d\n", __FILE__, __LINE__,
@@ -38640,7 +38819,7 @@ index 8320abd..ec48108 100644
  }
  
  /* Wait until the transmitter is empty.
-@@ -2507,7 +2507,7 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp)
+@@ -2505,7 +2505,7 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp)
  
        if (debug_level >= DEBUG_LEVEL_INFO)
                printk("%s(%d):mgslpc_open(%s), old ref count = %d\n",
@@ -38648,8 +38827,8 @@ index 8320abd..ec48108 100644
 +                       __FILE__, __LINE__, tty->driver->name, atomic_read(&port->count));
  
        /* If port is closing, signal caller to try again */
-       if (tty_hung_up_p(filp) || port->flags & ASYNC_CLOSING){
-@@ -2527,11 +2527,11 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp)
+       if (port->flags & ASYNC_CLOSING){
+@@ -2525,11 +2525,11 @@ static int mgslpc_open(struct tty_struct *tty, struct file * filp)
                goto cleanup;
        }
        spin_lock(&port->lock);
@@ -38663,7 +38842,7 @@ index 8320abd..ec48108 100644
                /* 1st open on this device, init hardware */
                retval = startup(info, tty);
                if (retval < 0)
-@@ -3920,7 +3920,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding,
+@@ -3918,7 +3918,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding,
        unsigned short new_crctype;
  
        /* return error if TTY interface open */
@@ -38672,7 +38851,7 @@ index 8320abd..ec48108 100644
                return -EBUSY;
  
        switch (encoding)
-@@ -4024,7 +4024,7 @@ static int hdlcdev_open(struct net_device *dev)
+@@ -4022,7 +4022,7 @@ static int hdlcdev_open(struct net_device *dev)
  
        /* arbitrate between network and tty opens */
        spin_lock_irqsave(&info->netlock, flags);
@@ -38681,7 +38860,7 @@ index 8320abd..ec48108 100644
                printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name);
                spin_unlock_irqrestore(&info->netlock, flags);
                return -EBUSY;
-@@ -4114,7 +4114,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+@@ -4112,7 +4112,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
                printk("%s:hdlcdev_ioctl(%s)\n", __FILE__, dev->name);
  
        /* return error if TTY interface open */
@@ -38691,28 +38870,10 @@ index 8320abd..ec48108 100644
  
        if (cmd != SIOCWANDEV)
 diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 2b6e4cd..32033f3 100644
+index 04645c0..560e350 100644
 --- a/drivers/char/random.c
 +++ b/drivers/char/random.c
-@@ -270,10 +270,17 @@
- /*
-  * Configuration information
-  */
-+#ifdef CONFIG_GRKERNSEC_RANDNET
-+#define INPUT_POOL_SHIFT      14
-+#define INPUT_POOL_WORDS      (1 << (INPUT_POOL_SHIFT-5))
-+#define OUTPUT_POOL_SHIFT     12
-+#define OUTPUT_POOL_WORDS     (1 << (OUTPUT_POOL_SHIFT-5))
-+#else
- #define INPUT_POOL_SHIFT      12
- #define INPUT_POOL_WORDS      (1 << (INPUT_POOL_SHIFT-5))
- #define OUTPUT_POOL_SHIFT     10
- #define OUTPUT_POOL_WORDS     (1 << (OUTPUT_POOL_SHIFT-5))
-+#endif
- #define SEC_XFER_SIZE         512
- #define EXTRACT_SIZE          10
-@@ -284,9 +291,6 @@
+@@ -289,9 +289,6 @@
  /*
   * To allow fractional bits to be tracked, the entropy_count field is
   * denominated in units of 1/8th bits.
@@ -38722,27 +38883,7 @@ index 2b6e4cd..32033f3 100644
   */
  #define ENTROPY_SHIFT 3
  #define ENTROPY_BITS(r) ((r)->entropy_count >> ENTROPY_SHIFT)
-@@ -361,12 +365,19 @@ static struct poolinfo {
- #define S(x) ilog2(x)+5, (x), (x)*4, (x)*32, (x) << (ENTROPY_SHIFT+5)
-       int tap1, tap2, tap3, tap4, tap5;
- } poolinfo_table[] = {
-+#ifdef CONFIG_GRKERNSEC_RANDNET
-+      /* x^512 + x^411 + x^308 + x^208 +x^104 + x + 1 -- 225 */
-+      { S(512),       411,    308,    208,    104,    1 },
-+      /* x^128 + x^104 + x^76 + x^51 + x^25 + x + 1 -- 105 */
-+      { S(128),       104,    76,     51,     25,     1 },
-+#else
-       /* was: x^128 + x^103 + x^76 + x^51 +x^25 + x + 1 */
-       /* x^128 + x^104 + x^76 + x^51 +x^25 + x + 1 */
-       { S(128),       104,    76,     51,     25,     1 },
-       /* was: x^32 + x^26 + x^20 + x^14 + x^7 + x + 1 */
-       /* x^32 + x^26 + x^19 + x^14 + x^7 + x + 1 */
-       { S(32),        26,     19,     14,     7,      1 },
-+#endif
- #if 0
-       /* x^2048 + x^1638 + x^1231 + x^819 + x^411 + x + 1  -- 115 */
-       { S(2048),      1638,   1231,   819,    411,    1 },
-@@ -433,9 +444,9 @@ struct entropy_store {
+@@ -439,9 +436,9 @@ struct entropy_store {
  };
  
  static void push_to_pool(struct work_struct *work);
@@ -38755,18 +38896,7 @@ index 2b6e4cd..32033f3 100644
  
  static struct entropy_store input_pool = {
        .poolinfo = &poolinfo_table[0],
-@@ -524,8 +535,8 @@ static void _mix_pool_bytes(struct entropy_store *r, const void *in,
-               input_rotate = (input_rotate + (i ? 7 : 14)) & 31;
-       }
--      ACCESS_ONCE(r->input_rotate) = input_rotate;
--      ACCESS_ONCE(r->add_ptr) = i;
-+      ACCESS_ONCE_RW(r->input_rotate) = input_rotate;
-+      ACCESS_ONCE_RW(r->add_ptr) = i;
-       smp_wmb();
-       if (out)
-@@ -632,7 +643,7 @@ retry:
+@@ -635,7 +632,7 @@ retry:
                /* The +2 corresponds to the /4 in the denominator */
  
                do {
@@ -38775,44 +38905,7 @@ index 2b6e4cd..32033f3 100644
                        unsigned int add =
                                ((pool_size - entropy_count)*anfrac*3) >> s;
  
-@@ -641,7 +652,7 @@ retry:
-               } while (unlikely(entropy_count < pool_size-2 && pnfrac));
-       }
--      if (entropy_count < 0) {
-+      if (unlikely(entropy_count < 0)) {
-               pr_warn("random: negative entropy/overflow: pool %s count %d\n",
-                       r->name, entropy_count);
-               WARN_ON(1);
-@@ -980,7 +991,7 @@ static size_t account(struct entropy_store *r, size_t nbytes, int min,
-                     int reserved)
- {
-       int entropy_count, orig;
--      size_t ibytes;
-+      size_t ibytes, nfrac;
-       BUG_ON(r->entropy_count > r->poolinfo->poolfracbits);
-@@ -998,7 +1009,17 @@ retry:
-       }
-       if (ibytes < min)
-               ibytes = 0;
--      if ((entropy_count -= ibytes << (ENTROPY_SHIFT + 3)) < 0)
-+
-+      if (unlikely(entropy_count < 0)) {
-+              pr_warn("random: negative entropy count: pool %s count %d\n",
-+                      r->name, entropy_count);
-+              WARN_ON(1);
-+              entropy_count = 0;
-+      }
-+      nfrac = ibytes << (ENTROPY_SHIFT + 3);
-+      if ((size_t) entropy_count > nfrac)
-+              entropy_count -= nfrac;
-+      else
-               entropy_count = 0;
-       if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig)
-@@ -1166,7 +1187,7 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf,
+@@ -1207,7 +1204,7 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf,
  
                extract_buf(r, tmp);
                i = min_t(int, nbytes, EXTRACT_SIZE);
@@ -38821,15 +38914,7 @@ index 2b6e4cd..32033f3 100644
                        ret = -EFAULT;
                        break;
                }
-@@ -1375,6 +1396,7 @@ urandom_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
-                           "with %d bits of entropy available\n",
-                           current->comm, nonblocking_pool.entropy_total);
-+      nbytes = min_t(size_t, nbytes, INT_MAX >> (ENTROPY_SHIFT + 3));
-       ret = extract_entropy_user(&nonblocking_pool, buf, nbytes);
-       trace_urandom_read(8 * nbytes, ENTROPY_BITS(&nonblocking_pool),
-@@ -1555,7 +1577,7 @@ static char sysctl_bootid[16];
+@@ -1590,7 +1587,7 @@ static char sysctl_bootid[16];
  static int proc_do_uuid(struct ctl_table *table, int write,
                        void __user *buffer, size_t *lenp, loff_t *ppos)
  {
@@ -38838,11 +38923,11 @@ index 2b6e4cd..32033f3 100644
        unsigned char buf[64], tmp_uuid[16], *uuid;
  
        uuid = table->data;
-@@ -1585,7 +1607,7 @@ static int proc_do_uuid(struct ctl_table *table, int write,
- static int proc_do_entropy(ctl_table *table, int write,
+@@ -1620,7 +1617,7 @@ static int proc_do_uuid(struct ctl_table *table, int write,
+ static int proc_do_entropy(struct ctl_table *table, int write,
                           void __user *buffer, size_t *lenp, loff_t *ppos)
  {
--      ctl_table fake_table;
+-      struct ctl_table fake_table;
 +      ctl_table_no_const fake_table;
        int entropy_count;
  
@@ -38890,11 +38975,11 @@ index 7cc1fe22..b602d6b 100644
  
        return 0;
 diff --git a/drivers/char/tpm/tpm_acpi.c b/drivers/char/tpm/tpm_acpi.c
-index b9a57fa..5bb9e38 100644
+index 565a947..dcdc06e 100644
 --- a/drivers/char/tpm/tpm_acpi.c
 +++ b/drivers/char/tpm/tpm_acpi.c
 @@ -98,11 +98,12 @@ int read_log(struct tpm_bios_log *log)
-       virt = acpi_os_map_memory(start, len);
+       virt = acpi_os_map_iomem(start, len);
        if (!virt) {
                kfree(log->bios_event_log);
 +              log->bios_event_log = NULL;
@@ -38905,10 +38990,10 @@ index b9a57fa..5bb9e38 100644
 -      memcpy_fromio(log->bios_event_log, virt, len);
 +      memcpy_fromio(log->bios_event_log, (const char __force_kernel *)virt, len);
  
-       acpi_os_unmap_memory(virt, len);
+       acpi_os_unmap_iomem(virt, len);
        return 0;
 diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm_eventlog.c
-index 59f7cb2..bac8b6d 100644
+index 3a56a13..f8cbd25 100644
 --- a/drivers/char/tpm/tpm_eventlog.c
 +++ b/drivers/char/tpm/tpm_eventlog.c
 @@ -95,7 +95,7 @@ static void *tpm_bios_measurements_start(struct seq_file *m, loff_t *pos)
@@ -38940,7 +39025,7 @@ index 59f7cb2..bac8b6d 100644
        return 0;
  }
 diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
-index 60aafb8..10c08e0 100644
+index cf7a561..c319ce0 100644
 --- a/drivers/char/virtio_console.c
 +++ b/drivers/char/virtio_console.c
 @@ -684,7 +684,7 @@ static ssize_t fill_readbuf(struct port *port, char *out_buf, size_t out_count,
@@ -38962,10 +39047,10 @@ index 60aafb8..10c08e0 100644
  
  static int wait_port_writable(struct port *port, bool nonblock)
 diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c
-index 57a078e..c17cde8 100644
+index b9355da..9611f4e 100644
 --- a/drivers/clk/clk-composite.c
 +++ b/drivers/clk/clk-composite.c
-@@ -146,7 +146,7 @@ struct clk *clk_register_composite(struct device *dev, const char *name,
+@@ -191,7 +191,7 @@ struct clk *clk_register_composite(struct device *dev, const char *name,
        struct clk *clk;
        struct clk_init_data init;
        struct clk_composite *composite;
@@ -38975,7 +39060,7 @@ index 57a078e..c17cde8 100644
        composite = kzalloc(sizeof(*composite), GFP_KERNEL);
        if (!composite) {
 diff --git a/drivers/clk/socfpga/clk-gate.c b/drivers/clk/socfpga/clk-gate.c
-index 501d513..fb0ecf9 100644
+index dd3a78c..386d49c 100644
 --- a/drivers/clk/socfpga/clk-gate.c
 +++ b/drivers/clk/socfpga/clk-gate.c
 @@ -22,6 +22,7 @@
@@ -38986,7 +39071,7 @@ index 501d513..fb0ecf9 100644
  
  #include "clk.h"
  
-@@ -175,7 +176,7 @@ static int socfpga_clk_prepare(struct clk_hw *hwclk)
+@@ -174,7 +175,7 @@ static int socfpga_clk_prepare(struct clk_hw *hwclk)
        return 0;
  }
  
@@ -38995,7 +39080,7 @@ index 501d513..fb0ecf9 100644
        .prepare = socfpga_clk_prepare,
        .recalc_rate = socfpga_clk_recalc_rate,
        .get_parent = socfpga_clk_get_parent,
-@@ -209,8 +210,10 @@ static void __init __socfpga_gate_init(struct device_node *node,
+@@ -208,8 +209,10 @@ static void __init __socfpga_gate_init(struct device_node *node,
                socfpga_clk->hw.reg = clk_mgr_base_addr + clk_gate[0];
                socfpga_clk->hw.bit_idx = clk_gate[1];
  
@@ -39009,7 +39094,7 @@ index 501d513..fb0ecf9 100644
  
        rc = of_property_read_u32(node, "fixed-divider", &fixed_div);
 diff --git a/drivers/clk/socfpga/clk-pll.c b/drivers/clk/socfpga/clk-pll.c
-index de6da95..a2e72c0 100644
+index de6da95..c98278b 100644
 --- a/drivers/clk/socfpga/clk-pll.c
 +++ b/drivers/clk/socfpga/clk-pll.c
 @@ -21,6 +21,7 @@
@@ -39025,7 +39110,7 @@ index de6da95..a2e72c0 100644
  }
  
 -static struct clk_ops clk_pll_ops = {
-+static struct clk_ops_no_const clk_pll_ops __read_only = {
++static clk_ops_no_const clk_pll_ops __read_only = {
        .recalc_rate = clk_pll_recalc_rate,
        .get_parent = clk_pll_get_parent,
  };
@@ -39043,10 +39128,10 @@ index de6da95..a2e72c0 100644
        clk = clk_register(NULL, &pll_clk->hw.hw);
        if (WARN_ON(IS_ERR(clk))) {
 diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
-index 000e4e0..4770351 100644
+index b0c18ed..1713a80 100644
 --- a/drivers/cpufreq/acpi-cpufreq.c
 +++ b/drivers/cpufreq/acpi-cpufreq.c
-@@ -676,8 +676,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
+@@ -675,8 +675,11 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
        data->acpi_data = per_cpu_ptr(acpi_perf_data, cpu);
        per_cpu(acfreq_data, cpu) = data;
  
@@ -39060,7 +39145,7 @@ index 000e4e0..4770351 100644
  
        result = acpi_processor_register_performance(data->acpi_data, cpu);
        if (result)
-@@ -810,7 +813,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
+@@ -809,7 +812,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
                policy->cur = acpi_cpufreq_guess_freq(data, policy->cpu);
                break;
        case ACPI_ADR_SPACE_FIXED_HARDWARE:
@@ -39071,7 +39156,7 @@ index 000e4e0..4770351 100644
                break;
        default:
                break;
-@@ -904,8 +909,10 @@ static void __init acpi_cpufreq_boost_init(void)
+@@ -903,8 +908,10 @@ static void __init acpi_cpufreq_boost_init(void)
                if (!msrs)
                        return;
  
@@ -39084,11 +39169,26 @@ index 000e4e0..4770351 100644
  
                cpu_notifier_register_begin();
  
+diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c
+index f657c57..31d97ae 100644
+--- a/drivers/cpufreq/cpufreq-dt.c
++++ b/drivers/cpufreq/cpufreq-dt.c
+@@ -362,7 +362,9 @@ static int dt_cpufreq_probe(struct platform_device *pdev)
+       if (!IS_ERR(cpu_reg))
+               regulator_put(cpu_reg);
+-      dt_cpufreq_driver.driver_data = dev_get_platdata(&pdev->dev);
++      pax_open_kernel();
++      *(void **)&dt_cpufreq_driver.driver_data = dev_get_platdata(&pdev->dev);
++      pax_close_kernel();
+       ret = cpufreq_register_driver(&dt_cpufreq_driver);
+       if (ret)
 diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
-index 558224c..55e3b57 100644
+index 4473eba..a4c9dc2 100644
 --- a/drivers/cpufreq/cpufreq.c
 +++ b/drivers/cpufreq/cpufreq.c
-@@ -2022,7 +2022,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor)
+@@ -2122,7 +2122,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor)
        }
  
        mutex_lock(&cpufreq_governor_mutex);
@@ -39097,7 +39197,7 @@ index 558224c..55e3b57 100644
        mutex_unlock(&cpufreq_governor_mutex);
        return;
  }
-@@ -2238,7 +2238,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb,
+@@ -2338,7 +2338,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb,
        return NOTIFY_OK;
  }
  
@@ -39106,7 +39206,7 @@ index 558224c..55e3b57 100644
        .notifier_call = cpufreq_cpu_callback,
  };
  
-@@ -2278,13 +2278,17 @@ int cpufreq_boost_trigger_state(int state)
+@@ -2378,13 +2378,17 @@ int cpufreq_boost_trigger_state(int state)
                return 0;
  
        write_lock_irqsave(&cpufreq_driver_lock, flags);
@@ -39126,7 +39226,7 @@ index 558224c..55e3b57 100644
                write_unlock_irqrestore(&cpufreq_driver_lock, flags);
  
                pr_err("%s: Cannot %s BOOST\n",
-@@ -2340,8 +2344,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
+@@ -2441,8 +2445,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
  
        pr_debug("trying to register driver %s\n", driver_data->name);
  
@@ -39140,7 +39240,7 @@ index 558224c..55e3b57 100644
  
        write_lock_irqsave(&cpufreq_driver_lock, flags);
        if (cpufreq_driver) {
-@@ -2356,8 +2363,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
+@@ -2457,8 +2464,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
                 * Check if driver provides function to enable boost -
                 * if not, use cpufreq_boost_set_sw as default
                 */
@@ -39155,10 +39255,10 @@ index 558224c..55e3b57 100644
                ret = cpufreq_sysfs_create_file(&boost.attr);
                if (ret) {
 diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c
-index e1c6433..31203ae 100644
+index 1b44496..b80ff5e 100644
 --- a/drivers/cpufreq/cpufreq_governor.c
 +++ b/drivers/cpufreq/cpufreq_governor.c
-@@ -191,7 +191,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
+@@ -245,7 +245,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
        struct dbs_data *dbs_data;
        struct od_cpu_dbs_info_s *od_dbs_info = NULL;
        struct cs_cpu_dbs_info_s *cs_dbs_info = NULL;
@@ -39167,7 +39267,7 @@ index e1c6433..31203ae 100644
        struct od_dbs_tuners *od_tuners = NULL;
        struct cs_dbs_tuners *cs_tuners = NULL;
        struct cpu_dbs_common_info *cpu_cdbs;
-@@ -257,7 +257,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
+@@ -311,7 +311,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
  
                if ((cdata->governor == GOV_CONSERVATIVE) &&
                                (!policy->governor->initialized)) {
@@ -39176,7 +39276,7 @@ index e1c6433..31203ae 100644
  
                        cpufreq_register_notifier(cs_ops->notifier_block,
                                        CPUFREQ_TRANSITION_NOTIFIER);
-@@ -277,7 +277,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
+@@ -331,7 +331,7 @@ int cpufreq_governor_dbs(struct cpufreq_policy *policy,
  
                        if ((dbs_data->cdata->governor == GOV_CONSERVATIVE) &&
                                (policy->governor->initialized == 1)) {
@@ -39186,10 +39286,10 @@ index e1c6433..31203ae 100644
                                cpufreq_unregister_notifier(cs_ops->notifier_block,
                                                CPUFREQ_TRANSITION_NOTIFIER);
 diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h
-index bfb9ae1..e1d3a7e 100644
+index cc401d1..8197340 100644
 --- a/drivers/cpufreq/cpufreq_governor.h
 +++ b/drivers/cpufreq/cpufreq_governor.h
-@@ -205,7 +205,7 @@ struct common_dbs_data {
+@@ -212,7 +212,7 @@ struct common_dbs_data {
        void (*exit)(struct dbs_data *dbs_data);
  
        /* Governor specific ops, see below */
@@ -39198,7 +39298,7 @@ index bfb9ae1..e1d3a7e 100644
  };
  
  /* Governor Per policy data */
-@@ -225,7 +225,7 @@ struct od_ops {
+@@ -232,7 +232,7 @@ struct od_ops {
        unsigned int (*powersave_bias_target)(struct cpufreq_policy *policy,
                        unsigned int freq_next, unsigned int relation);
        void (*freq_increase)(struct cpufreq_policy *policy, unsigned int freq);
@@ -39208,10 +39308,10 @@ index bfb9ae1..e1d3a7e 100644
  struct cs_ops {
        struct notifier_block *notifier_block;
 diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
-index 18d4091..434be15 100644
+index ad3f38f..8f086cd 100644
 --- a/drivers/cpufreq/cpufreq_ondemand.c
 +++ b/drivers/cpufreq/cpufreq_ondemand.c
-@@ -521,7 +521,7 @@ static void od_exit(struct dbs_data *dbs_data)
+@@ -524,7 +524,7 @@ static void od_exit(struct dbs_data *dbs_data)
  
  define_get_cpu_dbs_routines(od_cpu_dbs_info);
  
@@ -39220,7 +39320,7 @@ index 18d4091..434be15 100644
        .powersave_bias_init_cpu = ondemand_powersave_bias_init_cpu,
        .powersave_bias_target = generic_powersave_bias_target,
        .freq_increase = dbs_freq_increase,
-@@ -576,14 +576,18 @@ void od_register_powersave_bias_handler(unsigned int (*f)
+@@ -579,14 +579,18 @@ void od_register_powersave_bias_handler(unsigned int (*f)
                (struct cpufreq_policy *, unsigned int, unsigned int),
                unsigned int powersave_bias)
  {
@@ -39242,10 +39342,10 @@ index 18d4091..434be15 100644
  }
  EXPORT_SYMBOL_GPL(od_unregister_powersave_bias_handler);
 diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
-index 870eecc..787bbca 100644
+index 27bb6d3..4cf595c 100644
 --- a/drivers/cpufreq/intel_pstate.c
 +++ b/drivers/cpufreq/intel_pstate.c
-@@ -125,10 +125,10 @@ struct pstate_funcs {
+@@ -133,10 +133,10 @@ struct pstate_funcs {
  struct cpu_defaults {
        struct pstate_adjust_policy pid_policy;
        struct pstate_funcs funcs;
@@ -39258,7 +39358,7 @@ index 870eecc..787bbca 100644
  
  struct perf_limits {
        int no_turbo;
-@@ -530,7 +530,7 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate)
+@@ -594,18 +594,18 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate)
  
        cpu->pstate.current_pstate = pstate;
  
@@ -39266,17 +39366,16 @@ index 870eecc..787bbca 100644
 +      pstate_funcs->set(cpu, pstate);
  }
  
- static inline void intel_pstate_pstate_increase(struct cpudata *cpu, int steps)
-@@ -552,12 +552,12 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
+ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
  {
-       sprintf(cpu->name, "Intel 2nd generation core");
 -      cpu->pstate.min_pstate = pstate_funcs.get_min();
 -      cpu->pstate.max_pstate = pstate_funcs.get_max();
 -      cpu->pstate.turbo_pstate = pstate_funcs.get_turbo();
+-      cpu->pstate.scaling = pstate_funcs.get_scaling();
 +      cpu->pstate.min_pstate = pstate_funcs->get_min();
 +      cpu->pstate.max_pstate = pstate_funcs->get_max();
 +      cpu->pstate.turbo_pstate = pstate_funcs->get_turbo();
++      cpu->pstate.scaling = pstate_funcs->get_scaling();
  
 -      if (pstate_funcs.get_vid)
 -              pstate_funcs.get_vid(cpu);
@@ -39285,20 +39384,20 @@ index 870eecc..787bbca 100644
        intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate);
  }
  
-@@ -847,9 +847,9 @@ static int intel_pstate_msrs_not_valid(void)
+@@ -875,9 +875,9 @@ static int intel_pstate_msrs_not_valid(void)
        rdmsrl(MSR_IA32_APERF, aperf);
        rdmsrl(MSR_IA32_MPERF, mperf);
  
 -      if (!pstate_funcs.get_max() ||
--              !pstate_funcs.get_min() ||
--              !pstate_funcs.get_turbo())
+-          !pstate_funcs.get_min() ||
+-          !pstate_funcs.get_turbo())
 +      if (!pstate_funcs->get_max() ||
-+              !pstate_funcs->get_min() ||
-+              !pstate_funcs->get_turbo())
++          !pstate_funcs->get_min() ||
++          !pstate_funcs->get_turbo())
                return -ENODEV;
  
        rdmsrl(MSR_IA32_APERF, tmp);
-@@ -863,7 +863,7 @@ static int intel_pstate_msrs_not_valid(void)
+@@ -891,7 +891,7 @@ static int intel_pstate_msrs_not_valid(void)
        return 0;
  }
  
@@ -39307,13 +39406,14 @@ index 870eecc..787bbca 100644
  {
        pid_params.sample_rate_ms = policy->sample_rate_ms;
        pid_params.p_gain_pct = policy->p_gain_pct;
-@@ -875,11 +875,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy)
+@@ -903,12 +903,7 @@ static void copy_pid_params(struct pstate_adjust_policy *policy)
  
  static void copy_cpu_funcs(struct pstate_funcs *funcs)
  {
 -      pstate_funcs.get_max   = funcs->get_max;
 -      pstate_funcs.get_min   = funcs->get_min;
 -      pstate_funcs.get_turbo = funcs->get_turbo;
+-      pstate_funcs.get_scaling = funcs->get_scaling;
 -      pstate_funcs.set       = funcs->set;
 -      pstate_funcs.get_vid   = funcs->get_vid;
 +      pstate_funcs = funcs;
@@ -39463,7 +39563,7 @@ index 9bb42ba..b01b4a2 100644
  
  MODULE_AUTHOR("David S. Miller <davem@redhat.com>");
 diff --git a/drivers/cpufreq/speedstep-centrino.c b/drivers/cpufreq/speedstep-centrino.c
-index 6723f03..3465190 100644
+index 7d4a315..21bb886 100644
 --- a/drivers/cpufreq/speedstep-centrino.c
 +++ b/drivers/cpufreq/speedstep-centrino.c
 @@ -351,8 +351,11 @@ static int centrino_cpu_init(struct cpufreq_policy *policy)
@@ -39481,10 +39581,10 @@ index 6723f03..3465190 100644
        if (policy->cpu != 0)
                return -ENODEV;
 diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c
-index 136d6a2..06e373d 100644
+index e431d11..d0b997e 100644
 --- a/drivers/cpuidle/driver.c
 +++ b/drivers/cpuidle/driver.c
-@@ -202,7 +202,7 @@ static int poll_idle(struct cpuidle_device *dev,
+@@ -194,7 +194,7 @@ static int poll_idle(struct cpuidle_device *dev,
  
  static void poll_idle_init(struct cpuidle_driver *drv)
  {
@@ -39494,7 +39594,7 @@ index 136d6a2..06e373d 100644
        snprintf(state->name, CPUIDLE_NAME_LEN, "POLL");
        snprintf(state->desc, CPUIDLE_DESC_LEN, "CPUIDLE CORE POLL IDLE");
 diff --git a/drivers/cpuidle/governor.c b/drivers/cpuidle/governor.c
-index ca89412..a7b9c49 100644
+index fb9f511..213e6cc 100644
 --- a/drivers/cpuidle/governor.c
 +++ b/drivers/cpuidle/governor.c
 @@ -87,7 +87,7 @@ int cpuidle_register_governor(struct cpuidle_governor *gov)
@@ -39507,7 +39607,7 @@ index ca89412..a7b9c49 100644
                    cpuidle_curr_governor->rating < gov->rating)
                        cpuidle_switch_governor(gov);
 diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
-index efe2f17..b8124f9 100644
+index 97c5903..023ad23 100644
 --- a/drivers/cpuidle/sysfs.c
 +++ b/drivers/cpuidle/sysfs.c
 @@ -135,7 +135,7 @@ static struct attribute *cpuidle_switch_attrs[] = {
@@ -39520,7 +39620,7 @@ index efe2f17..b8124f9 100644
        .name = "cpuidle",
  };
 diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
-index 12fea3e..1e28f47 100644
+index 8d2a772..33826c9 100644
 --- a/drivers/crypto/hifn_795x.c
 +++ b/drivers/crypto/hifn_795x.c
 @@ -51,7 +51,7 @@ module_param_string(hifn_pll_ref, hifn_pll_ref, sizeof(hifn_pll_ref), 0444);
@@ -39542,10 +39642,10 @@ index 12fea3e..1e28f47 100644
        err = pci_request_regions(pdev, name);
        if (err)
 diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
-index 2042ec3..a9ce67f 100644
+index 30b538d8..1610d75 100644
 --- a/drivers/devfreq/devfreq.c
 +++ b/drivers/devfreq/devfreq.c
-@@ -616,7 +616,7 @@ int devfreq_add_governor(struct devfreq_governor *governor)
+@@ -673,7 +673,7 @@ int devfreq_add_governor(struct devfreq_governor *governor)
                goto err_out;
        }
  
@@ -39554,7 +39654,7 @@ index 2042ec3..a9ce67f 100644
  
        list_for_each_entry(devfreq, &devfreq_list, node) {
                int ret = 0;
-@@ -704,7 +704,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor)
+@@ -761,7 +761,7 @@ int devfreq_remove_governor(struct devfreq_governor *governor)
                }
        }
  
@@ -39564,10 +39664,10 @@ index 2042ec3..a9ce67f 100644
        mutex_unlock(&devfreq_list_lock);
  
 diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c
-index 5239677..1cb71a8 100644
+index 42d4974..2714f36 100644
 --- a/drivers/dma/sh/shdma-base.c
 +++ b/drivers/dma/sh/shdma-base.c
-@@ -267,8 +267,8 @@ static int shdma_alloc_chan_resources(struct dma_chan *chan)
+@@ -228,8 +228,8 @@ static int shdma_alloc_chan_resources(struct dma_chan *chan)
                schan->slave_id = -EINVAL;
        }
  
@@ -39579,7 +39679,7 @@ index 5239677..1cb71a8 100644
                ret = -ENOMEM;
                goto edescalloc;
 diff --git a/drivers/dma/sh/shdmac.c b/drivers/dma/sh/shdmac.c
-index dda7e75..0a4c867 100644
+index 58eb857..d7e42c8 100644
 --- a/drivers/dma/sh/shdmac.c
 +++ b/drivers/dma/sh/shdmac.c
 @@ -513,7 +513,7 @@ static int sh_dmae_nmi_handler(struct notifier_block *self,
@@ -39608,10 +39708,10 @@ index 592af5f..bb1d583 100644
  EXPORT_SYMBOL_GPL(edac_device_alloc_index);
  
 diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c
-index 01fae82..1dd8289 100644
+index a6cd361..7bdbf53 100644
 --- a/drivers/edac/edac_mc_sysfs.c
 +++ b/drivers/edac/edac_mc_sysfs.c
-@@ -152,7 +152,7 @@ static const char * const edac_caps[] = {
+@@ -154,7 +154,7 @@ static const char * const edac_caps[] = {
  struct dev_ch_attribute {
        struct device_attribute attr;
        int channel;
@@ -39620,7 +39720,7 @@ index 01fae82..1dd8289 100644
  
  #define DEVICE_CHANNEL(_name, _mode, _show, _store, _var) \
        struct dev_ch_attribute dev_attr_legacy_##_name = \
-@@ -1009,14 +1009,16 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci)
+@@ -1011,14 +1011,16 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci)
        }
  
        if (mci->set_sdram_scrub_rate || mci->get_sdram_scrub_rate) {
@@ -39823,7 +39923,7 @@ index eb6935c..3cc2bfa 100644
  #include <asm/byteorder.h>
  
 diff --git a/drivers/firewire/core.h b/drivers/firewire/core.h
-index f477308..2795f24 100644
+index e1480ff6..1a429bd 100644
 --- a/drivers/firewire/core.h
 +++ b/drivers/firewire/core.h
 @@ -111,6 +111,7 @@ struct fw_card_driver {
@@ -39835,10 +39935,10 @@ index f477308..2795f24 100644
  void fw_card_initialize(struct fw_card *card,
                const struct fw_card_driver *driver, struct device *device);
 diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
-index 586f2f7..3545ad2 100644
+index a66a321..f6caf20 100644
 --- a/drivers/firewire/ohci.c
 +++ b/drivers/firewire/ohci.c
-@@ -2049,10 +2049,12 @@ static void bus_reset_work(struct work_struct *work)
+@@ -2056,10 +2056,12 @@ static void bus_reset_work(struct work_struct *work)
                          be32_to_cpu(ohci->next_header));
        }
  
@@ -39851,7 +39951,7 @@ index 586f2f7..3545ad2 100644
  
        spin_unlock_irq(&ohci->lock);
  
-@@ -2584,8 +2586,10 @@ static int ohci_enable_phys_dma(struct fw_card *card,
+@@ -2591,8 +2593,10 @@ static int ohci_enable_phys_dma(struct fw_card *card,
        unsigned long flags;
        int n, ret = 0;
  
@@ -39889,10 +39989,10 @@ index 17afc51..0ef90cd 100644
        dmi_unmap(buf);
        return 0;
 diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
-index 1491dd4..aa910db 100644
+index 5b53d61..72cee96 100644
 --- a/drivers/firmware/efi/cper.c
 +++ b/drivers/firmware/efi/cper.c
-@@ -41,12 +41,12 @@
+@@ -44,12 +44,12 @@ static char rcd_decode_str[CPER_REC_LEN];
   */
  u64 cper_next_record_id(void)
  {
@@ -39910,10 +40010,10 @@ index 1491dd4..aa910db 100644
  EXPORT_SYMBOL_GPL(cper_next_record_id);
  
 diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
-index af20f17..4e4e545 100644
+index 8590099..d83627a 100644
 --- a/drivers/firmware/efi/efi.c
 +++ b/drivers/firmware/efi/efi.c
-@@ -120,14 +120,16 @@ static struct attribute_group efi_subsys_attr_group = {
+@@ -148,14 +148,16 @@ static struct attribute_group efi_subsys_attr_group = {
  };
  
  static struct efivars generic_efivars;
@@ -39936,10 +40036,10 @@ index af20f17..4e4e545 100644
        return efivars_register(&generic_efivars, &generic_ops, efi_kobj);
  }
 diff --git a/drivers/firmware/efi/efivars.c b/drivers/firmware/efi/efivars.c
-index 50ea412..caccd6e9 100644
+index f256ecd..387dcb1 100644
 --- a/drivers/firmware/efi/efivars.c
 +++ b/drivers/firmware/efi/efivars.c
-@@ -456,7 +456,7 @@ efivar_create_sysfs_entry(struct efivar_entry *new_var)
+@@ -589,7 +589,7 @@ efivar_create_sysfs_entry(struct efivar_entry *new_var)
  static int
  create_efivars_bin_attributes(void)
  {
@@ -39965,7 +40065,7 @@ index 2f569aa..c95f4fb 100644
  }
  
 diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c
-index 8765bd6..2e5b147 100644
+index fe49ec3..1ade794 100644
 --- a/drivers/gpio/gpio-em.c
 +++ b/drivers/gpio/gpio-em.c
 @@ -278,7 +278,7 @@ static int em_gio_probe(struct platform_device *pdev)
@@ -39978,7 +40078,7 @@ index 8765bd6..2e5b147 100644
        int ret;
  
 diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c
-index 7030422..42a3fe9 100644
+index 3784e81..73637b5 100644
 --- a/drivers/gpio/gpio-ich.c
 +++ b/drivers/gpio/gpio-ich.c
 @@ -94,7 +94,7 @@ struct ichx_desc {
@@ -39991,10 +40091,10 @@ index 7030422..42a3fe9 100644
  static struct {
        spinlock_t lock;
 diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c
-index 03c9148..c66e753 100644
+index bf6c094..6573caf 100644
 --- a/drivers/gpio/gpio-rcar.c
 +++ b/drivers/gpio/gpio-rcar.c
-@@ -355,7 +355,7 @@ static int gpio_rcar_probe(struct platform_device *pdev)
+@@ -357,7 +357,7 @@ static int gpio_rcar_probe(struct platform_device *pdev)
        struct gpio_rcar_priv *p;
        struct resource *io, *irq;
        struct gpio_chip *gpio_chip;
@@ -40004,7 +40104,7 @@ index 03c9148..c66e753 100644
        const char *name = dev_name(dev);
        int ret;
 diff --git a/drivers/gpio/gpio-vr41xx.c b/drivers/gpio/gpio-vr41xx.c
-index 66cbcc1..0c5e622 100644
+index dbf28fa..04dad4e 100644
 --- a/drivers/gpio/gpio-vr41xx.c
 +++ b/drivers/gpio/gpio-vr41xx.c
 @@ -224,7 +224,7 @@ static int giu_get_irq(unsigned int irq)
@@ -40016,11 +40116,42 @@ index 66cbcc1..0c5e622 100644
  
        return -EINVAL;
  }
+diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
+index e8e98ca..10f416e 100644
+--- a/drivers/gpio/gpiolib.c
++++ b/drivers/gpio/gpiolib.c
+@@ -537,8 +537,10 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip)
+       }
+       if (gpiochip->irqchip) {
+-              gpiochip->irqchip->irq_request_resources = NULL;
+-              gpiochip->irqchip->irq_release_resources = NULL;
++              pax_open_kernel();
++              *(void **)&gpiochip->irqchip->irq_request_resources = NULL;
++              *(void **)&gpiochip->irqchip->irq_release_resources = NULL;
++              pax_close_kernel();
+               gpiochip->irqchip = NULL;
+       }
+ }
+@@ -604,8 +606,11 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip,
+               gpiochip->irqchip = NULL;
+               return -EINVAL;
+       }
+-      irqchip->irq_request_resources = gpiochip_irq_reqres;
+-      irqchip->irq_release_resources = gpiochip_irq_relres;
++
++      pax_open_kernel();
++      *(void **)&irqchip->irq_request_resources = gpiochip_irq_reqres;
++      *(void **)&irqchip->irq_release_resources = gpiochip_irq_relres;
++      pax_close_kernel();
+       /*
+        * Prepare the mapping since the irqchip shall be orthogonal to
 diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
-index d8b7099..8a314a5 100644
+index e79c8d3..a9370bc 100644
 --- a/drivers/gpu/drm/drm_crtc.c
 +++ b/drivers/gpu/drm/drm_crtc.c
-@@ -3500,7 +3500,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -3900,7 +3900,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
                                        goto done;
                                }
  
@@ -40030,31 +40161,20 @@ index d8b7099..8a314a5 100644
                                        ret = -EFAULT;
                                        goto done;
 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
-old mode 100644
-new mode 100755
-index 8218078..9960928a
+index bc3da32..7289357 100644
 --- a/drivers/gpu/drm/drm_drv.c
 +++ b/drivers/gpu/drm/drm_drv.c
-@@ -233,7 +233,7 @@ module_exit(drm_core_exit);
- /**
-  * Copy and IOCTL return string to user space
-  */
--static int drm_copy_field(char *buf, size_t *buf_len, const char *value)
-+static int drm_copy_field(char __user *buf, size_t *buf_len, const char *value)
- {
-       int len;
+@@ -443,7 +443,7 @@ void drm_unplug_dev(struct drm_device *dev)
  
-@@ -342,7 +342,7 @@ long drm_ioctl(struct file *filp,
-       struct drm_file *file_priv = filp->private_data;
-       struct drm_device *dev;
-       const struct drm_ioctl_desc *ioctl = NULL;
--      drm_ioctl_t *func;
-+      drm_ioctl_no_const_t func;
-       unsigned int nr = DRM_IOCTL_NR(cmd);
-       int retcode = -EINVAL;
-       char stack_kdata[128];
+       drm_device_set_unplugged(dev);
+-      if (dev->open_count == 0) {
++      if (local_read(&dev->open_count) == 0) {
+               drm_put_dev(dev);
+       }
+       mutex_unlock(&drm_global_mutex);
 diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
-index e1eba0b..98f69f9 100644
+index ed7bc68..0d536af 100644
 --- a/drivers/gpu/drm/drm_fops.c
 +++ b/drivers/gpu/drm/drm_fops.c
 @@ -89,7 +89,7 @@ int drm_open(struct inode *inode, struct file *filp)
@@ -40075,16 +40195,16 @@ index e1eba0b..98f69f9 100644
        drm_minor_release(minor);
        return retcode;
  }
-@@ -430,7 +430,7 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -376,7 +376,7 @@ int drm_release(struct inode *inode, struct file *filp)
  
        mutex_lock(&drm_global_mutex);
  
 -      DRM_DEBUG("open_count = %d\n", dev->open_count);
 +      DRM_DEBUG("open_count = %ld\n", local_read(&dev->open_count));
  
-       if (dev->driver->preclose)
-               dev->driver->preclose(dev, file_priv);
-@@ -439,10 +439,10 @@ int drm_release(struct inode *inode, struct file *filp)
+       mutex_lock(&dev->struct_mutex);
+       list_del(&file_priv->lhead);
+@@ -389,10 +389,10 @@ int drm_release(struct inode *inode, struct file *filp)
         * Begin inline drm_release
         */
  
@@ -40097,7 +40217,7 @@ index e1eba0b..98f69f9 100644
  
        /* Release any auth tokens that might point to this file_priv,
           (do that under the drm_global_mutex) */
-@@ -543,7 +543,7 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -465,7 +465,7 @@ int drm_release(struct inode *inode, struct file *filp)
         * End inline drm_release
         */
  
@@ -40168,10 +40288,10 @@ index 3d2e91c..d31c4c9 100644
                item->object = NULL;
        }
 diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c
-index 7473035..a48b9c5 100644
+index 51efebd..2b70935 100644
 --- a/drivers/gpu/drm/drm_info.c
 +++ b/drivers/gpu/drm/drm_info.c
-@@ -75,10 +75,13 @@ int drm_vm_info(struct seq_file *m, void *data)
+@@ -76,10 +76,13 @@ int drm_vm_info(struct seq_file *m, void *data)
        struct drm_local_map *map;
        struct drm_map_list *r_list;
  
@@ -40189,7 +40309,7 @@ index 7473035..a48b9c5 100644
        const char *type;
        int i;
  
-@@ -89,7 +92,7 @@ int drm_vm_info(struct seq_file *m, void *data)
+@@ -90,7 +93,7 @@ int drm_vm_info(struct seq_file *m, void *data)
                map = r_list->map;
                if (!map)
                        continue;
@@ -40198,18 +40318,6 @@ index 7473035..a48b9c5 100644
                        type = "??";
                else
                        type = types[map->type];
-@@ -261,7 +264,11 @@ int drm_vma_info(struct seq_file *m, void *data)
-                          vma->vm_flags & VM_MAYSHARE ? 's' : 'p',
-                          vma->vm_flags & VM_LOCKED ? 'l' : '-',
-                          vma->vm_flags & VM_IO ? 'i' : '-',
-+#ifdef CONFIG_GRKERNSEC_HIDESYM
-+                         0);
-+#else
-                          vma->vm_pgoff);
-+#endif
- #if defined(__i386__)
-               pgprot = pgprot_val(vma->vm_page_prot);
 diff --git a/drivers/gpu/drm/drm_ioc32.c b/drivers/gpu/drm/drm_ioc32.c
 index 2f4c4343..dd12cd2 100644
 --- a/drivers/gpu/drm/drm_ioc32.c
@@ -40262,37 +40370,24 @@ index 2f4c4343..dd12cd2 100644
        else
                ret = drm_ioctl(filp, cmd, arg);
  
-diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
-index 4c24c3a..c903cab 100644
---- a/drivers/gpu/drm/drm_stub.c
-+++ b/drivers/gpu/drm/drm_stub.c
-@@ -455,7 +455,7 @@ void drm_unplug_dev(struct drm_device *dev)
-       drm_device_set_unplugged(dev);
--      if (dev->open_count == 0) {
-+      if (local_read(&dev->open_count) == 0) {
-               drm_put_dev(dev);
-       }
-       mutex_unlock(&drm_global_mutex);
-diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
-index c22c309..ae758c3 100644
---- a/drivers/gpu/drm/drm_sysfs.c
-+++ b/drivers/gpu/drm/drm_sysfs.c
-@@ -505,7 +505,7 @@ static void drm_sysfs_release(struct device *dev)
-  */
- int drm_sysfs_device_add(struct drm_minor *minor)
- {
--      char *minor_str;
-+      const char *minor_str;
-       int r;
-       if (minor->type == DRM_MINOR_CONTROL)
+diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
+index 00587a1..57a65ca 100644
+--- a/drivers/gpu/drm/drm_ioctl.c
++++ b/drivers/gpu/drm/drm_ioctl.c
+@@ -642,7 +642,7 @@ long drm_ioctl(struct file *filp,
+       struct drm_file *file_priv = filp->private_data;
+       struct drm_device *dev;
+       const struct drm_ioctl_desc *ioctl = NULL;
+-      drm_ioctl_t *func;
++      drm_ioctl_no_const_t func;
+       unsigned int nr = DRM_IOCTL_NR(cmd);
+       int retcode = -EINVAL;
+       char stack_kdata[128];
 diff --git a/drivers/gpu/drm/i810/i810_drv.h b/drivers/gpu/drm/i810/i810_drv.h
-index d4d16ed..8fb0b51 100644
+index 93ec5dc..82acbaf 100644
 --- a/drivers/gpu/drm/i810/i810_drv.h
 +++ b/drivers/gpu/drm/i810/i810_drv.h
-@@ -108,8 +108,8 @@ typedef struct drm_i810_private {
+@@ -110,8 +110,8 @@ typedef struct drm_i810_private {
        int page_flipping;
  
        wait_queue_head_t irq_queue;
@@ -40304,36 +40399,39 @@ index d4d16ed..8fb0b51 100644
        int front_offset;
  } drm_i810_private_t;
 diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
-index eedb023..25076a4 100644
+index 318ade9..1f5de55 100644
 --- a/drivers/gpu/drm/i915/i915_dma.c
 +++ b/drivers/gpu/drm/i915/i915_dma.c
-@@ -1280,7 +1280,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
-       bool can_switch;
-       spin_lock(&dev->count_lock);
--      can_switch = (dev->open_count == 0);
-+      can_switch = (local_read(&dev->open_count) == 0);
-       spin_unlock(&dev->count_lock);
-       return can_switch;
+@@ -1294,7 +1294,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
+        * locking inversion with the driver load path. And the access here is
+        * completely racy anyway. So don't bother with locking for now.
+        */
+-      return dev->open_count == 0;
++      return local_read(&dev->open_count) == 0;
  }
+ static const struct vga_switcheroo_client_ops i915_switcheroo_ops = {
 diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-index 20fef6c..76c78fb 100644
+index 1a0611b..dd1fbfc 100644
 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
 +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-@@ -886,9 +886,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
+@@ -866,12 +866,12 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
  static int
- validate_exec_list(struct drm_i915_gem_exec_object2 *exec,
+ validate_exec_list(struct drm_device *dev,
+                  struct drm_i915_gem_exec_object2 *exec,
 -                 int count)
 +                 unsigned int count)
  {
--      int i;
-+      unsigned int i;
        unsigned relocs_total = 0;
        unsigned relocs_max = UINT_MAX / sizeof(struct drm_i915_gem_relocation_entry);
+       unsigned invalid_flags;
+-      int i;
++      unsigned int i;
  
+       invalid_flags = __EXEC_OBJECT_UNKNOWN_FLAGS;
+       if (USES_FULL_PPGTT(dev))
 diff --git a/drivers/gpu/drm/i915/i915_ioc32.c b/drivers/gpu/drm/i915/i915_ioc32.c
-index 3c59584..500f2e9 100644
+index 2e0613e..a8b94d9 100644
 --- a/drivers/gpu/drm/i915/i915_ioc32.c
 +++ b/drivers/gpu/drm/i915/i915_ioc32.c
 @@ -181,7 +181,7 @@ static int compat_i915_alloc(struct file *file, unsigned int cmd,
@@ -40355,11 +40453,11 @@ index 3c59584..500f2e9 100644
        if (nr < DRM_COMMAND_BASE)
                return drm_compat_ioctl(filp, cmd, arg);
  
--      if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(i915_compat_ioctls))
+-      if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(i915_compat_ioctls))
 -              fn = i915_compat_ioctls[nr - DRM_COMMAND_BASE];
 -
 -      if (fn != NULL)
-+      if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(i915_compat_ioctls)) {
++      if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(i915_compat_ioctls)) {
 +              drm_ioctl_compat_t fn = i915_compat_ioctls[nr - DRM_COMMAND_BASE];
                ret = (*fn) (filp, cmd, arg);
 -      else
@@ -40368,10 +40466,10 @@ index 3c59584..500f2e9 100644
  
        return ret;
 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index b91dfbe..b7fb16d 100644
+index 9cb5c95..9228666 100644
 --- a/drivers/gpu/drm/i915/intel_display.c
 +++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -11179,13 +11179,13 @@ struct intel_quirk {
+@@ -12811,13 +12811,13 @@ struct intel_quirk {
        int subsystem_vendor;
        int subsystem_device;
        void (*hook)(struct drm_device *dev);
@@ -40387,7 +40485,7 @@ index b91dfbe..b7fb16d 100644
  
  static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
  {
-@@ -11193,18 +11193,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
+@@ -12825,18 +12825,20 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
        return 1;
  }
  
@@ -40419,10 +40517,10 @@ index b91dfbe..b7fb16d 100644
        },
  };
 diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
-index fe45321..836fdca 100644
+index b4a2014..219ab78 100644
 --- a/drivers/gpu/drm/mga/mga_drv.h
 +++ b/drivers/gpu/drm/mga/mga_drv.h
-@@ -120,9 +120,9 @@ typedef struct drm_mga_private {
+@@ -122,9 +122,9 @@ typedef struct drm_mga_private {
        u32 clear_cmd;
        u32 maccess;
  
@@ -40435,7 +40533,7 @@ index fe45321..836fdca 100644
  
        unsigned int fb_cpp;
 diff --git a/drivers/gpu/drm/mga/mga_ioc32.c b/drivers/gpu/drm/mga/mga_ioc32.c
-index 86b4bb8..ae237ad 100644
+index 729bfd5..ead8823 100644
 --- a/drivers/gpu/drm/mga/mga_ioc32.c
 +++ b/drivers/gpu/drm/mga/mga_ioc32.c
 @@ -190,7 +190,7 @@ static int compat_mga_dma_bootstrap(struct file *file, unsigned int cmd,
@@ -40457,11 +40555,11 @@ index 86b4bb8..ae237ad 100644
        if (nr < DRM_COMMAND_BASE)
                return drm_compat_ioctl(filp, cmd, arg);
  
--      if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(mga_compat_ioctls))
+-      if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(mga_compat_ioctls))
 -              fn = mga_compat_ioctls[nr - DRM_COMMAND_BASE];
 -
 -      if (fn != NULL)
-+      if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(mga_compat_ioctls)) {
++      if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(mga_compat_ioctls)) {
 +              drm_ioctl_compat_t fn = mga_compat_ioctls[nr - DRM_COMMAND_BASE];
                ret = (*fn) (filp, cmd, arg);
 -      else
@@ -40510,10 +40608,10 @@ index 1b071b8..de8601a 100644
  
        *sequence = cur_fence;
 diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
-index 8268a4c..5105708 100644
+index dae2c96..324dbe4 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
-@@ -965,7 +965,7 @@ static int parse_bit_tmds_tbl_entry(struct drm_device *dev, struct nvbios *bios,
+@@ -963,7 +963,7 @@ static int parse_bit_tmds_tbl_entry(struct drm_device *dev, struct nvbios *bios,
  struct bit_table {
        const char id;
        int (* const parse_fn)(struct drm_device *, struct nvbios *, struct bit_entry *);
@@ -40523,10 +40621,10 @@ index 8268a4c..5105708 100644
  #define BIT_TABLE(id, funcid) ((struct bit_table){ id, parse_bit_##funcid##_tbl_entry })
  
 diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.h b/drivers/gpu/drm/nouveau/nouveau_drm.h
-index 7efbafa..19f8087 100644
+index 8ae36f2..1147a30 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_drm.h
 +++ b/drivers/gpu/drm/nouveau/nouveau_drm.h
-@@ -97,7 +97,6 @@ struct nouveau_drm {
+@@ -121,7 +121,6 @@ struct nouveau_drm {
                struct drm_global_reference mem_global_ref;
                struct ttm_bo_global_ref bo_global_ref;
                struct ttm_bo_device bdev;
@@ -40535,7 +40633,7 @@ index 7efbafa..19f8087 100644
                            struct ttm_buffer_object *,
                            struct ttm_mem_reg *, struct ttm_mem_reg *);
 diff --git a/drivers/gpu/drm/nouveau/nouveau_ioc32.c b/drivers/gpu/drm/nouveau/nouveau_ioc32.c
-index c1a7e5a..38b8539 100644
+index 462679a..88e32a7 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_ioc32.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_ioc32.c
 @@ -50,7 +50,7 @@ long nouveau_compat_ioctl(struct file *filp, unsigned int cmd,
@@ -40548,10 +40646,10 @@ index c1a7e5a..38b8539 100644
  
        if (nr < DRM_COMMAND_BASE)
 diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
-index ab0228f..20b756b 100644
+index 753a6de..dd66b98 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
-@@ -130,11 +130,11 @@ nouveau_vram_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
+@@ -126,11 +126,11 @@ nouveau_vram_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
  }
  
  const struct ttm_mem_type_manager_func nouveau_vram_manager = {
@@ -40568,7 +40666,7 @@ index ab0228f..20b756b 100644
  };
  
  static int
-@@ -199,11 +199,11 @@ nouveau_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
+@@ -194,11 +194,11 @@ nouveau_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
  }
  
  const struct ttm_mem_type_manager_func nouveau_gart_manager = {
@@ -40584,8 +40682,8 @@ index ab0228f..20b756b 100644
 +      .debug = nouveau_gart_manager_debug
  };
  
- #include <core/subdev/vm/nv04.h>
-@@ -271,11 +271,11 @@ nv04_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
+ /*XXX*/
+@@ -267,11 +267,11 @@ nv04_gart_manager_debug(struct ttm_mem_type_manager *man, const char *prefix)
  }
  
  const struct ttm_mem_type_manager_func nv04_gart_manager = {
@@ -40603,20 +40701,20 @@ index ab0228f..20b756b 100644
  
  int
 diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
-index fb84da3..d7ee463 100644
+index c7592ec..dd45ebc 100644
 --- a/drivers/gpu/drm/nouveau/nouveau_vga.c
 +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
-@@ -67,7 +67,7 @@ nouveau_switcheroo_can_switch(struct pci_dev *pdev)
-       bool can_switch;
-       spin_lock(&dev->count_lock);
--      can_switch = (dev->open_count == 0);
-+      can_switch = (local_read(&dev->open_count) == 0);
-       spin_unlock(&dev->count_lock);
-       return can_switch;
+@@ -72,7 +72,7 @@ nouveau_switcheroo_can_switch(struct pci_dev *pdev)
+        * locking inversion with the driver load path. And the access here is
+        * completely racy anyway. So don't bother with locking for now.
+        */
+-      return dev->open_count == 0;
++      return local_read(&dev->open_count) == 0;
  }
+ static const struct vga_switcheroo_client_ops
 diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cmd.c
-index eb89653..613cf71 100644
+index 9782364..89bd954 100644
 --- a/drivers/gpu/drm/qxl/qxl_cmd.c
 +++ b/drivers/gpu/drm/qxl/qxl_cmd.c
 @@ -285,27 +285,27 @@ static int wait_for_io_cmd_user(struct qxl_device *qdev, uint8_t val, long port,
@@ -40654,7 +40752,7 @@ index eb89653..613cf71 100644
        if (ret > 0)
                ret = 0;
 diff --git a/drivers/gpu/drm/qxl/qxl_debugfs.c b/drivers/gpu/drm/qxl/qxl_debugfs.c
-index c3c2bbd..bc3c0fb 100644
+index 6911b8c..89d6867 100644
 --- a/drivers/gpu/drm/qxl/qxl_debugfs.c
 +++ b/drivers/gpu/drm/qxl/qxl_debugfs.c
 @@ -42,10 +42,10 @@ qxl_debugfs_irq_received(struct seq_file *m, void *data)
@@ -40673,7 +40771,7 @@ index c3c2bbd..bc3c0fb 100644
        return 0;
  }
 diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
-index 36ed40b..0397633 100644
+index 7c6cafe..460f542 100644
 --- a/drivers/gpu/drm/qxl/qxl_drv.h
 +++ b/drivers/gpu/drm/qxl/qxl_drv.h
 @@ -290,10 +290,10 @@ struct qxl_device {
@@ -40692,7 +40790,7 @@ index 36ed40b..0397633 100644
        wait_queue_head_t display_event;
        wait_queue_head_t cursor_event;
 diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c
-index 0bb86e6..d41416d 100644
+index b110883..dd06418 100644
 --- a/drivers/gpu/drm/qxl/qxl_ioctl.c
 +++ b/drivers/gpu/drm/qxl/qxl_ioctl.c
 @@ -181,7 +181,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
@@ -40728,12 +40826,12 @@ index 0bb86e6..d41416d 100644
                        return -EFAULT;
  
 diff --git a/drivers/gpu/drm/qxl/qxl_irq.c b/drivers/gpu/drm/qxl/qxl_irq.c
-index 28f84b4..fb3e224 100644
+index 0bf1e20..42a7310 100644
 --- a/drivers/gpu/drm/qxl/qxl_irq.c
 +++ b/drivers/gpu/drm/qxl/qxl_irq.c
-@@ -33,19 +33,19 @@ irqreturn_t qxl_irq_handler(int irq, void *arg)
-       pending = xchg(&qdev->ram_header->int_pending, 0);
+@@ -36,19 +36,19 @@ irqreturn_t qxl_irq_handler(int irq, void *arg)
+       if (!pending)
+               return IRQ_NONE;
  
 -      atomic_inc(&qdev->irq_received);
 +      atomic_inc_unchecked(&qdev->irq_received);
@@ -40755,7 +40853,7 @@ index 28f84b4..fb3e224 100644
                wake_up_all(&qdev->io_cmd_event);
        }
        if (pending & QXL_INTERRUPT_ERROR) {
-@@ -82,10 +82,10 @@ int qxl_irq_init(struct qxl_device *qdev)
+@@ -85,10 +85,10 @@ int qxl_irq_init(struct qxl_device *qdev)
        init_waitqueue_head(&qdev->io_cmd_event);
        INIT_WORK(&qdev->client_monitors_config_work,
                  qxl_client_monitors_config_work_func);
@@ -40768,10 +40866,10 @@ index 28f84b4..fb3e224 100644
 +      atomic_set_unchecked(&qdev->irq_received_cursor, 0);
 +      atomic_set_unchecked(&qdev->irq_received_io_cmd, 0);
        qdev->irq_received_error = 0;
-       ret = drm_irq_install(qdev->ddev);
+       ret = drm_irq_install(qdev->ddev, qdev->ddev->pdev->irq);
        qdev->ram_header->int_mask = QXL_INTERRUPT_MASK;
 diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
-index d52c275..4e6b43d 100644
+index 0cbc4c9..0e46686 100644
 --- a/drivers/gpu/drm/qxl/qxl_ttm.c
 +++ b/drivers/gpu/drm/qxl/qxl_ttm.c
 @@ -103,7 +103,7 @@ static void qxl_ttm_global_fini(struct qxl_device *qdev)
@@ -40783,7 +40881,7 @@ index d52c275..4e6b43d 100644
  static const struct vm_operations_struct *ttm_vm_ops;
  
  static int qxl_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
-@@ -147,8 +147,10 @@ int qxl_mmap(struct file *filp, struct vm_area_struct *vma)
+@@ -145,8 +145,10 @@ int qxl_mmap(struct file *filp, struct vm_area_struct *vma)
                return r;
        if (unlikely(ttm_vm_ops == NULL)) {
                ttm_vm_ops = vma->vm_ops;
@@ -40794,7 +40892,7 @@ index d52c275..4e6b43d 100644
        }
        vma->vm_ops = &qxl_ttm_vm_ops;
        return 0;
-@@ -561,25 +563,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data)
+@@ -464,25 +466,23 @@ static int qxl_mm_dump_table(struct seq_file *m, void *data)
  static int qxl_ttm_debugfs_init(struct qxl_device *qdev)
  {
  #if defined(CONFIG_DEBUG_FS)
@@ -40836,7 +40934,7 @@ index d52c275..4e6b43d 100644
        return 0;
  #endif
 diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
-index 59459fe..be26b31 100644
+index 2c45ac9..5d740f8 100644
 --- a/drivers/gpu/drm/r128/r128_cce.c
 +++ b/drivers/gpu/drm/r128/r128_cce.c
 @@ -377,7 +377,7 @@ static int r128_do_init_cce(struct drm_device *dev, drm_r128_init_t *init)
@@ -40849,10 +40947,10 @@ index 59459fe..be26b31 100644
        /* We don't support anything other than bus-mastering ring mode,
         * but the ring can be in either AGP or PCI space for the ring
 diff --git a/drivers/gpu/drm/r128/r128_drv.h b/drivers/gpu/drm/r128/r128_drv.h
-index 5bf3f5f..7000661 100644
+index 723e5d6..102dbaf 100644
 --- a/drivers/gpu/drm/r128/r128_drv.h
 +++ b/drivers/gpu/drm/r128/r128_drv.h
-@@ -90,14 +90,14 @@ typedef struct drm_r128_private {
+@@ -93,14 +93,14 @@ typedef struct drm_r128_private {
        int is_pci;
        unsigned long cce_buffers_offset;
  
@@ -40870,7 +40968,7 @@ index 5bf3f5f..7000661 100644
        u32 color_fmt;
        unsigned int front_offset;
 diff --git a/drivers/gpu/drm/r128/r128_ioc32.c b/drivers/gpu/drm/r128/r128_ioc32.c
-index b0d0fd3..a6fbbe4 100644
+index 663f38c..c689495 100644
 --- a/drivers/gpu/drm/r128/r128_ioc32.c
 +++ b/drivers/gpu/drm/r128/r128_ioc32.c
 @@ -178,7 +178,7 @@ static int compat_r128_getparam(struct file *file, unsigned int cmd,
@@ -40892,11 +40990,11 @@ index b0d0fd3..a6fbbe4 100644
        if (nr < DRM_COMMAND_BASE)
                return drm_compat_ioctl(filp, cmd, arg);
  
--      if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(r128_compat_ioctls))
+-      if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(r128_compat_ioctls))
 -              fn = r128_compat_ioctls[nr - DRM_COMMAND_BASE];
 -
 -      if (fn != NULL)
-+      if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(r128_compat_ioctls)) {
++      if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(r128_compat_ioctls)) {
 +              drm_ioctl_compat_t fn = r128_compat_ioctls[nr - DRM_COMMAND_BASE];
                ret = (*fn) (filp, cmd, arg);
 -      else
@@ -40927,7 +41025,7 @@ index c2ae496..30b5993 100644
                return IRQ_HANDLED;
        }
 diff --git a/drivers/gpu/drm/r128/r128_state.c b/drivers/gpu/drm/r128/r128_state.c
-index e806dac..f81d32f 100644
+index 575e986..66e62ca 100644
 --- a/drivers/gpu/drm/r128/r128_state.c
 +++ b/drivers/gpu/drm/r128/r128_state.c
 @@ -320,10 +320,10 @@ static void r128_clear_box(drm_r128_private_t *dev_priv,
@@ -40965,23 +41063,23 @@ index 4a85bb6..aaea819 100644
        if (regcomp
            (&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) {
 diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
-index 2cd144c..a01c95a 100644
+index 995a8b1..b7cb898 100644
 --- a/drivers/gpu/drm/radeon/radeon_device.c
 +++ b/drivers/gpu/drm/radeon/radeon_device.c
-@@ -1129,7 +1129,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
-       bool can_switch;
-       spin_lock(&dev->count_lock);
--      can_switch = (dev->open_count == 0);
-+      can_switch = (local_read(&dev->open_count) == 0);
-       spin_unlock(&dev->count_lock);
-       return can_switch;
+@@ -1214,7 +1214,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
+        * locking inversion with the driver load path. And the access here is
+        * completely racy anyway. So don't bother with locking for now.
+        */
+-      return dev->open_count == 0;
++      return local_read(&dev->open_count) == 0;
  }
+ static const struct vga_switcheroo_client_ops radeon_switcheroo_ops = {
 diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
-index dafd812..1bf20c7 100644
+index 46bd393..6ae4719 100644
 --- a/drivers/gpu/drm/radeon/radeon_drv.h
 +++ b/drivers/gpu/drm/radeon/radeon_drv.h
-@@ -262,7 +262,7 @@ typedef struct drm_radeon_private {
+@@ -264,7 +264,7 @@ typedef struct drm_radeon_private {
  
        /* SW interrupt */
        wait_queue_head_t swi_queue;
@@ -40991,7 +41089,7 @@ index dafd812..1bf20c7 100644
        uint32_t irq_enable_reg;
        uint32_t r500_disp_irq_reg;
 diff --git a/drivers/gpu/drm/radeon/radeon_ioc32.c b/drivers/gpu/drm/radeon/radeon_ioc32.c
-index bdb0f93..5ff558f 100644
+index 0b98ea1..0881827 100644
 --- a/drivers/gpu/drm/radeon/radeon_ioc32.c
 +++ b/drivers/gpu/drm/radeon/radeon_ioc32.c
 @@ -358,7 +358,7 @@ static int compat_radeon_cp_setparam(struct file *file, unsigned int cmd,
@@ -41022,11 +41120,11 @@ index bdb0f93..5ff558f 100644
        if (nr < DRM_COMMAND_BASE)
                return drm_compat_ioctl(filp, cmd, arg);
  
--      if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(radeon_compat_ioctls))
+-      if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(radeon_compat_ioctls))
 -              fn = radeon_compat_ioctls[nr - DRM_COMMAND_BASE];
 -
 -      if (fn != NULL)
-+      if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(radeon_compat_ioctls)) {
++      if (nr < DRM_COMMAND_BASE + ARRAY_SIZE(radeon_compat_ioctls)) {
 +              drm_ioctl_compat_t fn = radeon_compat_ioctls[nr - DRM_COMMAND_BASE];
                ret = (*fn) (filp, cmd, arg);
 -      else
@@ -41059,7 +41157,7 @@ index 244b19b..c19226d 100644
  
        dev->max_vblank_count = 0x001fffff;
 diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
-index 956ab7f..fbd36d8 100644
+index 535403e..5dd655b 100644
 --- a/drivers/gpu/drm/radeon/radeon_state.c
 +++ b/drivers/gpu/drm/radeon/radeon_state.c
 @@ -2168,7 +2168,7 @@ static int radeon_cp_clear(struct drm_device *dev, void *data, struct drm_file *
@@ -41081,10 +41179,10 @@ index 956ab7f..fbd36d8 100644
        DRM_DEBUG("pid=%d\n", DRM_CURRENTPID);
  
 diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
-index c8a8a51..219dacc 100644
+index 8624979..65e5243 100644
 --- a/drivers/gpu/drm/radeon/radeon_ttm.c
 +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
-@@ -797,7 +797,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
+@@ -936,7 +936,7 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
        man->size = size >> PAGE_SHIFT;
  }
  
@@ -41093,7 +41191,7 @@ index c8a8a51..219dacc 100644
  static const struct vm_operations_struct *ttm_vm_ops = NULL;
  
  static int radeon_ttm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
-@@ -838,8 +838,10 @@ int radeon_mmap(struct file *filp, struct vm_area_struct *vma)
+@@ -977,8 +977,10 @@ int radeon_mmap(struct file *filp, struct vm_area_struct *vma)
        }
        if (unlikely(ttm_vm_ops == NULL)) {
                ttm_vm_ops = vma->vm_ops;
@@ -41105,10 +41203,10 @@ index c8a8a51..219dacc 100644
        vma->vm_ops = &radeon_ttm_vm_ops;
        return 0;
 diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
-index edb871d..a275c6ed 100644
+index 054a79f..30d9ac4 100644
 --- a/drivers/gpu/drm/tegra/dc.c
 +++ b/drivers/gpu/drm/tegra/dc.c
-@@ -1057,7 +1057,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor)
+@@ -1242,7 +1242,7 @@ static int tegra_dc_debugfs_init(struct tegra_dc *dc, struct drm_minor *minor)
        }
  
        for (i = 0; i < ARRAY_SIZE(debugfs_files); i++)
@@ -41118,10 +41216,10 @@ index edb871d..a275c6ed 100644
        err = drm_debugfs_create_files(dc->debugfs_files,
                                       ARRAY_SIZE(debugfs_files),
 diff --git a/drivers/gpu/drm/tegra/dsi.c b/drivers/gpu/drm/tegra/dsi.c
-index 0e599f0..c9ea7c7 100644
+index f787445..2df2c65 100644
 --- a/drivers/gpu/drm/tegra/dsi.c
 +++ b/drivers/gpu/drm/tegra/dsi.c
-@@ -39,7 +39,7 @@ struct tegra_dsi {
+@@ -41,7 +41,7 @@ struct tegra_dsi {
        struct clk *clk_lp;
        struct clk *clk;
  
@@ -41131,10 +41229,10 @@ index 0e599f0..c9ea7c7 100644
        struct dentry *debugfs;
  
 diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
-index 6928015..c9853e7 100644
+index ffe2654..03c7b1c 100644
 --- a/drivers/gpu/drm/tegra/hdmi.c
 +++ b/drivers/gpu/drm/tegra/hdmi.c
-@@ -59,7 +59,7 @@ struct tegra_hdmi {
+@@ -60,7 +60,7 @@ struct tegra_hdmi {
        bool stereo;
        bool dvi;
  
@@ -41144,7 +41242,7 @@ index 6928015..c9853e7 100644
        struct dentry *debugfs;
  };
 diff --git a/drivers/gpu/drm/ttm/ttm_bo_manager.c b/drivers/gpu/drm/ttm/ttm_bo_manager.c
-index bd850c9..d9f3573 100644
+index 964387f..4eafc00 100644
 --- a/drivers/gpu/drm/ttm/ttm_bo_manager.c
 +++ b/drivers/gpu/drm/ttm/ttm_bo_manager.c
 @@ -146,10 +146,10 @@ static void ttm_bo_man_debug(struct ttm_mem_type_manager *man,
@@ -41164,7 +41262,7 @@ index bd850c9..d9f3573 100644
  };
  EXPORT_SYMBOL(ttm_bo_manager_func);
 diff --git a/drivers/gpu/drm/ttm/ttm_memory.c b/drivers/gpu/drm/ttm/ttm_memory.c
-index dbc2def..0a9f710 100644
+index a1803fb..c53f6b0 100644
 --- a/drivers/gpu/drm/ttm/ttm_memory.c
 +++ b/drivers/gpu/drm/ttm/ttm_memory.c
 @@ -264,7 +264,7 @@ static int ttm_mem_init_kernel_zone(struct ttm_mem_global *glob,
@@ -41176,7 +41274,7 @@ index dbc2def..0a9f710 100644
        if (unlikely(ret != 0)) {
                kobject_put(&zone->kobj);
                return ret;
-@@ -347,7 +347,7 @@ static int ttm_mem_init_dma32_zone(struct ttm_mem_global *glob,
+@@ -348,7 +348,7 @@ static int ttm_mem_init_dma32_zone(struct ttm_mem_global *glob,
        zone->glob = glob;
        glob->zone_dma32 = zone;
        ret = kobject_init_and_add(
@@ -41186,23 +41284,160 @@ index dbc2def..0a9f710 100644
                kobject_put(&zone->kobj);
                return ret;
 diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c
-index 863bef9..cba15cf 100644
+index 09874d6..d6da1de 100644
 --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
 +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
-@@ -391,9 +391,9 @@ out:
- static unsigned long
- ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
- {
--      static atomic_t start_pool = ATOMIC_INIT(0);
-+      static atomic_unchecked_t start_pool = ATOMIC_INIT(0);
+@@ -54,7 +54,7 @@
+ #define NUM_PAGES_TO_ALLOC            (PAGE_SIZE/sizeof(struct page *))
+ #define SMALL_ALLOCATION              16
+-#define FREE_ALL_PAGES                        (~0U)
++#define FREE_ALL_PAGES                        (~0UL)
+ /* times are in msecs */
+ #define PAGE_FREE_INTERVAL            1000
+@@ -299,14 +299,13 @@ static void ttm_pool_update_free_locked(struct ttm_page_pool *pool,
+  * @free_all: If set to true will free all pages in pool
+  * @gfp: GFP flags.
+  **/
+-static int ttm_page_pool_free(struct ttm_page_pool *pool, unsigned nr_free,
++static unsigned long ttm_page_pool_free(struct ttm_page_pool *pool, unsigned long nr_free,
+                             gfp_t gfp)
+ {
+       unsigned long irq_flags;
+       struct page *p;
+       struct page **pages_to_free;
+-      unsigned freed_pages = 0,
+-               npages_to_free = nr_free;
++      unsigned long freed_pages = 0, npages_to_free = nr_free;
+       if (NUM_PAGES_TO_ALLOC < nr_free)
+               npages_to_free = NUM_PAGES_TO_ALLOC;
+@@ -366,7 +365,8 @@ restart:
+               __list_del(&p->lru, &pool->list);
+               ttm_pool_update_free_locked(pool, freed_pages);
+-              nr_free -= freed_pages;
++              if (likely(nr_free != FREE_ALL_PAGES))
++                      nr_free -= freed_pages;
+       }
+       spin_unlock_irqrestore(&pool->lock, irq_flags);
+@@ -395,7 +395,7 @@ ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
        unsigned i;
--      unsigned pool_offset = atomic_add_return(1, &start_pool);
-+      unsigned pool_offset = atomic_add_return_unchecked(1, &start_pool);
+       unsigned pool_offset;
        struct ttm_page_pool *pool;
-       int shrink_pages = sc->nr_to_scan;
+-      int shrink_pages = sc->nr_to_scan;
++      unsigned long shrink_pages = sc->nr_to_scan;
        unsigned long freed = 0;
+       if (!mutex_trylock(&lock))
+@@ -403,7 +403,7 @@ ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
+       pool_offset = ++start_pool % NUM_POOLS;
+       /* select start pool in round robin fashion */
+       for (i = 0; i < NUM_POOLS; ++i) {
+-              unsigned nr_free = shrink_pages;
++              unsigned long nr_free = shrink_pages;
+               if (shrink_pages == 0)
+                       break;
+               pool = &_manager->pools[(i + pool_offset)%NUM_POOLS];
+@@ -669,7 +669,7 @@ out:
+ }
+ /* Put all pages in pages list to correct pool to wait for reuse */
+-static void ttm_put_pages(struct page **pages, unsigned npages, int flags,
++static void ttm_put_pages(struct page **pages, unsigned long npages, int flags,
+                         enum ttm_caching_state cstate)
+ {
+       unsigned long irq_flags;
+@@ -724,7 +724,7 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
+       struct list_head plist;
+       struct page *p = NULL;
+       gfp_t gfp_flags = GFP_USER;
+-      unsigned count;
++      unsigned long count;
+       int r;
+       /* set zero flag for page allocation if required */
+diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
+index c96db43..c367557 100644
+--- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
++++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
+@@ -56,7 +56,7 @@
+ #define NUM_PAGES_TO_ALLOC            (PAGE_SIZE/sizeof(struct page *))
+ #define SMALL_ALLOCATION              4
+-#define FREE_ALL_PAGES                        (~0U)
++#define FREE_ALL_PAGES                        (~0UL)
+ /* times are in msecs */
+ #define IS_UNDEFINED                  (0)
+ #define IS_WC                         (1<<1)
+@@ -413,15 +413,14 @@ static void ttm_dma_page_put(struct dma_pool *pool, struct dma_page *d_page)
+  * @nr_free: If set to true will free all pages in pool
+  * @gfp: GFP flags.
+  **/
+-static unsigned ttm_dma_page_pool_free(struct dma_pool *pool, unsigned nr_free,
++static unsigned long ttm_dma_page_pool_free(struct dma_pool *pool, unsigned long nr_free,
+                                      gfp_t gfp)
+ {
+       unsigned long irq_flags;
+       struct dma_page *dma_p, *tmp;
+       struct page **pages_to_free;
+       struct list_head d_pages;
+-      unsigned freed_pages = 0,
+-               npages_to_free = nr_free;
++      unsigned long freed_pages = 0, npages_to_free = nr_free;
+       if (NUM_PAGES_TO_ALLOC < nr_free)
+               npages_to_free = NUM_PAGES_TO_ALLOC;
+@@ -494,7 +493,8 @@ restart:
+       /* remove range of pages from the pool */
+       if (freed_pages) {
+               ttm_pool_update_free_locked(pool, freed_pages);
+-              nr_free -= freed_pages;
++              if (likely(nr_free != FREE_ALL_PAGES))
++                      nr_free -= freed_pages;
+       }
+       spin_unlock_irqrestore(&pool->lock, irq_flags);
+@@ -929,7 +929,7 @@ void ttm_dma_unpopulate(struct ttm_dma_tt *ttm_dma, struct device *dev)
+       struct dma_page *d_page, *next;
+       enum pool_type type;
+       bool is_cached = false;
+-      unsigned count = 0, i, npages = 0;
++      unsigned long count = 0, i, npages = 0;
+       unsigned long irq_flags;
+       type = ttm_to_type(ttm->page_flags, ttm->caching_state);
+@@ -1007,7 +1007,7 @@ ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
+       static unsigned start_pool;
+       unsigned idx = 0;
+       unsigned pool_offset;
+-      unsigned shrink_pages = sc->nr_to_scan;
++      unsigned long shrink_pages = sc->nr_to_scan;
+       struct device_pools *p;
+       unsigned long freed = 0;
+@@ -1020,7 +1020,7 @@ ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
+               goto out;
+       pool_offset = ++start_pool % _manager->npools;
+       list_for_each_entry(p, &_manager->pools, pools) {
+-              unsigned nr_free;
++              unsigned long nr_free;
+               if (!p->dev)
+                       continue;
+@@ -1034,7 +1034,7 @@ ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
+                                                     sc->gfp_mask);
+               freed += nr_free - shrink_pages;
+-              pr_debug("%s: (%s:%d) Asked to shrink %d, have %d more to go\n",
++              pr_debug("%s: (%s:%d) Asked to shrink %lu, have %lu more to go\n",
+                        p->pool->dev_name, p->pool->name, current->pid,
+                        nr_free, shrink_pages);
+       }
 diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
-index 3771763..883f206 100644
+index 8cbcb45..a4d9cf7 100644
 --- a/drivers/gpu/drm/udl/udl_fb.c
 +++ b/drivers/gpu/drm/udl/udl_fb.c
 @@ -367,7 +367,6 @@ static int udl_fb_release(struct fb_info *info, int user)
@@ -41214,10 +41449,10 @@ index 3771763..883f206 100644
  
        pr_warn("released /dev/fb%d user=%d count=%d\n",
 diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h
-index ad02732..144f5ed 100644
+index ef8c500..01030c8 100644
 --- a/drivers/gpu/drm/via/via_drv.h
 +++ b/drivers/gpu/drm/via/via_drv.h
-@@ -51,7 +51,7 @@ typedef struct drm_via_ring_buffer {
+@@ -53,7 +53,7 @@ typedef struct drm_via_ring_buffer {
  typedef uint32_t maskarray_t[5];
  
  typedef struct drm_via_irq {
@@ -41226,7 +41461,7 @@ index ad02732..144f5ed 100644
        uint32_t pending_mask;
        uint32_t enable_mask;
        wait_queue_head_t irq_queue;
-@@ -75,7 +75,7 @@ typedef struct drm_via_private {
+@@ -77,7 +77,7 @@ typedef struct drm_via_private {
        struct timeval last_vblank;
        int last_vblank_valid;
        unsigned usec_per_vblank;
@@ -41310,10 +41545,10 @@ index 1319433..a993b0c 100644
        case VIA_IRQ_ABSOLUTE:
                break;
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
-index 6b252a8..5975dfe 100644
+index 4ee799b..69fc0d1 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
-@@ -437,7 +437,7 @@ struct vmw_private {
+@@ -446,7 +446,7 @@ struct vmw_private {
         * Fencing and IRQs.
         */
  
@@ -41323,7 +41558,7 @@ index 6b252a8..5975dfe 100644
        wait_queue_head_t fifo_queue;
        int fence_queue_waiters; /* Protected by hw_mutex */
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
-index 6ccd993..618d592 100644
+index 09e10ae..cb76c60 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
 @@ -154,7 +154,7 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
@@ -41335,7 +41570,7 @@ index 6ccd993..618d592 100644
        iowrite32(dev_priv->last_read_seqno, fifo_mem + SVGA_FIFO_FENCE);
        vmw_marker_queue_init(&fifo->marker_queue);
        return vmw_fifo_send_fence(dev_priv, &dummy);
-@@ -372,7 +372,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
+@@ -378,7 +378,7 @@ void *vmw_fifo_reserve(struct vmw_private *dev_priv, uint32_t bytes)
                                if (reserveable)
                                        iowrite32(bytes, fifo_mem +
                                                  SVGA_FIFO_RESERVED);
@@ -41344,7 +41579,7 @@ index 6ccd993..618d592 100644
                        } else {
                                need_bounce = true;
                        }
-@@ -492,7 +492,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
+@@ -498,7 +498,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
  
        fm = vmw_fifo_reserve(dev_priv, bytes);
        if (unlikely(fm == NULL)) {
@@ -41353,7 +41588,7 @@ index 6ccd993..618d592 100644
                ret = -ENOMEM;
                (void)vmw_fallback_wait(dev_priv, false, true, *seqno,
                                        false, 3*HZ);
-@@ -500,7 +500,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
+@@ -506,7 +506,7 @@ int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
        }
  
        do {
@@ -41363,7 +41598,7 @@ index 6ccd993..618d592 100644
  
        if (!(fifo_state->capabilities & SVGA_FIFO_CAP_FENCE)) {
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
-index b1273e8..9c274fd 100644
+index 170b61b..fec7348 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
 @@ -164,9 +164,9 @@ static void vmw_gmrid_man_debug(struct ttm_mem_type_manager *man,
@@ -41426,10 +41661,10 @@ index 0c42376..6febe77 100644
  
        for (;;) {
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c b/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
-index 8a8725c2..afed796 100644
+index efd1ffd..0ae13ca 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_marker.c
-@@ -151,7 +151,7 @@ int vmw_wait_lag(struct vmw_private *dev_priv,
+@@ -135,7 +135,7 @@ int vmw_wait_lag(struct vmw_private *dev_priv,
        while (!vmw_lag_lt(queue, us)) {
                spin_lock(&queue->lock);
                if (list_empty(&queue->head))
@@ -41439,7 +41674,7 @@ index 8a8725c2..afed796 100644
                        marker = list_first_entry(&queue->head,
                                                 struct vmw_marker, head);
 diff --git a/drivers/gpu/vga/vga_switcheroo.c b/drivers/gpu/vga/vga_switcheroo.c
-index 6866448..2ad2b34 100644
+index 37ac7b5..d52a5c9 100644
 --- a/drivers/gpu/vga/vga_switcheroo.c
 +++ b/drivers/gpu/vga/vga_switcheroo.c
 @@ -644,7 +644,7 @@ static int vga_switcheroo_runtime_resume(struct device *dev)
@@ -41451,7 +41686,7 @@ index 6866448..2ad2b34 100644
  {
        /* copy over all the bus versions */
        if (dev->bus && dev->bus->pm) {
-@@ -689,7 +689,7 @@ static int vga_switcheroo_runtime_resume_hdmi_audio(struct device *dev)
+@@ -695,7 +695,7 @@ static int vga_switcheroo_runtime_resume_hdmi_audio(struct device *dev)
        return ret;
  }
  
@@ -41461,10 +41696,10 @@ index 6866448..2ad2b34 100644
        /* copy over all the bus versions */
        if (dev->bus && dev->bus->pm) {
 diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
-index a5c7927..025a2b4 100644
+index 3402033..50b562c 100644
 --- a/drivers/hid/hid-core.c
 +++ b/drivers/hid/hid-core.c
-@@ -2476,7 +2476,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
+@@ -2506,7 +2506,7 @@ EXPORT_SYMBOL_GPL(hid_ignore);
  
  int hid_add_device(struct hid_device *hdev)
  {
@@ -41473,7 +41708,7 @@ index a5c7927..025a2b4 100644
        int ret;
  
        if (WARN_ON(hdev->status & HID_STAT_ADDED))
-@@ -2518,7 +2518,7 @@ int hid_add_device(struct hid_device *hdev)
+@@ -2548,7 +2548,7 @@ int hid_add_device(struct hid_device *hdev)
        /* XXX hack, any other cleaner solution after the driver core
         * is converted to allow more than 20 bytes as the device name? */
        dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
@@ -41482,6 +41717,321 @@ index a5c7927..025a2b4 100644
  
        hid_debug_register(hdev, dev_name(&hdev->dev));
        ret = device_add(&hdev->dev);
+diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
+index 71f5692..147d3da 100644
+--- a/drivers/hid/hid-logitech-dj.c
++++ b/drivers/hid/hid-logitech-dj.c
+@@ -658,6 +658,12 @@ static int logi_dj_raw_event(struct hid_device *hdev,
+        * device (via hid_input_report() ) and return 1 so hid-core does not do
+        * anything else with it.
+        */
++      if ((dj_report->device_index < DJ_DEVICE_INDEX_MIN) ||
++          (dj_report->device_index > DJ_DEVICE_INDEX_MAX)) {
++              dev_err(&hdev->dev, "%s: invalid device index:%d\n",
++                              __func__, dj_report->device_index);
++              return false;
++      }
+       /* case 1) */
+       if (data[0] != REPORT_ID_DJ_SHORT)
+diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
+index bc4269e..b6e6102 100644
+--- a/drivers/hid/hid-sony.c
++++ b/drivers/hid/hid-sony.c
+@@ -798,6 +798,12 @@ union sixaxis_output_report_01 {
+       __u8 buf[36];
+ };
++#define DS4_REPORT_0x02_SIZE 37
++#define DS4_REPORT_0x05_SIZE 32
++#define DS4_REPORT_0x11_SIZE 78
++#define DS4_REPORT_0x81_SIZE 7
++#define SIXAXIS_REPORT_0xF2_SIZE 18
++
+ static spinlock_t sony_dev_list_lock;
+ static LIST_HEAD(sony_device_list);
+ static DEFINE_IDA(sony_device_id_allocator);
+@@ -811,6 +817,7 @@ struct sony_sc {
+       struct work_struct state_worker;
+       struct power_supply battery;
+       int device_id;
++      __u8 *output_report_dmabuf;
+ #ifdef CONFIG_SONY_FF
+       __u8 left;
+@@ -1142,9 +1149,20 @@ static int sixaxis_set_operational_usb(struct hid_device *hdev)
+ static int sixaxis_set_operational_bt(struct hid_device *hdev)
+ {
+-      unsigned char buf[] = { 0xf4,  0x42, 0x03, 0x00, 0x00 };
+-      return hid_hw_raw_request(hdev, buf[0], buf, sizeof(buf),
++      static const __u8 report[] = { 0xf4, 0x42, 0x03, 0x00, 0x00 };
++      __u8 *buf;
++      int ret;
++
++      buf = kmemdup(report, sizeof(report), GFP_KERNEL);
++      if (!buf)
++              return -ENOMEM;
++
++      ret = hid_hw_raw_request(hdev, buf[0], buf, sizeof(report),
+                                 HID_FEATURE_REPORT, HID_REQ_SET_REPORT);
++
++      kfree(buf);
++
++      return ret;
+ }
+ /*
+@@ -1153,10 +1171,19 @@ static int sixaxis_set_operational_bt(struct hid_device *hdev)
+  */
+ static int dualshock4_set_operational_bt(struct hid_device *hdev)
+ {
+-      __u8 buf[37] = { 0 };
++      __u8 *buf;
++      int ret;
+-      return hid_hw_raw_request(hdev, 0x02, buf, sizeof(buf),
++      buf = kmalloc(DS4_REPORT_0x02_SIZE, GFP_KERNEL);
++      if (!buf)
++              return -ENOMEM;
++
++      ret = hid_hw_raw_request(hdev, 0x02, buf, DS4_REPORT_0x02_SIZE,
+                               HID_FEATURE_REPORT, HID_REQ_GET_REPORT);
++
++      kfree(buf);
++
++      return ret;
+ }
+ static void sixaxis_set_leds_from_id(int id, __u8 values[MAX_LEDS])
+@@ -1471,9 +1498,7 @@ error_leds:
+ static void sixaxis_state_worker(struct work_struct *work)
+ {
+-      struct sony_sc *sc = container_of(work, struct sony_sc, state_worker);
+-      int n;
+-      union sixaxis_output_report_01 report = {
++      static const union sixaxis_output_report_01 default_report = {
+               .buf = {
+                       0x01,
+                       0x00, 0xff, 0x00, 0xff, 0x00,
+@@ -1485,20 +1510,27 @@ static void sixaxis_state_worker(struct work_struct *work)
+                       0x00, 0x00, 0x00, 0x00, 0x00
+               }
+       };
++      struct sony_sc *sc = container_of(work, struct sony_sc, state_worker);
++      struct sixaxis_output_report *report =
++              (struct sixaxis_output_report *)sc->output_report_dmabuf;
++      int n;
++
++      /* Initialize the report with default values */
++      memcpy(report, &default_report, sizeof(struct sixaxis_output_report));
+ #ifdef CONFIG_SONY_FF
+-      report.data.rumble.right_motor_on = sc->right ? 1 : 0;
+-      report.data.rumble.left_motor_force = sc->left;
++      report->rumble.right_motor_on = sc->right ? 1 : 0;
++      report->rumble.left_motor_force = sc->left;
+ #endif
+-      report.data.leds_bitmap |= sc->led_state[0] << 1;
+-      report.data.leds_bitmap |= sc->led_state[1] << 2;
+-      report.data.leds_bitmap |= sc->led_state[2] << 3;
+-      report.data.leds_bitmap |= sc->led_state[3] << 4;
++      report->leds_bitmap |= sc->led_state[0] << 1;
++      report->leds_bitmap |= sc->led_state[1] << 2;
++      report->leds_bitmap |= sc->led_state[2] << 3;
++      report->leds_bitmap |= sc->led_state[3] << 4;
+       /* Set flag for all leds off, required for 3rd party INTEC controller */
+-      if ((report.data.leds_bitmap & 0x1E) == 0)
+-              report.data.leds_bitmap |= 0x20;
++      if ((report->leds_bitmap & 0x1E) == 0)
++              report->leds_bitmap |= 0x20;
+       /*
+        * The LEDs in the report are indexed in reverse order to their
+@@ -1511,28 +1543,30 @@ static void sixaxis_state_worker(struct work_struct *work)
+        */
+       for (n = 0; n < 4; n++) {
+               if (sc->led_delay_on[n] || sc->led_delay_off[n]) {
+-                      report.data.led[3 - n].duty_off = sc->led_delay_off[n];
+-                      report.data.led[3 - n].duty_on = sc->led_delay_on[n];
++                      report->led[3 - n].duty_off = sc->led_delay_off[n];
++                      report->led[3 - n].duty_on = sc->led_delay_on[n];
+               }
+       }
+-      hid_hw_raw_request(sc->hdev, report.data.report_id, report.buf,
+-                      sizeof(report), HID_OUTPUT_REPORT, HID_REQ_SET_REPORT);
++      hid_hw_raw_request(sc->hdev, report->report_id, (__u8 *)report,
++                      sizeof(struct sixaxis_output_report),
++                      HID_OUTPUT_REPORT, HID_REQ_SET_REPORT);
+ }
+ static void dualshock4_state_worker(struct work_struct *work)
+ {
+       struct sony_sc *sc = container_of(work, struct sony_sc, state_worker);
+       struct hid_device *hdev = sc->hdev;
++      __u8 *buf = sc->output_report_dmabuf;
+       int offset;
+-      __u8 buf[78] = { 0 };
+-
+       if (sc->quirks & DUALSHOCK4_CONTROLLER_USB) {
++              memset(buf, 0, DS4_REPORT_0x05_SIZE);
+               buf[0] = 0x05;
+               buf[1] = 0xFF;
+               offset = 4;
+       } else {
++              memset(buf, 0, DS4_REPORT_0x11_SIZE);
+               buf[0] = 0x11;
+               buf[1] = 0xB0;
+               buf[3] = 0x0F;
+@@ -1560,12 +1594,33 @@ static void dualshock4_state_worker(struct work_struct *work)
+       buf[offset++] = sc->led_delay_off[3];
+       if (sc->quirks & DUALSHOCK4_CONTROLLER_USB)
+-              hid_hw_output_report(hdev, buf, 32);
++              hid_hw_output_report(hdev, buf, DS4_REPORT_0x05_SIZE);
+       else
+-              hid_hw_raw_request(hdev, 0x11, buf, 78,
++              hid_hw_raw_request(hdev, 0x11, buf, DS4_REPORT_0x11_SIZE,
+                               HID_OUTPUT_REPORT, HID_REQ_SET_REPORT);
+ }
++static int sony_allocate_output_report(struct sony_sc *sc)
++{
++      if (sc->quirks & SIXAXIS_CONTROLLER)
++              sc->output_report_dmabuf =
++                      kmalloc(sizeof(union sixaxis_output_report_01),
++                              GFP_KERNEL);
++      else if (sc->quirks & DUALSHOCK4_CONTROLLER_BT)
++              sc->output_report_dmabuf = kmalloc(DS4_REPORT_0x11_SIZE,
++                                              GFP_KERNEL);
++      else if (sc->quirks & DUALSHOCK4_CONTROLLER_USB)
++              sc->output_report_dmabuf = kmalloc(DS4_REPORT_0x05_SIZE,
++                                              GFP_KERNEL);
++      else
++              return 0;
++
++      if (!sc->output_report_dmabuf)
++              return -ENOMEM;
++
++      return 0;
++}
++
+ #ifdef CONFIG_SONY_FF
+ static int sony_play_effect(struct input_dev *dev, void *data,
+                           struct ff_effect *effect)
+@@ -1754,6 +1809,7 @@ static int sony_get_bt_devaddr(struct sony_sc *sc)
+ static int sony_check_add(struct sony_sc *sc)
+ {
++      __u8 *buf = NULL;
+       int n, ret;
+       if ((sc->quirks & DUALSHOCK4_CONTROLLER_BT) ||
+@@ -1769,36 +1825,44 @@ static int sony_check_add(struct sony_sc *sc)
+                       return 0;
+               }
+       } else if (sc->quirks & DUALSHOCK4_CONTROLLER_USB) {
+-              __u8 buf[7];
++              buf = kmalloc(DS4_REPORT_0x81_SIZE, GFP_KERNEL);
++              if (!buf)
++                      return -ENOMEM;
+               /*
+                * The MAC address of a DS4 controller connected via USB can be
+                * retrieved with feature report 0x81. The address begins at
+                * offset 1.
+                */
+-              ret = hid_hw_raw_request(sc->hdev, 0x81, buf, sizeof(buf),
+-                              HID_FEATURE_REPORT, HID_REQ_GET_REPORT);
++              ret = hid_hw_raw_request(sc->hdev, 0x81, buf,
++                              DS4_REPORT_0x81_SIZE, HID_FEATURE_REPORT,
++                              HID_REQ_GET_REPORT);
+-              if (ret != 7) {
++              if (ret != DS4_REPORT_0x81_SIZE) {
+                       hid_err(sc->hdev, "failed to retrieve feature report 0x81 with the DualShock 4 MAC address\n");
+-                      return ret < 0 ? ret : -EINVAL;
++                      ret = ret < 0 ? ret : -EINVAL;
++                      goto out_free;
+               }
+               memcpy(sc->mac_address, &buf[1], sizeof(sc->mac_address));
+       } else if (sc->quirks & SIXAXIS_CONTROLLER_USB) {
+-              __u8 buf[18];
++              buf = kmalloc(SIXAXIS_REPORT_0xF2_SIZE, GFP_KERNEL);
++              if (!buf)
++                      return -ENOMEM;
+               /*
+                * The MAC address of a Sixaxis controller connected via USB can
+                * be retrieved with feature report 0xf2. The address begins at
+                * offset 4.
+                */
+-              ret = hid_hw_raw_request(sc->hdev, 0xf2, buf, sizeof(buf),
+-                              HID_FEATURE_REPORT, HID_REQ_GET_REPORT);
++              ret = hid_hw_raw_request(sc->hdev, 0xf2, buf,
++                              SIXAXIS_REPORT_0xF2_SIZE, HID_FEATURE_REPORT,
++                              HID_REQ_GET_REPORT);
+-              if (ret != 18) {
++              if (ret != SIXAXIS_REPORT_0xF2_SIZE) {
+                       hid_err(sc->hdev, "failed to retrieve feature report 0xf2 with the Sixaxis MAC address\n");
+-                      return ret < 0 ? ret : -EINVAL;
++                      ret = ret < 0 ? ret : -EINVAL;
++                      goto out_free;
+               }
+               /*
+@@ -1811,7 +1875,13 @@ static int sony_check_add(struct sony_sc *sc)
+               return 0;
+       }
+-      return sony_check_add_dev_list(sc);
++      ret = sony_check_add_dev_list(sc);
++
++out_free:
++
++      kfree(buf);
++
++      return ret;
+ }
+ static int sony_set_device_id(struct sony_sc *sc)
+@@ -1895,6 +1965,12 @@ static int sony_probe(struct hid_device *hdev, const struct hid_device_id *id)
+               return ret;
+       }
++      ret = sony_allocate_output_report(sc);
++      if (ret < 0) {
++              hid_err(hdev, "failed to allocate the output report buffer\n");
++              goto err_stop;
++      }
++
+       ret = sony_set_device_id(sc);
+       if (ret < 0) {
+               hid_err(hdev, "failed to allocate the device id\n");
+@@ -1984,6 +2060,7 @@ err_stop:
+       if (sc->quirks & SONY_BATTERY_SUPPORT)
+               sony_battery_remove(sc);
+       sony_cancel_work_sync(sc);
++      kfree(sc->output_report_dmabuf);
+       sony_remove_dev_list(sc);
+       sony_release_device_id(sc);
+       hid_hw_stop(hdev);
+@@ -2004,6 +2081,8 @@ static void sony_remove(struct hid_device *hdev)
+       sony_cancel_work_sync(sc);
++      kfree(sc->output_report_dmabuf);
++
+       sony_remove_dev_list(sc);
+       sony_release_device_id(sc);
 diff --git a/drivers/hid/hid-wiimote-debug.c b/drivers/hid/hid-wiimote-debug.c
 index c13fb5b..55a3802 100644
 --- a/drivers/hid/hid-wiimote-debug.c
@@ -41495,44 +42045,13 @@ index c13fb5b..55a3802 100644
                return -EFAULT;
  
        *off += size;
-diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c
-index 0d078c3..cd0962c 100644
---- a/drivers/hid/uhid.c
-+++ b/drivers/hid/uhid.c
-@@ -47,7 +47,7 @@ struct uhid_device {
-       struct mutex report_lock;
-       wait_queue_head_t report_wait;
-       atomic_t report_done;
--      atomic_t report_id;
-+      atomic_unchecked_t report_id;
-       struct uhid_event report_buf;
- };
-@@ -163,7 +163,7 @@ static int uhid_hid_get_raw(struct hid_device *hid, unsigned char rnum,
-       spin_lock_irqsave(&uhid->qlock, flags);
-       ev->type = UHID_FEATURE;
--      ev->u.feature.id = atomic_inc_return(&uhid->report_id);
-+      ev->u.feature.id = atomic_inc_return_unchecked(&uhid->report_id);
-       ev->u.feature.rnum = rnum;
-       ev->u.feature.rtype = report_type;
-@@ -539,7 +539,7 @@ static int uhid_dev_feature_answer(struct uhid_device *uhid,
-       spin_lock_irqsave(&uhid->qlock, flags);
-       /* id for old report; drop it silently */
--      if (atomic_read(&uhid->report_id) != ev->u.feature_answer.id)
-+      if (atomic_read_unchecked(&uhid->report_id) != ev->u.feature_answer.id)
-               goto unlock;
-       if (atomic_read(&uhid->report_done))
-               goto unlock;
 diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
-index 602ca86..10a6573 100644
+index 433f72a..2926005 100644
 --- a/drivers/hv/channel.c
 +++ b/drivers/hv/channel.c
-@@ -365,8 +365,8 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
+@@ -366,8 +366,8 @@ int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer,
+       unsigned long flags;
        int ret = 0;
-       int t;
  
 -      next_gpadl_handle = atomic_read(&vmbus_connection.next_gpadl_handle);
 -      atomic_inc(&vmbus_connection.next_gpadl_handle);
@@ -41542,7 +42061,7 @@ index 602ca86..10a6573 100644
        ret = create_gpadl_header(kbuffer, size, &msginfo, &msgcount);
        if (ret)
 diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
-index bcb4950..61dba6c 100644
+index 3e4235c..877d0e5 100644
 --- a/drivers/hv/hv.c
 +++ b/drivers/hv/hv.c
 @@ -112,7 +112,7 @@ static u64 do_hypercall(u64 control, void *input, void *output)
@@ -41554,7 +42073,7 @@ index bcb4950..61dba6c 100644
  
        __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi),
                              "=a"(hv_status_lo) : "d" (control_hi),
-@@ -154,7 +154,7 @@ int hv_init(void)
+@@ -156,7 +156,7 @@ int hv_init(void)
        /* See if the hypercall page is already set */
        rdmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
  
@@ -41649,10 +42168,10 @@ index 5e90c5d..d8fcefb 100644
        cap_msg.caps.cap_bits.balloon = 1;
        cap_msg.caps.cap_bits.hot_add = 1;
 diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
-index 860134d..ea3a79a 100644
+index c386d8d..d6004c4 100644
 --- a/drivers/hv/hyperv_vmbus.h
 +++ b/drivers/hv/hyperv_vmbus.h
-@@ -602,7 +602,7 @@ enum vmbus_connect_state {
+@@ -611,7 +611,7 @@ enum vmbus_connect_state {
  struct vmbus_connection {
        enum vmbus_connect_state conn_state;
  
@@ -41662,7 +42181,7 @@ index 860134d..ea3a79a 100644
        /*
         * Represents channel interrupts. Each bit position represents a
 diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
-index 8e53a3c..7a64e44 100644
+index 4d6b269..2e23b86 100644
 --- a/drivers/hv/vmbus_drv.c
 +++ b/drivers/hv/vmbus_drv.c
 @@ -807,10 +807,10 @@ int vmbus_device_register(struct hv_device *child_device_obj)
@@ -41714,7 +42233,7 @@ index 3288f13..71cfb4e 100644
  
        for (grp = groups; grp->format; grp++) {
 diff --git a/drivers/hwmon/asus_atk0110.c b/drivers/hwmon/asus_atk0110.c
-index ae208f6..48b6c5b 100644
+index cccef87..06ce8ec 100644
 --- a/drivers/hwmon/asus_atk0110.c
 +++ b/drivers/hwmon/asus_atk0110.c
 @@ -147,10 +147,10 @@ MODULE_DEVICE_TABLE(acpi, atk_ids);
@@ -41755,10 +42274,10 @@ index d76f0b7..55ae976 100644
  };
  
 diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c
-index 632f1dc..57e6a58 100644
+index 7a8a6fb..015c1fd 100644
 --- a/drivers/hwmon/ibmaem.c
 +++ b/drivers/hwmon/ibmaem.c
-@@ -926,7 +926,7 @@ static int aem_register_sensors(struct aem_data *data,
+@@ -924,7 +924,7 @@ static int aem_register_sensors(struct aem_data *data,
                                struct aem_rw_sensor_template *rw)
  {
        struct device *dev = &data->pdev->dev;
@@ -41768,7 +42287,7 @@ index 632f1dc..57e6a58 100644
  
        /* Set up read-only sensors */
 diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c
-index 9fbb1b1..efbaa3e 100644
+index 14c82da..09b25d7 100644
 --- a/drivers/hwmon/iio_hwmon.c
 +++ b/drivers/hwmon/iio_hwmon.c
 @@ -61,7 +61,7 @@ static int iio_hwmon_probe(struct platform_device *pdev)
@@ -41780,11 +42299,30 @@ index 9fbb1b1..efbaa3e 100644
        int ret, i;
        int in_i = 1, temp_i = 1, curr_i = 1;
        enum iio_chan_type type;
+diff --git a/drivers/hwmon/nct6683.c b/drivers/hwmon/nct6683.c
+index 7710f46..427a28d 100644
+--- a/drivers/hwmon/nct6683.c
++++ b/drivers/hwmon/nct6683.c
+@@ -397,11 +397,11 @@ static struct attribute_group *
+ nct6683_create_attr_group(struct device *dev, struct sensor_template_group *tg,
+                         int repeat)
+ {
+-      struct sensor_device_attribute_2 *a2;
+-      struct sensor_device_attribute *a;
++      sensor_device_attribute_2_no_const *a2;
++      sensor_device_attribute_no_const *a;
+       struct sensor_device_template **t;
+       struct sensor_device_attr_u *su;
+-      struct attribute_group *group;
++      attribute_group_no_const *group;
+       struct attribute **attrs;
+       int i, j, count;
 diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c
-index 38d5a63..cf2c2ea 100644
+index 504cbdd..35d6f25 100644
 --- a/drivers/hwmon/nct6775.c
 +++ b/drivers/hwmon/nct6775.c
-@@ -944,10 +944,10 @@ static struct attribute_group *
+@@ -943,10 +943,10 @@ static struct attribute_group *
  nct6775_create_attr_group(struct device *dev, struct sensor_template_group *tg,
                          int repeat)
  {
@@ -41913,10 +42451,10 @@ index 8df43c5..b07b91d 100644
  };
  
 diff --git a/drivers/i2c/busses/i2c-amd756-s4882.c b/drivers/i2c/busses/i2c-amd756-s4882.c
-index 41fc683..a39cfea 100644
+index 65e3240..e6c511d 100644
 --- a/drivers/i2c/busses/i2c-amd756-s4882.c
 +++ b/drivers/i2c/busses/i2c-amd756-s4882.c
-@@ -43,7 +43,7 @@
+@@ -39,7 +39,7 @@
  extern struct i2c_adapter amd756_smbus;
  
  static struct i2c_adapter *s4882_adapter;
@@ -41926,7 +42464,7 @@ index 41fc683..a39cfea 100644
  /* Wrapper access functions for multiplexed SMBus */
  static DEFINE_MUTEX(amd756_lock);
 diff --git a/drivers/i2c/busses/i2c-diolan-u2c.c b/drivers/i2c/busses/i2c-diolan-u2c.c
-index 721f7eb..0fd2a09 100644
+index b19a310..d6eece0 100644
 --- a/drivers/i2c/busses/i2c-diolan-u2c.c
 +++ b/drivers/i2c/busses/i2c-diolan-u2c.c
 @@ -98,7 +98,7 @@ MODULE_PARM_DESC(frequency, "I2C clock frequency in hertz");
@@ -41939,10 +42477,10 @@ index 721f7eb..0fd2a09 100644
        int ret = 0;
        int actual;
 diff --git a/drivers/i2c/busses/i2c-nforce2-s4985.c b/drivers/i2c/busses/i2c-nforce2-s4985.c
-index b170bdf..3c76427 100644
+index 88eda09..cf40434 100644
 --- a/drivers/i2c/busses/i2c-nforce2-s4985.c
 +++ b/drivers/i2c/busses/i2c-nforce2-s4985.c
-@@ -41,7 +41,7 @@
+@@ -37,7 +37,7 @@
  extern struct i2c_adapter *nforce2_smbus;
  
  static struct i2c_adapter *s4985_adapter;
@@ -41952,10 +42490,10 @@ index b170bdf..3c76427 100644
  /* Wrapper access functions for multiplexed SMBus */
  static DEFINE_MUTEX(nforce2_lock);
 diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
-index 80b47e8..1a6040d9 100644
+index 71c7a39..71dd3e0 100644
 --- a/drivers/i2c/i2c-dev.c
 +++ b/drivers/i2c/i2c-dev.c
-@@ -277,7 +277,7 @@ static noinline int i2cdev_ioctl_rdrw(struct i2c_client *client,
+@@ -272,7 +272,7 @@ static noinline int i2cdev_ioctl_rdrw(struct i2c_client *client,
                        break;
                }
  
@@ -41978,10 +42516,10 @@ index 0b510ba..4fbb5085 100644
        }
  }
 diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
-index ede16aec..e423e8a 100644
+index af3e76d..96dfe5e 100644
 --- a/drivers/iio/industrialio-core.c
 +++ b/drivers/iio/industrialio-core.c
-@@ -527,7 +527,7 @@ static ssize_t iio_write_channel_info(struct device *dev,
+@@ -555,7 +555,7 @@ static ssize_t iio_write_channel_info(struct device *dev,
  }
  
  static
@@ -41991,7 +42529,7 @@ index ede16aec..e423e8a 100644
                           struct iio_chan_spec const *chan,
                           ssize_t (*readfunc)(struct device *dev,
 diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
-index c323917..6ddea8b 100644
+index e28a494..f7c2671 100644
 --- a/drivers/infiniband/core/cm.c
 +++ b/drivers/infiniband/core/cm.c
 @@ -115,7 +115,7 @@ static char const counter_group_names[CM_COUNTER_GROUPS]
@@ -42281,7 +42819,7 @@ index 1f95bba..9530f87 100644
                                      sdata, wqe->wr.wr.atomic.swap);
                goto send_comp;
 diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
-index fd36ec6..a6a082f 100644
+index 82a7dd8..8fb6ba6 100644
 --- a/drivers/infiniband/hw/mlx4/mad.c
 +++ b/drivers/infiniband/hw/mlx4/mad.c
 @@ -98,7 +98,7 @@ __be64 mlx4_ib_gen_node_guid(void)
@@ -42307,10 +42845,10 @@ index ed327e6..ca1739e0 100644
        ctx->mcg_wq = create_singlethread_workqueue(name);
        if (!ctx->mcg_wq)
 diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h
-index 66b0b7d..f14836a 100644
+index 6eb743f..a7b0f6d 100644
 --- a/drivers/infiniband/hw/mlx4/mlx4_ib.h
 +++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h
-@@ -425,7 +425,7 @@ struct mlx4_ib_demux_ctx {
+@@ -426,7 +426,7 @@ struct mlx4_ib_demux_ctx {
        struct list_head        mcg_mgid0_list;
        struct workqueue_struct *mcg_wq;
        struct mlx4_ib_demux_pv_ctx **tun;
@@ -42417,10 +42955,10 @@ index 415f8e1..e34214e 100644
        struct mthca_dev *dev = to_mdev(ibcq->device);
        struct mthca_cq *cq = to_mcq(ibcq);
 diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
-index 353c7b0..c6ce921 100644
+index 3b2a6dc..bce26ff 100644
 --- a/drivers/infiniband/hw/nes/nes.c
 +++ b/drivers/infiniband/hw/nes/nes.c
-@@ -98,7 +98,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
+@@ -97,7 +97,7 @@ MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
  LIST_HEAD(nes_adapter_list);
  static LIST_HEAD(nes_dev_list);
  
@@ -42429,7 +42967,7 @@ index 353c7b0..c6ce921 100644
  
  static unsigned int ee_flsh_adapter;
  static unsigned int sysfs_nonidx_addr;
-@@ -269,7 +269,7 @@ static void nes_cqp_rem_ref_callback(struct nes_device *nesdev, struct nes_cqp_r
+@@ -278,7 +278,7 @@ static void nes_cqp_rem_ref_callback(struct nes_device *nesdev, struct nes_cqp_r
        struct nes_qp *nesqp = cqp_request->cqp_callback_pointer;
        struct nes_adapter *nesadapter = nesdev->nesadapter;
  
@@ -42439,10 +42977,10 @@ index 353c7b0..c6ce921 100644
        /* Free the control structures */
  
 diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
-index 33cc589..3bd6538 100644
+index bd9d132..70d84f4 100644
 --- a/drivers/infiniband/hw/nes/nes.h
 +++ b/drivers/infiniband/hw/nes/nes.h
-@@ -177,17 +177,17 @@ extern unsigned int nes_debug_level;
+@@ -180,17 +180,17 @@ extern unsigned int nes_debug_level;
  extern unsigned int wqm_quanta;
  extern struct list_head nes_adapter_list;
  
@@ -42471,7 +43009,7 @@ index 33cc589..3bd6538 100644
  extern u32 mh_detected;
  extern u32 mh_pauses_sent;
  extern u32 cm_packets_sent;
-@@ -196,16 +196,16 @@ extern u32 cm_packets_created;
+@@ -199,16 +199,16 @@ extern u32 cm_packets_created;
  extern u32 cm_packets_received;
  extern u32 cm_packets_dropped;
  extern u32 cm_packets_retrans;
@@ -42498,10 +43036,10 @@ index 33cc589..3bd6538 100644
  extern u32 int_mod_timer_init;
  extern u32 int_mod_cq_depth_256;
 diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
-index dfa9df4..6bf7221 100644
+index 6f09a72..cf4399d 100644
 --- a/drivers/infiniband/hw/nes/nes_cm.c
 +++ b/drivers/infiniband/hw/nes/nes_cm.c
-@@ -68,14 +68,14 @@ u32 cm_packets_dropped;
+@@ -69,14 +69,14 @@ u32 cm_packets_dropped;
  u32 cm_packets_retrans;
  u32 cm_packets_created;
  u32 cm_packets_received;
@@ -42523,7 +43061,7 @@ index dfa9df4..6bf7221 100644
  
  static inline int mini_cm_accelerated(struct nes_cm_core *, struct nes_cm_node *);
  static struct nes_cm_listener *mini_cm_listen(struct nes_cm_core *, struct nes_vnic *, struct nes_cm_info *);
-@@ -134,28 +134,28 @@ static void record_ird_ord(struct nes_cm_node *, u16, u16);
+@@ -135,28 +135,28 @@ static void record_ird_ord(struct nes_cm_node *, u16, u16);
  /* instance of function pointers for client API */
  /* set address of this instance to cm_core->cm_ops at cm_core alloc */
  static struct nes_cm_ops nes_cm_api = {
@@ -42570,7 +43108,7 @@ index dfa9df4..6bf7221 100644
  
  int nes_add_ref_cm_node(struct nes_cm_node *cm_node)
  {
-@@ -1319,7 +1319,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
+@@ -1436,7 +1436,7 @@ static int mini_cm_dec_refcnt_listen(struct nes_cm_core *cm_core,
                kfree(listener);
                listener = NULL;
                ret = 0;
@@ -42579,7 +43117,7 @@ index dfa9df4..6bf7221 100644
        } else {
                spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
        }
-@@ -1513,7 +1513,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
+@@ -1637,7 +1637,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
                  cm_node->rem_mac);
  
        add_hte_node(cm_core, cm_node);
@@ -42588,7 +43126,7 @@ index dfa9df4..6bf7221 100644
  
        return cm_node;
  }
-@@ -1571,7 +1571,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
+@@ -1698,7 +1698,7 @@ static int rem_ref_cm_node(struct nes_cm_core *cm_core,
        }
  
        atomic_dec(&cm_core->node_cnt);
@@ -42597,7 +43135,7 @@ index dfa9df4..6bf7221 100644
        nesqp = cm_node->nesqp;
        if (nesqp) {
                nesqp->cm_node = NULL;
-@@ -1635,7 +1635,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc,
+@@ -1762,7 +1762,7 @@ static int process_options(struct nes_cm_node *cm_node, u8 *optionsloc,
  
  static void drop_packet(struct sk_buff *skb)
  {
@@ -42606,7 +43144,7 @@ index dfa9df4..6bf7221 100644
        dev_kfree_skb_any(skb);
  }
  
-@@ -1698,7 +1698,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb,
+@@ -1825,7 +1825,7 @@ static void handle_rst_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb,
  {
  
        int     reset = 0;      /* whether to send reset in case of err.. */
@@ -42615,7 +43153,7 @@ index dfa9df4..6bf7221 100644
        nes_debug(NES_DBG_CM, "Received Reset, cm_node = %p, state = %u."
                        " refcnt=%d\n", cm_node, cm_node->state,
                        atomic_read(&cm_node->ref_count));
-@@ -2339,7 +2339,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
+@@ -2492,7 +2492,7 @@ static struct nes_cm_node *mini_cm_connect(struct nes_cm_core *cm_core,
                                rem_ref_cm_node(cm_node->cm_core, cm_node);
                                return NULL;
                        }
@@ -42624,7 +43162,7 @@ index dfa9df4..6bf7221 100644
                        loopbackremotenode->loopbackpartner = cm_node;
                        loopbackremotenode->tcp_cntxt.rcv_wscale =
                                NES_CM_DEFAULT_RCV_WND_SCALE;
-@@ -2614,7 +2614,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
+@@ -2773,7 +2773,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
                                nes_queue_mgt_skbs(skb, nesvnic, cm_node->nesqp);
                        else {
                                rem_ref_cm_node(cm_core, cm_node);
@@ -42633,7 +43171,7 @@ index dfa9df4..6bf7221 100644
                                dev_kfree_skb_any(skb);
                        }
                        break;
-@@ -2922,7 +2922,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
+@@ -3081,7 +3081,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
  
        if ((cm_id) && (cm_id->event_handler)) {
                if (issue_disconn) {
@@ -42642,7 +43180,7 @@ index dfa9df4..6bf7221 100644
                        cm_event.event = IW_CM_EVENT_DISCONNECT;
                        cm_event.status = disconn_status;
                        cm_event.local_addr = cm_id->local_addr;
-@@ -2944,7 +2944,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
+@@ -3103,7 +3103,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
                }
  
                if (issue_close) {
@@ -42651,7 +43189,7 @@ index dfa9df4..6bf7221 100644
                        nes_disconnect(nesqp, 1);
  
                        cm_id->provider_data = nesqp;
-@@ -3082,7 +3082,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
+@@ -3241,7 +3241,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
  
        nes_debug(NES_DBG_CM, "QP%u, cm_node=%p, jiffies = %lu listener = %p\n",
                nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener);
@@ -42660,7 +43198,7 @@ index dfa9df4..6bf7221 100644
  
        nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
                        netdev_refcnt_read(nesvnic->netdev));
-@@ -3278,7 +3278,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len)
+@@ -3439,7 +3439,7 @@ int nes_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len)
        struct nes_cm_core *cm_core;
        u8 *start_buff;
  
@@ -42669,7 +43207,7 @@ index dfa9df4..6bf7221 100644
        cm_node = (struct nes_cm_node *)cm_id->provider_data;
        loopback = cm_node->loopbackpartner;
        cm_core = cm_node->cm_core;
-@@ -3340,7 +3340,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
+@@ -3504,7 +3504,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
                  ntohs(raddr->sin_port), ntohl(laddr->sin_addr.s_addr),
                  ntohs(laddr->sin_port));
  
@@ -42678,7 +43216,7 @@ index dfa9df4..6bf7221 100644
        nesqp->active_conn = 1;
  
        /* cache the cm_id in the qp */
-@@ -3451,7 +3451,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
+@@ -3649,7 +3649,7 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
                        g_cm_core->api->stop_listener(g_cm_core, (void *)cm_node);
                        return err;
                }
@@ -42687,7 +43225,7 @@ index dfa9df4..6bf7221 100644
        }
  
        cm_id->add_ref(cm_id);
-@@ -3558,7 +3558,7 @@ static void cm_event_connected(struct nes_cm_event *event)
+@@ -3756,7 +3756,7 @@ static void cm_event_connected(struct nes_cm_event *event)
  
        if (nesqp->destroyed)
                return;
@@ -42696,7 +43234,7 @@ index dfa9df4..6bf7221 100644
        nes_debug(NES_DBG_CM, "QP%u attempting to connect to  0x%08X:0x%04X on"
                  " local port 0x%04X. jiffies = %lu.\n",
                  nesqp->hwqp.qp_id, ntohl(raddr->sin_addr.s_addr),
-@@ -3741,7 +3741,7 @@ static void cm_event_reset(struct nes_cm_event *event)
+@@ -3941,7 +3941,7 @@ static void cm_event_reset(struct nes_cm_event *event)
  
        cm_id->add_ref(cm_id);
        ret = cm_id->event_handler(cm_id, &cm_event);
@@ -42705,7 +43243,7 @@ index dfa9df4..6bf7221 100644
        cm_event.event = IW_CM_EVENT_CLOSE;
        cm_event.status = 0;
        cm_event.provider_data = cm_id->provider_data;
-@@ -3781,7 +3781,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)
+@@ -3981,7 +3981,7 @@ static void cm_event_mpa_req(struct nes_cm_event *event)
                return;
        cm_id = cm_node->cm_id;
  
@@ -42714,7 +43252,7 @@ index dfa9df4..6bf7221 100644
        nes_debug(NES_DBG_CM, "cm_node = %p - cm_id = %p, jiffies = %lu\n",
                  cm_node, cm_id, jiffies);
  
-@@ -3830,7 +3830,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event)
+@@ -4030,7 +4030,7 @@ static void cm_event_mpa_reject(struct nes_cm_event *event)
                return;
        cm_id = cm_node->cm_id;
  
@@ -42821,7 +43359,7 @@ index 49eb511..a774366 100644
  
  /**
 diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
-index 218dd35..97ce31d 100644
+index fef067c..6a25ccd 100644
 --- a/drivers/infiniband/hw/nes/nes_verbs.c
 +++ b/drivers/infiniband/hw/nes/nes_verbs.c
 @@ -46,9 +46,9 @@
@@ -42867,11 +43405,24 @@ index c00ae09..04e91be 100644
  
  #include "qib_common.h"
  #include "qib_verbs.h"
+diff --git a/drivers/infiniband/ulp/ipoib/ipoib_netlink.c b/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
+index cdc7df4..a2fdfdb 100644
+--- a/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
++++ b/drivers/infiniband/ulp/ipoib/ipoib_netlink.c
+@@ -156,7 +156,7 @@ static size_t ipoib_get_size(const struct net_device *dev)
+               nla_total_size(2);      /* IFLA_IPOIB_UMCAST */
+ }
+-static struct rtnl_link_ops ipoib_link_ops __read_mostly = {
++static struct rtnl_link_ops ipoib_link_ops = {
+       .kind           = "ipoib",
+       .maxtype        = IFLA_IPOIB_MAX,
+       .policy         = ipoib_policy,
 diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
-index 24c41ba..102d71f 100644
+index e29c04e..adbf68c 100644
 --- a/drivers/input/gameport/gameport.c
 +++ b/drivers/input/gameport/gameport.c
-@@ -490,14 +490,14 @@ EXPORT_SYMBOL(gameport_set_phys);
+@@ -527,14 +527,14 @@ EXPORT_SYMBOL(gameport_set_phys);
   */
  static void gameport_init_port(struct gameport *gameport)
  {
@@ -42889,10 +43440,10 @@ index 24c41ba..102d71f 100644
        gameport->dev.release = gameport_release_port;
        if (gameport->parent)
 diff --git a/drivers/input/input.c b/drivers/input/input.c
-index 1c4c0db..6f7abe3 100644
+index 0f175f5..4c481c0 100644
 --- a/drivers/input/input.c
 +++ b/drivers/input/input.c
-@@ -1772,7 +1772,7 @@ EXPORT_SYMBOL_GPL(input_class);
+@@ -1775,7 +1775,7 @@ EXPORT_SYMBOL_GPL(input_class);
   */
  struct input_dev *input_allocate_device(void)
  {
@@ -42901,10 +43452,10 @@ index 1c4c0db..6f7abe3 100644
        struct input_dev *dev;
  
        dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);
-@@ -1787,7 +1787,7 @@ struct input_dev *input_allocate_device(void)
+@@ -1790,7 +1790,7 @@ struct input_dev *input_allocate_device(void)
                INIT_LIST_HEAD(&dev->node);
  
-               dev_set_name(&dev->dev, "input%ld",
+               dev_set_name(&dev->dev, "input%lu",
 -                           (unsigned long) atomic_inc_return(&input_no) - 1);
 +                           (unsigned long) atomic_inc_return_unchecked(&input_no) - 1);
  
@@ -42923,10 +43474,10 @@ index 4a95b22..874c182 100644
  #include <linux/gameport.h>
  #include <linux/jiffies.h>
 diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
-index 603fe0d..f63decc 100644
+index fc55f0d..11e2aa6 100644
 --- a/drivers/input/joystick/xpad.c
 +++ b/drivers/input/joystick/xpad.c
-@@ -737,7 +737,7 @@ static void xpad_led_set(struct led_classdev *led_cdev,
+@@ -886,7 +886,7 @@ static void xpad_led_set(struct led_classdev *led_cdev,
  
  static int xpad_led_probe(struct usb_xpad *xpad)
  {
@@ -42935,7 +43486,7 @@ index 603fe0d..f63decc 100644
        long led_no;
        struct xpad_led *led;
        struct led_classdev *led_cdev;
-@@ -750,7 +750,7 @@ static int xpad_led_probe(struct usb_xpad *xpad)
+@@ -899,7 +899,7 @@ static int xpad_led_probe(struct usb_xpad *xpad)
        if (!led)
                return -ENOMEM;
  
@@ -42945,10 +43496,10 @@ index 603fe0d..f63decc 100644
        snprintf(led->name, sizeof(led->name), "xpad%ld", led_no);
        led->xpad = xpad;
 diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c
-index 5a73639..d586683 100644
+index afed8e2..3aa8a18 100644
 --- a/drivers/input/misc/ims-pcu.c
 +++ b/drivers/input/misc/ims-pcu.c
-@@ -1850,7 +1850,7 @@ static int ims_pcu_identify_type(struct ims_pcu *pcu, u8 *device_id)
+@@ -1851,7 +1851,7 @@ static int ims_pcu_identify_type(struct ims_pcu *pcu, u8 *device_id)
  
  static int ims_pcu_init_application_mode(struct ims_pcu *pcu)
  {
@@ -42957,7 +43508,7 @@ index 5a73639..d586683 100644
  
        const struct ims_pcu_device_info *info;
        int error;
-@@ -1881,7 +1881,7 @@ static int ims_pcu_init_application_mode(struct ims_pcu *pcu)
+@@ -1882,7 +1882,7 @@ static int ims_pcu_init_application_mode(struct ims_pcu *pcu)
        }
  
        /* Device appears to be operable, complete initialization */
@@ -42967,10 +43518,10 @@ index 5a73639..d586683 100644
        /*
         * PCU-B devices, both GEN_1 and GEN_2 do not have OFN sensor
 diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
-index 2f0b39d..7370f13 100644
+index f4cf664..3204fda 100644
 --- a/drivers/input/mouse/psmouse.h
 +++ b/drivers/input/mouse/psmouse.h
-@@ -116,7 +116,7 @@ struct psmouse_attribute {
+@@ -117,7 +117,7 @@ struct psmouse_attribute {
        ssize_t (*set)(struct psmouse *psmouse, void *data,
                        const char *buf, size_t count);
        bool protect;
@@ -42993,7 +43544,7 @@ index b604564..3f14ae4 100644
  
        return count;
 diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
-index b29134d..394deb0 100644
+index d399b8b..4913ede 100644
 --- a/drivers/input/serio/serio.c
 +++ b/drivers/input/serio/serio.c
 @@ -514,7 +514,7 @@ static void serio_release_port(struct device *dev)
@@ -43008,9 +43559,9 @@ index b29134d..394deb0 100644
 @@ -525,7 +525,7 @@ static void serio_init_port(struct serio *serio)
        mutex_init(&serio->drv_mutex);
        device_initialize(&serio->dev);
-       dev_set_name(&serio->dev, "serio%ld",
--                      (long)atomic_inc_return(&serio_no) - 1);
-+                      (long)atomic_inc_return_unchecked(&serio_no) - 1);
+       dev_set_name(&serio->dev, "serio%lu",
+-                   (unsigned long)atomic_inc_return(&serio_no) - 1);
++                   (unsigned long)atomic_inc_return_unchecked(&serio_no) - 1);
        serio->dev.bus = &serio_bus;
        serio->dev.release = serio_release_port;
        serio->dev.groups = serio_device_attr_groups;
@@ -43036,24 +43587,65 @@ index c9a02fe..0debc75 100644
        kref_init(&serio_raw->kref);
        INIT_LIST_HEAD(&serio_raw->client_list);
        init_waitqueue_head(&serio_raw->wait);
+diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
+index 505a9ad..356734c 100644
+--- a/drivers/iommu/amd_iommu.c
++++ b/drivers/iommu/amd_iommu.c
+@@ -823,11 +823,21 @@ static void copy_cmd_to_buffer(struct amd_iommu *iommu,
+ static void build_completion_wait(struct iommu_cmd *cmd, u64 address)
+ {
++      phys_addr_t physaddr;
+       WARN_ON(address & 0x7ULL);
+       memset(cmd, 0, sizeof(*cmd));
+-      cmd->data[0] = lower_32_bits(__pa(address)) | CMD_COMPL_WAIT_STORE_MASK;
+-      cmd->data[1] = upper_32_bits(__pa(address));
++
++#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
++      if (object_starts_on_stack((void *)address)) {
++              void *adjbuf = (void *)address - current->stack + current->lowmem_stack;
++              physaddr = __pa((u64)adjbuf);
++      } else
++#endif
++      physaddr = __pa(address);
++
++      cmd->data[0] = lower_32_bits(physaddr) | CMD_COMPL_WAIT_STORE_MASK;
++      cmd->data[1] = upper_32_bits(physaddr);
+       cmd->data[2] = 1;
+       CMD_SET_TYPE(cmd, CMD_COMPL_WAIT);
+ }
+diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
+index 60558f7..5a02369 100644
+--- a/drivers/iommu/arm-smmu.c
++++ b/drivers/iommu/arm-smmu.c
+@@ -934,7 +934,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain,
+               cfg->irptndx = cfg->cbndx;
+       }
+-      ACCESS_ONCE(smmu_domain->smmu) = smmu;
++      ACCESS_ONCE_RW(smmu_domain->smmu) = smmu;
+       arm_smmu_init_context_bank(smmu_domain);
+       spin_unlock_irqrestore(&smmu_domain->lock, flags);
 diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
-index e5555fc..937986d 100644
+index ed8b048..7fbcc01 100644
 --- a/drivers/iommu/iommu.c
 +++ b/drivers/iommu/iommu.c
-@@ -588,7 +588,7 @@ static struct notifier_block iommu_bus_nb = {
- static void iommu_bus_init(struct bus_type *bus, struct iommu_ops *ops)
+@@ -802,7 +802,7 @@ static int iommu_bus_notifier(struct notifier_block *nb,
+ static int iommu_bus_init(struct bus_type *bus, const struct iommu_ops *ops)
  {
-       bus_register_notifier(bus, &iommu_bus_nb);
--      bus_for_each_dev(bus, NULL, ops, add_iommu_group);
-+      bus_for_each_dev(bus, NULL, (void *)ops, add_iommu_group);
- }
- /**
+       int err;
+-      struct notifier_block *nb;
++      notifier_block_no_const *nb;
+       struct iommu_callback_data cb = {
+               .ops = ops,
+       };
 diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
-index 228632c9..edfe331 100644
+index 74a1767..5a359e8 100644
 --- a/drivers/iommu/irq_remapping.c
 +++ b/drivers/iommu/irq_remapping.c
-@@ -356,7 +356,7 @@ int setup_hpet_msi_remapped(unsigned int irq, unsigned int id)
+@@ -361,7 +361,7 @@ int setup_hpet_msi_remapped(unsigned int irq, unsigned int id)
  void panic_if_irq_remap(const char *msg)
  {
        if (irq_remapping_enabled)
@@ -43062,7 +43654,7 @@ index 228632c9..edfe331 100644
  }
  
  static void ir_ack_apic_edge(struct irq_data *data)
-@@ -377,10 +377,12 @@ static void ir_print_prefix(struct irq_data *data, struct seq_file *p)
+@@ -382,10 +382,12 @@ static void ir_print_prefix(struct irq_data *data, struct seq_file *p)
  
  void irq_remap_modify_chip_defaults(struct irq_chip *chip)
  {
@@ -43080,7 +43672,7 @@ index 228632c9..edfe331 100644
  
  bool setup_remapped_irq(int irq, struct irq_cfg *cfg, struct irq_chip *chip)
 diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
-index 57d165e..611997e 100644
+index 38493ff..001538b 100644
 --- a/drivers/irqchip/irq-gic.c
 +++ b/drivers/irqchip/irq-gic.c
 @@ -84,7 +84,7 @@ static u8 gic_cpu_map[NR_GIC_CPU_IF] __read_mostly;
@@ -43092,7 +43684,7 @@ index 57d165e..611997e 100644
        .irq_eoi        = NULL,
        .irq_mask       = NULL,
        .irq_unmask     = NULL,
-@@ -336,7 +336,7 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
+@@ -311,7 +311,7 @@ static void gic_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
        chained_irq_exit(chip, desc);
  }
  
@@ -43115,7 +43707,7 @@ index 8777065..a4a9967 100644
        int ret;
        int k;
 diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
-index ac6f72b..81150f2 100644
+index 6a2df32..dc962f1 100644
 --- a/drivers/isdn/capi/capi.c
 +++ b/drivers/isdn/capi/capi.c
 @@ -81,8 +81,8 @@ struct capiminor {
@@ -43156,10 +43748,10 @@ index ac6f72b..81150f2 100644
                capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */
                capimsg_setu16(skb->data, 16, len);     /* Data length */
 diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c
-index c44950d..10ac276 100644
+index aecec6d..11e13c5 100644
 --- a/drivers/isdn/gigaset/bas-gigaset.c
 +++ b/drivers/isdn/gigaset/bas-gigaset.c
-@@ -2564,22 +2564,22 @@ static int gigaset_post_reset(struct usb_interface *intf)
+@@ -2565,22 +2565,22 @@ static int gigaset_post_reset(struct usb_interface *intf)
  
  
  static const struct gigaset_ops gigops = {
@@ -43270,10 +43862,10 @@ index 8c91fd5..14f13ce 100644
  
  
 diff --git a/drivers/isdn/gigaset/usb-gigaset.c b/drivers/isdn/gigaset/usb-gigaset.c
-index d0a41cb..b953e50 100644
+index a8e652d..edadaa4 100644
 --- a/drivers/isdn/gigaset/usb-gigaset.c
 +++ b/drivers/isdn/gigaset/usb-gigaset.c
-@@ -547,7 +547,7 @@ static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])
+@@ -548,7 +548,7 @@ static int gigaset_brkchars(struct cardstate *cs, const unsigned char buf[6])
        gigaset_dbg_buffer(DEBUG_USBREQ, "brkchars", 6, buf);
        memcpy(cs->hw.usb->bchars, buf, 6);
        return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x19, 0x41,
@@ -43282,7 +43874,7 @@ index d0a41cb..b953e50 100644
  }
  
  static void gigaset_freebcshw(struct bc_state *bcs)
-@@ -869,22 +869,22 @@ static int gigaset_pre_reset(struct usb_interface *intf)
+@@ -867,22 +867,22 @@ static int gigaset_pre_reset(struct usb_interface *intf)
  }
  
  static const struct gigaset_ops ops = {
@@ -43374,10 +43966,10 @@ index 91d5730..336523e 100644
  
  /* The following should better go into a dedicated source file such that
 diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
-index 3c5f249..5fac4d0 100644
+index bc91261..2ef7e36 100644
 --- a/drivers/isdn/i4l/isdn_tty.c
 +++ b/drivers/isdn/i4l/isdn_tty.c
-@@ -1508,9 +1508,9 @@ isdn_tty_open(struct tty_struct *tty, struct file *filp)
+@@ -1503,9 +1503,9 @@ isdn_tty_open(struct tty_struct *tty, struct file *filp)
  
  #ifdef ISDN_DEBUG_MODEM_OPEN
        printk(KERN_DEBUG "isdn_tty_open %s, count = %d\n", tty->name,
@@ -43389,7 +43981,7 @@ index 3c5f249..5fac4d0 100644
        port->tty = tty;
        /*
         * Start up serial port
-@@ -1554,7 +1554,7 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp)
+@@ -1549,7 +1549,7 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp)
  #endif
                return;
        }
@@ -43398,7 +43990,7 @@ index 3c5f249..5fac4d0 100644
                /*
                 * Uh, oh.  tty->count is 1, which means that the tty
                 * structure will be freed.  Info->count should always
-@@ -1563,15 +1563,15 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp)
+@@ -1558,15 +1558,15 @@ isdn_tty_close(struct tty_struct *tty, struct file *filp)
                 * serial port won't be shutdown.
                 */
                printk(KERN_ERR "isdn_tty_close: bad port count; tty->count is 1, "
@@ -43420,7 +44012,7 @@ index 3c5f249..5fac4d0 100644
  #ifdef ISDN_DEBUG_MODEM_OPEN
                printk(KERN_DEBUG "isdn_tty_close after info->count != 0\n");
  #endif
-@@ -1625,7 +1625,7 @@ isdn_tty_hangup(struct tty_struct *tty)
+@@ -1620,7 +1620,7 @@ isdn_tty_hangup(struct tty_struct *tty)
        if (isdn_tty_paranoia_check(info, tty->name, "isdn_tty_hangup"))
                return;
        isdn_tty_shutdown(info);
@@ -43429,7 +44021,7 @@ index 3c5f249..5fac4d0 100644
        port->flags &= ~ASYNC_NORMAL_ACTIVE;
        port->tty = NULL;
        wake_up_interruptible(&port->open_wait);
-@@ -1970,7 +1970,7 @@ isdn_tty_find_icall(int di, int ch, setup_parm *setup)
+@@ -1965,7 +1965,7 @@ isdn_tty_find_icall(int di, int ch, setup_parm *setup)
        for (i = 0; i < ISDN_MAX_CHANNELS; i++) {
                modem_info *info = &dev->mdm.info[i];
  
@@ -43479,10 +44071,10 @@ index 6a7447c..cae33fe 100644
                } else
                        memcpy(msg, buf, count);
 diff --git a/drivers/isdn/mISDN/dsp_cmx.c b/drivers/isdn/mISDN/dsp_cmx.c
-index a4f05c5..1433bc5 100644
+index 87f7dff..7300125 100644
 --- a/drivers/isdn/mISDN/dsp_cmx.c
 +++ b/drivers/isdn/mISDN/dsp_cmx.c
-@@ -1628,7 +1628,7 @@ unsigned long    dsp_spl_jiffies; /* calculate the next time to fire */
+@@ -1625,7 +1625,7 @@ unsigned long    dsp_spl_jiffies; /* calculate the next time to fire */
  static u16    dsp_count; /* last sample count */
  static int    dsp_count_valid; /* if we have last sample count */
  
@@ -43505,7 +44097,7 @@ index f58a354..fbae176 100644
                .callback = clevo_mail_led_dmi_callback,
                .ident = "Clevo D410J",
 diff --git a/drivers/leds/leds-ss4200.c b/drivers/leds/leds-ss4200.c
-index 2eb3ef6..295891f 100644
+index 046cb70..6b20d39 100644
 --- a/drivers/leds/leds-ss4200.c
 +++ b/drivers/leds/leds-ss4200.c
 @@ -91,7 +91,7 @@ MODULE_PARM_DESC(nodetect, "Skip DMI-based hardware detection");
@@ -43518,10 +44110,10 @@ index 2eb3ef6..295891f 100644
                .callback = ss4200_led_dmi_callback,
                .ident = "Intel SS4200-E",
 diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c
-index 0bf1e4e..b4bf44e 100644
+index 6590558..a74c5dd 100644
 --- a/drivers/lguest/core.c
 +++ b/drivers/lguest/core.c
-@@ -97,9 +97,17 @@ static __init int map_switcher(void)
+@@ -96,9 +96,17 @@ static __init int map_switcher(void)
         * The end address needs +1 because __get_vm_area allocates an
         * extra guard page, so we need space for that.
         */
@@ -43539,7 +44131,7 @@ index 0bf1e4e..b4bf44e 100644
        if (!switcher_vma) {
                err = -ENOMEM;
                printk("lguest: could not map switcher pages high\n");
-@@ -124,7 +132,7 @@ static __init int map_switcher(void)
+@@ -121,7 +129,7 @@ static __init int map_switcher(void)
         * Now the Switcher is mapped at the right address, we can't fail!
         * Copy in the compiled-in Switcher code (from x86/switcher_32.S).
         */
@@ -43669,7 +44261,7 @@ index 40634b0..4f5855e 100644
  // Every interrupt can come to us here
  // But we must truly tell each apart.
 diff --git a/drivers/md/bcache/closure.h b/drivers/md/bcache/closure.h
-index 7ef7461..5a09dac 100644
+index a08e3ee..df8ade2 100644
 --- a/drivers/md/bcache/closure.h
 +++ b/drivers/md/bcache/closure.h
 @@ -238,7 +238,7 @@ static inline void closure_set_stopped(struct closure *cl)
@@ -43682,10 +44274,10 @@ index 7ef7461..5a09dac 100644
        cl->fn = fn;
        cl->wq = wq;
 diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
-index 9a8e66a..10cc762 100644
+index da3604e..7789cb4c 100644
 --- a/drivers/md/bitmap.c
 +++ b/drivers/md/bitmap.c
-@@ -1779,7 +1779,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap)
+@@ -1771,7 +1771,7 @@ void bitmap_status(struct seq_file *seq, struct bitmap *bitmap)
                   chunk_kb ? "KB" : "B");
        if (bitmap->storage.file) {
                seq_printf(seq, ", file: ");
@@ -43695,7 +44287,7 @@ index 9a8e66a..10cc762 100644
  
        seq_printf(seq, "\n");
 diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
-index 5152142..623d141 100644
+index 0be9381..114262b 100644
 --- a/drivers/md/dm-ioctl.c
 +++ b/drivers/md/dm-ioctl.c
 @@ -1769,7 +1769,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param)
@@ -43784,7 +44376,7 @@ index 7dfdb5c..4caada6 100644
  
        return (test_bit(DM_RAID1_FLUSH_ERROR, &(m->error_type))) ? 'F' :
 diff --git a/drivers/md/dm-stats.c b/drivers/md/dm-stats.c
-index 28a9012..9c0f6a5 100644
+index 87f86c7..a1a4100 100644
 --- a/drivers/md/dm-stats.c
 +++ b/drivers/md/dm-stats.c
 @@ -382,7 +382,7 @@ do_sync_free:
@@ -43808,7 +44400,7 @@ index 28a9012..9c0f6a5 100644
  
        rcu_read_lock();
 diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
-index d1600d2..4c3af3a 100644
+index f8b37d4..5c5cafd 100644
 --- a/drivers/md/dm-stripe.c
 +++ b/drivers/md/dm-stripe.c
 @@ -21,7 +21,7 @@ struct stripe {
@@ -43820,7 +44412,7 @@ index d1600d2..4c3af3a 100644
  };
  
  struct stripe_c {
-@@ -186,7 +186,7 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
+@@ -188,7 +188,7 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
                        kfree(sc);
                        return r;
                }
@@ -43829,7 +44421,7 @@ index d1600d2..4c3af3a 100644
        }
  
        ti->private = sc;
-@@ -330,7 +330,7 @@ static void stripe_status(struct dm_target *ti, status_type_t type,
+@@ -332,7 +332,7 @@ static void stripe_status(struct dm_target *ti, status_type_t type,
                DMEMIT("%d ", sc->stripes);
                for (i = 0; i < sc->stripes; i++)  {
                        DMEMIT("%s ", sc->stripe[i].dev->name);
@@ -43838,7 +44430,7 @@ index d1600d2..4c3af3a 100644
                                'D' : 'A';
                }
                buffer[i] = '\0';
-@@ -375,8 +375,8 @@ static int stripe_end_io(struct dm_target *ti, struct bio *bio, int error)
+@@ -377,8 +377,8 @@ static int stripe_end_io(struct dm_target *ti, struct bio *bio, int error)
         */
        for (i = 0; i < sc->stripes; i++)
                if (!strcmp(sc->stripe[i].dev->name, major_minor)) {
@@ -43850,19 +44442,10 @@ index d1600d2..4c3af3a 100644
                                schedule_work(&sc->trigger_event);
                }
 diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
-index 50601ec..6d3b9dc 100644
+index b2bd1eb..38f7a44 100644
 --- a/drivers/md/dm-table.c
 +++ b/drivers/md/dm-table.c
-@@ -274,7 +274,7 @@ static struct dm_dev_internal *find_device(struct list_head *l, dev_t dev)
- static int open_dev(struct dm_dev_internal *d, dev_t dev,
-                   struct mapped_device *md)
- {
--      static char *_claim_ptr = "I belong to device-mapper";
-+      static char _claim_ptr[] = "I belong to device-mapper";
-       struct block_device *bdev;
-       int r;
-@@ -342,7 +342,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
+@@ -303,7 +303,7 @@ static int device_area_is_invalid(struct dm_target *ti, struct dm_dev *dev,
        if (!dev_size)
                return 0;
  
@@ -43872,7 +44455,7 @@ index 50601ec..6d3b9dc 100644
                       "start=%llu, len=%llu, dev_size=%llu",
                       dm_device_name(ti->table->md), bdevname(bdev, b),
 diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
-index b086a94..74cb67e 100644
+index e9d33ad..dae9880d 100644
 --- a/drivers/md/dm-thin-metadata.c
 +++ b/drivers/md/dm-thin-metadata.c
 @@ -404,7 +404,7 @@ static void __setup_btree_details(struct dm_pool_metadata *pmd)
@@ -43894,10 +44477,10 @@ index b086a94..74cb67e 100644
        pmd->bl_info.value_type.inc = data_block_inc;
        pmd->bl_info.value_type.dec = data_block_dec;
 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
-index 490ac23..b9790cd 100644
+index 58f3927..bfbad3e 100644
 --- a/drivers/md/dm.c
 +++ b/drivers/md/dm.c
-@@ -180,9 +180,9 @@ struct mapped_device {
+@@ -183,9 +183,9 @@ struct mapped_device {
        /*
         * Event handling.
         */
@@ -43909,7 +44492,7 @@ index 490ac23..b9790cd 100644
        struct list_head uevent_list;
        spinlock_t uevent_lock; /* Protect access to uevent_list */
  
-@@ -1895,8 +1895,8 @@ static struct mapped_device *alloc_dev(int minor)
+@@ -2071,8 +2071,8 @@ static struct mapped_device *alloc_dev(int minor)
        spin_lock_init(&md->deferred_lock);
        atomic_set(&md->holders, 1);
        atomic_set(&md->open_count, 0);
@@ -43918,9 +44501,9 @@ index 490ac23..b9790cd 100644
 +      atomic_set_unchecked(&md->event_nr, 0);
 +      atomic_set_unchecked(&md->uevent_seq, 0);
        INIT_LIST_HEAD(&md->uevent_list);
+       INIT_LIST_HEAD(&md->table_devices);
        spin_lock_init(&md->uevent_lock);
-@@ -2050,7 +2050,7 @@ static void event_callback(void *context)
+@@ -2228,7 +2228,7 @@ static void event_callback(void *context)
  
        dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
  
@@ -43929,7 +44512,7 @@ index 490ac23..b9790cd 100644
        wake_up(&md->eventq);
  }
  
-@@ -2743,18 +2743,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
+@@ -2921,18 +2921,18 @@ int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
  
  uint32_t dm_next_uevent_seq(struct mapped_device *md)
  {
@@ -43952,10 +44535,10 @@ index 490ac23..b9790cd 100644
  
  void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
 diff --git a/drivers/md/md.c b/drivers/md/md.c
-index 9a18209..ec4d3ec 100644
+index 9233c71..ed5243a 100644
 --- a/drivers/md/md.c
 +++ b/drivers/md/md.c
-@@ -194,10 +194,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev);
+@@ -190,10 +190,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev);
   *  start build, activate spare
   */
  static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters);
@@ -43968,7 +44551,7 @@ index 9a18209..ec4d3ec 100644
        wake_up(&md_event_waiters);
  }
  EXPORT_SYMBOL_GPL(md_new_event);
-@@ -207,7 +207,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
+@@ -203,7 +203,7 @@ EXPORT_SYMBOL_GPL(md_new_event);
   */
  static void md_new_event_inintr(struct mddev *mddev)
  {
@@ -43977,7 +44560,7 @@ index 9a18209..ec4d3ec 100644
        wake_up(&md_event_waiters);
  }
  
-@@ -1462,7 +1462,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_
+@@ -1426,7 +1426,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_
        if ((le32_to_cpu(sb->feature_map) & MD_FEATURE_RESHAPE_ACTIVE) &&
            (le32_to_cpu(sb->feature_map) & MD_FEATURE_NEW_OFFSET))
                rdev->new_data_offset += (s32)le32_to_cpu(sb->new_offset);
@@ -43986,7 +44569,7 @@ index 9a18209..ec4d3ec 100644
  
        rdev->sb_size = le32_to_cpu(sb->max_dev) * 2 + 256;
        bmask = queue_logical_block_size(rdev->bdev->bd_disk->queue)-1;
-@@ -1713,7 +1713,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev)
+@@ -1677,7 +1677,7 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev)
        else
                sb->resync_offset = cpu_to_le64(0);
  
@@ -43995,7 +44578,7 @@ index 9a18209..ec4d3ec 100644
  
        sb->raid_disks = cpu_to_le32(mddev->raid_disks);
        sb->size = cpu_to_le64(mddev->dev_sectors);
-@@ -2725,7 +2725,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store);
+@@ -2547,7 +2547,7 @@ __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store);
  static ssize_t
  errors_show(struct md_rdev *rdev, char *page)
  {
@@ -44004,7 +44587,7 @@ index 9a18209..ec4d3ec 100644
  }
  
  static ssize_t
-@@ -2734,7 +2734,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len)
+@@ -2556,7 +2556,7 @@ errors_store(struct md_rdev *rdev, const char *buf, size_t len)
        char *e;
        unsigned long n = simple_strtoul(buf, &e, 10);
        if (*buf && (*e == 0 || *e == '\n')) {
@@ -44013,7 +44596,7 @@ index 9a18209..ec4d3ec 100644
                return len;
        }
        return -EINVAL;
-@@ -3183,8 +3183,8 @@ int md_rdev_init(struct md_rdev *rdev)
+@@ -3000,8 +3000,8 @@ int md_rdev_init(struct md_rdev *rdev)
        rdev->sb_loaded = 0;
        rdev->bb_page = NULL;
        atomic_set(&rdev->nr_pending, 0);
@@ -44024,7 +44607,7 @@ index 9a18209..ec4d3ec 100644
  
        INIT_LIST_HEAD(&rdev->same_set);
        init_waitqueue_head(&rdev->blocked_wait);
-@@ -7058,7 +7058,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
+@@ -6855,7 +6855,7 @@ static int md_seq_show(struct seq_file *seq, void *v)
  
                spin_unlock(&pers_lock);
                seq_printf(seq, "\n");
@@ -44033,7 +44616,7 @@ index 9a18209..ec4d3ec 100644
                return 0;
        }
        if (v == (void*)2) {
-@@ -7161,7 +7161,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
+@@ -6958,7 +6958,7 @@ static int md_seq_open(struct inode *inode, struct file *file)
                return error;
  
        seq = file->private_data;
@@ -44042,7 +44625,7 @@ index 9a18209..ec4d3ec 100644
        return error;
  }
  
-@@ -7178,7 +7178,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
+@@ -6975,7 +6975,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
        /* always allow read */
        mask = POLLIN | POLLRDNORM;
  
@@ -44051,7 +44634,7 @@ index 9a18209..ec4d3ec 100644
                mask |= POLLERR | POLLPRI;
        return mask;
  }
-@@ -7222,7 +7222,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
+@@ -7022,7 +7022,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
                struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
                curr_events = (int)part_stat_read(&disk->part0, sectors[0]) +
                              (int)part_stat_read(&disk->part0, sectors[1]) -
@@ -44061,7 +44644,7 @@ index 9a18209..ec4d3ec 100644
                 * as sync_io is counted when a request starts, and
                 * disk_stats is counted when it completes.
 diff --git a/drivers/md/md.h b/drivers/md/md.h
-index a49d991..3582bb7 100644
+index 03cec5b..0a658c1 100644
 --- a/drivers/md/md.h
 +++ b/drivers/md/md.h
 @@ -94,13 +94,13 @@ struct md_rdev {
@@ -44080,20 +44663,20 @@ index a49d991..3582bb7 100644
                                           * for reporting to userspace and storing
                                           * in superblock.
                                           */
-@@ -449,7 +449,7 @@ static inline void rdev_dec_pending(struct md_rdev *rdev, struct mddev *mddev)
+@@ -448,7 +448,7 @@ static inline void rdev_dec_pending(struct md_rdev *rdev, struct mddev *mddev)
  
  static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
  {
--        atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
+-      atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
 +      atomic_add_unchecked(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
  }
  
  struct md_personality
 diff --git a/drivers/md/persistent-data/dm-space-map-metadata.c b/drivers/md/persistent-data/dm-space-map-metadata.c
-index 786b689..ea8c956 100644
+index f4e22bc..8f83114 100644
 --- a/drivers/md/persistent-data/dm-space-map-metadata.c
 +++ b/drivers/md/persistent-data/dm-space-map-metadata.c
-@@ -679,7 +679,7 @@ static int sm_metadata_extend(struct dm_space_map *sm, dm_block_t extra_blocks)
+@@ -681,7 +681,7 @@ static int sm_metadata_extend(struct dm_space_map *sm, dm_block_t extra_blocks)
         * Flick into a mode where all blocks get allocated in the new area.
         */
        smm->begin = old_len;
@@ -44102,7 +44685,7 @@ index 786b689..ea8c956 100644
  
        /*
         * Extend.
-@@ -710,7 +710,7 @@ out:
+@@ -712,7 +712,7 @@ out:
        /*
         * Switch back to normal behaviour.
         */
@@ -44124,7 +44707,7 @@ index 3e6d115..ffecdeb 100644
  /*----------------------------------------------------------------*/
  
 diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
-index 56e24c0..e1c8e1f 100644
+index 40b35be..a327e11 100644
 --- a/drivers/md/raid1.c
 +++ b/drivers/md/raid1.c
 @@ -1931,7 +1931,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio)
@@ -44136,8 +44719,8 @@ index 56e24c0..e1c8e1f 100644
                }
                sectors -= s;
                sect += s;
-@@ -2165,7 +2165,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk,
-                           test_bit(In_sync, &rdev->flags)) {
+@@ -2164,7 +2164,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk,
+                           !test_bit(Faulty, &rdev->flags)) {
                                if (r1_sync_page_io(rdev, sect, s,
                                                    conf->tmppage, READ)) {
 -                                      atomic_add(s, &rdev->corrected_errors);
@@ -44146,10 +44729,10 @@ index 56e24c0..e1c8e1f 100644
                                               "md/raid1:%s: read error corrected "
                                               "(%d sectors at %llu on %s)\n",
 diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
-index cb882aa..9bd076e 100644
+index 32e282f..5cec803 100644
 --- a/drivers/md/raid10.c
 +++ b/drivers/md/raid10.c
-@@ -1949,7 +1949,7 @@ static void end_sync_read(struct bio *bio, int error)
+@@ -1944,7 +1944,7 @@ static void end_sync_read(struct bio *bio, int error)
                /* The write handler will notice the lack of
                 * R10BIO_Uptodate and record any errors etc
                 */
@@ -44158,7 +44741,7 @@ index cb882aa..9bd076e 100644
                           &conf->mirrors[d].rdev->corrected_errors);
  
        /* for reconstruct, we always reschedule after a read.
-@@ -2307,7 +2307,7 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
+@@ -2301,7 +2301,7 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
  {
        struct timespec cur_time_mon;
        unsigned long hours_since_last;
@@ -44167,7 +44750,7 @@ index cb882aa..9bd076e 100644
  
        ktime_get_ts(&cur_time_mon);
  
-@@ -2329,9 +2329,9 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
+@@ -2323,9 +2323,9 @@ static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
         * overflowing the shift of read_errors by hours_since_last.
         */
        if (hours_since_last >= 8 * sizeof(read_errors))
@@ -44179,7 +44762,7 @@ index cb882aa..9bd076e 100644
  }
  
  static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector,
-@@ -2385,8 +2385,8 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
+@@ -2379,8 +2379,8 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
                return;
  
        check_decay_read_errors(mddev, rdev);
@@ -44190,7 +44773,7 @@ index cb882aa..9bd076e 100644
                char b[BDEVNAME_SIZE];
                bdevname(rdev->bdev, b);
  
-@@ -2394,7 +2394,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
+@@ -2388,7 +2388,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
                       "md/raid10:%s: %s: Raid device exceeded "
                       "read_error threshold [cur %d:max %d]\n",
                       mdname(mddev), b,
@@ -44199,7 +44782,7 @@ index cb882aa..9bd076e 100644
                printk(KERN_NOTICE
                       "md/raid10:%s: %s: Failing raid device\n",
                       mdname(mddev), b);
-@@ -2549,7 +2549,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
+@@ -2543,7 +2543,7 @@ static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10
                                               sect +
                                               choose_data_offset(r10_bio, rdev)),
                                       bdevname(rdev->bdev, b));
@@ -44209,10 +44792,10 @@ index cb882aa..9bd076e 100644
  
                        rdev_dec_pending(rdev, mddev);
 diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
-index ad1b9be..b417412 100644
+index 9c66e59..42a8eac 100644
 --- a/drivers/md/raid5.c
 +++ b/drivers/md/raid5.c
-@@ -1702,6 +1702,10 @@ static int grow_one_stripe(struct r5conf *conf, int hash)
+@@ -1730,6 +1730,10 @@ static int grow_one_stripe(struct r5conf *conf, int hash)
        return 1;
  }
  
@@ -44223,7 +44806,7 @@ index ad1b9be..b417412 100644
  static int grow_stripes(struct r5conf *conf, int num)
  {
        struct kmem_cache *sc;
-@@ -1713,7 +1717,11 @@ static int grow_stripes(struct r5conf *conf, int num)
+@@ -1741,7 +1745,11 @@ static int grow_stripes(struct r5conf *conf, int num)
                        "raid%d-%s", conf->level, mdname(conf->mddev));
        else
                sprintf(conf->cache_name[0],
@@ -44235,7 +44818,7 @@ index ad1b9be..b417412 100644
        sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]);
  
        conf->active_name = 0;
-@@ -1986,21 +1994,21 @@ static void raid5_end_read_request(struct bio * bi, int error)
+@@ -2017,21 +2025,21 @@ static void raid5_end_read_request(struct bio * bi, int error)
                                mdname(conf->mddev), STRIPE_SECTORS,
                                (unsigned long long)s,
                                bdevname(rdev->bdev, b));
@@ -44261,7 +44844,7 @@ index ad1b9be..b417412 100644
                if (test_bit(R5_ReadRepl, &sh->dev[i].flags))
                        printk_ratelimited(
                                KERN_WARNING
-@@ -2028,7 +2036,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
+@@ -2059,7 +2067,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
                                mdname(conf->mddev),
                                (unsigned long long)s,
                                bdn);
@@ -44284,18 +44867,17 @@ index 983db75..ef9248c 100644
        int minor;
        int id;
 diff --git a/drivers/media/dvb-frontends/af9033.h b/drivers/media/dvb-frontends/af9033.h
-index 539f4db..cdd403b 100644
+index 6ad22b6..6e90e2a 100644
 --- a/drivers/media/dvb-frontends/af9033.h
 +++ b/drivers/media/dvb-frontends/af9033.h
-@@ -82,7 +82,7 @@ struct af9033_ops {
+@@ -96,6 +96,6 @@ struct af9033_ops {
        int (*pid_filter_ctrl)(struct dvb_frontend *fe, int onoff);
        int (*pid_filter)(struct dvb_frontend *fe, int index, u16 pid,
                          int onoff);
 -};
 +} __no_const;
  
- #if IS_ENABLED(CONFIG_DVB_AF9033)
+ #endif /* AF9033_H */
 diff --git a/drivers/media/dvb-frontends/dib3000.h b/drivers/media/dvb-frontends/dib3000.h
 index 9b6c3bb..baeb5c7 100644
 --- a/drivers/media/dvb-frontends/dib3000.h
@@ -44309,8 +44891,34 @@ index 9b6c3bb..baeb5c7 100644
  
  #if IS_ENABLED(CONFIG_DVB_DIB3000MB)
  extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
+diff --git a/drivers/media/dvb-frontends/dib7000p.h b/drivers/media/dvb-frontends/dib7000p.h
+index 1fea0e9..321ce8f 100644
+--- a/drivers/media/dvb-frontends/dib7000p.h
++++ b/drivers/media/dvb-frontends/dib7000p.h
+@@ -64,7 +64,7 @@ struct dib7000p_ops {
+       int (*get_adc_power)(struct dvb_frontend *fe);
+       int (*slave_reset)(struct dvb_frontend *fe);
+       struct dvb_frontend *(*init)(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib7000p_config *cfg);
+-};
++} __no_const;
+ #if IS_ENABLED(CONFIG_DVB_DIB7000P)
+ void *dib7000p_attach(struct dib7000p_ops *ops);
+diff --git a/drivers/media/dvb-frontends/dib8000.h b/drivers/media/dvb-frontends/dib8000.h
+index 84cc103..5780c54 100644
+--- a/drivers/media/dvb-frontends/dib8000.h
++++ b/drivers/media/dvb-frontends/dib8000.h
+@@ -61,7 +61,7 @@ struct dib8000_ops {
+       int (*pid_filter_ctrl)(struct dvb_frontend *fe, u8 onoff);
+       int (*pid_filter)(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff);
+       struct dvb_frontend *(*init)(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib8000_config *cfg);
+-};
++} __no_const;
+ #if IS_ENABLED(CONFIG_DVB_DIB8000)
+ void *dib8000_attach(struct dib8000_ops *ops);
 diff --git a/drivers/media/pci/cx88/cx88-video.c b/drivers/media/pci/cx88/cx88-video.c
-index ed8cb90..5ef7f79 100644
+index ce27e6d..b70435a 100644
 --- a/drivers/media/pci/cx88/cx88-video.c
 +++ b/drivers/media/pci/cx88/cx88-video.c
 @@ -50,9 +50,9 @@ MODULE_VERSION(CX88_VERSION);
@@ -44339,8 +44947,73 @@ index 802642d..5534900 100644
  
  /* Parameter declarations */
  static int cardtype[IVTV_MAX_CARDS];
+diff --git a/drivers/media/pci/solo6x10/solo6x10-core.c b/drivers/media/pci/solo6x10/solo6x10-core.c
+index 8cbe6b4..ea3601c 100644
+--- a/drivers/media/pci/solo6x10/solo6x10-core.c
++++ b/drivers/media/pci/solo6x10/solo6x10-core.c
+@@ -424,7 +424,7 @@ static void solo_device_release(struct device *dev)
+ static int solo_sysfs_init(struct solo_dev *solo_dev)
+ {
+-      struct bin_attribute *sdram_attr = &solo_dev->sdram_attr;
++      bin_attribute_no_const *sdram_attr = &solo_dev->sdram_attr;
+       struct device *dev = &solo_dev->dev;
+       const char *driver;
+       int i;
+diff --git a/drivers/media/pci/solo6x10/solo6x10-g723.c b/drivers/media/pci/solo6x10/solo6x10-g723.c
+index c7141f2..5301fec 100644
+--- a/drivers/media/pci/solo6x10/solo6x10-g723.c
++++ b/drivers/media/pci/solo6x10/solo6x10-g723.c
+@@ -351,7 +351,7 @@ static int solo_snd_pcm_init(struct solo_dev *solo_dev)
+ int solo_g723_init(struct solo_dev *solo_dev)
+ {
+-      static struct snd_device_ops ops = { NULL };
++      static struct snd_device_ops ops = { };
+       struct snd_card *card;
+       struct snd_kcontrol_new kctl;
+       char name[32];
+diff --git a/drivers/media/pci/solo6x10/solo6x10-p2m.c b/drivers/media/pci/solo6x10/solo6x10-p2m.c
+index 8c84846..27b4f83 100644
+--- a/drivers/media/pci/solo6x10/solo6x10-p2m.c
++++ b/drivers/media/pci/solo6x10/solo6x10-p2m.c
+@@ -73,7 +73,7 @@ int solo_p2m_dma_desc(struct solo_dev *solo_dev,
+       /* Get next ID. According to Softlogic, 6110 has problems on !=0 P2M */
+       if (solo_dev->type != SOLO_DEV_6110 && multi_p2m) {
+-              p2m_id = atomic_inc_return(&solo_dev->p2m_count) % SOLO_NR_P2M;
++              p2m_id = atomic_inc_return_unchecked(&solo_dev->p2m_count) % SOLO_NR_P2M;
+               if (p2m_id < 0)
+                       p2m_id = -p2m_id;
+       }
+diff --git a/drivers/media/pci/solo6x10/solo6x10.h b/drivers/media/pci/solo6x10/solo6x10.h
+index 72017b7..dd37ae6 100644
+--- a/drivers/media/pci/solo6x10/solo6x10.h
++++ b/drivers/media/pci/solo6x10/solo6x10.h
+@@ -219,7 +219,7 @@ struct solo_dev {
+       /* P2M DMA Engine */
+       struct solo_p2m_dev     p2m_dev[SOLO_NR_P2M];
+-      atomic_t                p2m_count;
++      atomic_unchecked_t      p2m_count;
+       int                     p2m_jiffies;
+       unsigned int            p2m_timeouts;
+diff --git a/drivers/media/pci/tw68/tw68-core.c b/drivers/media/pci/tw68/tw68-core.c
+index 63f0b64..a017c1c 100644
+--- a/drivers/media/pci/tw68/tw68-core.c
++++ b/drivers/media/pci/tw68/tw68-core.c
+@@ -60,7 +60,7 @@ static unsigned int card[] = {[0 ... (TW68_MAXBOARDS - 1)] = UNSET };
+ module_param_array(card, int, NULL, 0444);
+ MODULE_PARM_DESC(card, "card type");
+-static atomic_t tw68_instance = ATOMIC_INIT(0);
++static atomic_unchecked_t tw68_instance = ATOMIC_INIT(0);
+ /* ------------------------------------------------------------------ */
 diff --git a/drivers/media/platform/omap/omap_vout.c b/drivers/media/platform/omap/omap_vout.c
-index 9a726ea..f5e9b52 100644
+index 64ab6fb..ef4a8b9 100644
 --- a/drivers/media/platform/omap/omap_vout.c
 +++ b/drivers/media/platform/omap/omap_vout.c
 @@ -63,7 +63,6 @@ enum omap_vout_channels {
@@ -44351,7 +45024,7 @@ index 9a726ea..f5e9b52 100644
  /* Variables configurable through module params*/
  static u32 video1_numbuffers = 3;
  static u32 video2_numbuffers = 3;
-@@ -1015,6 +1014,12 @@ static int omap_vout_open(struct file *file)
+@@ -1012,6 +1011,12 @@ static int omap_vout_open(struct file *file)
  {
        struct videobuf_queue *q;
        struct omap_vout_device *vout = NULL;
@@ -44364,7 +45037,7 @@ index 9a726ea..f5e9b52 100644
  
        vout = video_drvdata(file);
        v4l2_dbg(1, debug, &vout->vid_dev->v4l2_dev, "Entering %s\n", __func__);
-@@ -1032,10 +1037,6 @@ static int omap_vout_open(struct file *file)
+@@ -1029,10 +1034,6 @@ static int omap_vout_open(struct file *file)
        vout->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
  
        q = &vout->vbq;
@@ -44415,7 +45088,7 @@ index b713403..53cb5ad 100644
        if (done && done != layer->shadow_buf)
                vb2_buffer_done(&done->vb, VB2_BUF_STATE_DONE);
 diff --git a/drivers/media/platform/s5p-tv/mixer_video.c b/drivers/media/platform/s5p-tv/mixer_video.c
-index a1ce55f..4a3c4d9 100644
+index b4d2696..91df48e 100644
 --- a/drivers/media/platform/s5p-tv/mixer_video.c
 +++ b/drivers/media/platform/s5p-tv/mixer_video.c
 @@ -210,7 +210,7 @@ static void mxr_layer_default_geo(struct mxr_layer *layer)
@@ -44469,7 +45142,7 @@ index a1ce55f..4a3c4d9 100644
  
                /* retrieve update selection rectangle */
                res.left = target->x_offset;
-@@ -950,13 +950,13 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
+@@ -954,13 +954,13 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
        mxr_output_get(mdev);
  
        mxr_layer_update_output(layer);
@@ -44485,7 +45158,7 @@ index a1ce55f..4a3c4d9 100644
        mxr_streamer_get(mdev);
  
        return 0;
-@@ -1026,7 +1026,7 @@ static int stop_streaming(struct vb2_queue *vq)
+@@ -1030,7 +1030,7 @@ static void stop_streaming(struct vb2_queue *vq)
        spin_unlock_irqrestore(&layer->enq_slock, flags);
  
        /* disabling layer in hardware */
@@ -44494,7 +45167,7 @@ index a1ce55f..4a3c4d9 100644
        /* remove one streamer */
        mxr_streamer_put(mdev);
        /* allow changes in output configuration */
-@@ -1065,8 +1065,8 @@ void mxr_base_layer_unregister(struct mxr_layer *layer)
+@@ -1068,8 +1068,8 @@ void mxr_base_layer_unregister(struct mxr_layer *layer)
  
  void mxr_layer_release(struct mxr_layer *layer)
  {
@@ -44505,7 +45178,7 @@ index a1ce55f..4a3c4d9 100644
  }
  
  void mxr_base_layer_release(struct mxr_layer *layer)
-@@ -1092,7 +1092,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev,
+@@ -1095,7 +1095,7 @@ struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev,
  
        layer->mdev = mdev;
        layer->idx = idx;
@@ -44527,23 +45200,8 @@ index c9388c4..ce71ece 100644
                .release = mxr_vp_layer_release,
                .buffer_set = mxr_vp_buffer_set,
                .stream_set = mxr_vp_stream_set,
-diff --git a/drivers/media/platform/vivi.c b/drivers/media/platform/vivi.c
-index 3890f4f..b5c7511 100644
---- a/drivers/media/platform/vivi.c
-+++ b/drivers/media/platform/vivi.c
-@@ -58,8 +58,8 @@ MODULE_AUTHOR("Mauro Carvalho Chehab, Ted Walther and John Sokol");
- MODULE_LICENSE("Dual BSD/GPL");
- MODULE_VERSION(VIVI_VERSION);
--static unsigned video_nr = -1;
--module_param(video_nr, uint, 0644);
-+static int video_nr = -1;
-+module_param(video_nr, int, 0644);
- MODULE_PARM_DESC(video_nr, "videoX start number, -1 is autodetect");
- static unsigned n_devs = 1;
 diff --git a/drivers/media/radio/radio-cadet.c b/drivers/media/radio/radio-cadet.c
-index d719e59..63f3470 100644
+index 82affae..42833ec 100644
 --- a/drivers/media/radio/radio-cadet.c
 +++ b/drivers/media/radio/radio-cadet.c
 @@ -333,6 +333,8 @@ static ssize_t cadet_read(struct file *file, char __user *data, size_t count, lo
@@ -44607,7 +45265,7 @@ index 8654e0d..0608a64 100644
  static int shark_write_reg(struct radio_tea5777 *tea, u64 reg)
  {
 diff --git a/drivers/media/radio/radio-si476x.c b/drivers/media/radio/radio-si476x.c
-index 2fd9009..278cc1e 100644
+index 633022b..7f10754 100644
 --- a/drivers/media/radio/radio-si476x.c
 +++ b/drivers/media/radio/radio-si476x.c
 @@ -1445,7 +1445,7 @@ static int si476x_radio_probe(struct platform_device *pdev)
@@ -44619,19 +45277,433 @@ index 2fd9009..278cc1e 100644
  
        radio = devm_kzalloc(&pdev->dev, sizeof(*radio), GFP_KERNEL);
        if (!radio)
-diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
-index a1c641e..3007da9 100644
---- a/drivers/media/usb/dvb-usb/cxusb.c
-+++ b/drivers/media/usb/dvb-usb/cxusb.c
-@@ -1112,7 +1112,7 @@ static struct dib0070_config dib7070p_dib0070_config = {
- struct dib0700_adapter_state {
-       int (*set_param_save) (struct dvb_frontend *);
--};
-+} __no_const;
+diff --git a/drivers/media/usb/dvb-usb/cinergyT2-core.c b/drivers/media/usb/dvb-usb/cinergyT2-core.c
+index 9fd1527..8927230 100644
+--- a/drivers/media/usb/dvb-usb/cinergyT2-core.c
++++ b/drivers/media/usb/dvb-usb/cinergyT2-core.c
+@@ -50,29 +50,73 @@ static struct dvb_usb_device_properties cinergyt2_properties;
+ static int cinergyt2_streaming_ctrl(struct dvb_usb_adapter *adap, int enable)
+ {
+-      char buf[] = { CINERGYT2_EP1_CONTROL_STREAM_TRANSFER, enable ? 1 : 0 };
+-      char result[64];
+-      return dvb_usb_generic_rw(adap->dev, buf, sizeof(buf), result,
+-                              sizeof(result), 0);
++      char *buf;
++      char *result;
++      int retval;
++
++      buf = kmalloc(2, GFP_KERNEL);
++      if (buf == NULL)
++              return -ENOMEM;
++      result = kmalloc(64, GFP_KERNEL);
++      if (result == NULL) {
++              kfree(buf);
++              return -ENOMEM;
++      }
++
++      buf[0] = CINERGYT2_EP1_CONTROL_STREAM_TRANSFER;
++      buf[1] = enable ? 1 : 0;
++
++      retval = dvb_usb_generic_rw(adap->dev, buf, 2, result, 64, 0);
++
++      kfree(buf);
++      kfree(result);
++      return retval;
+ }
+ static int cinergyt2_power_ctrl(struct dvb_usb_device *d, int enable)
+ {
+-      char buf[] = { CINERGYT2_EP1_SLEEP_MODE, enable ? 0 : 1 };
+-      char state[3];
+-      return dvb_usb_generic_rw(d, buf, sizeof(buf), state, sizeof(state), 0);
++      char *buf;
++      char *state;
++      int retval;
++
++      buf = kmalloc(2, GFP_KERNEL);
++      if (buf == NULL)
++              return -ENOMEM;
++      state = kmalloc(3, GFP_KERNEL);
++      if (state == NULL) {
++              kfree(buf);
++              return -ENOMEM;
++      }
++
++      buf[0] = CINERGYT2_EP1_SLEEP_MODE;
++      buf[1] = enable ? 1 : 0;
++
++      retval = dvb_usb_generic_rw(d, buf, 2, state, 3, 0);
++
++      kfree(buf);
++      kfree(state);
++      return retval;
+ }
+ static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)
+ {
+-      char query[] = { CINERGYT2_EP1_GET_FIRMWARE_VERSION };
+-      char state[3];
++      char *query;
++      char *state;
+       int ret;
++      query = kmalloc(1, GFP_KERNEL);
++      if (query == NULL)
++              return -ENOMEM;
++      state = kmalloc(3, GFP_KERNEL);
++      if (state == NULL) {
++              kfree(query);
++              return -ENOMEM;
++      }
++
++      query[0] = CINERGYT2_EP1_GET_FIRMWARE_VERSION;
+       adap->fe_adap[0].fe = cinergyt2_fe_attach(adap->dev);
+-      ret = dvb_usb_generic_rw(adap->dev, query, sizeof(query), state,
+-                              sizeof(state), 0);
++      ret = dvb_usb_generic_rw(adap->dev, query, 1, state, 3, 0);
+       if (ret < 0) {
+               deb_rc("cinergyt2_power_ctrl() Failed to retrieve sleep "
+                       "state info\n");
+@@ -80,7 +124,8 @@ static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)
+       /* Copy this pointer as we are gonna need it in the release phase */
+       cinergyt2_usb_device = adap->dev;
+-
++      kfree(query);
++      kfree(state);
+       return 0;
+ }
+@@ -141,12 +186,23 @@ static int repeatable_keys[] = {
+ static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
+ {
+       struct cinergyt2_state *st = d->priv;
+-      u8 key[5] = {0, 0, 0, 0, 0}, cmd = CINERGYT2_EP1_GET_RC_EVENTS;
++      u8 *key, *cmd;
+       int i;
++      cmd = kmalloc(1, GFP_KERNEL);
++      if (cmd == NULL)
++              return -EINVAL;
++      key = kzalloc(5, GFP_KERNEL);
++      if (key == NULL) {
++              kfree(cmd);
++              return -EINVAL;
++      }
++
++      cmd[0] = CINERGYT2_EP1_GET_RC_EVENTS;
++
+       *state = REMOTE_NO_KEY_PRESSED;
+-      dvb_usb_generic_rw(d, &cmd, 1, key, sizeof(key), 0);
++      dvb_usb_generic_rw(d, cmd, 1, key, 5, 0);
+       if (key[4] == 0xff) {
+               /* key repeat */
+               st->rc_counter++;
+@@ -157,12 +213,12 @@ static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
+                                       *event = d->last_event;
+                                       deb_rc("repeat key, event %x\n",
+                                                  *event);
+-                                      return 0;
++                                      goto out;
+                               }
+                       }
+                       deb_rc("repeated key (non repeatable)\n");
+               }
+-              return 0;
++              goto out;
+       }
+       /* hack to pass checksum on the custom field */
+@@ -174,6 +230,9 @@ static int cinergyt2_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
+               deb_rc("key: %*ph\n", 5, key);
+       }
++out:
++      kfree(cmd);
++      kfree(key);
+       return 0;
+ }
+diff --git a/drivers/media/usb/dvb-usb/cinergyT2-fe.c b/drivers/media/usb/dvb-usb/cinergyT2-fe.c
+index c890fe4..f9b2ae6 100644
+--- a/drivers/media/usb/dvb-usb/cinergyT2-fe.c
++++ b/drivers/media/usb/dvb-usb/cinergyT2-fe.c
+@@ -145,103 +145,176 @@ static int cinergyt2_fe_read_status(struct dvb_frontend *fe,
+                                       fe_status_t *status)
+ {
+       struct cinergyt2_fe_state *state = fe->demodulator_priv;
+-      struct dvbt_get_status_msg result;
+-      u8 cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
++      struct dvbt_get_status_msg *result;
++      u8 *cmd;
+       int ret;
+-      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (u8 *)&result,
+-                      sizeof(result), 0);
++      cmd = kmalloc(1, GFP_KERNEL);
++      if (cmd == NULL)
++              return -ENOMEM;
++      result = kmalloc(sizeof(*result), GFP_KERNEL);
++      if (result == NULL) {
++              kfree(cmd);
++              return -ENOMEM;
++      }
++
++      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
++
++      ret = dvb_usb_generic_rw(state->d, cmd, 1, (u8 *)result,
++                      sizeof(*result), 0);
+       if (ret < 0)
+-              return ret;
++              goto out;
+       *status = 0;
+-      if (0xffff - le16_to_cpu(result.gain) > 30)
++      if (0xffff - le16_to_cpu(result->gain) > 30)
+               *status |= FE_HAS_SIGNAL;
+-      if (result.lock_bits & (1 << 6))
++      if (result->lock_bits & (1 << 6))
+               *status |= FE_HAS_LOCK;
+-      if (result.lock_bits & (1 << 5))
++      if (result->lock_bits & (1 << 5))
+               *status |= FE_HAS_SYNC;
+-      if (result.lock_bits & (1 << 4))
++      if (result->lock_bits & (1 << 4))
+               *status |= FE_HAS_CARRIER;
+-      if (result.lock_bits & (1 << 1))
++      if (result->lock_bits & (1 << 1))
+               *status |= FE_HAS_VITERBI;
+       if ((*status & (FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC)) !=
+                       (FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC))
+               *status &= ~FE_HAS_LOCK;
+-      return 0;
++out:
++      kfree(cmd);
++      kfree(result);
++      return ret;
+ }
+ static int cinergyt2_fe_read_ber(struct dvb_frontend *fe, u32 *ber)
+ {
+       struct cinergyt2_fe_state *state = fe->demodulator_priv;
+-      struct dvbt_get_status_msg status;
+-      char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
++      struct dvbt_get_status_msg *status;
++      char *cmd;
+       int ret;
+-      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
+-                              sizeof(status), 0);
++      cmd = kmalloc(1, GFP_KERNEL);
++      if (cmd == NULL)
++              return -ENOMEM;
++      status = kmalloc(sizeof(*status), GFP_KERNEL);
++      if (status == NULL) {
++              kfree(cmd);
++              return -ENOMEM;
++      }
++
++      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
++
++      ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
++                              sizeof(*status), 0);
+       if (ret < 0)
+-              return ret;
++              goto out;
+-      *ber = le32_to_cpu(status.viterbi_error_rate);
++      *ber = le32_to_cpu(status->viterbi_error_rate);
++out:
++      kfree(cmd);
++      kfree(status);
+       return 0;
+ }
+ static int cinergyt2_fe_read_unc_blocks(struct dvb_frontend *fe, u32 *unc)
+ {
+       struct cinergyt2_fe_state *state = fe->demodulator_priv;
+-      struct dvbt_get_status_msg status;
+-      u8 cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
++      struct dvbt_get_status_msg *status;
++      u8 *cmd;
+       int ret;
+-      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (u8 *)&status,
+-                              sizeof(status), 0);
++      cmd = kmalloc(1, GFP_KERNEL);
++      if (cmd == NULL)
++              return -ENOMEM;
++      status = kmalloc(sizeof(*status), GFP_KERNEL);
++      if (status == NULL) {
++              kfree(cmd);
++              return -ENOMEM;
++      }
++
++      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
++
++      ret = dvb_usb_generic_rw(state->d, cmd, 1, (u8 *)status,
++                              sizeof(*status), 0);
+       if (ret < 0) {
+               err("cinergyt2_fe_read_unc_blocks() Failed! (Error=%d)\n",
+                       ret);
+-              return ret;
++              goto out;
+       }
+-      *unc = le32_to_cpu(status.uncorrected_block_count);
+-      return 0;
++      *unc = le32_to_cpu(status->uncorrected_block_count);
++
++out:
++      kfree(cmd);
++      kfree(status);
++      return ret;
+ }
+ static int cinergyt2_fe_read_signal_strength(struct dvb_frontend *fe,
+                                               u16 *strength)
+ {
+       struct cinergyt2_fe_state *state = fe->demodulator_priv;
+-      struct dvbt_get_status_msg status;
+-      char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
++      struct dvbt_get_status_msg *status;
++      char *cmd;
+       int ret;
+-      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
+-                              sizeof(status), 0);
++      cmd = kmalloc(1, GFP_KERNEL);
++      if (cmd == NULL)
++              return -ENOMEM;
++      status = kmalloc(sizeof(*status), GFP_KERNEL);
++      if (status == NULL) {
++              kfree(cmd);
++              return -ENOMEM;
++      }
++
++      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
++
++      ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
++                              sizeof(*status), 0);
+       if (ret < 0) {
+               err("cinergyt2_fe_read_signal_strength() Failed!"
+                       " (Error=%d)\n", ret);
+-              return ret;
++              goto out;
+       }
+-      *strength = (0xffff - le16_to_cpu(status.gain));
++      *strength = (0xffff - le16_to_cpu(status->gain));
++
++out:
++      kfree(cmd);
++      kfree(status);
+       return 0;
+ }
  
- static int dib7070_set_param_override(struct dvb_frontend *fe)
+ static int cinergyt2_fe_read_snr(struct dvb_frontend *fe, u16 *snr)
  {
+       struct cinergyt2_fe_state *state = fe->demodulator_priv;
+-      struct dvbt_get_status_msg status;
+-      char cmd[] = { CINERGYT2_EP1_GET_TUNER_STATUS };
++      struct dvbt_get_status_msg *status;
++      char *cmd;
+       int ret;
+-      ret = dvb_usb_generic_rw(state->d, cmd, sizeof(cmd), (char *)&status,
+-                              sizeof(status), 0);
++      cmd = kmalloc(1, GFP_KERNEL);
++      if (cmd == NULL)
++              return -ENOMEM;
++      status = kmalloc(sizeof(*status), GFP_KERNEL);
++      if (status == NULL) {
++              kfree(cmd);
++              return -ENOMEM;
++      }
++
++      cmd[0] = CINERGYT2_EP1_GET_TUNER_STATUS;
++
++      ret = dvb_usb_generic_rw(state->d, cmd, 1, (char *)status,
++                              sizeof(*status), 0);
+       if (ret < 0) {
+               err("cinergyt2_fe_read_snr() Failed! (Error=%d)\n", ret);
+-              return ret;
++              goto out;
+       }
+-      *snr = (status.snr << 8) | status.snr;
+-      return 0;
++      *snr = (status->snr << 8) | status->snr;
++
++out:
++      kfree(cmd);
++      kfree(status);
++      return ret;
+ }
+ static int cinergyt2_fe_init(struct dvb_frontend *fe)
+@@ -266,35 +339,46 @@ static int cinergyt2_fe_set_frontend(struct dvb_frontend *fe)
+ {
+       struct dtv_frontend_properties *fep = &fe->dtv_property_cache;
+       struct cinergyt2_fe_state *state = fe->demodulator_priv;
+-      struct dvbt_set_parameters_msg param;
+-      char result[2];
++      struct dvbt_set_parameters_msg *param;
++      char *result;
+       int err;
+-      param.cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS;
+-      param.tps = cpu_to_le16(compute_tps(fep));
+-      param.freq = cpu_to_le32(fep->frequency / 1000);
+-      param.flags = 0;
++      result = kmalloc(2, GFP_KERNEL);
++      if (result == NULL)
++              return -ENOMEM;
++      param = kmalloc(sizeof(*param), GFP_KERNEL);
++      if (param == NULL) {
++              kfree(result);
++              return -ENOMEM;
++      }
++
++      param->cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS;
++      param->tps = cpu_to_le16(compute_tps(fep));
++      param->freq = cpu_to_le32(fep->frequency / 1000);
++      param->flags = 0;
+       switch (fep->bandwidth_hz) {
+       default:
+       case 8000000:
+-              param.bandwidth = 8;
++              param->bandwidth = 8;
+               break;
+       case 7000000:
+-              param.bandwidth = 7;
++              param->bandwidth = 7;
+               break;
+       case 6000000:
+-              param.bandwidth = 6;
++              param->bandwidth = 6;
+               break;
+       }
+       err = dvb_usb_generic_rw(state->d,
+-                      (char *)&param, sizeof(param),
+-                      result, sizeof(result), 0);
++                      (char *)param, sizeof(*param),
++                      result, 2, 0);
+       if (err < 0)
+               err("cinergyt2_fe_set_frontend() Failed! err=%d\n", err);
+-      return (err < 0) ? err : 0;
++      kfree(result);
++      kfree(param);
++      return err;
+ }
+ static void cinergyt2_fe_release(struct dvb_frontend *fe)
 diff --git a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
 index 733a7ff..f8b52e3 100644
 --- a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
@@ -44706,7 +45778,7 @@ index 733a7ff..f8b52e3 100644
  }
  EXPORT_SYMBOL(usb_cypress_load_firmware);
 diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
-index ae0f56a..ec71784 100644
+index 1a3df10..57997a5 100644
 --- a/drivers/media/usb/dvb-usb/dw2102.c
 +++ b/drivers/media/usb/dvb-usb/dw2102.c
 @@ -118,7 +118,7 @@ struct su3000_state {
@@ -44719,7 +45791,7 @@ index ae0f56a..ec71784 100644
  /* debug */
  static int dvb_usb_dw2102_debug;
 diff --git a/drivers/media/usb/dvb-usb/technisat-usb2.c b/drivers/media/usb/dvb-usb/technisat-usb2.c
-index 98d24ae..bc22415 100644
+index 6b0b8b6b..4038398 100644
 --- a/drivers/media/usb/dvb-usb/technisat-usb2.c
 +++ b/drivers/media/usb/dvb-usb/technisat-usb2.c
 @@ -87,8 +87,11 @@ struct technisat_usb2_state {
@@ -44793,13 +45865,13 @@ index 98d24ae..bc22415 100644
 +      if (led == NULL)
 +              return -ENOMEM;
  
-       if (disable_led_control && state != LED_OFF)
+       if (disable_led_control && state != TECH_LED_OFF)
                return 0;
  
 +      led[0] = red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST;
 +
        switch (state) {
-       case LED_ON:
+       case TECH_LED_ON:
                led[1] = 0x82;
 @@ -263,16 +274,22 @@ static int technisat_usb2_set_led(struct dvb_usb_device *d, int red, enum techni
                red ? SET_RED_LED_VENDOR_REQUEST : SET_GREEN_LED_VENDOR_REQUEST,
@@ -44925,33 +45997,15 @@ index 98d24ae..bc22415 100644
  }
  
 diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
-index 7e2411c..cef73ca 100644
+index e502a5f..2a27f40 100644
 --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
 +++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
-@@ -328,7 +328,7 @@ struct v4l2_buffer32 {
-       __u32                   reserved;
- };
--static int get_v4l2_plane32(struct v4l2_plane *up, struct v4l2_plane32 *up32,
-+static int get_v4l2_plane32(struct v4l2_plane __user *up, struct v4l2_plane32 __user *up32,
-                               enum v4l2_memory memory)
- {
-       void __user *up_pln;
-@@ -357,7 +357,7 @@ static int get_v4l2_plane32(struct v4l2_plane *up, struct v4l2_plane32 *up32,
-       return 0;
- }
--static int put_v4l2_plane32(struct v4l2_plane *up, struct v4l2_plane32 *up32,
-+static int put_v4l2_plane32(struct v4l2_plane __user *up, struct v4l2_plane32 __user *up32,
-                               enum v4l2_memory memory)
- {
-       if (copy_in_user(up32, up, 2 * sizeof(__u32)) ||
 @@ -427,7 +427,7 @@ static int get_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
                 * by passing a very big num_planes value */
                uplane = compat_alloc_user_space(num_planes *
                                                sizeof(struct v4l2_plane));
--              kp->m.planes = uplane;
-+              kp->m.planes = (struct v4l2_plane __force_kernel *)uplane;
+-              kp->m.planes = (__force struct v4l2_plane *)uplane;
++              kp->m.planes = (__force_kernel struct v4l2_plane *)uplane;
  
                while (--num_planes >= 0) {
                        ret = get_v4l2_plane32(uplane, uplane32, kp->memory);
@@ -44959,64 +46013,49 @@ index 7e2411c..cef73ca 100644
                if (num_planes == 0)
                        return 0;
  
--              uplane = kp->m.planes;
+-              uplane = (__force struct v4l2_plane __user *)kp->m.planes;
 +              uplane = (struct v4l2_plane __force_user *)kp->m.planes;
                if (get_user(p, &up->m.planes))
                        return -EFAULT;
                uplane32 = compat_ptr(p);
-@@ -552,7 +552,7 @@ static int get_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_frame
-               get_user(kp->capability, &up->capability) ||
-               get_user(kp->flags, &up->flags))
+@@ -562,7 +562,7 @@ static int get_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_frame
+               get_user(kp->flags, &up->flags) ||
+               copy_from_user(&kp->fmt, &up->fmt, sizeof(up->fmt)))
                        return -EFAULT;
--      kp->base = compat_ptr(tmp);
-+      kp->base = (void __force_kernel *)compat_ptr(tmp);
-       get_v4l2_pix_format(&kp->fmt, &up->fmt);
+-      kp->base = (__force void *)compat_ptr(tmp);
++      kp->base = (__force_kernel void *)compat_ptr(tmp);
        return 0;
  }
-@@ -658,7 +658,7 @@ static int get_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext
+@@ -667,7 +667,7 @@ static int get_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext
                        n * sizeof(struct v4l2_ext_control32)))
                return -EFAULT;
        kcontrols = compat_alloc_user_space(n * sizeof(struct v4l2_ext_control));
--      kp->controls = kcontrols;
-+      kp->controls = (struct v4l2_ext_control __force_kernel *)kcontrols;
+-      kp->controls = (__force struct v4l2_ext_control *)kcontrols;
++      kp->controls = (__force_kernel struct v4l2_ext_control *)kcontrols;
        while (--n >= 0) {
-               if (copy_in_user(kcontrols, ucontrols, sizeof(*ucontrols)))
-                       return -EFAULT;
-@@ -680,7 +680,7 @@ static int get_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext
- static int put_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext_controls32 __user *up)
+               u32 id;
+@@ -694,7 +694,7 @@ static int put_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext
  {
        struct v4l2_ext_control32 __user *ucontrols;
--      struct v4l2_ext_control __user *kcontrols = kp->controls;
-+      struct v4l2_ext_control __user *kcontrols = (struct v4l2_ext_control __force_user *)kp->controls;
+       struct v4l2_ext_control __user *kcontrols =
+-              (__force struct v4l2_ext_control __user *)kp->controls;
++              (struct v4l2_ext_control __force_user *)kp->controls;
        int n = kp->count;
        compat_caddr_t p;
  
-@@ -774,7 +774,7 @@ static int put_v4l2_edid32(struct v4l2_edid *kp, struct v4l2_edid32 __user *up)
-               put_user(kp->start_block, &up->start_block) ||
-               put_user(kp->blocks, &up->blocks) ||
-               put_user(tmp, &up->edid) ||
--              copy_to_user(kp->reserved, up->reserved, sizeof(kp->reserved)))
-+              copy_to_user(up->reserved, kp->reserved, sizeof(kp->reserved)))
+@@ -778,7 +778,7 @@ static int get_v4l2_edid32(struct v4l2_edid *kp, struct v4l2_edid32 __user *up)
+               get_user(tmp, &up->edid) ||
+               copy_from_user(kp->reserved, up->reserved, sizeof(kp->reserved)))
                        return -EFAULT;
+-      kp->edid = (__force u8 *)compat_ptr(tmp);
++      kp->edid = (__force_kernel u8 *)compat_ptr(tmp);
        return 0;
  }
-diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
-index 55c6832..a91c7a6 100644
---- a/drivers/media/v4l2-core/v4l2-ctrls.c
-+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
-@@ -1431,8 +1431,8 @@ static int validate_new(const struct v4l2_ctrl *ctrl,
-               return 0;
  
-       case V4L2_CTRL_TYPE_STRING:
--              len = strlen(c->string);
--              if (len < ctrl->minimum)
-+              len = strlen_user(c->string);
-+              if (!len || len < ctrl->minimum)
-                       return -ERANGE;
-               if ((len - ctrl->minimum) % ctrl->step)
-                       return -ERANGE;
 diff --git a/drivers/media/v4l2-core/v4l2-device.c b/drivers/media/v4l2-core/v4l2-device.c
-index 02d1b63..5fd6b16 100644
+index 015f92a..59e311e 100644
 --- a/drivers/media/v4l2-core/v4l2-device.c
 +++ b/drivers/media/v4l2-core/v4l2-device.c
 @@ -75,9 +75,9 @@ int v4l2_device_put(struct v4l2_device *v4l2_dev)
@@ -45032,10 +46071,10 @@ index 02d1b63..5fd6b16 100644
  
        if (basename[len - 1] >= '0' && basename[len - 1] <= '9')
 diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
-index d9113cc..7de6ccc 100644
+index 9ccb19a..d131468 100644
 --- a/drivers/media/v4l2-core/v4l2-ioctl.c
 +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
-@@ -2003,7 +2003,8 @@ struct v4l2_ioctl_info {
+@@ -2142,7 +2142,8 @@ struct v4l2_ioctl_info {
                                struct file *file, void *fh, void *p);
        } u;
        void (*debug)(const void *arg, bool write_only);
@@ -45045,7 +46084,7 @@ index d9113cc..7de6ccc 100644
  
  /* This control needs a priority check */
  #define INFO_FL_PRIO  (1 << 0)
-@@ -2186,7 +2187,7 @@ static long __video_do_ioctl(struct file *file,
+@@ -2326,7 +2327,7 @@ static long __video_do_ioctl(struct file *file,
        struct video_device *vfd = video_devdata(file);
        const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops;
        bool write_only = false;
@@ -45054,47 +46093,47 @@ index d9113cc..7de6ccc 100644
        const struct v4l2_ioctl_info *info;
        void *fh = file->private_data;
        struct v4l2_fh *vfh = NULL;
-@@ -2260,7 +2261,7 @@ done:
- }
- static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
--                          void * __user *user_ptr, void ***kernel_ptr)
-+                          void __user **user_ptr, void ***kernel_ptr)
- {
-       int ret = 0;
-@@ -2276,7 +2277,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
+@@ -2413,7 +2414,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
                                ret = -EINVAL;
                                break;
                        }
 -                      *user_ptr = (void __user *)buf->m.planes;
 +                      *user_ptr = (void __force_user *)buf->m.planes;
-                       *kernel_ptr = (void *)&buf->m.planes;
+                       *kernel_ptr = (void **)&buf->m.planes;
                        *array_size = sizeof(struct v4l2_plane) * buf->length;
                        ret = 1;
-@@ -2311,7 +2312,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
+@@ -2430,7 +2431,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
+                               ret = -EINVAL;
+                               break;
+                       }
+-                      *user_ptr = (void __user *)edid->edid;
++                      *user_ptr = (void __force_user *)edid->edid;
+                       *kernel_ptr = (void **)&edid->edid;
+                       *array_size = edid->blocks * 128;
+                       ret = 1;
+@@ -2448,7 +2449,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
                                ret = -EINVAL;
                                break;
                        }
 -                      *user_ptr = (void __user *)ctrls->controls;
 +                      *user_ptr = (void __force_user *)ctrls->controls;
-                       *kernel_ptr = (void *)&ctrls->controls;
+                       *kernel_ptr = (void **)&ctrls->controls;
                        *array_size = sizeof(struct v4l2_ext_control)
                                    * ctrls->count;
-@@ -2412,7 +2413,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg,
+@@ -2549,7 +2550,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg,
        }
  
        if (has_array_args) {
--              *kernel_ptr = user_ptr;
+-              *kernel_ptr = (void __force *)user_ptr;
 +              *kernel_ptr = (void __force_kernel *)user_ptr;
                if (copy_to_user(user_ptr, mbuf, array_size))
                        err = -EFAULT;
                goto out_array_args;
 diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
-index 570b18a..f880314 100644
+index 187f836..679544b 100644
 --- a/drivers/message/fusion/mptbase.c
 +++ b/drivers/message/fusion/mptbase.c
-@@ -6755,8 +6755,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
+@@ -6746,8 +6746,13 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
        seq_printf(m, "  MaxChainDepth = 0x%02x frames\n", ioc->facts.MaxChainDepth);
        seq_printf(m, "  MinBlockSize = 0x%02x bytes\n", 4*ioc->facts.BlockSize);
  
@@ -45108,7 +46147,7 @@ index 570b18a..f880314 100644
        /*
         *  Rounding UP to nearest 4-kB boundary here...
         */
-@@ -6769,7 +6774,11 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
+@@ -6760,7 +6765,11 @@ static int mpt_iocinfo_proc_show(struct seq_file *m, void *v)
                                        ioc->facts.GlobalCredits);
  
        seq_printf(m, "  Frames   @ 0x%p (Dma @ 0x%p)\n",
@@ -45121,7 +46160,7 @@ index 570b18a..f880314 100644
        seq_printf(m, "    {CurRepSz=%d} x {CurRepDepth=%d} = %d bytes ^= 0x%x\n",
                                        ioc->reply_sz, ioc->reply_depth, ioc->reply_sz*ioc->reply_depth, sz);
 diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
-index 00d339c..2ea899d 100644
+index 0707fa2..70ca794 100644
 --- a/drivers/message/fusion/mptsas.c
 +++ b/drivers/message/fusion/mptsas.c
 @@ -446,6 +446,23 @@ mptsas_is_end_device(struct mptsas_devinfo * attached)
@@ -45172,35 +46211,6 @@ index 00d339c..2ea899d 100644
  static inline struct sas_port *
  mptsas_get_port(struct mptsas_phyinfo *phy_info)
  {
-diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
-index 727819c..ad74694 100644
---- a/drivers/message/fusion/mptscsih.c
-+++ b/drivers/message/fusion/mptscsih.c
-@@ -1271,15 +1271,16 @@ mptscsih_info(struct Scsi_Host *SChost)
-       h = shost_priv(SChost);
--      if (h) {
--              if (h->info_kbuf == NULL)
--                      if ((h->info_kbuf = kmalloc(0x1000 /* 4Kb */, GFP_KERNEL)) == NULL)
--                              return h->info_kbuf;
--              h->info_kbuf[0] = '\0';
-+      if (!h)
-+              return NULL;
--              mpt_print_ioc_summary(h->ioc, h->info_kbuf, &size, 0, 0);
--              h->info_kbuf[size-1] = '\0';
--      }
-+      if (h->info_kbuf == NULL)
-+              if ((h->info_kbuf = kmalloc(0x1000 /* 4Kb */, GFP_KERNEL)) == NULL)
-+                      return h->info_kbuf;
-+      h->info_kbuf[0] = '\0';
-+
-+      mpt_print_ioc_summary(h->ioc, h->info_kbuf, &size, 0, 0);
-+      h->info_kbuf[size-1] = '\0';
-       return h->info_kbuf;
- }
 diff --git a/drivers/message/i2o/i2o_proc.c b/drivers/message/i2o/i2o_proc.c
 index b7d87cd..3fb36da 100644
 --- a/drivers/message/i2o/i2o_proc.c
@@ -45393,7 +46403,7 @@ index 92752fb..a7494f6 100644
  #endif
  
 diff --git a/drivers/mfd/ab8500-debugfs.c b/drivers/mfd/ab8500-debugfs.c
-index d1a22aa..d0f7bf7 100644
+index b2c7e3b..85aa4764 100644
 --- a/drivers/mfd/ab8500-debugfs.c
 +++ b/drivers/mfd/ab8500-debugfs.c
 @@ -100,7 +100,7 @@ static int irq_last;
@@ -45406,7 +46416,7 @@ index d1a22aa..d0f7bf7 100644
  
  static u8 avg_sample = SAMPLE_16;
 diff --git a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c
-index a83eed5..62a58a9 100644
+index c880c89..45a7c68 100644
 --- a/drivers/mfd/max8925-i2c.c
 +++ b/drivers/mfd/max8925-i2c.c
 @@ -152,7 +152,7 @@ static int max8925_probe(struct i2c_client *client,
@@ -45419,7 +46429,7 @@ index a83eed5..62a58a9 100644
  
        if (node && !pdata) {
 diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c
-index 460a014..21d3061 100644
+index 7612d89..70549c2 100644
 --- a/drivers/mfd/tps65910.c
 +++ b/drivers/mfd/tps65910.c
 @@ -230,7 +230,7 @@ static int tps65910_irq_init(struct tps65910 *tps65910, int irq,
@@ -45432,7 +46442,7 @@ index 460a014..21d3061 100644
        if (!irq) {
                dev_warn(tps65910->dev, "No interrupt support, no core IRQ\n");
 diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
-index 596b1f6..5b6ab74 100644
+index 1b772ef..01e77d33 100644
 --- a/drivers/mfd/twl4030-irq.c
 +++ b/drivers/mfd/twl4030-irq.c
 @@ -34,6 +34,7 @@
@@ -45443,7 +46453,7 @@ index 596b1f6..5b6ab74 100644
  
  #include "twl-core.h"
  
-@@ -725,10 +726,12 @@ int twl4030_init_irq(struct device *dev, int irq_num)
+@@ -729,10 +730,12 @@ int twl4030_init_irq(struct device *dev, int irq_num)
         * Install an irq handler for each of the SIH modules;
         * clone dummy irq_chip since PIH can't *do* anything
         */
@@ -45868,7 +46878,7 @@ index 82dc574..8539ab2 100644
  
                break;
 diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
-index 452782b..0c10e40 100644
+index a11451f..9e1bbad 100644
 --- a/drivers/mmc/card/block.c
 +++ b/drivers/mmc/card/block.c
 @@ -574,7 +574,7 @@ static int mmc_blk_ioctl_cmd(struct block_device *bdev,
@@ -45881,10 +46891,10 @@ index 452782b..0c10e40 100644
                goto cmd_rel_host;
        }
 diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
-index f51b5ba..86614a7 100644
+index 7911e05..d0f9dda 100644
 --- a/drivers/mmc/core/mmc_ops.c
 +++ b/drivers/mmc/core/mmc_ops.c
-@@ -247,7 +247,7 @@ mmc_send_cxd_data(struct mmc_card *card, struct mmc_host *host,
+@@ -267,7 +267,7 @@ mmc_send_cxd_data(struct mmc_card *card, struct mmc_host *host,
        void *data_buf;
        int is_on_stack;
  
@@ -45894,10 +46904,10 @@ index f51b5ba..86614a7 100644
                /*
                 * dma onto stack is unsafe/nonportable, but callers to this
 diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
-index 6834977..824ee1b 100644
+index 01b99e8..5c325e3 100644
 --- a/drivers/mmc/host/dw_mmc.h
 +++ b/drivers/mmc/host/dw_mmc.h
-@@ -259,5 +259,5 @@ struct dw_mci_drv_data {
+@@ -265,5 +265,5 @@ struct dw_mci_drv_data {
        int             (*parse_dt)(struct dw_mci *host);
        int             (*execute_tuning)(struct dw_mci_slot *slot, u32 opcode,
                                        struct dw_mci_tuning_data *tuning_data);
@@ -45905,11 +46915,11 @@ index 6834977..824ee1b 100644
 +} __do_const;
  #endif /* _DW_MMC_H_ */
 diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
-index 771c60a..12cb615 100644
+index 43af791..86f4c48 100644
 --- a/drivers/mmc/host/mmci.c
 +++ b/drivers/mmc/host/mmci.c
-@@ -1570,7 +1570,9 @@ static int mmci_probe(struct amba_device *dev,
-       mmc->caps2 = plat->capabilities2;
+@@ -1628,7 +1628,9 @@ static int mmci_probe(struct amba_device *dev,
+       mmc->caps |= MMC_CAP_CMD23;
  
        if (variant->busy_detect) {
 -              mmci_ops.card_busy = mmci_card_busy;
@@ -45919,11 +46929,26 @@ index 771c60a..12cb615 100644
                mmci_write_datactrlreg(host, MCI_ST_DPSM_BUSYMODE);
                mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY;
                mmc->max_busy_timeout = 0;
+diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
+index 9c2b9cb..cebb09a 100644
+--- a/drivers/mmc/host/omap_hsmmc.c
++++ b/drivers/mmc/host/omap_hsmmc.c
+@@ -2113,7 +2113,9 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
+       if (host->pdata->controller_flags & OMAP_HSMMC_BROKEN_MULTIBLOCK_READ) {
+               dev_info(&pdev->dev, "multiblock reads disabled due to 35xx erratum 2.1.1.128; MMC read performance may suffer\n");
+-              omap_hsmmc_ops.multi_io_quirk = omap_hsmmc_multi_io_quirk;
++              pax_open_kernel();
++              *(void **)&omap_hsmmc_ops.multi_io_quirk = omap_hsmmc_multi_io_quirk;
++              pax_close_kernel();
+       }
+       pm_runtime_enable(host->dev);
 diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
-index b841bb7..d82712f5 100644
+index 587ee0e..b3bbcab 100644
 --- a/drivers/mmc/host/sdhci-esdhc-imx.c
 +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
-@@ -1031,9 +1031,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
+@@ -1054,9 +1054,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
                host->mmc->caps |= MMC_CAP_1_8V_DDR;
        }
  
@@ -45939,13 +46964,13 @@ index b841bb7..d82712f5 100644
        if (imx_data->socdata->flags & ESDHC_FLAG_STD_TUNING)
                writel(readl(host->ioaddr + ESDHC_TUNING_CTRL) |
 diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
-index d61eb5a..88c0f5d 100644
+index 0ce6eb1..8dcce1b 100644
 --- a/drivers/mmc/host/sdhci-s3c.c
 +++ b/drivers/mmc/host/sdhci-s3c.c
-@@ -657,9 +657,11 @@ static int sdhci_s3c_probe(struct platform_device *pdev)
+@@ -584,9 +584,11 @@ static int sdhci_s3c_probe(struct platform_device *pdev)
         * we can use overriding functions instead of default.
         */
-       if (host->quirks & SDHCI_QUIRK_NONSTANDARD_CLOCK) {
+       if (sc->no_divider) {
 -              sdhci_s3c_ops.set_clock = sdhci_cmu_set_clock;
 -              sdhci_s3c_ops.get_min_clock = sdhci_cmu_get_min_clock;
 -              sdhci_s3c_ops.get_max_clock = sdhci_cmu_get_max_clock;
@@ -45958,7 +46983,7 @@ index d61eb5a..88c0f5d 100644
  
        /* It supports additional host capabilities if needed */
 diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c
-index 6293855..3415551 100644
+index 423666b..81ff5eb 100644
 --- a/drivers/mtd/chips/cfi_cmdset_0020.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0020.c
 @@ -666,7 +666,7 @@ cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs,
@@ -45971,7 +46996,7 @@ index 6293855..3415551 100644
        if (!ECCBUF_SIZE) {
                /* We should fall back to a general writev implementation.
 diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
-index c07cd57..61c4fbd 100644
+index b3b7ca1..5dd4634 100644
 --- a/drivers/mtd/nand/denali.c
 +++ b/drivers/mtd/nand/denali.c
 @@ -24,6 +24,7 @@
@@ -45983,10 +47008,10 @@ index c07cd57..61c4fbd 100644
  #include "denali.h"
  
 diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
-index bb77f75..47539b1 100644
+index 959cb9b..8520fe5 100644
 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
 +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
-@@ -370,7 +370,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr)
+@@ -386,7 +386,7 @@ void prepare_data_dma(struct gpmi_nand_data *this, enum dma_data_direction dr)
  
        /* first try to map the upper buffer directly */
        if (virt_addr_valid(this->upper_buf) &&
@@ -46008,7 +47033,7 @@ index 51b9d6a..52af9a7 100644
  #include <linux/mtd/nand.h>
  #include <linux/mtd/nftl.h>
 diff --git a/drivers/mtd/sm_ftl.c b/drivers/mtd/sm_ftl.c
-index cf49c22..971b133 100644
+index c23184a..4115c41 100644
 --- a/drivers/mtd/sm_ftl.c
 +++ b/drivers/mtd/sm_ftl.c
 @@ -56,7 +56,7 @@ static ssize_t sm_attr_show(struct device *dev, struct device_attribute *attr,
@@ -46020,11 +47045,24 @@ index cf49c22..971b133 100644
        struct attribute **attributes;
        struct sm_sysfs_attribute *vendor_attribute;
        char *vendor;
+diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
+index a5115fb..81b03f6 100644
+--- a/drivers/net/bonding/bond_main.c
++++ b/drivers/net/bonding/bond_main.c
+@@ -3749,7 +3749,7 @@ int bond_3ad_xor_xmit(struct sk_buff *skb, struct net_device *dev)
+               bond_dev_queue_xmit(bond, skb, slave->dev);
+       } else {
+               dev_kfree_skb_any(skb);
+-              atomic_long_inc(&dev->tx_dropped);
++              atomic_long_inc_unchecked(&dev->tx_dropped);
+       }
+       return NETDEV_TX_OK;
 diff --git a/drivers/net/bonding/bond_netlink.c b/drivers/net/bonding/bond_netlink.c
-index f847e16..fc8dbe9 100644
+index 45f09a6..f154f8d 100644
 --- a/drivers/net/bonding/bond_netlink.c
 +++ b/drivers/net/bonding/bond_netlink.c
-@@ -542,7 +542,7 @@ nla_put_failure:
+@@ -585,7 +585,7 @@ nla_put_failure:
        return -EMSGSIZE;
  }
  
@@ -46033,11 +47071,24 @@ index f847e16..fc8dbe9 100644
        .kind                   = "bond",
        .priv_size              = sizeof(struct bonding),
        .setup                  = bond_setup,
+diff --git a/drivers/net/caif/caif_hsi.c b/drivers/net/caif/caif_hsi.c
+index 5e40a8b..126bfda 100644
+--- a/drivers/net/caif/caif_hsi.c
++++ b/drivers/net/caif/caif_hsi.c
+@@ -1445,7 +1445,7 @@ err:
+       return -ENODEV;
+ }
+-static struct rtnl_link_ops caif_hsi_link_ops __read_mostly = {
++static struct rtnl_link_ops caif_hsi_link_ops = {
+       .kind           = "cfhsi",
+       .priv_size      = sizeof(struct cfhsi),
+       .setup          = cfhsi_setup,
 diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig
-index 9e7d95d..d447b88 100644
+index 98d73aa..63ef9da 100644
 --- a/drivers/net/can/Kconfig
 +++ b/drivers/net/can/Kconfig
-@@ -104,7 +104,7 @@ config CAN_JANZ_ICAN3
+@@ -98,7 +98,7 @@ config CAN_JANZ_ICAN3
  
  config CAN_FLEXCAN
        tristate "Support for Freescale FLEXCAN based chips"
@@ -46046,8 +47097,47 @@ index 9e7d95d..d447b88 100644
        ---help---
          Say Y here if you want to support for Freescale FlexCAN.
  
+diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
+index 2cfe501..477d4b5 100644
+--- a/drivers/net/can/dev.c
++++ b/drivers/net/can/dev.c
+@@ -868,7 +868,7 @@ static int can_newlink(struct net *src_net, struct net_device *dev,
+       return -EOPNOTSUPP;
+ }
+-static struct rtnl_link_ops can_link_ops __read_mostly = {
++static struct rtnl_link_ops can_link_ops = {
+       .kind           = "can",
+       .maxtype        = IFLA_CAN_MAX,
+       .policy         = can_policy,
+diff --git a/drivers/net/can/vcan.c b/drivers/net/can/vcan.c
+index 4e94057..32032ff 100644
+--- a/drivers/net/can/vcan.c
++++ b/drivers/net/can/vcan.c
+@@ -166,7 +166,7 @@ static void vcan_setup(struct net_device *dev)
+       dev->destructor         = free_netdev;
+ }
+-static struct rtnl_link_ops vcan_link_ops __read_mostly = {
++static struct rtnl_link_ops vcan_link_ops = {
+       .kind   = "vcan",
+       .setup  = vcan_setup,
+ };
+diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
+index ff435fb..d408b1f 100644
+--- a/drivers/net/dummy.c
++++ b/drivers/net/dummy.c
+@@ -149,7 +149,7 @@ static int dummy_validate(struct nlattr *tb[], struct nlattr *data[])
+       return 0;
+ }
+-static struct rtnl_link_ops dummy_link_ops __read_mostly = {
++static struct rtnl_link_ops dummy_link_ops = {
+       .kind           = "dummy",
+       .setup          = dummy_setup,
+       .validate       = dummy_validate,
 diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c
-index 455d4c3..3353ee7 100644
+index 1d162cc..b546a75 100644
 --- a/drivers/net/ethernet/8390/ax88796.c
 +++ b/drivers/net/ethernet/8390/ax88796.c
 @@ -889,9 +889,11 @@ static int ax_probe(struct platform_device *pdev)
@@ -46064,10 +47154,10 @@ index 455d4c3..3353ee7 100644
  
        if (!request_mem_region(mem->start, mem_size, pdev->name)) {
 diff --git a/drivers/net/ethernet/altera/altera_tse_main.c b/drivers/net/ethernet/altera/altera_tse_main.c
-index 7330681..7e9e463 100644
+index 4efc435..4ab9e14 100644
 --- a/drivers/net/ethernet/altera/altera_tse_main.c
 +++ b/drivers/net/ethernet/altera/altera_tse_main.c
-@@ -1182,7 +1182,7 @@ static int tse_shutdown(struct net_device *dev)
+@@ -1224,7 +1224,7 @@ static int tse_shutdown(struct net_device *dev)
        return 0;
  }
  
@@ -46076,7 +47166,7 @@ index 7330681..7e9e463 100644
        .ndo_open               = tse_open,
        .ndo_stop               = tse_shutdown,
        .ndo_start_xmit         = tse_start_xmit,
-@@ -1439,11 +1439,13 @@ static int altera_tse_probe(struct platform_device *pdev)
+@@ -1461,11 +1461,13 @@ static int altera_tse_probe(struct platform_device *pdev)
        ndev->netdev_ops = &altera_tse_netdev_ops;
        altera_tse_set_ethtool_ops(ndev);
  
@@ -46090,11 +47180,675 @@ index 7330681..7e9e463 100644
  
        /* Scatter/gather IO is not supported,
         * so it is turned off
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
+index caade30..3e257d9 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
+@@ -1072,14 +1072,14 @@ do {                                                                   \
+  * operations, everything works on mask values.
+  */
+ #define XMDIO_READ(_pdata, _mmd, _reg)                                        \
+-      ((_pdata)->hw_if.read_mmd_regs((_pdata), 0,                     \
++      ((_pdata)->hw_if->read_mmd_regs((_pdata), 0,                    \
+               MII_ADDR_C45 | (_mmd << 16) | ((_reg) & 0xffff)))
+ #define XMDIO_READ_BITS(_pdata, _mmd, _reg, _mask)                    \
+       (XMDIO_READ((_pdata), _mmd, _reg) & _mask)
+ #define XMDIO_WRITE(_pdata, _mmd, _reg, _val)                         \
+-      ((_pdata)->hw_if.write_mmd_regs((_pdata), 0,                    \
++      ((_pdata)->hw_if->write_mmd_regs((_pdata), 0,                   \
+               MII_ADDR_C45 | (_mmd << 16) | ((_reg) & 0xffff), (_val)))
+ #define XMDIO_WRITE_BITS(_pdata, _mmd, _reg, _mask, _val)             \
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dcb.c b/drivers/net/ethernet/amd/xgbe/xgbe-dcb.c
+index 8a50b01..39c1ad0 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-dcb.c
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-dcb.c
+@@ -187,7 +187,7 @@ static int xgbe_dcb_ieee_setets(struct net_device *netdev,
+       memcpy(pdata->ets, ets, sizeof(*pdata->ets));
+-      pdata->hw_if.config_dcb_tc(pdata);
++      pdata->hw_if->config_dcb_tc(pdata);
+       return 0;
+ }
+@@ -226,7 +226,7 @@ static int xgbe_dcb_ieee_setpfc(struct net_device *netdev,
+       memcpy(pdata->pfc, pfc, sizeof(*pdata->pfc));
+-      pdata->hw_if.config_dcb_pfc(pdata);
++      pdata->hw_if->config_dcb_pfc(pdata);
+       return 0;
+ }
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
+index 6fc5da0..61ac2cb 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-desc.c
+@@ -235,7 +235,7 @@ err_ring:
+ static void xgbe_wrapper_tx_descriptor_init(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct xgbe_channel *channel;
+       struct xgbe_ring *ring;
+       struct xgbe_ring_data *rdata;
+@@ -276,7 +276,7 @@ static void xgbe_wrapper_tx_descriptor_init(struct xgbe_prv_data *pdata)
+ static void xgbe_wrapper_rx_descriptor_init(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct xgbe_channel *channel;
+       struct xgbe_ring *ring;
+       struct xgbe_ring_desc *rdesc;
+@@ -505,7 +505,7 @@ err_out:
+ static void xgbe_realloc_skb(struct xgbe_channel *channel)
+ {
+       struct xgbe_prv_data *pdata = channel->pdata;
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct xgbe_ring *ring = channel->rx_ring;
+       struct xgbe_ring_data *rdata;
+       struct sk_buff *skb = NULL;
+@@ -546,17 +546,12 @@ static void xgbe_realloc_skb(struct xgbe_channel *channel)
+       DBGPR("<--xgbe_realloc_skb\n");
+ }
+-void xgbe_init_function_ptrs_desc(struct xgbe_desc_if *desc_if)
+-{
+-      DBGPR("-->xgbe_init_function_ptrs_desc\n");
+-
+-      desc_if->alloc_ring_resources = xgbe_alloc_ring_resources;
+-      desc_if->free_ring_resources = xgbe_free_ring_resources;
+-      desc_if->map_tx_skb = xgbe_map_tx_skb;
+-      desc_if->realloc_skb = xgbe_realloc_skb;
+-      desc_if->unmap_skb = xgbe_unmap_skb;
+-      desc_if->wrapper_tx_desc_init = xgbe_wrapper_tx_descriptor_init;
+-      desc_if->wrapper_rx_desc_init = xgbe_wrapper_rx_descriptor_init;
+-
+-      DBGPR("<--xgbe_init_function_ptrs_desc\n");
+-}
++const struct xgbe_desc_if default_xgbe_desc_if = {
++      .alloc_ring_resources = xgbe_alloc_ring_resources,
++      .free_ring_resources = xgbe_free_ring_resources,
++      .map_tx_skb = xgbe_map_tx_skb,
++      .realloc_skb = xgbe_realloc_skb,
++      .unmap_skb = xgbe_unmap_skb,
++      .wrapper_tx_desc_init = xgbe_wrapper_tx_descriptor_init,
++      .wrapper_rx_desc_init = xgbe_wrapper_rx_descriptor_init,
++};
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
+index 9da3a03..022f15c 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
+@@ -2462,7 +2462,7 @@ static void xgbe_powerdown_rx(struct xgbe_prv_data *pdata)
+ static int xgbe_init(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_desc_if *desc_if = &pdata->desc_if;
++      struct xgbe_desc_if *desc_if = pdata->desc_if;
+       int ret;
+       DBGPR("-->xgbe_init\n");
+@@ -2524,101 +2524,96 @@ static int xgbe_init(struct xgbe_prv_data *pdata)
+       return 0;
+ }
+-void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *hw_if)
+-{
+-      DBGPR("-->xgbe_init_function_ptrs\n");
+-
+-      hw_if->tx_complete = xgbe_tx_complete;
+-
+-      hw_if->set_promiscuous_mode = xgbe_set_promiscuous_mode;
+-      hw_if->set_all_multicast_mode = xgbe_set_all_multicast_mode;
+-      hw_if->add_mac_addresses = xgbe_add_mac_addresses;
+-      hw_if->set_mac_address = xgbe_set_mac_address;
+-
+-      hw_if->enable_rx_csum = xgbe_enable_rx_csum;
+-      hw_if->disable_rx_csum = xgbe_disable_rx_csum;
+-
+-      hw_if->enable_rx_vlan_stripping = xgbe_enable_rx_vlan_stripping;
+-      hw_if->disable_rx_vlan_stripping = xgbe_disable_rx_vlan_stripping;
+-      hw_if->enable_rx_vlan_filtering = xgbe_enable_rx_vlan_filtering;
+-      hw_if->disable_rx_vlan_filtering = xgbe_disable_rx_vlan_filtering;
+-      hw_if->update_vlan_hash_table = xgbe_update_vlan_hash_table;
+-
+-      hw_if->read_mmd_regs = xgbe_read_mmd_regs;
+-      hw_if->write_mmd_regs = xgbe_write_mmd_regs;
+-
+-      hw_if->set_gmii_speed = xgbe_set_gmii_speed;
+-      hw_if->set_gmii_2500_speed = xgbe_set_gmii_2500_speed;
+-      hw_if->set_xgmii_speed = xgbe_set_xgmii_speed;
+-
+-      hw_if->enable_tx = xgbe_enable_tx;
+-      hw_if->disable_tx = xgbe_disable_tx;
+-      hw_if->enable_rx = xgbe_enable_rx;
+-      hw_if->disable_rx = xgbe_disable_rx;
+-
+-      hw_if->powerup_tx = xgbe_powerup_tx;
+-      hw_if->powerdown_tx = xgbe_powerdown_tx;
+-      hw_if->powerup_rx = xgbe_powerup_rx;
+-      hw_if->powerdown_rx = xgbe_powerdown_rx;
+-
+-      hw_if->pre_xmit = xgbe_pre_xmit;
+-      hw_if->dev_read = xgbe_dev_read;
+-      hw_if->enable_int = xgbe_enable_int;
+-      hw_if->disable_int = xgbe_disable_int;
+-      hw_if->init = xgbe_init;
+-      hw_if->exit = xgbe_exit;
++const struct xgbe_hw_if default_xgbe_hw_if = {
++      .tx_complete = xgbe_tx_complete,
++
++      .set_promiscuous_mode = xgbe_set_promiscuous_mode,
++      .set_all_multicast_mode = xgbe_set_all_multicast_mode,
++      .add_mac_addresses = xgbe_add_mac_addresses,
++      .set_mac_address = xgbe_set_mac_address,
++
++      .enable_rx_csum = xgbe_enable_rx_csum,
++      .disable_rx_csum = xgbe_disable_rx_csum,
++
++      .enable_rx_vlan_stripping = xgbe_enable_rx_vlan_stripping,
++      .disable_rx_vlan_stripping = xgbe_disable_rx_vlan_stripping,
++      .enable_rx_vlan_filtering = xgbe_enable_rx_vlan_filtering,
++      .disable_rx_vlan_filtering = xgbe_disable_rx_vlan_filtering,
++      .update_vlan_hash_table = xgbe_update_vlan_hash_table,
++
++      .read_mmd_regs = xgbe_read_mmd_regs,
++      .write_mmd_regs = xgbe_write_mmd_regs,
++
++      .set_gmii_speed = xgbe_set_gmii_speed,
++      .set_gmii_2500_speed = xgbe_set_gmii_2500_speed,
++      .set_xgmii_speed = xgbe_set_xgmii_speed,
++
++      .enable_tx = xgbe_enable_tx,
++      .disable_tx = xgbe_disable_tx,
++      .enable_rx = xgbe_enable_rx,
++      .disable_rx = xgbe_disable_rx,
++
++      .powerup_tx = xgbe_powerup_tx,
++      .powerdown_tx = xgbe_powerdown_tx,
++      .powerup_rx = xgbe_powerup_rx,
++      .powerdown_rx = xgbe_powerdown_rx,
++
++      .pre_xmit = xgbe_pre_xmit,
++      .dev_read = xgbe_dev_read,
++      .enable_int = xgbe_enable_int,
++      .disable_int = xgbe_disable_int,
++      .init = xgbe_init,
++      .exit = xgbe_exit,
+       /* Descriptor related Sequences have to be initialized here */
+-      hw_if->tx_desc_init = xgbe_tx_desc_init;
+-      hw_if->rx_desc_init = xgbe_rx_desc_init;
+-      hw_if->tx_desc_reset = xgbe_tx_desc_reset;
+-      hw_if->rx_desc_reset = xgbe_rx_desc_reset;
+-      hw_if->is_last_desc = xgbe_is_last_desc;
+-      hw_if->is_context_desc = xgbe_is_context_desc;
++      .tx_desc_init = xgbe_tx_desc_init,
++      .rx_desc_init = xgbe_rx_desc_init,
++      .tx_desc_reset = xgbe_tx_desc_reset,
++      .rx_desc_reset = xgbe_rx_desc_reset,
++      .is_last_desc = xgbe_is_last_desc,
++      .is_context_desc = xgbe_is_context_desc,
+       /* For FLOW ctrl */
+-      hw_if->config_tx_flow_control = xgbe_config_tx_flow_control;
+-      hw_if->config_rx_flow_control = xgbe_config_rx_flow_control;
++      .config_tx_flow_control = xgbe_config_tx_flow_control,
++      .config_rx_flow_control = xgbe_config_rx_flow_control,
+       /* For RX coalescing */
+-      hw_if->config_rx_coalesce = xgbe_config_rx_coalesce;
+-      hw_if->config_tx_coalesce = xgbe_config_tx_coalesce;
+-      hw_if->usec_to_riwt = xgbe_usec_to_riwt;
+-      hw_if->riwt_to_usec = xgbe_riwt_to_usec;
++      .config_rx_coalesce = xgbe_config_rx_coalesce,
++      .config_tx_coalesce = xgbe_config_tx_coalesce,
++      .usec_to_riwt = xgbe_usec_to_riwt,
++      .riwt_to_usec = xgbe_riwt_to_usec,
+       /* For RX and TX threshold config */
+-      hw_if->config_rx_threshold = xgbe_config_rx_threshold;
+-      hw_if->config_tx_threshold = xgbe_config_tx_threshold;
++      .config_rx_threshold = xgbe_config_rx_threshold,
++      .config_tx_threshold = xgbe_config_tx_threshold,
+       /* For RX and TX Store and Forward Mode config */
+-      hw_if->config_rsf_mode = xgbe_config_rsf_mode;
+-      hw_if->config_tsf_mode = xgbe_config_tsf_mode;
++      .config_rsf_mode = xgbe_config_rsf_mode,
++      .config_tsf_mode = xgbe_config_tsf_mode,
+       /* For TX DMA Operating on Second Frame config */
+-      hw_if->config_osp_mode = xgbe_config_osp_mode;
++      .config_osp_mode = xgbe_config_osp_mode,
+       /* For RX and TX PBL config */
+-      hw_if->config_rx_pbl_val = xgbe_config_rx_pbl_val;
+-      hw_if->get_rx_pbl_val = xgbe_get_rx_pbl_val;
+-      hw_if->config_tx_pbl_val = xgbe_config_tx_pbl_val;
+-      hw_if->get_tx_pbl_val = xgbe_get_tx_pbl_val;
+-      hw_if->config_pblx8 = xgbe_config_pblx8;
++      .config_rx_pbl_val = xgbe_config_rx_pbl_val,
++      .get_rx_pbl_val = xgbe_get_rx_pbl_val,
++      .config_tx_pbl_val = xgbe_config_tx_pbl_val,
++      .get_tx_pbl_val = xgbe_get_tx_pbl_val,
++      .config_pblx8 = xgbe_config_pblx8,
+       /* For MMC statistics support */
+-      hw_if->tx_mmc_int = xgbe_tx_mmc_int;
+-      hw_if->rx_mmc_int = xgbe_rx_mmc_int;
+-      hw_if->read_mmc_stats = xgbe_read_mmc_stats;
++      .tx_mmc_int = xgbe_tx_mmc_int,
++      .rx_mmc_int = xgbe_rx_mmc_int,
++      .read_mmc_stats = xgbe_read_mmc_stats,
+       /* For PTP config */
+-      hw_if->config_tstamp = xgbe_config_tstamp;
+-      hw_if->update_tstamp_addend = xgbe_update_tstamp_addend;
+-      hw_if->set_tstamp_time = xgbe_set_tstamp_time;
+-      hw_if->get_tstamp_time = xgbe_get_tstamp_time;
+-      hw_if->get_tx_tstamp = xgbe_get_tx_tstamp;
++      .config_tstamp = xgbe_config_tstamp,
++      .update_tstamp_addend = xgbe_update_tstamp_addend,
++      .set_tstamp_time = xgbe_set_tstamp_time,
++      .get_tstamp_time = xgbe_get_tstamp_time,
++      .get_tx_tstamp = xgbe_get_tx_tstamp,
+       /* For Data Center Bridging config */
+-      hw_if->config_dcb_tc = xgbe_config_dcb_tc;
+-      hw_if->config_dcb_pfc = xgbe_config_dcb_pfc;
+-
+-      DBGPR("<--xgbe_init_function_ptrs\n");
+-}
++      .config_dcb_tc = xgbe_config_dcb_tc,
++      .config_dcb_pfc = xgbe_config_dcb_pfc,
++};
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+index 2349ea9..a83a677 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+@@ -154,7 +154,7 @@ static int xgbe_calc_rx_buf_size(struct net_device *netdev, unsigned int mtu)
+ static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct xgbe_channel *channel;
+       enum xgbe_int int_id;
+       unsigned int i;
+@@ -176,7 +176,7 @@ static void xgbe_enable_rx_tx_ints(struct xgbe_prv_data *pdata)
+ static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct xgbe_channel *channel;
+       enum xgbe_int int_id;
+       unsigned int i;
+@@ -199,7 +199,7 @@ static void xgbe_disable_rx_tx_ints(struct xgbe_prv_data *pdata)
+ static irqreturn_t xgbe_isr(int irq, void *data)
+ {
+       struct xgbe_prv_data *pdata = data;
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct xgbe_channel *channel;
+       unsigned int dma_isr, dma_ch_isr;
+       unsigned int mac_isr, mac_tssr;
+@@ -446,7 +446,7 @@ static void xgbe_napi_disable(struct xgbe_prv_data *pdata, unsigned int del)
+ void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       DBGPR("-->xgbe_init_tx_coalesce\n");
+@@ -460,7 +460,7 @@ void xgbe_init_tx_coalesce(struct xgbe_prv_data *pdata)
+ void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       DBGPR("-->xgbe_init_rx_coalesce\n");
+@@ -474,7 +474,7 @@ void xgbe_init_rx_coalesce(struct xgbe_prv_data *pdata)
+ static void xgbe_free_tx_skbuff(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_desc_if *desc_if = &pdata->desc_if;
++      struct xgbe_desc_if *desc_if = pdata->desc_if;
+       struct xgbe_channel *channel;
+       struct xgbe_ring *ring;
+       struct xgbe_ring_data *rdata;
+@@ -499,7 +499,7 @@ static void xgbe_free_tx_skbuff(struct xgbe_prv_data *pdata)
+ static void xgbe_free_rx_skbuff(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_desc_if *desc_if = &pdata->desc_if;
++      struct xgbe_desc_if *desc_if = pdata->desc_if;
+       struct xgbe_channel *channel;
+       struct xgbe_ring *ring;
+       struct xgbe_ring_data *rdata;
+@@ -525,7 +525,7 @@ static void xgbe_free_rx_skbuff(struct xgbe_prv_data *pdata)
+ static void xgbe_adjust_link(struct net_device *netdev)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct phy_device *phydev = pdata->phydev;
+       int new_state = 0;
+@@ -633,7 +633,7 @@ static void xgbe_phy_exit(struct xgbe_prv_data *pdata)
+ int xgbe_powerdown(struct net_device *netdev, unsigned int caller)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       unsigned long flags;
+       DBGPR("-->xgbe_powerdown\n");
+@@ -671,7 +671,7 @@ int xgbe_powerdown(struct net_device *netdev, unsigned int caller)
+ int xgbe_powerup(struct net_device *netdev, unsigned int caller)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       unsigned long flags;
+       DBGPR("-->xgbe_powerup\n");
+@@ -708,7 +708,7 @@ int xgbe_powerup(struct net_device *netdev, unsigned int caller)
+ static int xgbe_start(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct net_device *netdev = pdata->netdev;
+       DBGPR("-->xgbe_start\n");
+@@ -734,7 +734,7 @@ static int xgbe_start(struct xgbe_prv_data *pdata)
+ static void xgbe_stop(struct xgbe_prv_data *pdata)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct net_device *netdev = pdata->netdev;
+       DBGPR("-->xgbe_stop\n");
+@@ -754,7 +754,7 @@ static void xgbe_stop(struct xgbe_prv_data *pdata)
+ static void xgbe_restart_dev(struct xgbe_prv_data *pdata, unsigned int reset)
+ {
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       DBGPR("-->xgbe_restart_dev\n");
+@@ -951,7 +951,7 @@ static int xgbe_set_hwtstamp_settings(struct xgbe_prv_data *pdata,
+               return -ERANGE;
+       }
+-      pdata->hw_if.config_tstamp(pdata, mac_tscr);
++      pdata->hw_if->config_tstamp(pdata, mac_tscr);
+       memcpy(&pdata->tstamp_config, &config, sizeof(config));
+@@ -1089,8 +1089,8 @@ static void xgbe_packet_info(struct xgbe_prv_data *pdata,
+ static int xgbe_open(struct net_device *netdev)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
+-      struct xgbe_desc_if *desc_if = &pdata->desc_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
++      struct xgbe_desc_if *desc_if = pdata->desc_if;
+       int ret;
+       DBGPR("-->xgbe_open\n");
+@@ -1170,8 +1170,8 @@ err_phy_init:
+ static int xgbe_close(struct net_device *netdev)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
+-      struct xgbe_desc_if *desc_if = &pdata->desc_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
++      struct xgbe_desc_if *desc_if = pdata->desc_if;
+       DBGPR("-->xgbe_close\n");
+@@ -1205,8 +1205,8 @@ static int xgbe_close(struct net_device *netdev)
+ static int xgbe_xmit(struct sk_buff *skb, struct net_device *netdev)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
+-      struct xgbe_desc_if *desc_if = &pdata->desc_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
++      struct xgbe_desc_if *desc_if = pdata->desc_if;
+       struct xgbe_channel *channel;
+       struct xgbe_ring *ring;
+       struct xgbe_packet_data *packet;
+@@ -1275,7 +1275,7 @@ tx_netdev_return:
+ static void xgbe_set_rx_mode(struct net_device *netdev)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       unsigned int pr_mode, am_mode;
+       DBGPR("-->xgbe_set_rx_mode\n");
+@@ -1294,7 +1294,7 @@ static void xgbe_set_rx_mode(struct net_device *netdev)
+ static int xgbe_set_mac_address(struct net_device *netdev, void *addr)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct sockaddr *saddr = addr;
+       DBGPR("-->xgbe_set_mac_address\n");
+@@ -1361,7 +1361,7 @@ static struct rtnl_link_stats64 *xgbe_get_stats64(struct net_device *netdev,
+       DBGPR("-->%s\n", __func__);
+-      pdata->hw_if.read_mmc_stats(pdata);
++      pdata->hw_if->read_mmc_stats(pdata);
+       s->rx_packets = pstats->rxframecount_gb;
+       s->rx_bytes = pstats->rxoctetcount_gb;
+@@ -1388,7 +1388,7 @@ static int xgbe_vlan_rx_add_vid(struct net_device *netdev, __be16 proto,
+                               u16 vid)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       DBGPR("-->%s\n", __func__);
+@@ -1404,7 +1404,7 @@ static int xgbe_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto,
+                                u16 vid)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       DBGPR("-->%s\n", __func__);
+@@ -1464,7 +1464,7 @@ static int xgbe_set_features(struct net_device *netdev,
+                            netdev_features_t features)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       netdev_features_t rxcsum, rxvlan, rxvlan_filter;
+       rxcsum = pdata->netdev_features & NETIF_F_RXCSUM;
+@@ -1520,7 +1520,7 @@ struct net_device_ops *xgbe_get_netdev_ops(void)
+ static void xgbe_rx_refresh(struct xgbe_channel *channel)
+ {
+       struct xgbe_prv_data *pdata = channel->pdata;
+-      struct xgbe_desc_if *desc_if = &pdata->desc_if;
++      struct xgbe_desc_if *desc_if = pdata->desc_if;
+       struct xgbe_ring *ring = channel->rx_ring;
+       struct xgbe_ring_data *rdata;
+@@ -1536,8 +1536,8 @@ static void xgbe_rx_refresh(struct xgbe_channel *channel)
+ static int xgbe_tx_poll(struct xgbe_channel *channel)
+ {
+       struct xgbe_prv_data *pdata = channel->pdata;
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
+-      struct xgbe_desc_if *desc_if = &pdata->desc_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
++      struct xgbe_desc_if *desc_if = pdata->desc_if;
+       struct xgbe_ring *ring = channel->tx_ring;
+       struct xgbe_ring_data *rdata;
+       struct xgbe_ring_desc *rdesc;
+@@ -1589,7 +1589,7 @@ static int xgbe_tx_poll(struct xgbe_channel *channel)
+ static int xgbe_rx_poll(struct xgbe_channel *channel, int budget)
+ {
+       struct xgbe_prv_data *pdata = channel->pdata;
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       struct xgbe_ring *ring = channel->rx_ring;
+       struct xgbe_ring_data *rdata;
+       struct xgbe_packet_data *packet;
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
+index 49508ec..2617cca 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
+@@ -203,7 +203,7 @@ static void xgbe_get_ethtool_stats(struct net_device *netdev,
+       DBGPR("-->%s\n", __func__);
+-      pdata->hw_if.read_mmc_stats(pdata);
++      pdata->hw_if->read_mmc_stats(pdata);
+       for (i = 0; i < XGBE_STATS_COUNT; i++) {
+               stat = (u8 *)pdata + xgbe_gstring_stats[i].stat_offset;
+               *data++ = *(u64 *)stat;
+@@ -378,7 +378,7 @@ static int xgbe_get_coalesce(struct net_device *netdev,
+                            struct ethtool_coalesce *ec)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       unsigned int riwt;
+       DBGPR("-->xgbe_get_coalesce\n");
+@@ -401,7 +401,7 @@ static int xgbe_set_coalesce(struct net_device *netdev,
+                            struct ethtool_coalesce *ec)
+ {
+       struct xgbe_prv_data *pdata = netdev_priv(netdev);
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       unsigned int rx_frames, rx_riwt, rx_usecs;
+       unsigned int tx_frames, tx_usecs;
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-main.c b/drivers/net/ethernet/amd/xgbe/xgbe-main.c
+index f5a8fa0..0bb58ff 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-main.c
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-main.c
+@@ -209,12 +209,6 @@ static void xgbe_default_config(struct xgbe_prv_data *pdata)
+       DBGPR("<--xgbe_default_config\n");
+ }
+-static void xgbe_init_all_fptrs(struct xgbe_prv_data *pdata)
+-{
+-      xgbe_init_function_ptrs_dev(&pdata->hw_if);
+-      xgbe_init_function_ptrs_desc(&pdata->desc_if);
+-}
+-
+ static int xgbe_probe(struct platform_device *pdev)
+ {
+       struct xgbe_prv_data *pdata;
+@@ -327,9 +321,8 @@ static int xgbe_probe(struct platform_device *pdev)
+       netdev->base_addr = (unsigned long)pdata->xgmac_regs;
+       /* Set all the function pointers */
+-      xgbe_init_all_fptrs(pdata);
+-      hw_if = &pdata->hw_if;
+-      desc_if = &pdata->desc_if;
++      hw_if = pdata->hw_if = &default_xgbe_hw_if;
++      desc_if = pdata->desc_if = &default_xgbe_desc_if;
+       /* Issue software reset to device */
+       hw_if->exit(pdata);
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
+index 363b210..b241389 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
+@@ -126,7 +126,7 @@
+ static int xgbe_mdio_read(struct mii_bus *mii, int prtad, int mmd_reg)
+ {
+       struct xgbe_prv_data *pdata = mii->priv;
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       int mmd_data;
+       DBGPR_MDIO("-->xgbe_mdio_read: prtad=%#x mmd_reg=%#x\n",
+@@ -143,7 +143,7 @@ static int xgbe_mdio_write(struct mii_bus *mii, int prtad, int mmd_reg,
+                          u16 mmd_val)
+ {
+       struct xgbe_prv_data *pdata = mii->priv;
+-      struct xgbe_hw_if *hw_if = &pdata->hw_if;
++      struct xgbe_hw_if *hw_if = pdata->hw_if;
+       int mmd_data = mmd_val;
+       DBGPR_MDIO("-->xgbe_mdio_write: prtad=%#x mmd_reg=%#x mmd_data=%#x\n",
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c b/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c
+index a1bf9d1c..84adcab 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c
++++ b/drivers/net/ethernet/amd/xgbe/xgbe-ptp.c
+@@ -129,7 +129,7 @@ static cycle_t xgbe_cc_read(const struct cyclecounter *cc)
+                                                  tstamp_cc);
+       u64 nsec;
+-      nsec = pdata->hw_if.get_tstamp_time(pdata);
++      nsec = pdata->hw_if->get_tstamp_time(pdata);
+       return nsec;
+ }
+@@ -158,7 +158,7 @@ static int xgbe_adjfreq(struct ptp_clock_info *info, s32 delta)
+       spin_lock_irqsave(&pdata->tstamp_lock, flags);
+-      pdata->hw_if.update_tstamp_addend(pdata, addend);
++      pdata->hw_if->update_tstamp_addend(pdata, addend);
+       spin_unlock_irqrestore(&pdata->tstamp_lock, flags);
+diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h
+index 789957d..d7d0245 100644
+--- a/drivers/net/ethernet/amd/xgbe/xgbe.h
++++ b/drivers/net/ethernet/amd/xgbe/xgbe.h
+@@ -583,8 +583,8 @@ struct xgbe_prv_data {
+       int irq_number;
+-      struct xgbe_hw_if hw_if;
+-      struct xgbe_desc_if desc_if;
++      const struct xgbe_hw_if *hw_if;
++      const struct xgbe_desc_if *desc_if;
+       /* AXI DMA settings */
+       unsigned int axdomain;
+@@ -697,6 +697,9 @@ struct xgbe_prv_data {
+ #endif
+ };
++extern const struct xgbe_hw_if default_xgbe_hw_if;
++extern const struct xgbe_desc_if default_xgbe_desc_if;
++
+ /* Function prototypes*/
+ void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *);
 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
-index 3448cc0..67b2dc4 100644
+index adcacda..fa6e0ae 100644
 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
-@@ -1058,7 +1058,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp)
+@@ -1065,7 +1065,7 @@ static inline u8 bnx2x_get_path_func_num(struct bnx2x *bp)
  static inline void bnx2x_init_bp_objs(struct bnx2x *bp)
  {
        /* RX_MODE controlling object */
@@ -46104,7 +47858,7 @@ index 3448cc0..67b2dc4 100644
        /* multicast configuration controlling object */
        bnx2x_init_mcast_obj(bp, &bp->mcast_obj, bp->fp->cl_id, bp->fp->cid,
 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
-index 31297266..944cf6e 100644
+index 7bc2924..2112002 100644
 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
 @@ -2329,15 +2329,14 @@ int bnx2x_config_rx_mode(struct bnx2x *bp,
@@ -46129,10 +47883,10 @@ index 31297266..944cf6e 100644
  }
  
 diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
-index 80f6c79..fb7d12d 100644
+index e97275f..52e28bc 100644
 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
-@@ -1340,8 +1340,7 @@ int bnx2x_vlan_mac_move(struct bnx2x *bp,
+@@ -1409,8 +1409,7 @@ int bnx2x_vlan_mac_move(struct bnx2x *bp,
  
  /********************* RX MODE ****************/
  
@@ -46143,7 +47897,7 @@ index 80f6c79..fb7d12d 100644
  /**
   * bnx2x_config_rx_mode - Send and RX_MODE ramrod according to the provided parameters.
 diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h
-index 04321e5..b51cdc4 100644
+index 31c9f82..e65e986 100644
 --- a/drivers/net/ethernet/broadcom/tg3.h
 +++ b/drivers/net/ethernet/broadcom/tg3.h
 @@ -150,6 +150,7 @@
@@ -46155,10 +47909,10 @@ index 04321e5..b51cdc4 100644
  #define  CHIPREV_ID_5752_A0_HW                 0x5000
  #define  CHIPREV_ID_5752_A0            0x6000
 diff --git a/drivers/net/ethernet/brocade/bna/bna_enet.c b/drivers/net/ethernet/brocade/bna/bna_enet.c
-index 13f9636..228040f 100644
+index 903466e..b285864 100644
 --- a/drivers/net/ethernet/brocade/bna/bna_enet.c
 +++ b/drivers/net/ethernet/brocade/bna/bna_enet.c
-@@ -1690,10 +1690,10 @@ bna_cb_ioceth_reset(void *arg)
+@@ -1693,10 +1693,10 @@ bna_cb_ioceth_reset(void *arg)
  }
  
  static struct bfa_ioc_cbfn bna_ioceth_cbfn = {
@@ -46187,10 +47941,10 @@ index 8cffcdf..aadf043 100644
  #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
  
 diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-index 24e16e3..bfe6ef2 100644
+index 279873c..11e1921 100644
 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
 +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -2139,7 +2139,7 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs,
+@@ -2365,7 +2365,7 @@ static void get_regs(struct net_device *dev, struct ethtool_regs *regs,
  
        int i;
        struct adapter *ap = netdev2adap(dev);
@@ -46200,10 +47954,10 @@ index 24e16e3..bfe6ef2 100644
  
        if (is_t4(ap->params.chip)) {
 diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
-index c05b66d..ed69872 100644
+index cf8b6ff..274271e 100644
 --- a/drivers/net/ethernet/dec/tulip/de4x5.c
 +++ b/drivers/net/ethernet/dec/tulip/de4x5.c
-@@ -5388,7 +5388,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+@@ -5387,7 +5387,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
        for (i=0; i<ETH_ALEN; i++) {
            tmp.addr[i] = dev->dev_addr[i];
        }
@@ -46212,7 +47966,7 @@ index c05b66d..ed69872 100644
        break;
  
      case DE4X5_SET_HWADDR:           /* Set the hardware address */
-@@ -5428,7 +5428,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+@@ -5427,7 +5427,7 @@ de4x5_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
        spin_lock_irqsave(&lp->lock, flags);
        memcpy(&statbuf, &lp->pktStats, ioc->len);
        spin_unlock_irqrestore(&lp->lock, flags);
@@ -46222,10 +47976,10 @@ index c05b66d..ed69872 100644
        break;
      }
 diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
-index dc19bc5..f2d4548 100644
+index 597c463..5cc1a7f 100644
 --- a/drivers/net/ethernet/emulex/benet/be_main.c
 +++ b/drivers/net/ethernet/emulex/benet/be_main.c
-@@ -535,7 +535,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val)
+@@ -537,7 +537,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val)
  
        if (wrapped)
                newacc += 65536;
@@ -46235,7 +47989,7 @@ index dc19bc5..f2d4548 100644
  
  static void populate_erx_stats(struct be_adapter *adapter,
 diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
-index 68069ea..c4484f6 100644
+index c77fa4a..7fd42fc 100644
 --- a/drivers/net/ethernet/faraday/ftgmac100.c
 +++ b/drivers/net/ethernet/faraday/ftgmac100.c
 @@ -30,6 +30,8 @@
@@ -46248,7 +48002,7 @@ index 68069ea..c4484f6 100644
  
  #include "ftgmac100.h"
 diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c
-index 8be5b40..081bc1b 100644
+index 4ff1adc..0ea6bf4 100644
 --- a/drivers/net/ethernet/faraday/ftmac100.c
 +++ b/drivers/net/ethernet/faraday/ftmac100.c
 @@ -31,6 +31,8 @@
@@ -46261,10 +48015,10 @@ index 8be5b40..081bc1b 100644
  #include "ftmac100.h"
  
 diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
-index e61e637..9117795 100644
+index 537b621..07f87ce 100644
 --- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
 +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
-@@ -436,7 +436,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf)
+@@ -401,7 +401,7 @@ void i40e_ptp_set_increment(struct i40e_pf *pf)
        wr32(hw, I40E_PRTTSYN_INC_H, incval >> 32);
  
        /* Update the base adjustement value. */
@@ -46274,10 +48028,10 @@ index e61e637..9117795 100644
  }
  
 diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
-index 8902ae6..e7bcdce 100644
+index 5fd4b52..87aa34b 100644
 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
 +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
-@@ -771,7 +771,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
+@@ -794,7 +794,7 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
        }
  
        /* update the base incval used to calculate frequency adjustment */
@@ -46286,11 +48040,26 @@ index 8902ae6..e7bcdce 100644
        smp_mb();
  
        /* need lock to prevent incorrect read while modifying cyclecounter */
+diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+index 454d9fe..59f0f0b 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
++++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+@@ -458,8 +458,8 @@ static bool mlx4_en_process_tx_cq(struct net_device *dev,
+       wmb();
+       /* we want to dirty this cache line once */
+-      ACCESS_ONCE(ring->last_nr_txbb) = last_nr_txbb;
+-      ACCESS_ONCE(ring->cons) = ring_cons + txbbs_skipped;
++      ACCESS_ONCE_RW(ring->last_nr_txbb) = last_nr_txbb;
++      ACCESS_ONCE_RW(ring->cons) = ring_cons + txbbs_skipped;
+       netdev_tx_completed_queue(ring->tx_queue, packets, bytes);
 diff --git a/drivers/net/ethernet/neterion/vxge/vxge-config.c b/drivers/net/ethernet/neterion/vxge/vxge-config.c
-index 089b713..28d87ae 100644
+index 2bbd01f..e8baa64 100644
 --- a/drivers/net/ethernet/neterion/vxge/vxge-config.c
 +++ b/drivers/net/ethernet/neterion/vxge/vxge-config.c
-@@ -3461,7 +3461,10 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
+@@ -3457,7 +3457,10 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
        struct __vxge_hw_fifo *fifo;
        struct vxge_hw_fifo_config *config;
        u32 txdl_size, txdl_per_memblock;
@@ -46302,7 +48071,7 @@ index 089b713..28d87ae 100644
        struct __vxge_hw_virtualpath *vpath;
  
        if ((vp == NULL) || (attr == NULL)) {
-@@ -3544,8 +3547,6 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
+@@ -3540,8 +3543,6 @@ __vxge_hw_fifo_create(struct __vxge_hw_vpath_handle *vp,
                goto exit;
        }
  
@@ -46312,10 +48081,10 @@ index 089b713..28d87ae 100644
                __vxge_hw_mempool_create(vpath->hldev,
                        fifo->config->memblock_size,
 diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
-index ba20c72..f30c0fe 100644
+index 2bb48d5..d1a865d 100644
 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
 +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
-@@ -2176,7 +2176,9 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
+@@ -2324,7 +2324,9 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter)
                max_tx_rings = QLCNIC_MAX_VNIC_TX_RINGS;
        } else if (ret == QLC_83XX_DEFAULT_OPMODE) {
                ahw->nic_mode = QLCNIC_DEFAULT_MODE;
@@ -46358,10 +48127,10 @@ index be7d7a6..a8983f8 100644
        default:
                dev_err(&adapter->pdev->dev, "Invalid Virtual NIC opmode\n");
 diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
-index 37b979b..50f5b95 100644
+index c9f57fb..208bdc1 100644
 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
 +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c
-@@ -1217,7 +1217,7 @@ flash_temp:
+@@ -1285,7 +1285,7 @@ flash_temp:
  int qlcnic_dump_fw(struct qlcnic_adapter *adapter)
  {
        struct qlcnic_fw_dump *fw_dump = &adapter->ahw->fw_dump;
@@ -46371,10 +48140,10 @@ index 37b979b..50f5b95 100644
        u32 entry_offset, dump, no_entries, buf_offset = 0;
        int i, k, ops_cnt, ops_index, dump_size = 0;
 diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
-index aa1c079..2b1a3e8 100644
+index cf154f7..c948d1b 100644
 --- a/drivers/net/ethernet/realtek/r8169.c
 +++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -758,22 +758,22 @@ struct rtl8169_private {
+@@ -788,22 +788,22 @@ struct rtl8169_private {
        struct mdio_ops {
                void (*write)(struct rtl8169_private *, int, int);
                int (*read)(struct rtl8169_private *, int);
@@ -46415,7 +48184,7 @@ index 6b861e3..204ac86 100644
                                MC_CMD_PTP_IN_SYNCHRONIZE_LEN);
        EFX_BUG_ON_PARANOID(rc);
 diff --git a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
-index 50617c5..b13724c 100644
+index 08c483b..2c4a553 100644
 --- a/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
 +++ b/drivers/net/ethernet/stmicro/stmmac/mmc_core.c
 @@ -140,8 +140,8 @@ void dwmac_mmc_ctrl(void __iomem *ioaddr, unsigned int mode)
@@ -46430,23 +48199,23 @@ index 50617c5..b13724c 100644
  
  /* To mask all all interrupts.*/
 diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
-index d18f711d..5755800 100644
+index 2f48f79..8ae1a1a 100644
 --- a/drivers/net/hyperv/hyperv_net.h
 +++ b/drivers/net/hyperv/hyperv_net.h
-@@ -101,7 +101,7 @@ struct rndis_device {
+@@ -171,7 +171,7 @@ struct rndis_device {
        enum rndis_device_state state;
        bool link_state;
+       bool link_change;
 -      atomic_t new_req_id;
 +      atomic_unchecked_t new_req_id;
  
        spinlock_t request_lock;
        struct list_head req_list;
 diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
-index 143a98c..d54fbaa 100644
+index 2b86f0b..ecc996f 100644
 --- a/drivers/net/hyperv/rndis_filter.c
 +++ b/drivers/net/hyperv/rndis_filter.c
-@@ -100,7 +100,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
+@@ -102,7 +102,7 @@ static struct rndis_request *get_rndis_request(struct rndis_device *dev,
         * template
         */
        set = &rndis_msg->msg.set_req;
@@ -46455,7 +48224,7 @@ index 143a98c..d54fbaa 100644
  
        /* Add to the request list */
        spin_lock_irqsave(&dev->request_lock, flags);
-@@ -834,7 +834,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev)
+@@ -911,7 +911,7 @@ static void rndis_filter_halt_device(struct rndis_device *dev)
  
        /* Setup the rndis set */
        halt = &request->request_msg.msg.halt_req;
@@ -46465,10 +48234,10 @@ index 143a98c..d54fbaa 100644
        /* Ignore return since this msg is optional. */
        rndis_filter_send_request(dev, request);
 diff --git a/drivers/net/ieee802154/fakehard.c b/drivers/net/ieee802154/fakehard.c
-index 78f18be..1d19c62 100644
+index 6cbc56a..5f7e6c8 100644
 --- a/drivers/net/ieee802154/fakehard.c
 +++ b/drivers/net/ieee802154/fakehard.c
-@@ -364,7 +364,7 @@ static int ieee802154fake_probe(struct platform_device *pdev)
+@@ -365,7 +365,7 @@ static int ieee802154fake_probe(struct platform_device *pdev)
        phy->transmit_power = 0xbf;
  
        dev->netdev_ops = &fake_ops;
@@ -46477,11 +48246,33 @@ index 78f18be..1d19c62 100644
  
        priv = netdev_priv(dev);
        priv->phy = phy;
+diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
+index 34f846b..4a0d5b1 100644
+--- a/drivers/net/ifb.c
++++ b/drivers/net/ifb.c
+@@ -253,7 +253,7 @@ static int ifb_validate(struct nlattr *tb[], struct nlattr *data[])
+       return 0;
+ }
+-static struct rtnl_link_ops ifb_link_ops __read_mostly = {
++static struct rtnl_link_ops ifb_link_ops = {
+       .kind           = "ifb",
+       .priv_size      = sizeof(struct ifb_private),
+       .setup          = ifb_setup,
 diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
-index 7eec598..90b8428 100644
+index bfb0b6e..5c396ce 100644
 --- a/drivers/net/macvlan.c
 +++ b/drivers/net/macvlan.c
-@@ -984,13 +984,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = {
+@@ -335,7 +335,7 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port,
+ free_nskb:
+       kfree_skb(nskb);
+ err:
+-      atomic_long_inc(&skb->dev->rx_dropped);
++      atomic_long_inc_unchecked(&skb->dev->rx_dropped);
+ }
+ static void macvlan_flush_sources(struct macvlan_port *port,
+@@ -1454,13 +1454,15 @@ static const struct nla_policy macvlan_policy[IFLA_MACVLAN_MAX + 1] = {
  int macvlan_link_register(struct rtnl_link_ops *ops)
  {
        /* common fields */
@@ -46504,7 +48295,7 @@ index 7eec598..90b8428 100644
  
        return rtnl_link_register(ops);
  };
-@@ -1044,7 +1046,7 @@ static int macvlan_device_event(struct notifier_block *unused,
+@@ -1540,7 +1542,7 @@ static int macvlan_device_event(struct notifier_block *unused,
        return NOTIFY_DONE;
  }
  
@@ -46514,9 +48305,18 @@ index 7eec598..90b8428 100644
  };
  
 diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
-index 3381c4f..dea5fd5 100644
+index 880cc09..6a68ba6 100644
 --- a/drivers/net/macvtap.c
 +++ b/drivers/net/macvtap.c
+@@ -422,7 +422,7 @@ static void macvtap_setup(struct net_device *dev)
+       dev->tx_queue_len = TUN_READQ_SIZE;
+ }
+-static struct rtnl_link_ops macvtap_link_ops __read_mostly = {
++static struct rtnl_link_ops macvtap_link_ops = {
+       .kind           = "macvtap",
+       .setup          = macvtap_setup,
+       .newlink        = macvtap_newlink,
 @@ -1020,7 +1020,7 @@ static long macvtap_ioctl(struct file *file, unsigned int cmd,
                }
  
@@ -46535,11 +48335,24 @@ index 3381c4f..dea5fd5 100644
        .notifier_call  = macvtap_device_event,
  };
  
+diff --git a/drivers/net/nlmon.c b/drivers/net/nlmon.c
+index 34924df..a747360 100644
+--- a/drivers/net/nlmon.c
++++ b/drivers/net/nlmon.c
+@@ -154,7 +154,7 @@ static int nlmon_validate(struct nlattr *tb[], struct nlattr *data[])
+       return 0;
+ }
+-static struct rtnl_link_ops nlmon_link_ops __read_mostly = {
++static struct rtnl_link_ops nlmon_link_ops = {
+       .kind                   = "nlmon",
+       .priv_size              = sizeof(struct nlmon),
+       .setup                  = nlmon_setup,
 diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
-index e3923eb..2a0373b 100644
+index 794a473..9fd437b 100644
 --- a/drivers/net/ppp/ppp_generic.c
 +++ b/drivers/net/ppp/ppp_generic.c
-@@ -1012,7 +1012,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+@@ -1020,7 +1020,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
        void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data;
        struct ppp_stats stats;
        struct ppp_comp_stats cstats;
@@ -46547,7 +48360,7 @@ index e3923eb..2a0373b 100644
  
        switch (cmd) {
        case SIOCGPPPSTATS:
-@@ -1034,8 +1033,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+@@ -1042,8 +1041,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
                break;
  
        case SIOCGPPPVER:
@@ -46558,10 +48371,10 @@ index e3923eb..2a0373b 100644
                err = 0;
                break;
 diff --git a/drivers/net/slip/slhc.c b/drivers/net/slip/slhc.c
-index 1252d9c..80e660b 100644
+index 079f7ad..b2a2bfa7 100644
 --- a/drivers/net/slip/slhc.c
 +++ b/drivers/net/slip/slhc.c
-@@ -488,7 +488,7 @@ slhc_uncompress(struct slcompress *comp, unsigned char *icp, int isize)
+@@ -487,7 +487,7 @@ slhc_uncompress(struct slcompress *comp, unsigned char *icp, int isize)
        register struct tcphdr *thp;
        register struct iphdr *ip;
        register struct cstate *cs;
@@ -46571,10 +48384,19 @@ index 1252d9c..80e660b 100644
  
        /* We've got a compressed packet; read the change byte */
 diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
-index ce4989b..b40b328 100644
+index 2368395..bf6fe96 100644
 --- a/drivers/net/team/team.c
 +++ b/drivers/net/team/team.c
-@@ -2868,7 +2868,7 @@ static int team_device_event(struct notifier_block *unused,
+@@ -2090,7 +2090,7 @@ static unsigned int team_get_num_rx_queues(void)
+       return TEAM_DEFAULT_NUM_RX_QUEUES;
+ }
+-static struct rtnl_link_ops team_link_ops __read_mostly = {
++static struct rtnl_link_ops team_link_ops = {
+       .kind                   = DRV_NAME,
+       .priv_size              = sizeof(struct team),
+       .setup                  = team_setup,
+@@ -2880,7 +2880,7 @@ static int team_device_event(struct notifier_block *unused,
        return NOTIFY_DONE;
  }
  
@@ -46584,10 +48406,19 @@ index ce4989b..b40b328 100644
  };
  
 diff --git a/drivers/net/tun.c b/drivers/net/tun.c
-index ee328ba..c4a0041 100644
+index 9dd3746..74f191e 100644
 --- a/drivers/net/tun.c
 +++ b/drivers/net/tun.c
-@@ -1876,7 +1876,7 @@ unlock:
+@@ -1426,7 +1426,7 @@ static int tun_validate(struct nlattr *tb[], struct nlattr *data[])
+       return -EINVAL;
+ }
+-static struct rtnl_link_ops tun_link_ops __read_mostly = {
++static struct rtnl_link_ops tun_link_ops = {
+       .kind           = DRV_NAME,
+       .priv_size      = sizeof(struct tun_struct),
+       .setup          = tun_setup,
+@@ -1868,7 +1868,7 @@ unlock:
  }
  
  static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
@@ -46596,7 +48427,7 @@ index ee328ba..c4a0041 100644
  {
        struct tun_file *tfile = file->private_data;
        struct tun_struct *tun;
-@@ -1889,6 +1889,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
+@@ -1881,6 +1881,9 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
        unsigned int ifindex;
        int ret;
  
@@ -46607,7 +48438,7 @@ index ee328ba..c4a0041 100644
                if (copy_from_user(&ifr, argp, ifreq_len))
                        return -EFAULT;
 diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
-index 660bd5e..ac59452 100644
+index babda7d..e40c90a 100644
 --- a/drivers/net/usb/hso.c
 +++ b/drivers/net/usb/hso.c
 @@ -71,7 +71,7 @@
@@ -46619,7 +48450,7 @@ index 660bd5e..ac59452 100644
  
  #define MOD_AUTHOR                    "Option Wireless"
  #define MOD_DESCRIPTION                       "USB High Speed Option driver"
-@@ -1179,7 +1179,7 @@ static void put_rxbuf_data_and_resubmit_ctrl_urb(struct hso_serial *serial)
+@@ -1178,7 +1178,7 @@ static void put_rxbuf_data_and_resubmit_ctrl_urb(struct hso_serial *serial)
        struct urb *urb;
  
        urb = serial->rx_urb[0];
@@ -46628,7 +48459,7 @@ index 660bd5e..ac59452 100644
                count = put_rxbuf_data(urb, serial);
                if (count == -1)
                        return;
-@@ -1217,7 +1217,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
+@@ -1216,7 +1216,7 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
        DUMP1(urb->transfer_buffer, urb->actual_length);
  
        /* Anyone listening? */
@@ -46637,7 +48468,7 @@ index 660bd5e..ac59452 100644
                return;
  
        if (serial->parent->port_spec & HSO_INFO_CRC_BUG)
-@@ -1287,8 +1287,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
+@@ -1278,8 +1278,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
        tty_port_tty_set(&serial->port, tty);
  
        /* check for port already opened, if not set the termios */
@@ -46647,7 +48478,7 @@ index 660bd5e..ac59452 100644
                serial->rx_state = RX_IDLE;
                /* Force default termio settings */
                _hso_serial_set_termios(tty, NULL);
-@@ -1300,7 +1299,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
+@@ -1289,7 +1288,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
                result = hso_start_serial_device(serial->parent, GFP_KERNEL);
                if (result) {
                        hso_stop_serial_device(serial->parent);
@@ -46656,7 +48487,7 @@ index 660bd5e..ac59452 100644
                        kref_put(&serial->parent->ref, hso_serial_ref_free);
                }
        } else {
-@@ -1337,10 +1336,10 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
+@@ -1326,10 +1325,10 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)
  
        /* reset the rts and dtr */
        /* do the actual close */
@@ -46670,7 +48501,7 @@ index 660bd5e..ac59452 100644
                tty_port_tty_set(&serial->port, NULL);
                if (!usb_gone)
                        hso_stop_serial_device(serial->parent);
-@@ -1416,7 +1415,7 @@ static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old)
+@@ -1404,7 +1403,7 @@ static void hso_serial_set_termios(struct tty_struct *tty, struct ktermios *old)
  
        /* the actual setup */
        spin_lock_irqsave(&serial->serial_lock, flags);
@@ -46679,7 +48510,7 @@ index 660bd5e..ac59452 100644
                _hso_serial_set_termios(tty, old);
        else
                tty->termios = *old;
-@@ -1885,7 +1884,7 @@ static void intr_callback(struct urb *urb)
+@@ -1873,7 +1872,7 @@ static void intr_callback(struct urb *urb)
                                D1("Pending read interrupt on port %d\n", i);
                                spin_lock(&serial->serial_lock);
                                if (serial->rx_state == RX_IDLE &&
@@ -46688,7 +48519,7 @@ index 660bd5e..ac59452 100644
                                        /* Setup and send a ctrl req read on
                                         * port i */
                                        if (!serial->rx_urb_filled[0]) {
-@@ -3061,7 +3060,7 @@ static int hso_resume(struct usb_interface *iface)
+@@ -3047,7 +3046,7 @@ static int hso_resume(struct usb_interface *iface)
        /* Start all serial ports */
        for (i = 0; i < HSO_SERIAL_TTY_MINORS; i++) {
                if (serial_table[i] && (serial_table[i]->interface == iface)) {
@@ -46698,13 +48529,13 @@ index 660bd5e..ac59452 100644
                                    hso_start_serial_device(serial_table[i], GFP_NOIO);
                                hso_kick_transmit(dev2ser(serial_table[i]));
 diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
-index 3fbfb08..2c16265 100644
+index c6554c7..7e2ebd7 100644
 --- a/drivers/net/usb/r8152.c
 +++ b/drivers/net/usb/r8152.c
-@@ -567,7 +567,7 @@ struct r8152 {
-               void (*up)(struct r8152 *);
-               void (*down)(struct r8152 *);
+@@ -577,7 +577,7 @@ struct r8152 {
                void (*unload)(struct r8152 *);
+               int (*eee_get)(struct r8152 *, struct ethtool_eee *);
+               int (*eee_set)(struct r8152 *, struct ethtool_eee *);
 -      } rtl_ops;
 +      } __no_const rtl_ops;
  
@@ -46733,10 +48564,10 @@ index a2515887..6d13233 100644
  
        /* we will have to manufacture ethernet headers, prepare template */
 diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
-index 8a852b5..668a4b6 100644
+index b0bc8ea..3af931b5 100644
 --- a/drivers/net/virtio_net.c
 +++ b/drivers/net/virtio_net.c
-@@ -47,7 +47,7 @@ module_param(gso, bool, 0444);
+@@ -48,7 +48,7 @@ module_param(gso, bool, 0444);
  #define RECEIVE_AVG_WEIGHT 64
  
  /* Minimum alignment for mergeable packet buffers. */
@@ -46746,10 +48577,10 @@ index 8a852b5..668a4b6 100644
  #define VIRTNET_DRIVER_VERSION "1.0.0"
  
 diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
-index 77dcf92..549924a 100644
+index 42b2d6a5..2a2cb41 100644
 --- a/drivers/net/vxlan.c
 +++ b/drivers/net/vxlan.c
-@@ -2839,7 +2839,7 @@ nla_put_failure:
+@@ -2695,7 +2695,7 @@ nla_put_failure:
        return -EMSGSIZE;
  }
  
@@ -46758,7 +48589,7 @@ index 77dcf92..549924a 100644
        .kind           = "vxlan",
        .maxtype        = IFLA_VXLAN_MAX,
        .policy         = vxlan_policy,
-@@ -2886,7 +2886,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused,
+@@ -2742,7 +2742,7 @@ static int vxlan_lowerdev_event(struct notifier_block *unused,
        return NOTIFY_DONE;
  }
  
@@ -46883,24 +48714,6 @@ index 5920c99..ff2e4a5 100644
  };
  
  static void
-diff --git a/drivers/net/wan/x25_asy.c b/drivers/net/wan/x25_asy.c
-index 5895f19..fa9fdfa 100644
---- a/drivers/net/wan/x25_asy.c
-+++ b/drivers/net/wan/x25_asy.c
-@@ -122,8 +122,12 @@ static int x25_asy_change_mtu(struct net_device *dev, int newmtu)
- {
-       struct x25_asy *sl = netdev_priv(dev);
-       unsigned char *xbuff, *rbuff;
--      int len = 2 * newmtu;
-+      int len;
-+      if (newmtu > 65534)
-+              return -EINVAL;
-+
-+      len = 2 * newmtu;
-       xbuff = kmalloc(len + 4, GFP_ATOMIC);
-       rbuff = kmalloc(len + 4, GFP_ATOMIC);
 diff --git a/drivers/net/wan/z85230.c b/drivers/net/wan/z85230.c
 index feacc3b..5bac0de 100644
 --- a/drivers/net/wan/z85230.c
@@ -46967,7 +48780,7 @@ index 0b60295..b8bfa5b 100644
                if (rd == NULL) {
                        result = -ENOMEM;
 diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
-index 64747d4..17c4cf3 100644
+index e71a2ce..2268d61 100644
 --- a/drivers/net/wireless/airo.c
 +++ b/drivers/net/wireless/airo.c
 @@ -7846,7 +7846,7 @@ static int writerids(struct net_device *dev, aironet_ioctl *comp) {
@@ -46980,7 +48793,7 @@ index 64747d4..17c4cf3 100644
  
        /* Only super-user can write RIDs */
 diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
-index 99b3bfa..9559372 100644
+index da92bfa..5a9001a 100644
 --- a/drivers/net/wireless/at76c50x-usb.c
 +++ b/drivers/net/wireless/at76c50x-usb.c
 @@ -353,7 +353,7 @@ static int at76_dfu_get_state(struct usb_device *udev, u8 *state)
@@ -46993,10 +48806,10 @@ index 99b3bfa..9559372 100644
        return msecs_to_jiffies((s->poll_timeout[2] << 16)
                                | (s->poll_timeout[1] << 8)
 diff --git a/drivers/net/wireless/ath/ath10k/htc.c b/drivers/net/wireless/ath/ath10k/htc.c
-index 7f1bccd..ca2ffca 100644
+index 676bd4e..0b807a3 100644
 --- a/drivers/net/wireless/ath/ath10k/htc.c
 +++ b/drivers/net/wireless/ath/ath10k/htc.c
-@@ -840,7 +840,10 @@ void ath10k_htc_stop(struct ath10k_htc *htc)
+@@ -848,7 +848,10 @@ int ath10k_htc_start(struct ath10k_htc *htc)
  /* registered target arrival callback from the HIF layer */
  int ath10k_htc_init(struct ath10k *ar)
  {
@@ -47008,7 +48821,7 @@ index 7f1bccd..ca2ffca 100644
        struct ath10k_htc_ep *ep = NULL;
        struct ath10k_htc *htc = &ar->htc;
  
-@@ -850,8 +853,6 @@ int ath10k_htc_init(struct ath10k *ar)
+@@ -857,8 +860,6 @@ int ath10k_htc_init(struct ath10k *ar)
        ath10k_htc_reset_endpoint_states(htc);
  
        /* setup HIF layer callbacks */
@@ -47018,10 +48831,10 @@ index 7f1bccd..ca2ffca 100644
  
        /* Get HIF default pipe for HTC message exchange */
 diff --git a/drivers/net/wireless/ath/ath10k/htc.h b/drivers/net/wireless/ath/ath10k/htc.h
-index 4716d33..a688310 100644
+index 527179c..a890150 100644
 --- a/drivers/net/wireless/ath/ath10k/htc.h
 +++ b/drivers/net/wireless/ath/ath10k/htc.h
-@@ -271,13 +271,13 @@ enum ath10k_htc_ep_id {
+@@ -270,13 +270,13 @@ enum ath10k_htc_ep_id {
  
  struct ath10k_htc_ops {
        void (*target_send_suspend_complete)(struct ath10k *ar);
@@ -47038,7 +48851,7 @@ index 4716d33..a688310 100644
  /* service connection information */
  struct ath10k_htc_svc_conn_req {
 diff --git a/drivers/net/wireless/ath/ath9k/ar9002_mac.c b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
-index 741b38d..b7ae41b 100644
+index 2a93519..7052786 100644
 --- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c
 +++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
 @@ -220,8 +220,8 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
@@ -47093,9 +48906,9 @@ index 741b38d..b7ae41b 100644
 -      ACCESS_ONCE(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
 +      ACCESS_ONCE_RW(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
                | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
-               | SM(i->txpower, AR_XmitPower)
+               | SM(i->txpower, AR_XmitPower0)
                | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
-@@ -289,19 +289,19 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+@@ -289,27 +289,27 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
                | (i->flags & ATH9K_TXDESC_RTSENA ? AR_RTSEnable :
                   (i->flags & ATH9K_TXDESC_CTSENA ? AR_CTSEnable : 0));
  
@@ -47120,8 +48933,19 @@ index 741b38d..b7ae41b 100644
                | set11nRateFlags(i->rates, 1)
                | set11nRateFlags(i->rates, 2)
                | set11nRateFlags(i->rates, 3)
+               | SM(i->rtscts_rate, AR_RTSCTSRate);
+-      ACCESS_ONCE(ads->ds_ctl9) = SM(i->txpower, AR_XmitPower1);
+-      ACCESS_ONCE(ads->ds_ctl10) = SM(i->txpower, AR_XmitPower2);
+-      ACCESS_ONCE(ads->ds_ctl11) = SM(i->txpower, AR_XmitPower3);
++      ACCESS_ONCE_RW(ads->ds_ctl9) = SM(i->txpower, AR_XmitPower1);
++      ACCESS_ONCE_RW(ads->ds_ctl10) = SM(i->txpower, AR_XmitPower2);
++      ACCESS_ONCE_RW(ads->ds_ctl11) = SM(i->txpower, AR_XmitPower3);
+ }
+ static int ar9002_hw_proc_txdesc(struct ath_hw *ah, void *ds,
 diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-index 729ffbf..49f50e3 100644
+index 057b165..98ae88f 100644
 --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
 +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
 @@ -39,47 +39,47 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
@@ -47211,9 +49035,9 @@ index 729ffbf..49f50e3 100644
 -      ACCESS_ONCE(ads->ctl11) = (i->pkt_len & AR_FrameLen)
 +      ACCESS_ONCE_RW(ads->ctl11) = (i->pkt_len & AR_FrameLen)
                | (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
-               | SM(i->txpower, AR_XmitPower)
+               | SM(i->txpower, AR_XmitPower0)
                | (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
-@@ -135,22 +135,22 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
+@@ -135,26 +135,26 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
        val = (i->flags & ATH9K_TXDESC_PAPRD) >> ATH9K_TXDESC_PAPRD_S;
        ctl12 |= SM(val, AR_PAPRDChainMask);
  
@@ -47239,14 +49063,21 @@ index 729ffbf..49f50e3 100644
  
 -      ACCESS_ONCE(ads->ctl19) = AR_Not_Sounding;
 +      ACCESS_ONCE_RW(ads->ctl19) = AR_Not_Sounding;
+-      ACCESS_ONCE(ads->ctl20) = SM(i->txpower, AR_XmitPower1);
+-      ACCESS_ONCE(ads->ctl21) = SM(i->txpower, AR_XmitPower2);
+-      ACCESS_ONCE(ads->ctl22) = SM(i->txpower, AR_XmitPower3);
++      ACCESS_ONCE_RW(ads->ctl20) = SM(i->txpower, AR_XmitPower1);
++      ACCESS_ONCE_RW(ads->ctl21) = SM(i->txpower, AR_XmitPower2);
++      ACCESS_ONCE_RW(ads->ctl22) = SM(i->txpower, AR_XmitPower3);
  }
  
  static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
 diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
-index 0acd4b5..0591c91 100644
+index 975074f..e9440da 100644
 --- a/drivers/net/wireless/ath/ath9k/hw.h
 +++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -629,7 +629,7 @@ struct ath_hw_private_ops {
+@@ -630,7 +630,7 @@ struct ath_hw_private_ops {
  
        /* ANI */
        void (*ani_cache_ini_regs)(struct ath_hw *ah);
@@ -47255,7 +49086,7 @@ index 0acd4b5..0591c91 100644
  
  /**
   * struct ath_spec_scan - parameters for Atheros spectral scan
-@@ -706,7 +706,7 @@ struct ath_hw_ops {
+@@ -708,7 +708,7 @@ struct ath_hw_ops {
  #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
        void (*set_bt_ant_diversity)(struct ath_hw *hw, bool enable);
  #endif
@@ -47264,11 +49095,44 @@ index 0acd4b5..0591c91 100644
  
  struct ath_nf_limits {
        s16 max;
+diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
+index 4f18a6b..b07d92f 100644
+--- a/drivers/net/wireless/ath/ath9k/main.c
++++ b/drivers/net/wireless/ath/ath9k/main.c
+@@ -2454,16 +2454,18 @@ void ath9k_fill_chanctx_ops(void)
+       if (!ath9k_is_chanctx_enabled())
+               return;
+-      ath9k_ops.hw_scan                  = ath9k_hw_scan;
+-      ath9k_ops.cancel_hw_scan           = ath9k_cancel_hw_scan;
+-      ath9k_ops.remain_on_channel        = ath9k_remain_on_channel;
+-      ath9k_ops.cancel_remain_on_channel = ath9k_cancel_remain_on_channel;
+-      ath9k_ops.add_chanctx              = ath9k_add_chanctx;
+-      ath9k_ops.remove_chanctx           = ath9k_remove_chanctx;
+-      ath9k_ops.change_chanctx           = ath9k_change_chanctx;
+-      ath9k_ops.assign_vif_chanctx       = ath9k_assign_vif_chanctx;
+-      ath9k_ops.unassign_vif_chanctx     = ath9k_unassign_vif_chanctx;
+-      ath9k_ops.mgd_prepare_tx           = ath9k_mgd_prepare_tx;
++      pax_open_kernel();
++      *(void **)&ath9k_ops.hw_scan                  = ath9k_hw_scan;
++      *(void **)&ath9k_ops.cancel_hw_scan           = ath9k_cancel_hw_scan;
++      *(void **)&ath9k_ops.remain_on_channel        = ath9k_remain_on_channel;
++      *(void **)&ath9k_ops.cancel_remain_on_channel = ath9k_cancel_remain_on_channel;
++      *(void **)&ath9k_ops.add_chanctx              = ath9k_add_chanctx;
++      *(void **)&ath9k_ops.remove_chanctx           = ath9k_remove_chanctx;
++      *(void **)&ath9k_ops.change_chanctx           = ath9k_change_chanctx;
++      *(void **)&ath9k_ops.assign_vif_chanctx       = ath9k_assign_vif_chanctx;
++      *(void **)&ath9k_ops.unassign_vif_chanctx     = ath9k_unassign_vif_chanctx;
++      *(void **)&ath9k_ops.mgd_prepare_tx           = ath9k_mgd_prepare_tx;
++      pax_close_kernel();
+ }
+ #endif
 diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
-index 92190da..f3a4c4c 100644
+index 058a9f2..d5cb1ba 100644
 --- a/drivers/net/wireless/b43/phy_lp.c
 +++ b/drivers/net/wireless/b43/phy_lp.c
-@@ -2514,7 +2514,7 @@ static int lpphy_b2063_tune(struct b43_wldev *dev,
+@@ -2502,7 +2502,7 @@ static int lpphy_b2063_tune(struct b43_wldev *dev,
  {
        struct ssb_bus *bus = dev->dev->sdev->bus;
  
@@ -47293,7 +49157,7 @@ index dc1d20c..f7a4f06 100644
  
        D_INFO("*** LOAD DRIVER ***\n");
 diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
-index d2fe259..0c4c682 100644
+index 0ffb6ff..c0b7f0e 100644
 --- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c
 +++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
 @@ -188,7 +188,7 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file,
@@ -47401,7 +49265,7 @@ index d2fe259..0c4c682 100644
        int rts;
  
        if (!priv->cfg->ht_params)
-@@ -2205,7 +2205,7 @@ static ssize_t iwl_dbgfs_echo_test_write(struct file *file,
+@@ -2204,7 +2204,7 @@ static ssize_t iwl_dbgfs_echo_test_write(struct file *file,
  {
        struct iwl_priv *priv = file->private_data;
        char buf[8];
@@ -47410,7 +49274,7 @@ index d2fe259..0c4c682 100644
  
        memset(buf, 0, sizeof(buf));
        buf_size = min(count, sizeof(buf) -  1);
-@@ -2239,7 +2239,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
+@@ -2238,7 +2238,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
        struct iwl_priv *priv = file->private_data;
        u32 event_log_flag;
        char buf[8];
@@ -47419,7 +49283,7 @@ index d2fe259..0c4c682 100644
  
        /* check that the interface is up */
        if (!iwl_is_ready(priv))
-@@ -2293,7 +2293,7 @@ static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file,
+@@ -2292,7 +2292,7 @@ static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file,
        struct iwl_priv *priv = file->private_data;
        char buf[8];
        u32 calib_disabled;
@@ -47428,32 +49292,11 @@ index d2fe259..0c4c682 100644
  
        memset(buf, 0, sizeof(buf));
        buf_size = min(count, sizeof(buf) - 1);
-diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c
-index 6a6df71..eb5c93a 100644
---- a/drivers/net/wireless/iwlwifi/dvm/main.c
-+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
-@@ -1127,7 +1127,7 @@ static void iwl_option_config(struct iwl_priv *priv)
- static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
- {
-       struct iwl_nvm_data *data = priv->nvm_data;
--      char *debug_msg;
-+      static const char debug_msg[] = "Device SKU: 24GHz %s %s, 52GHz %s %s, 11.n %s %s\n";
-       if (data->sku_cap_11n_enable &&
-           !priv->cfg->ht_params) {
-@@ -1141,7 +1141,6 @@ static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
-               return -EINVAL;
-       }
--      debug_msg = "Device SKU: 24GHz %s %s, 52GHz %s %s, 11.n %s %s\n";
-       IWL_DEBUG_INFO(priv, debug_msg,
-                      data->sku_cap_band_24GHz_enable ? "" : "NOT", "enabled",
-                      data->sku_cap_band_52GHz_enable ? "" : "NOT", "enabled",
 diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
-index 295b24c..cb4f823 100644
+index dd2f3f8..fb1ae88 100644
 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c
 +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
-@@ -1558,7 +1558,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file,
+@@ -1689,7 +1689,7 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file,
        struct isr_statistics *isr_stats = &trans_pcie->isr_stats;
  
        char buf[8];
@@ -47462,7 +49305,7 @@ index 295b24c..cb4f823 100644
        u32 reset_flag;
  
        memset(buf, 0, sizeof(buf));
-@@ -1579,7 +1579,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file,
+@@ -1710,7 +1710,7 @@ static ssize_t iwl_dbgfs_csr_write(struct file *file,
  {
        struct iwl_trans *trans = file->private_data;
        char buf[8];
@@ -47472,10 +49315,10 @@ index 295b24c..cb4f823 100644
  
        memset(buf, 0, sizeof(buf));
 diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
-index 9d7a52f..2729a99 100644
+index c9ad4cf..49a2fa0 100644
 --- a/drivers/net/wireless/mac80211_hwsim.c
 +++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -2570,20 +2570,20 @@ static int __init init_mac80211_hwsim(void)
+@@ -2577,20 +2577,20 @@ static int __init init_mac80211_hwsim(void)
        if (channels < 1)
                return -EINVAL;
  
@@ -47511,7 +49354,7 @@ index 9d7a52f..2729a99 100644
        spin_lock_init(&hwsim_radio_lock);
        INIT_LIST_HEAD(&hwsim_radios);
 diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
-index 39d22a1..4ec8612 100644
+index 1a4facd..a2ecbbd 100644
 --- a/drivers/net/wireless/rndis_wlan.c
 +++ b/drivers/net/wireless/rndis_wlan.c
 @@ -1236,7 +1236,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold)
@@ -47524,7 +49367,7 @@ index 39d22a1..4ec8612 100644
  
        tmp = cpu_to_le32(rts_threshold);
 diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
-index 5d45a1a..6f5f041 100644
+index d13f25c..2573994 100644
 --- a/drivers/net/wireless/rt2x00/rt2x00.h
 +++ b/drivers/net/wireless/rt2x00/rt2x00.h
 @@ -375,7 +375,7 @@ struct rt2x00_intf {
@@ -47537,10 +49380,10 @@ index 5d45a1a..6f5f041 100644
  
  static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif)
 diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
-index 5642ccc..01f03eb 100644
+index 66ff364..3ce34f7 100644
 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
 +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
-@@ -250,9 +250,9 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev,
+@@ -224,9 +224,9 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev,
         * sequence counter given by mac80211.
         */
        if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags))
@@ -47579,7 +49422,7 @@ index b661f896..ddf7d2b 100644
                wl1251_info("using SDIO interrupt");
        }
 diff --git a/drivers/net/wireless/ti/wl12xx/main.c b/drivers/net/wireless/ti/wl12xx/main.c
-index d50dfac..0a6f5be3 100644
+index 0bccf12..3d95068 100644
 --- a/drivers/net/wireless/ti/wl12xx/main.c
 +++ b/drivers/net/wireless/ti/wl12xx/main.c
 @@ -656,7 +656,9 @@ static int wl12xx_identify_chip(struct wl1271 *wl)
@@ -47605,10 +49448,10 @@ index d50dfac..0a6f5be3 100644
                wlcore_set_min_fw_ver(wl, WL127X_CHIP_VER,
                              WL127X_IFTYPE_SR_VER,  WL127X_MAJOR_SR_VER,
 diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c
-index de5b4fa..7996ec6 100644
+index 7af1936..128bb35 100644
 --- a/drivers/net/wireless/ti/wl18xx/main.c
 +++ b/drivers/net/wireless/ti/wl18xx/main.c
-@@ -1900,8 +1900,10 @@ static int wl18xx_setup(struct wl1271 *wl)
+@@ -1916,8 +1916,10 @@ static int wl18xx_setup(struct wl1271 *wl)
        }
  
        if (!checksum_param) {
@@ -47792,7 +49635,7 @@ index 3f49345..c750d0b 100644
        return __oprofilefs_create_file(root, name,
                                        &atomic_ro_fops, 0444, val);
 diff --git a/drivers/oprofile/timer_int.c b/drivers/oprofile/timer_int.c
-index 61be1d9..dec05d7 100644
+index bdef916..88c7dee 100644
 --- a/drivers/oprofile/timer_int.c
 +++ b/drivers/oprofile/timer_int.c
 @@ -93,7 +93,7 @@ static int oprofile_cpu_notify(struct notifier_block *self,
@@ -47805,10 +49648,10 @@ index 61be1d9..dec05d7 100644
  };
  
 diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c
-index 92ed045..62d39bd7 100644
+index 3b47080..6cd05dd 100644
 --- a/drivers/parport/procfs.c
 +++ b/drivers/parport/procfs.c
-@@ -64,7 +64,7 @@ static int do_active_device(ctl_table *table, int write,
+@@ -64,7 +64,7 @@ static int do_active_device(struct ctl_table *table, int write,
  
        *ppos += len;
  
@@ -47817,7 +49660,7 @@ index 92ed045..62d39bd7 100644
  }
  
  #ifdef CONFIG_PARPORT_1284
-@@ -106,7 +106,7 @@ static int do_autoprobe(ctl_table *table, int write,
+@@ -106,7 +106,7 @@ static int do_autoprobe(struct ctl_table *table, int write,
  
        *ppos += len;
  
@@ -47827,7 +49670,7 @@ index 92ed045..62d39bd7 100644
  #endif /* IEEE1284.3 support. */
  
 diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c
-index 8dcccff..35d701d 100644
+index 6ca2399..68d866b 100644
 --- a/drivers/pci/hotplug/acpiphp_ibm.c
 +++ b/drivers/pci/hotplug/acpiphp_ibm.c
 @@ -452,7 +452,9 @@ static int __init ibm_acpiphp_init(void)
@@ -47842,7 +49685,7 @@ index 8dcccff..35d701d 100644
  
        return retval;
 diff --git a/drivers/pci/hotplug/cpcihp_generic.c b/drivers/pci/hotplug/cpcihp_generic.c
-index 7536eef..52dc8fa 100644
+index 66b7bbe..26bee78 100644
 --- a/drivers/pci/hotplug/cpcihp_generic.c
 +++ b/drivers/pci/hotplug/cpcihp_generic.c
 @@ -73,7 +73,6 @@ static u16 port;
@@ -47873,7 +49716,7 @@ index 7536eef..52dc8fa 100644
  
        status = cpci_hp_register_controller(&generic_hpc);
 diff --git a/drivers/pci/hotplug/cpcihp_zt5550.c b/drivers/pci/hotplug/cpcihp_zt5550.c
-index e8c4a7c..7046f5c 100644
+index 7ecf34e..effed62 100644
 --- a/drivers/pci/hotplug/cpcihp_zt5550.c
 +++ b/drivers/pci/hotplug/cpcihp_zt5550.c
 @@ -59,7 +59,6 @@
@@ -47884,7 +49727,7 @@ index e8c4a7c..7046f5c 100644
  static struct cpci_hp_controller zt5550_hpc;
  
  /* Primary cPCI bus bridge device */
-@@ -205,6 +204,10 @@ static int zt5550_hc_disable_irq(void)
+@@ -204,6 +203,10 @@ static int zt5550_hc_disable_irq(void)
        return 0;
  }
  
@@ -47895,13 +49738,13 @@ index e8c4a7c..7046f5c 100644
  static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
  {
        int status;
-@@ -216,16 +219,17 @@ static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id
+@@ -215,16 +218,17 @@ static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id
        dbg("returned from zt5550_hc_config");
  
        memset(&zt5550_hpc, 0, sizeof (struct cpci_hp_controller));
 -      zt5550_hpc_ops.query_enum = zt5550_hc_query_enum;
        zt5550_hpc.ops = &zt5550_hpc_ops;
-       if(!poll) {
+       if (!poll) {
                zt5550_hpc.irq = hc_dev->irq;
                zt5550_hpc.irq_flags = IRQF_SHARED;
                zt5550_hpc.dev_id = hc_dev;
@@ -47918,28 +49761,25 @@ index e8c4a7c..7046f5c 100644
                info("using ENUM# polling mode");
        }
 diff --git a/drivers/pci/hotplug/cpqphp_nvram.c b/drivers/pci/hotplug/cpqphp_nvram.c
-index 76ba8a1..20ca857 100644
+index 1e08ff8c..3cd145f 100644
 --- a/drivers/pci/hotplug/cpqphp_nvram.c
 +++ b/drivers/pci/hotplug/cpqphp_nvram.c
-@@ -428,9 +428,13 @@ static u32 store_HRT (void __iomem *rom_start)
+@@ -425,8 +425,10 @@ static u32 store_HRT (void __iomem *rom_start)
  
  void compaq_nvram_init (void __iomem *rom_start)
  {
-+
 +#ifndef CONFIG_PAX_KERNEXEC
-       if (rom_start) {
+       if (rom_start)
                compaq_int15_entry_point = (rom_start + ROM_INT15_PHY_ADDR - ROM_PHY_ADDR);
-       }
 +#endif
-+
        dbg("int15 entry  = %p\n", compaq_int15_entry_point);
  
-       /* initialize our int15 lock */
 diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c
-index cfa92a9..29539c5 100644
+index 56d8486..f26113f 100644
 --- a/drivers/pci/hotplug/pci_hotplug_core.c
 +++ b/drivers/pci/hotplug/pci_hotplug_core.c
-@@ -441,8 +441,10 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus,
+@@ -436,8 +436,10 @@ int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus,
                return -EINVAL;
        }
  
@@ -47953,7 +49793,7 @@ index cfa92a9..29539c5 100644
        mutex_lock(&pci_hp_mutex);
        /*
 diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
-index 0e0a2ff..29dff57 100644
+index 07aa722..84514b4 100644
 --- a/drivers/pci/hotplug/pciehp_core.c
 +++ b/drivers/pci/hotplug/pciehp_core.c
 @@ -92,7 +92,7 @@ static int init_slot(struct controller *ctrl)
@@ -47966,10 +49806,10 @@ index 0e0a2ff..29dff57 100644
        int retval = -ENOMEM;
  
 diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
-index fb02fc2..83dc2c3 100644
+index 084587d..4a8f9df 100644
 --- a/drivers/pci/msi.c
 +++ b/drivers/pci/msi.c
-@@ -524,8 +524,8 @@ static int populate_msi_sysfs(struct pci_dev *pdev)
+@@ -488,8 +488,8 @@ static int populate_msi_sysfs(struct pci_dev *pdev)
  {
        struct attribute **msi_attrs;
        struct attribute *msi_attr;
@@ -47980,7 +49820,7 @@ index fb02fc2..83dc2c3 100644
        const struct attribute_group **msi_irq_groups;
        struct msi_desc *entry;
        int ret = -ENOMEM;
-@@ -589,7 +589,7 @@ error_attrs:
+@@ -549,7 +549,7 @@ error_attrs:
        count = 0;
        msi_attr = msi_attrs[count];
        while (msi_attr) {
@@ -47990,10 +49830,10 @@ index fb02fc2..83dc2c3 100644
                kfree(msi_dev_attr);
                ++count;
 diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
-index 4e0acef..bd98e31 100644
+index 2c6643f..3a6d8e0 100644
 --- a/drivers/pci/pci-sysfs.c
 +++ b/drivers/pci/pci-sysfs.c
-@@ -1101,7 +1101,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine)
+@@ -1133,7 +1133,7 @@ static int pci_create_attr(struct pci_dev *pdev, int num, int write_combine)
  {
        /* allocate attribute structure, piggyback attribute name */
        int name_len = write_combine ? 13 : 10;
@@ -48002,7 +49842,7 @@ index 4e0acef..bd98e31 100644
        int retval;
  
        res_attr = kzalloc(sizeof(*res_attr) + name_len, GFP_ATOMIC);
-@@ -1286,7 +1286,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor
+@@ -1310,7 +1310,7 @@ static struct device_attribute reset_attr = __ATTR(reset, 0200, NULL, reset_stor
  static int pci_create_capabilities_sysfs(struct pci_dev *dev)
  {
        int retval;
@@ -48011,7 +49851,7 @@ index 4e0acef..bd98e31 100644
  
        /* If the device has VPD, try to expose it in sysfs. */
        if (dev->vpd) {
-@@ -1333,7 +1333,7 @@ int __must_check pci_create_sysfs_dev_files (struct pci_dev *pdev)
+@@ -1357,7 +1357,7 @@ int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev)
  {
        int retval;
        int rom_size = 0;
@@ -48021,10 +49861,10 @@ index 4e0acef..bd98e31 100644
        if (!sysfs_initialized)
                return -EACCES;
 diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
-index 6bd0822..35bc2b3 100644
+index 4a3902d..7f1fc42 100644
 --- a/drivers/pci/pci.h
 +++ b/drivers/pci/pci.h
-@@ -91,7 +91,7 @@ struct pci_vpd_ops {
+@@ -93,7 +93,7 @@ struct pci_vpd_ops {
  struct pci_vpd {
        unsigned int len;
        const struct pci_vpd_ops *ops;
@@ -48051,12 +49891,12 @@ index e1e7026..d28dd33 100644
  #define ASPM_STATE_ALL                (ASPM_STATE_L0S | ASPM_STATE_L1)
  
 diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
-index ef09f5f..49ac62f 100644
+index c8ca98c..b1bc005 100644
 --- a/drivers/pci/probe.c
 +++ b/drivers/pci/probe.c
-@@ -175,7 +175,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
+@@ -177,7 +177,7 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
        struct pci_bus_region region, inverted_region;
-       bool bar_too_big = false, bar_disabled = false;
+       bool bar_too_big = false, bar_too_high = false, bar_invalid = false;
  
 -      mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
 +      mask = type ? (u32)PCI_ROM_ADDRESS_MASK : ~0;
@@ -48064,7 +49904,7 @@ index ef09f5f..49ac62f 100644
        /* No printks while decoding is disabled! */
        if (!dev->mmio_always_on) {
 diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
-index 46d1378..30e452b 100644
+index 3f155e7..0f4b1f0 100644
 --- a/drivers/pci/proc.c
 +++ b/drivers/pci/proc.c
 @@ -434,7 +434,16 @@ static const struct file_operations proc_bus_pci_dev_operations = {
@@ -48085,10 +49925,10 @@ index 46d1378..30e452b 100644
                    &proc_bus_pci_dev_operations);
        proc_initialized = 1;
 diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c
-index 7f3aad0..7d604bb 100644
+index d866db8..c827d1f 100644
 --- a/drivers/platform/chrome/chromeos_laptop.c
 +++ b/drivers/platform/chrome/chromeos_laptop.c
-@@ -406,7 +406,7 @@ static struct chromeos_laptop cr48 = {
+@@ -479,7 +479,7 @@ static struct chromeos_laptop cr48 = {
        .callback = chromeos_laptop_dmi_matched, \
        .driver_data = (void *)&board_
  
@@ -48098,10 +49938,10 @@ index 7f3aad0..7d604bb 100644
                .ident = "Samsung Series 5 550",
                .matches = {
 diff --git a/drivers/platform/x86/alienware-wmi.c b/drivers/platform/x86/alienware-wmi.c
-index 541f951..4dfd598 100644
+index c5af23b..3d62d5e 100644
 --- a/drivers/platform/x86/alienware-wmi.c
 +++ b/drivers/platform/x86/alienware-wmi.c
-@@ -132,7 +132,7 @@ struct wmax_led_args {
+@@ -150,7 +150,7 @@ struct wmax_led_args {
  } __packed;
  
  static struct platform_device *platform_device;
@@ -48110,7 +49950,7 @@ index 541f951..4dfd598 100644
  static struct attribute **zone_attrs;
  static struct platform_zone *zone_data;
  
-@@ -143,7 +143,7 @@ static struct platform_driver platform_driver = {
+@@ -161,7 +161,7 @@ static struct platform_driver platform_driver = {
                   }
  };
  
@@ -48120,10 +49960,10 @@ index 541f951..4dfd598 100644
  };
  
 diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
-index c5e082f..d6307a0 100644
+index 21fc932..ee9394a 100644
 --- a/drivers/platform/x86/asus-wmi.c
 +++ b/drivers/platform/x86/asus-wmi.c
-@@ -1595,6 +1595,10 @@ static int show_dsts(struct seq_file *m, void *data)
+@@ -1590,6 +1590,10 @@ static int show_dsts(struct seq_file *m, void *data)
        int err;
        u32 retval = -1;
  
@@ -48134,7 +49974,7 @@ index c5e082f..d6307a0 100644
        err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval);
  
        if (err < 0)
-@@ -1611,6 +1615,10 @@ static int show_devs(struct seq_file *m, void *data)
+@@ -1606,6 +1610,10 @@ static int show_devs(struct seq_file *m, void *data)
        int err;
        u32 retval = -1;
  
@@ -48145,7 +49985,7 @@ index c5e082f..d6307a0 100644
        err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param,
                                    &retval);
  
-@@ -1635,6 +1643,10 @@ static int show_call(struct seq_file *m, void *data)
+@@ -1630,6 +1638,10 @@ static int show_call(struct seq_file *m, void *data)
        union acpi_object *obj;
        acpi_status status;
  
@@ -48195,7 +50035,7 @@ index 70222f2..8c8ce66 100644
        acpi_status status;
  
 diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
-index 9c5a074..06c976a 100644
+index 26ad9ff..7c52909 100644
 --- a/drivers/platform/x86/sony-laptop.c
 +++ b/drivers/platform/x86/sony-laptop.c
 @@ -2527,7 +2527,7 @@ static void sony_nc_gfx_switch_cleanup(struct platform_device *pd)
@@ -48253,7 +50093,7 @@ index 9c5a074..06c976a 100644
  static ssize_t sony_nc_smart_conn_store(struct device *dev,
                struct device_attribute *attr,
 diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
-index 15e61c1..40a39c7 100644
+index cf0f893..5955997 100644
 --- a/drivers/platform/x86/thinkpad_acpi.c
 +++ b/drivers/platform/x86/thinkpad_acpi.c
 @@ -2094,7 +2094,7 @@ static int hotkey_mask_get(void)
@@ -48337,28 +50177,6 @@ index 438d4c7..ca8a2fb 100644
 +
 +      pax_close_kernel();
  }
-diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
-index 01712cb..782e822 100644
---- a/drivers/pnp/resource.c
-+++ b/drivers/pnp/resource.c
-@@ -360,7 +360,7 @@ int pnp_check_irq(struct pnp_dev *dev, struct resource *res)
-               return 1;
-       /* check if the resource is valid */
--      if (*irq < 0 || *irq > 15)
-+      if (*irq > 15)
-               return 0;
-       /* check if the resource is reserved */
-@@ -424,7 +424,7 @@ int pnp_check_dma(struct pnp_dev *dev, struct resource *res)
-               return 1;
-       /* check if the resource is valid */
--      if (*dma < 0 || *dma == 4 || *dma > 7)
-+      if (*dma == 4 || *dma > 7)
-               return 0;
-       /* check if the resource is reserved */
 diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c
 index 0c52e2a..3421ab7 100644
 --- a/drivers/power/pda_power.c
@@ -48404,7 +50222,7 @@ index cc439fd..8fa30df 100644
  
  #endif /* CONFIG_SYSFS */
 diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
-index 2660664..75fcb04 100644
+index 694e8cd..9f03483 100644
 --- a/drivers/power/power_supply_core.c
 +++ b/drivers/power/power_supply_core.c
 @@ -28,7 +28,10 @@ EXPORT_SYMBOL_GPL(power_supply_class);
@@ -48419,7 +50237,7 @@ index 2660664..75fcb04 100644
  
  static bool __power_supply_is_supplied_by(struct power_supply *supplier,
                                         struct power_supply *supply)
-@@ -628,7 +631,7 @@ static int __init power_supply_class_init(void)
+@@ -637,7 +640,7 @@ static int __init power_supply_class_init(void)
                return PTR_ERR(power_supply_class);
  
        power_supply_class->dev_uevent = power_supply_uevent;
@@ -48429,10 +50247,10 @@ index 2660664..75fcb04 100644
        return 0;
  }
 diff --git a/drivers/power/power_supply_sysfs.c b/drivers/power/power_supply_sysfs.c
-index 44420d1..967126e 100644
+index 62653f5..d0bb485 100644
 --- a/drivers/power/power_supply_sysfs.c
 +++ b/drivers/power/power_supply_sysfs.c
-@@ -230,17 +230,15 @@ static struct attribute_group power_supply_attr_group = {
+@@ -238,17 +238,15 @@ static struct attribute_group power_supply_attr_group = {
        .is_visible = power_supply_attr_is_visible,
  };
  
@@ -48668,10 +50486,10 @@ index 302e626..12579af 100644
                da->attr.name = info->pin_config[i].name;
                da->attr.mode = 0644;
 diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
-index 9a09f3c..450b523 100644
+index cd87c0c..715ecbe 100644
 --- a/drivers/regulator/core.c
 +++ b/drivers/regulator/core.c
-@@ -3380,7 +3380,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
+@@ -3567,7 +3567,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
  {
        const struct regulation_constraints *constraints = NULL;
        const struct regulator_init_data *init_data;
@@ -48680,8 +50498,8 @@ index 9a09f3c..450b523 100644
        struct regulator_dev *rdev;
        struct device *dev;
        int ret, i;
-@@ -3450,7 +3450,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
-       rdev->dev.of_node = config->of_node;
+@@ -3641,7 +3641,7 @@ regulator_register(const struct regulator_desc *regulator_desc,
+       rdev->dev.class = &regulator_class;
        rdev->dev.parent = dev;
        dev_set_name(&rdev->dev, "regulator.%d",
 -                   atomic_inc_return(&regulator_no) - 1);
@@ -48690,7 +50508,7 @@ index 9a09f3c..450b523 100644
        if (ret != 0) {
                put_device(&rdev->dev);
 diff --git a/drivers/regulator/max8660.c b/drivers/regulator/max8660.c
-index 2fc4111..6aa88ca 100644
+index 7eee2ca..4024513 100644
 --- a/drivers/regulator/max8660.c
 +++ b/drivers/regulator/max8660.c
 @@ -424,8 +424,10 @@ static int max8660_probe(struct i2c_client *client,
@@ -48726,29 +50544,29 @@ index dbedf17..18ff6b7 100644
  
        if (pdata) {
 diff --git a/drivers/regulator/mc13892-regulator.c b/drivers/regulator/mc13892-regulator.c
-index f374fa5..26f0683 100644
+index 793b662..85f74cd 100644
 --- a/drivers/regulator/mc13892-regulator.c
 +++ b/drivers/regulator/mc13892-regulator.c
-@@ -582,10 +582,12 @@ static int mc13892_regulator_probe(struct platform_device *pdev)
-       }
+@@ -584,10 +584,12 @@ static int mc13892_regulator_probe(struct platform_device *pdev)
        mc13xxx_unlock(mc13892);
  
--      mc13892_regulators[MC13892_VCAM].desc.ops->set_mode
+       /* update mc13892_vcam ops */
 +      pax_open_kernel();
-+      *(void **)&mc13892_regulators[MC13892_VCAM].desc.ops->set_mode
-               = mc13892_vcam_set_mode;
--      mc13892_regulators[MC13892_VCAM].desc.ops->get_mode
-+      *(void **)&mc13892_regulators[MC13892_VCAM].desc.ops->get_mode
-               = mc13892_vcam_get_mode;
+       memcpy(&mc13892_vcam_ops, mc13892_regulators[MC13892_VCAM].desc.ops,
+                                               sizeof(struct regulator_ops));
+-      mc13892_vcam_ops.set_mode = mc13892_vcam_set_mode,
+-      mc13892_vcam_ops.get_mode = mc13892_vcam_get_mode,
++      *(void **)&mc13892_vcam_ops.set_mode = mc13892_vcam_set_mode,
++      *(void **)&mc13892_vcam_ops.get_mode = mc13892_vcam_get_mode,
 +      pax_close_kernel();
+       mc13892_regulators[MC13892_VCAM].desc.ops = &mc13892_vcam_ops;
  
        mc13xxx_data = mc13xxx_parse_regulators_dt(pdev, mc13892_regulators,
-                                       ARRAY_SIZE(mc13892_regulators));
 diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
-index 0963c93..ea29cce 100644
+index 5b2e761..c8c8a4a 100644
 --- a/drivers/rtc/rtc-cmos.c
 +++ b/drivers/rtc/rtc-cmos.c
-@@ -777,7 +777,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
+@@ -789,7 +789,9 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
        hpet_rtc_timer_init();
  
        /* export at least the first block of NVRAM */
@@ -48781,7 +50599,7 @@ index d049393..bb20be0 100644
  
        case RTC_PIE_ON:
 diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
-index f03d5ba..8325bf6 100644
+index bb43cf7..ee4d274 100644
 --- a/drivers/rtc/rtc-ds1307.c
 +++ b/drivers/rtc/rtc-ds1307.c
 @@ -107,7 +107,7 @@ struct ds1307 {
@@ -48808,47 +50626,6 @@ index 11880c1..b823aa4 100644
  
        ret = sysfs_create_bin_file(&pdev->dev.kobj, &m48t59_nvram_attr);
        if (ret)
-diff --git a/drivers/scsi/aic7xxx/aic79xx_pci.c b/drivers/scsi/aic7xxx/aic79xx_pci.c
-index 14b5f8d..cc9bd26 100644
---- a/drivers/scsi/aic7xxx/aic79xx_pci.c
-+++ b/drivers/scsi/aic7xxx/aic79xx_pci.c
-@@ -827,7 +827,7 @@ ahd_pci_intr(struct ahd_softc *ahd)
-               for (bit = 0; bit < 8; bit++) {
-                       if ((pci_status[i] & (0x1 << bit)) != 0) {
--                              static const char *s;
-+                              const char *s;
-                               s = pci_status_strings[bit];
-                               if (i == 7/*TARG*/ && bit == 3)
-@@ -887,23 +887,15 @@ ahd_pci_split_intr(struct ahd_softc *ahd, u_int intstat)
-               for (bit = 0; bit < 8; bit++) {
--                      if ((split_status[i] & (0x1 << bit)) != 0) {
--                              static const char *s;
--
--                              s = split_status_strings[bit];
--                              printk(s, ahd_name(ahd),
-+                      if ((split_status[i] & (0x1 << bit)) != 0)
-+                              printk(split_status_strings[bit], ahd_name(ahd),
-                                      split_status_source[i]);
--                      }
-                       if (i > 1)
-                               continue;
--                      if ((sg_split_status[i] & (0x1 << bit)) != 0) {
--                              static const char *s;
--
--                              s = split_status_strings[bit];
--                              printk(s, ahd_name(ahd), "SG");
--                      }
-+                      if ((sg_split_status[i] & (0x1 << bit)) != 0)
-+                              printk(split_status_strings[bit], ahd_name(ahd), "SG");
-               }
-       }
-       /*
 diff --git a/drivers/scsi/bfa/bfa_fcpim.h b/drivers/scsi/bfa/bfa_fcpim.h
 index e693af6..2e525b6 100644
 --- a/drivers/scsi/bfa/bfa_fcpim.h
@@ -48863,7 +50640,7 @@ index e693af6..2e525b6 100644
  void bfa_itn_create(struct bfa_s *bfa, struct bfa_rport_s *rport,
                void (*isr)(struct bfa_s *bfa, struct bfi_msg_s *m));
 diff --git a/drivers/scsi/bfa/bfa_fcs.c b/drivers/scsi/bfa/bfa_fcs.c
-index a3ab5cc..8143622 100644
+index 0f19455..ef7adb5 100644
 --- a/drivers/scsi/bfa/bfa_fcs.c
 +++ b/drivers/scsi/bfa/bfa_fcs.c
 @@ -38,10 +38,21 @@ struct bfa_fcs_mod_s {
@@ -48933,7 +50710,7 @@ index ff75ef8..2dfe00a 100644
  /*
   *  fcs_port_sm FCS logical port state machine
 diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h
-index 2e28392..9d865b6 100644
+index a38aafa0..fe8f03b 100644
 --- a/drivers/scsi/bfa/bfa_ioc.h
 +++ b/drivers/scsi/bfa/bfa_ioc.h
 @@ -258,7 +258,7 @@ struct bfa_ioc_cbfn_s {
@@ -49022,7 +50799,7 @@ index 045c4e1..13de803 100644
        error = bus_register(&fcoe_bus_type);
        if (error)
 diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
-index 3cbb57a..95e47a3 100644
+index 6de80e3..a11e0ac 100644
 --- a/drivers/scsi/hosts.c
 +++ b/drivers/scsi/hosts.c
 @@ -42,7 +42,7 @@
@@ -49034,7 +50811,7 @@ index 3cbb57a..95e47a3 100644
  
  
  static void scsi_host_cls_release(struct device *dev)
-@@ -369,7 +369,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)
+@@ -392,7 +392,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)
         * subtract one because we increment first then return, but we need to
         * know what the next host number was before increment
         */
@@ -49044,10 +50821,10 @@ index 3cbb57a..95e47a3 100644
  
        /* These three are default values which can be overridden */
 diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
-index fda6cf1..7a6b5d8 100644
+index cef5d49..01e280e 100644
 --- a/drivers/scsi/hpsa.c
 +++ b/drivers/scsi/hpsa.c
-@@ -699,10 +699,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q)
+@@ -701,10 +701,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q)
        unsigned long flags;
  
        if (h->transMethod & CFGTBL_Trans_io_accel1)
@@ -49060,7 +50837,7 @@ index fda6cf1..7a6b5d8 100644
  
        if ((rq->head[rq->current_entry] & 1) == rq->wraparound) {
                a = rq->head[rq->current_entry];
-@@ -5460,7 +5460,7 @@ static void start_io(struct ctlr_info *h)
+@@ -5454,7 +5454,7 @@ static void start_io(struct ctlr_info *h, unsigned long *flags)
        while (!list_empty(&h->reqQ)) {
                c = list_entry(h->reqQ.next, struct CommandList, list);
                /* can't do anything if fifo is full */
@@ -49069,16 +50846,16 @@ index fda6cf1..7a6b5d8 100644
                        h->fifo_recently_full = 1;
                        dev_warn(&h->pdev->dev, "fifo full\n");
                        break;
-@@ -5484,7 +5484,7 @@ static void start_io(struct ctlr_info *h)
+@@ -5476,7 +5476,7 @@ static void start_io(struct ctlr_info *h, unsigned long *flags)
  
                /* Tell the controller execute command */
-               spin_unlock_irqrestore(&h->lock, flags);
+               spin_unlock_irqrestore(&h->lock, *flags);
 -              h->access.submit_command(h, c);
 +              h->access->submit_command(h, c);
-               spin_lock_irqsave(&h->lock, flags);
+               spin_lock_irqsave(&h->lock, *flags);
        }
-       spin_unlock_irqrestore(&h->lock, flags);
-@@ -5492,17 +5492,17 @@ static void start_io(struct ctlr_info *h)
+ }
+@@ -5492,17 +5492,17 @@ static void lock_and_start_io(struct ctlr_info *h)
  
  static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q)
  {
@@ -49099,7 +50876,7 @@ index fda6cf1..7a6b5d8 100644
                (h->interrupts_enabled == 0);
  }
  
-@@ -6456,7 +6456,7 @@ static int hpsa_pci_init(struct ctlr_info *h)
+@@ -6445,7 +6445,7 @@ static int hpsa_pci_init(struct ctlr_info *h)
        if (prod_index < 0)
                return -ENODEV;
        h->product_name = products[prod_index].product_name;
@@ -49108,16 +50885,16 @@ index fda6cf1..7a6b5d8 100644
  
        pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S |
                               PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM);
-@@ -6735,7 +6735,7 @@ static void controller_lockup_detected(struct ctlr_info *h)
- {
+@@ -6790,7 +6790,7 @@ static void controller_lockup_detected(struct ctlr_info *h)
        unsigned long flags;
+       u32 lockup_detected;
  
 -      h->access.set_intr_mask(h, HPSA_INTR_OFF);
 +      h->access->set_intr_mask(h, HPSA_INTR_OFF);
        spin_lock_irqsave(&h->lock, flags);
-       h->lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
-       spin_unlock_irqrestore(&h->lock, flags);
-@@ -6963,7 +6963,7 @@ reinit_after_soft_reset:
+       lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET);
+       if (!lockup_detected) {
+@@ -7037,7 +7037,7 @@ reinit_after_soft_reset:
        }
  
        /* make sure the board interrupts are off */
@@ -49126,7 +50903,7 @@ index fda6cf1..7a6b5d8 100644
  
        if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx))
                goto clean2;
-@@ -6998,7 +6998,7 @@ reinit_after_soft_reset:
+@@ -7072,7 +7072,7 @@ reinit_after_soft_reset:
                 * fake ones to scoop up any residual completions.
                 */
                spin_lock_irqsave(&h->lock, flags);
@@ -49135,7 +50912,7 @@ index fda6cf1..7a6b5d8 100644
                spin_unlock_irqrestore(&h->lock, flags);
                free_irqs(h);
                rc = hpsa_request_irq(h, hpsa_msix_discard_completions,
-@@ -7017,9 +7017,9 @@ reinit_after_soft_reset:
+@@ -7091,9 +7091,9 @@ reinit_after_soft_reset:
                dev_info(&h->pdev->dev, "Board READY.\n");
                dev_info(&h->pdev->dev,
                        "Waiting for stale completions to drain.\n");
@@ -49147,7 +50924,7 @@ index fda6cf1..7a6b5d8 100644
  
                rc = controller_reset_failed(h->cfgtable);
                if (rc)
-@@ -7045,7 +7045,7 @@ reinit_after_soft_reset:
+@@ -7119,7 +7119,7 @@ reinit_after_soft_reset:
        h->drv_req_rescan = 0;
  
        /* Turn the interrupts on so we can service requests */
@@ -49156,7 +50933,7 @@ index fda6cf1..7a6b5d8 100644
  
        hpsa_hba_inquiry(h);
        hpsa_register_scsi(h);  /* hook ourselves into SCSI subsystem */
-@@ -7114,7 +7114,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
+@@ -7184,7 +7184,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
         * To write all data in the battery backed cache to disks
         */
        hpsa_flush_cache(h);
@@ -49165,7 +50942,7 @@ index fda6cf1..7a6b5d8 100644
        hpsa_free_irqs_and_disable_msix(h);
  }
  
-@@ -7232,7 +7232,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
+@@ -7302,7 +7302,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
                                CFGTBL_Trans_enable_directed_msix |
                        (trans_support & (CFGTBL_Trans_io_accel1 |
                                CFGTBL_Trans_io_accel2));
@@ -49174,7 +50951,16 @@ index fda6cf1..7a6b5d8 100644
  
        /* This is a bit complicated.  There are 8 registers on
         * the controller which we write to to tell it 8 different
-@@ -7297,12 +7297,12 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
+@@ -7344,7 +7344,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
+        * perform the superfluous readl() after each command submission.
+        */
+       if (trans_support & (CFGTBL_Trans_io_accel1 | CFGTBL_Trans_io_accel2))
+-              access = SA5_performant_access_no_read;
++              access = &SA5_performant_access_no_read;
+       /* Controller spec: zero out this buffer. */
+       for (i = 0; i < h->nreply_queues; i++)
+@@ -7374,12 +7374,12 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support)
         * enable outbound interrupt coalescing in accelerator mode;
         */
        if (trans_support & CFGTBL_Trans_io_accel1) {
@@ -49190,10 +50976,10 @@ index fda6cf1..7a6b5d8 100644
                        writel(4, &h->cfgtable->HostWrite.CoalIntCount);
                }
 diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h
-index 44235a2..962e91b 100644
+index 24472ce..8782caf 100644
 --- a/drivers/scsi/hpsa.h
 +++ b/drivers/scsi/hpsa.h
-@@ -128,7 +128,7 @@ struct ctlr_info {
+@@ -127,7 +127,7 @@ struct ctlr_info {
        unsigned int msix_vector;
        unsigned int msi_vector;
        int intr_mode; /* either PERF_MODE_INT or SIMPLE_MODE_INT */
@@ -49202,7 +50988,7 @@ index 44235a2..962e91b 100644
        char hba_mode_enabled;
  
        /* queue and queue Info */
-@@ -541,35 +541,35 @@ static unsigned long SA5_ioaccel_mode1_completed(struct ctlr_info *h, u8 q)
+@@ -536,43 +536,43 @@ static unsigned long SA5_ioaccel_mode1_completed(struct ctlr_info *h, u8 q)
  }
  
  static struct access_method SA5_access = {
@@ -49257,6 +51043,19 @@ index 44235a2..962e91b 100644
 +      .command_completed = SA5_performant_completed,
  };
  
+ static struct access_method SA5_performant_access_no_read = {
+-      SA5_submit_command_no_read,
+-      SA5_performant_intr_mask,
+-      SA5_fifo_full,
+-      SA5_performant_intr_pending,
+-      SA5_performant_completed,
++      .submit_command = SA5_submit_command_no_read,
++      .set_intr_mask = SA5_performant_intr_mask,
++      .fifo_full = SA5_fifo_full,
++      .intr_pending = SA5_performant_intr_pending,
++      .command_completed = SA5_performant_completed,
+ };
  struct board_type {
 diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
 index 1b3a094..068e683 100644
@@ -49417,7 +51216,7 @@ index 766098a..1c6c971 100644
        .qc_issue               = sas_ata_qc_issue,
        .qc_fill_rtf            = sas_ata_qc_fill_rtf,
 diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
-index 94a3caf..a118dec 100644
+index 434e903..5a4a79b 100644
 --- a/drivers/scsi/lpfc/lpfc.h
 +++ b/drivers/scsi/lpfc/lpfc.h
 @@ -430,7 +430,7 @@ struct lpfc_vport {
@@ -49429,7 +51228,7 @@ index 94a3caf..a118dec 100644
  #endif
        uint8_t stat_data_enabled;
        uint8_t stat_data_blocked;
-@@ -879,8 +879,8 @@ struct lpfc_hba {
+@@ -880,8 +880,8 @@ struct lpfc_hba {
        struct timer_list fabric_block_timer;
        unsigned long bit_flags;
  #define       FABRIC_COMANDS_BLOCKED  0
@@ -49440,7 +51239,7 @@ index 94a3caf..a118dec 100644
        unsigned long last_rsrc_error_time;
        unsigned long last_ramp_down_time;
  #ifdef CONFIG_SCSI_LPFC_DEBUG_FS
-@@ -915,7 +915,7 @@ struct lpfc_hba {
+@@ -916,7 +916,7 @@ struct lpfc_hba {
  
        struct dentry *debug_slow_ring_trc;
        struct lpfc_debugfs_trc *slow_ring_trc;
@@ -49450,7 +51249,7 @@ index 94a3caf..a118dec 100644
        struct dentry *idiag_root;
        struct dentry *idiag_pci_cfg;
 diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c
-index 828c08e..e3378e0 100644
+index 786a2af..562c6a2 100644
 --- a/drivers/scsi/lpfc/lpfc_debugfs.c
 +++ b/drivers/scsi/lpfc/lpfc_debugfs.c
 @@ -106,7 +106,7 @@ MODULE_PARM_DESC(lpfc_debugfs_mask_disc_trc,
@@ -49533,10 +51332,10 @@ index 828c08e..e3378e0 100644
        snprintf(name, sizeof(name), "discovery_trace");
        vport->debug_disc_trc =
 diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
-index 635eeb3..038aef6 100644
+index 0b2c53a..aec2b45 100644
 --- a/drivers/scsi/lpfc/lpfc_init.c
 +++ b/drivers/scsi/lpfc/lpfc_init.c
-@@ -11194,8 +11194,10 @@ lpfc_init(void)
+@@ -11290,8 +11290,10 @@ lpfc_init(void)
                        "misc_register returned with status %d", error);
  
        if (lpfc_enable_npiv) {
@@ -49550,19 +51349,19 @@ index 635eeb3..038aef6 100644
        lpfc_transport_template =
                                fc_attach_transport(&lpfc_transport_functions);
 diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
-index 462453e..c0023a6 100644
+index b99399f..d29dc75 100644
 --- a/drivers/scsi/lpfc/lpfc_scsi.c
 +++ b/drivers/scsi/lpfc/lpfc_scsi.c
-@@ -382,7 +382,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba)
-       uint32_t evt_posted;
+@@ -383,7 +383,7 @@ lpfc_rampdown_queue_depth(struct lpfc_hba *phba)
+       unsigned long expires;
  
        spin_lock_irqsave(&phba->hbalock, flags);
 -      atomic_inc(&phba->num_rsrc_err);
 +      atomic_inc_unchecked(&phba->num_rsrc_err);
        phba->last_rsrc_error_time = jiffies;
  
-       if ((phba->last_ramp_down_time + QUEUE_RAMP_DOWN_INTERVAL) > jiffies) {
-@@ -423,8 +423,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
+       expires = phba->last_ramp_down_time + QUEUE_RAMP_DOWN_INTERVAL;
+@@ -425,8 +425,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
        unsigned long num_rsrc_err, num_cmd_success;
        int i;
  
@@ -49573,7 +51372,7 @@ index 462453e..c0023a6 100644
  
        /*
         * The error and success command counters are global per
-@@ -452,8 +452,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
+@@ -454,8 +454,8 @@ lpfc_ramp_down_queue_handler(struct lpfc_hba *phba)
                        }
                }
        lpfc_destroy_vport_work_array(phba, vports);
@@ -49585,10 +51384,10 @@ index 462453e..c0023a6 100644
  
  /**
 diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-index 6fd7d40..b444223 100644
+index c80ed04..e674f01 100644
 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
 +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
-@@ -1557,7 +1557,7 @@ _scsih_get_resync(struct device *dev)
+@@ -1561,7 +1561,7 @@ _scsih_get_resync(struct device *dev)
  {
        struct scsi_device *sdev = to_scsi_device(dev);
        struct MPT2SAS_ADAPTER *ioc = shost_priv(sdev->host);
@@ -49597,7 +51396,7 @@ index 6fd7d40..b444223 100644
        unsigned long flags;
        Mpi2RaidVolPage0_t vol_pg0;
        Mpi2ConfigReply_t mpi_reply;
-@@ -1609,7 +1609,7 @@ _scsih_get_state(struct device *dev)
+@@ -1613,7 +1613,7 @@ _scsih_get_state(struct device *dev)
  {
        struct scsi_device *sdev = to_scsi_device(dev);
        struct MPT2SAS_ADAPTER *ioc = shost_priv(sdev->host);
@@ -49606,16 +51405,16 @@ index 6fd7d40..b444223 100644
        unsigned long flags;
        Mpi2RaidVolPage0_t vol_pg0;
        Mpi2ConfigReply_t mpi_reply;
-@@ -6637,7 +6637,7 @@ _scsih_sas_ir_operation_status_event(struct MPT2SAS_ADAPTER *ioc,
-     struct fw_event_work *fw_event)
- {
-       Mpi2EventDataIrOperationStatus_t *event_data = fw_event->event_data;
+@@ -6663,7 +6663,7 @@ _scsih_sas_ir_operation_status_event(struct MPT2SAS_ADAPTER *ioc,
+       Mpi2EventDataIrOperationStatus_t *event_data =
+               (Mpi2EventDataIrOperationStatus_t *)
+               fw_event->event_data;
 -      static struct _raid_device *raid_device;
 +      struct _raid_device *raid_device;
        unsigned long flags;
        u16 handle;
  
-@@ -7108,7 +7108,7 @@ _scsih_scan_for_devices_after_reset(struct MPT2SAS_ADAPTER *ioc)
+@@ -7134,7 +7134,7 @@ _scsih_scan_for_devices_after_reset(struct MPT2SAS_ADAPTER *ioc)
        u64 sas_address;
        struct _sas_device *sas_device;
        struct _sas_node *expander_device;
@@ -49625,7 +51424,7 @@ index 6fd7d40..b444223 100644
        unsigned long flags;
  
 diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
-index be8ce54..94ed33a 100644
+index bcb64eb..f08cf71 100644
 --- a/drivers/scsi/pmcraid.c
 +++ b/drivers/scsi/pmcraid.c
 @@ -200,8 +200,8 @@ static int pmcraid_slave_alloc(struct scsi_device *scsi_dev)
@@ -49678,7 +51477,7 @@ index be8ce54..94ed33a 100644
                return;
  
        fw_version = be16_to_cpu(pinstance->inq_data->fw_version);
-@@ -5322,8 +5322,8 @@ static int pmcraid_init_instance(struct pci_dev *pdev, struct Scsi_Host *host,
+@@ -5312,8 +5312,8 @@ static int pmcraid_init_instance(struct pci_dev *pdev, struct Scsi_Host *host,
        init_waitqueue_head(&pinstance->reset_wait_q);
  
        atomic_set(&pinstance->outstanding_cmds, 0);
@@ -49689,7 +51488,7 @@ index be8ce54..94ed33a 100644
  
        INIT_LIST_HEAD(&pinstance->free_res_q);
        INIT_LIST_HEAD(&pinstance->used_res_q);
-@@ -6036,7 +6036,7 @@ static int pmcraid_probe(struct pci_dev *pdev,
+@@ -6026,7 +6026,7 @@ static int pmcraid_probe(struct pci_dev *pdev,
        /* Schedule worker thread to handle CCN and take care of adding and
         * removing devices to OS
         */
@@ -49732,10 +51531,10 @@ index e1d150f..6c6df44 100644
        /* To indicate add/delete/modify during CCN */
        u8 change_detected;
 diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
-index 07befcf..c0bff13 100644
+index 82b92c4..3178171 100644
 --- a/drivers/scsi/qla2xxx/qla_attr.c
 +++ b/drivers/scsi/qla2xxx/qla_attr.c
-@@ -2188,7 +2188,7 @@ qla24xx_vport_disable(struct fc_vport *fc_vport, bool disable)
+@@ -2192,7 +2192,7 @@ qla24xx_vport_disable(struct fc_vport *fc_vport, bool disable)
        return 0;
  }
  
@@ -49744,7 +51543,7 @@ index 07befcf..c0bff13 100644
  
        .show_host_node_name = 1,
        .show_host_port_name = 1,
-@@ -2236,7 +2236,7 @@ struct fc_function_template qla2xxx_transport_functions = {
+@@ -2240,7 +2240,7 @@ struct fc_function_template qla2xxx_transport_functions = {
        .bsg_timeout = qla24xx_bsg_timeout,
  };
  
@@ -49754,10 +51553,10 @@ index 07befcf..c0bff13 100644
        .show_host_node_name = 1,
        .show_host_port_name = 1,
 diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
-index e665e81..16e84e6 100644
+index b1865a7..a7723d3 100644
 --- a/drivers/scsi/qla2xxx/qla_gbl.h
 +++ b/drivers/scsi/qla2xxx/qla_gbl.h
-@@ -557,8 +557,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *);
+@@ -571,8 +571,8 @@ extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *, size_t);
  struct device_attribute;
  extern struct device_attribute *qla2x00_host_attrs[];
  struct fc_function_template;
@@ -49769,10 +51568,10 @@ index e665e81..16e84e6 100644
  extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *, bool);
  extern void qla2x00_init_host_attr(scsi_qla_host_t *);
 diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
-index 19e99cc..b3c0b7b 100644
+index db3dbd9..2492392 100644
 --- a/drivers/scsi/qla2xxx/qla_os.c
 +++ b/drivers/scsi/qla2xxx/qla_os.c
-@@ -1493,8 +1493,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha)
+@@ -1507,8 +1507,10 @@ qla2x00_config_dma_addressing(struct qla_hw_data *ha)
                    !pci_set_consistent_dma_mask(ha->pdev, DMA_BIT_MASK(64))) {
                        /* Ok, a 64bit DMA mask is applicable. */
                        ha->flags.enable_64bit_addressing = 1;
@@ -49786,7 +51585,7 @@ index 19e99cc..b3c0b7b 100644
                }
        }
 diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h
-index 73a5022..4e0797c 100644
+index 8f6d0fb..1b21097 100644
 --- a/drivers/scsi/qla4xxx/ql4_def.h
 +++ b/drivers/scsi/qla4xxx/ql4_def.h
 @@ -305,7 +305,7 @@ struct ddb_entry {
@@ -49799,10 +51598,10 @@ index 73a5022..4e0797c 100644
        uint32_t default_time2wait;       /* Default Min time between
                                           * relogins (+aens) */
 diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
-index 459b9f7..2930a68 100644
+index 199fcf7..3c3a918 100644
 --- a/drivers/scsi/qla4xxx/ql4_os.c
 +++ b/drivers/scsi/qla4xxx/ql4_os.c
-@@ -4499,12 +4499,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess)
+@@ -4496,12 +4496,12 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess)
                 */
                if (!iscsi_is_session_online(cls_sess)) {
                        /* Reset retry relogin timer */
@@ -49827,10 +51626,10 @@ index 459b9f7..2930a68 100644
        ddb_entry->default_relogin_timeout =
                (def_timeout > LOGIN_TOV) && (def_timeout < LOGIN_TOV * 10) ?
 diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
-index 88d46fe..7351be5 100644
+index 79c77b4..ef6ec0b 100644
 --- a/drivers/scsi/scsi.c
 +++ b/drivers/scsi/scsi.c
-@@ -640,7 +640,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
+@@ -645,7 +645,7 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
        struct Scsi_Host *host = cmd->device->host;
        int rtn = 0;
  
@@ -49840,10 +51639,10 @@ index 88d46fe..7351be5 100644
        /* check if the device is still usable */
        if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
 diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
-index 9db097a..ca5c291 100644
+index 50a6e1a..de5252e 100644
 --- a/drivers/scsi/scsi_lib.c
 +++ b/drivers/scsi/scsi_lib.c
-@@ -1464,7 +1464,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
+@@ -1583,7 +1583,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
        shost = sdev->host;
        scsi_init_cmd_errh(cmd);
        cmd->result = DID_NO_CONNECT << 16;
@@ -49852,7 +51651,7 @@ index 9db097a..ca5c291 100644
  
        /*
         * SCSI request completion path will do scsi_device_unbusy(),
-@@ -1490,9 +1490,9 @@ static void scsi_softirq_done(struct request *rq)
+@@ -1606,9 +1606,9 @@ static void scsi_softirq_done(struct request *rq)
  
        INIT_LIST_HEAD(&cmd->eh_entry);
  
@@ -49865,10 +51664,10 @@ index 9db097a..ca5c291 100644
        disposition = scsi_decide_disposition(cmd);
        if (disposition != SUCCESS &&
 diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
-index 074e8cc..f612e5c 100644
+index f4cb7b3..dfa79c4 100644
 --- a/drivers/scsi/scsi_sysfs.c
 +++ b/drivers/scsi/scsi_sysfs.c
-@@ -780,7 +780,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr,     \
+@@ -805,7 +805,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr,     \
                    char *buf)                                          \
  {                                                                     \
        struct scsi_device *sdev = to_scsi_device(dev);                 \
@@ -49877,24 +51676,11 @@ index 074e8cc..f612e5c 100644
        return snprintf(buf, 20, "0x%llx\n", count);                    \
  }                                                                     \
  static DEVICE_ATTR(field, S_IRUGO, show_iostat_##field, NULL)
-diff --git a/drivers/scsi/scsi_tgt_lib.c b/drivers/scsi/scsi_tgt_lib.c
-index e51add0..1e06a96 100644
---- a/drivers/scsi/scsi_tgt_lib.c
-+++ b/drivers/scsi/scsi_tgt_lib.c
-@@ -363,7 +363,7 @@ static int scsi_map_user_pages(struct scsi_tgt_cmd *tcmd, struct scsi_cmnd *cmd,
-       int err;
-       dprintk("%lx %u\n", uaddr, len);
--      err = blk_rq_map_user(q, rq, NULL, (void *)uaddr, len, GFP_KERNEL);
-+      err = blk_rq_map_user(q, rq, NULL, (void __user *)uaddr, len, GFP_KERNEL);
-       if (err) {
-               /*
-                * TODO: need to fixup sg_tablesize, max_segment_size,
 diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
-index f80908f..22aba76 100644
+index 5d6f348..18778a6b 100644
 --- a/drivers/scsi/scsi_transport_fc.c
 +++ b/drivers/scsi/scsi_transport_fc.c
-@@ -498,7 +498,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class,
+@@ -501,7 +501,7 @@ static DECLARE_TRANSPORT_CLASS(fc_vport_class,
   * Netlink Infrastructure
   */
  
@@ -49903,7 +51689,7 @@ index f80908f..22aba76 100644
  
  /**
   * fc_get_event_number - Obtain the next sequential FC event number
-@@ -511,7 +511,7 @@ static atomic_t fc_event_seq;
+@@ -514,7 +514,7 @@ static atomic_t fc_event_seq;
  u32
  fc_get_event_number(void)
  {
@@ -49912,7 +51698,7 @@ index f80908f..22aba76 100644
  }
  EXPORT_SYMBOL(fc_get_event_number);
  
-@@ -655,7 +655,7 @@ static __init int fc_transport_init(void)
+@@ -658,7 +658,7 @@ static __init int fc_transport_init(void)
  {
        int error;
  
@@ -49921,7 +51707,7 @@ index f80908f..22aba76 100644
  
        error = transport_class_register(&fc_host_class);
        if (error)
-@@ -845,7 +845,7 @@ static int fc_str_to_dev_loss(const char *buf, unsigned long *val)
+@@ -848,7 +848,7 @@ static int fc_str_to_dev_loss(const char *buf, unsigned long *val)
        char *cp;
  
        *val = simple_strtoul(buf, &cp, 0);
@@ -49931,7 +51717,7 @@ index f80908f..22aba76 100644
        /*
         * Check for overflow; dev_loss_tmo is u32
 diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
-index 0102a2d..cc3f8e9 100644
+index 67d43e3..8cee73c 100644
 --- a/drivers/scsi/scsi_transport_iscsi.c
 +++ b/drivers/scsi/scsi_transport_iscsi.c
 @@ -79,7 +79,7 @@ struct iscsi_internal {
@@ -49952,7 +51738,7 @@ index 0102a2d..cc3f8e9 100644
  
        if (target_id == ISCSI_MAX_TARGET) {
                id = ida_simple_get(&iscsi_sess_ida, 0, 0, GFP_KERNEL);
-@@ -4511,7 +4511,7 @@ static __init int iscsi_transport_init(void)
+@@ -4515,7 +4515,7 @@ static __init int iscsi_transport_init(void)
        printk(KERN_INFO "Loading iSCSI transport class v%s.\n",
                ISCSI_TRANSPORT_VERSION);
  
@@ -49962,11 +51748,11 @@ index 0102a2d..cc3f8e9 100644
        err = class_register(&iscsi_transport_class);
        if (err)
 diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
-index 13e8983..d306a68 100644
+index ae45bd9..c32a586 100644
 --- a/drivers/scsi/scsi_transport_srp.c
 +++ b/drivers/scsi/scsi_transport_srp.c
-@@ -36,7 +36,7 @@
- #include "scsi_transport_srp_internal.h"
+@@ -35,7 +35,7 @@
+ #include "scsi_priv.h"
  
  struct srp_host_attrs {
 -      atomic_t next_port_id;
@@ -49974,7 +51760,7 @@ index 13e8983..d306a68 100644
  };
  #define to_srp_host_attrs(host)       ((struct srp_host_attrs *)(host)->shost_data)
  
-@@ -101,7 +101,7 @@ static int srp_host_setup(struct transport_container *tc, struct device *dev,
+@@ -100,7 +100,7 @@ static int srp_host_setup(struct transport_container *tc, struct device *dev,
        struct Scsi_Host *shost = dev_to_shost(dev);
        struct srp_host_attrs *srp_host = to_srp_host_attrs(shost);
  
@@ -49993,10 +51779,10 @@ index 13e8983..d306a68 100644
  
        transport_setup_device(&rport->dev);
 diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
-index bffbd4b..cb1b68a 100644
+index cfba74c..415f09b 100644
 --- a/drivers/scsi/sd.c
 +++ b/drivers/scsi/sd.c
-@@ -2971,7 +2971,7 @@ static int sd_probe(struct device *dev)
+@@ -3022,7 +3022,7 @@ static int sd_probe(struct device *dev)
        sdkp->disk = gd;
        sdkp->index = index;
        atomic_set(&sdkp->openers, 0);
@@ -50006,10 +51792,10 @@ index bffbd4b..cb1b68a 100644
        if (!sdp->request_queue->rq_timeout) {
                if (sdp->type != TYPE_MOD)
 diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
-index df5e961..df6b97f 100644
+index 6035444..c82edd4 100644
 --- a/drivers/scsi/sg.c
 +++ b/drivers/scsi/sg.c
-@@ -1102,7 +1102,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
+@@ -1138,7 +1138,7 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
                                       sdp->disk->disk_name,
                                       MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
                                       NULL,
@@ -50018,11 +51804,24 @@ index df5e961..df6b97f 100644
        case BLKTRACESTART:
                return blk_trace_startstop(sdp->device->request_queue, 1);
        case BLKTRACESTOP:
+diff --git a/drivers/soc/tegra/fuse/fuse-tegra.c b/drivers/soc/tegra/fuse/fuse-tegra.c
+index 11a5043..e36f04c 100644
+--- a/drivers/soc/tegra/fuse/fuse-tegra.c
++++ b/drivers/soc/tegra/fuse/fuse-tegra.c
+@@ -70,7 +70,7 @@ static ssize_t fuse_read(struct file *fd, struct kobject *kobj,
+       return i;
+ }
+-static struct bin_attribute fuse_bin_attr = {
++static bin_attribute_no_const fuse_bin_attr = {
+       .attr = { .name = "fuse", .mode = S_IRUGO, },
+       .read = fuse_read,
+ };
 diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
-index 939edf4..3f50423 100644
+index 50f20f2..6bd81e0 100644
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -2204,7 +2204,7 @@ int spi_bus_unlock(struct spi_master *master)
+@@ -2224,7 +2224,7 @@ int spi_bus_unlock(struct spi_master *master)
  EXPORT_SYMBOL_GPL(spi_bus_unlock);
  
  /* portable code must never pass more than 32 bytes */
@@ -50032,7 +51831,7 @@ index 939edf4..3f50423 100644
  static u8     *buf;
  
 diff --git a/drivers/staging/android/timed_output.c b/drivers/staging/android/timed_output.c
-index 2c61783..4d49e4e 100644
+index b41429f..2de5373 100644
 --- a/drivers/staging/android/timed_output.c
 +++ b/drivers/staging/android/timed_output.c
 @@ -25,7 +25,7 @@
@@ -50044,7 +51843,7 @@ index 2c61783..4d49e4e 100644
  
  static ssize_t enable_show(struct device *dev, struct device_attribute *attr,
                           char *buf)
-@@ -63,7 +63,7 @@ static int create_timed_output_class(void)
+@@ -65,7 +65,7 @@ static int create_timed_output_class(void)
                timed_output_class = class_create(THIS_MODULE, "timed_output");
                if (IS_ERR(timed_output_class))
                        return PTR_ERR(timed_output_class);
@@ -50053,7 +51852,7 @@ index 2c61783..4d49e4e 100644
                timed_output_class->dev_groups = timed_output_groups;
        }
  
-@@ -81,7 +81,7 @@ int timed_output_dev_register(struct timed_output_dev *tdev)
+@@ -83,7 +83,7 @@ int timed_output_dev_register(struct timed_output_dev *tdev)
        if (ret < 0)
                return ret;
  
@@ -50063,7 +51862,7 @@ index 2c61783..4d49e4e 100644
                MKDEV(0, tdev->index), NULL, "%s", tdev->name);
        if (IS_ERR(tdev->dev))
 diff --git a/drivers/staging/gdm724x/gdm_tty.c b/drivers/staging/gdm724x/gdm_tty.c
-index fe47cd3..19a1bd1 100644
+index 001348c..cfaac8a 100644
 --- a/drivers/staging/gdm724x/gdm_tty.c
 +++ b/drivers/staging/gdm724x/gdm_tty.c
 @@ -44,7 +44,7 @@
@@ -50076,10 +51875,10 @@ index fe47cd3..19a1bd1 100644
  static struct tty_driver *gdm_driver[TTY_MAX_COUNT];
  static struct gdm *gdm_table[TTY_MAX_COUNT][GDM_TTY_MINOR];
 diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c
-index c270c9a..94ddf82 100644
+index 9cb222e..8766f26 100644
 --- a/drivers/staging/imx-drm/imx-drm-core.c
 +++ b/drivers/staging/imx-drm/imx-drm-core.c
-@@ -362,7 +362,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc,
+@@ -357,7 +357,7 @@ int imx_drm_add_crtc(struct drm_device *drm, struct drm_crtc *crtc,
        if (imxdrm->pipes >= MAX_CRTC)
                return -EINVAL;
  
@@ -50088,8 +51887,60 @@ index c270c9a..94ddf82 100644
                return -EBUSY;
  
        imx_drm_crtc = kzalloc(sizeof(*imx_drm_crtc), GFP_KERNEL);
+diff --git a/drivers/staging/line6/driver.c b/drivers/staging/line6/driver.c
+index 503b2d7..c918745 100644
+--- a/drivers/staging/line6/driver.c
++++ b/drivers/staging/line6/driver.c
+@@ -463,7 +463,7 @@ int line6_read_data(struct usb_line6 *line6, int address, void *data,
+ {
+       struct usb_device *usbdev = line6->usbdev;
+       int ret;
+-      unsigned char len;
++      unsigned char *plen;
+       /* query the serial number: */
+       ret = usb_control_msg(usbdev, usb_sndctrlpipe(usbdev, 0), 0x67,
+@@ -476,27 +476,34 @@ int line6_read_data(struct usb_line6 *line6, int address, void *data,
+               return ret;
+       }
++      plen = kmalloc(1, GFP_KERNEL);
++      if (plen == NULL)
++              return -ENOMEM;
++
+       /* Wait for data length. We'll get 0xff until length arrives. */
+       do {
+               ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 0x67,
+                                     USB_TYPE_VENDOR | USB_RECIP_DEVICE |
+                                     USB_DIR_IN,
+-                                    0x0012, 0x0000, &len, 1,
++                                    0x0012, 0x0000, plen, 1,
+                                     LINE6_TIMEOUT * HZ);
+               if (ret < 0) {
+                       dev_err(line6->ifcdev,
+                               "receive length failed (error %d)\n", ret);
++                      kfree(plen);
+                       return ret;
+               }
+-      } while (len == 0xff);
++      } while (*plen == 0xff);
+-      if (len != datalen) {
++      if (*plen != datalen) {
+               /* should be equal or something went wrong */
+               dev_err(line6->ifcdev,
+                       "length mismatch (expected %d, got %d)\n",
+-                      (int)datalen, (int)len);
++                      (int)datalen, (int)*plen);
++              kfree(plen);
+               return -EINVAL;
+       }
++      kfree(plen);
+       /* receive the result: */
+       ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), 0x67,
 diff --git a/drivers/staging/lustre/lnet/selftest/brw_test.c b/drivers/staging/lustre/lnet/selftest/brw_test.c
-index 3f8020c..649fded 100644
+index a94f336..6a1924d 100644
 --- a/drivers/staging/lustre/lnet/selftest/brw_test.c
 +++ b/drivers/staging/lustre/lnet/selftest/brw_test.c
 @@ -488,13 +488,11 @@ brw_server_handle(struct srpc_server_rpc *rpc)
@@ -50112,10 +51963,10 @@ index 3f8020c..649fded 100644
  
  srpc_service_t brw_test_service;
 diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c
-index 050723a..fa6fdf1 100644
+index df04ab7..1deb1ac 100644
 --- a/drivers/staging/lustre/lnet/selftest/framework.c
 +++ b/drivers/staging/lustre/lnet/selftest/framework.c
-@@ -1635,12 +1635,10 @@ static srpc_service_t sfw_services[] =
+@@ -1632,12 +1632,10 @@ static srpc_service_t sfw_services[] = {
  
  extern sfw_test_client_ops_t ping_test_client;
  extern srpc_service_t ping_test_service;
@@ -50128,7 +51979,7 @@ index 050723a..fa6fdf1 100644
  extern void brw_init_test_service(void);
  
  
-@@ -1684,12 +1682,10 @@ sfw_startup (void)
+@@ -1681,12 +1679,10 @@ sfw_startup (void)
        INIT_LIST_HEAD(&sfw_data.fw_zombie_rpcs);
        INIT_LIST_HEAD(&sfw_data.fw_zombie_sessions);
  
@@ -50167,10 +52018,10 @@ index 750cac4..e4d751f 100644
  srpc_service_t ping_test_service;
  void ping_init_test_service(void)
 diff --git a/drivers/staging/lustre/lustre/include/lustre_dlm.h b/drivers/staging/lustre/lustre/include/lustre_dlm.h
-index 3e25f00..0d59cf5 100644
+index 14ac46f..eca2c16 100644
 --- a/drivers/staging/lustre/lustre/include/lustre_dlm.h
 +++ b/drivers/staging/lustre/lustre/include/lustre_dlm.h
-@@ -1141,7 +1141,7 @@ struct ldlm_callback_suite {
+@@ -1139,7 +1139,7 @@ struct ldlm_callback_suite {
        ldlm_completion_callback lcs_completion;
        ldlm_blocking_callback   lcs_blocking;
        ldlm_glimpse_callback    lcs_glimpse;
@@ -50180,10 +52031,10 @@ index 3e25f00..0d59cf5 100644
  /* ldlm_lockd.c */
  int ldlm_del_waiting_lock(struct ldlm_lock *lock);
 diff --git a/drivers/staging/lustre/lustre/include/obd.h b/drivers/staging/lustre/lustre/include/obd.h
-index 72cf3fe..4beac19 100644
+index 2a88b80..62e7e5f 100644
 --- a/drivers/staging/lustre/lustre/include/obd.h
 +++ b/drivers/staging/lustre/lustre/include/obd.h
-@@ -1427,7 +1427,7 @@ struct md_ops {
+@@ -1362,7 +1362,7 @@ struct md_ops {
         * lprocfs_alloc_md_stats() in obdclass/lprocfs_status.c. Also, add a
         * wrapper function in include/linux/obd_class.h.
         */
@@ -50193,54 +52044,54 @@ index 72cf3fe..4beac19 100644
  struct lsm_operations {
        void (*lsm_free)(struct lov_stripe_md *);
 diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
-index 986bf38..eab2558f 100644
+index b798daa..b28ca8f 100644
 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
 +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_flock.c
-@@ -259,7 +259,7 @@ ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, int first_enq,
+@@ -258,7 +258,7 @@ ldlm_process_flock_lock(struct ldlm_lock *req, __u64 *flags, int first_enq,
        int added = (mode == LCK_NL);
        int overlaps = 0;
        int splitted = 0;
 -      const struct ldlm_callback_suite null_cbs = { NULL };
 +      const struct ldlm_callback_suite null_cbs = { };
  
-       CDEBUG(D_DLMTRACE, "flags %#llx owner "LPU64" pid %u mode %u start "
-              LPU64" end "LPU64"\n", *flags,
+       CDEBUG(D_DLMTRACE, "flags %#llx owner %llu pid %u mode %u start %llu end %llu\n",
+              *flags, new->l_policy_data.l_flock.owner,
 diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c
-index e947b91..f408990 100644
+index bbe2c68..c6b4275 100644
 --- a/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c
 +++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-proc.c
-@@ -217,7 +217,7 @@ DECLARE_PROC_HANDLER(proc_debug_mb)
int LL_PROC_PROTO(proc_console_max_delay_cs)
+@@ -236,7 +236,7 @@ int proc_console_max_delay_cs(struct ctl_table *table, int write,
                            void __user *buffer, size_t *lenp, loff_t *ppos)
  {
        int rc, max_delay_cs;
--      ctl_table_t dummy = *table;
+-      struct ctl_table dummy = *table;
 +      ctl_table_no_const dummy = *table;
-       cfs_duration_t d;
+       long d;
  
        dummy.data = &max_delay_cs;
-@@ -248,7 +248,7 @@ int LL_PROC_PROTO(proc_console_max_delay_cs)
int LL_PROC_PROTO(proc_console_min_delay_cs)
+@@ -268,7 +268,7 @@ int proc_console_min_delay_cs(struct ctl_table *table, int write,
                            void __user *buffer, size_t *lenp, loff_t *ppos)
  {
        int rc, min_delay_cs;
--      ctl_table_t dummy = *table;
+-      struct ctl_table dummy = *table;
 +      ctl_table_no_const dummy = *table;
-       cfs_duration_t d;
+       long d;
  
        dummy.data = &min_delay_cs;
-@@ -279,7 +279,7 @@ int LL_PROC_PROTO(proc_console_min_delay_cs)
int LL_PROC_PROTO(proc_console_backoff)
+@@ -300,7 +300,7 @@ int proc_console_backoff(struct ctl_table *table, int write,
                       void __user *buffer, size_t *lenp, loff_t *ppos)
  {
        int rc, backoff;
--      ctl_table_t dummy = *table;
+-      struct ctl_table dummy = *table;
 +      ctl_table_no_const dummy = *table;
  
        dummy.data = &backoff;
        dummy.proc_handler = &proc_dointvec;
 diff --git a/drivers/staging/lustre/lustre/libcfs/module.c b/drivers/staging/lustre/lustre/libcfs/module.c
-index 24ae26d..9d09cab 100644
+index 2c4fc74..b04ca79 100644
 --- a/drivers/staging/lustre/lustre/libcfs/module.c
 +++ b/drivers/staging/lustre/lustre/libcfs/module.c
-@@ -313,11 +313,11 @@ out:
+@@ -315,11 +315,11 @@ out:
  
  
  struct cfs_psdev_ops libcfs_psdev_ops = {
@@ -50258,10 +52109,10 @@ index 24ae26d..9d09cab 100644
  
  extern int insert_proc(void);
 diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
-index 7fbc18e..f982071 100644
+index b0bb709..0117c96 100644
 --- a/drivers/staging/lustre/lustre/llite/dir.c
 +++ b/drivers/staging/lustre/lustre/llite/dir.c
-@@ -660,7 +660,7 @@ int ll_dir_setdirstripe(struct inode *dir, struct lmv_user_md *lump,
+@@ -661,7 +661,7 @@ int ll_dir_setdirstripe(struct inode *dir, struct lmv_user_md *lump,
        int mode;
        int err;
  
@@ -50270,63 +52121,11 @@ index 7fbc18e..f982071 100644
        op_data = ll_prep_md_op_data(NULL, dir, NULL, filename,
                                     strlen(filename), mode, LUSTRE_OPC_MKDIR,
                                     lump);
-diff --git a/drivers/staging/media/solo6x10/solo6x10-core.c b/drivers/staging/media/solo6x10/solo6x10-core.c
-index f670469..03b7438 100644
---- a/drivers/staging/media/solo6x10/solo6x10-core.c
-+++ b/drivers/staging/media/solo6x10/solo6x10-core.c
-@@ -434,7 +434,7 @@ static void solo_device_release(struct device *dev)
- static int solo_sysfs_init(struct solo_dev *solo_dev)
- {
--      struct bin_attribute *sdram_attr = &solo_dev->sdram_attr;
-+      bin_attribute_no_const *sdram_attr = &solo_dev->sdram_attr;
-       struct device *dev = &solo_dev->dev;
-       const char *driver;
-       int i;
-diff --git a/drivers/staging/media/solo6x10/solo6x10-g723.c b/drivers/staging/media/solo6x10/solo6x10-g723.c
-index 74f037b..5b5bb76 100644
---- a/drivers/staging/media/solo6x10/solo6x10-g723.c
-+++ b/drivers/staging/media/solo6x10/solo6x10-g723.c
-@@ -355,7 +355,7 @@ static int solo_snd_pcm_init(struct solo_dev *solo_dev)
- int solo_g723_init(struct solo_dev *solo_dev)
- {
--      static struct snd_device_ops ops = { NULL };
-+      static struct snd_device_ops ops = { };
-       struct snd_card *card;
-       struct snd_kcontrol_new kctl;
-       char name[32];
-diff --git a/drivers/staging/media/solo6x10/solo6x10-p2m.c b/drivers/staging/media/solo6x10/solo6x10-p2m.c
-index 7f2f247..d999137 100644
---- a/drivers/staging/media/solo6x10/solo6x10-p2m.c
-+++ b/drivers/staging/media/solo6x10/solo6x10-p2m.c
-@@ -77,7 +77,7 @@ int solo_p2m_dma_desc(struct solo_dev *solo_dev,
-       /* Get next ID. According to Softlogic, 6110 has problems on !=0 P2M */
-       if (solo_dev->type != SOLO_DEV_6110 && multi_p2m) {
--              p2m_id = atomic_inc_return(&solo_dev->p2m_count) % SOLO_NR_P2M;
-+              p2m_id = atomic_inc_return_unchecked(&solo_dev->p2m_count) % SOLO_NR_P2M;
-               if (p2m_id < 0)
-                       p2m_id = -p2m_id;
-       }
-diff --git a/drivers/staging/media/solo6x10/solo6x10.h b/drivers/staging/media/solo6x10/solo6x10.h
-index 8964f8b..36eb087 100644
---- a/drivers/staging/media/solo6x10/solo6x10.h
-+++ b/drivers/staging/media/solo6x10/solo6x10.h
-@@ -237,7 +237,7 @@ struct solo_dev {
-       /* P2M DMA Engine */
-       struct solo_p2m_dev     p2m_dev[SOLO_NR_P2M];
--      atomic_t                p2m_count;
-+      atomic_unchecked_t      p2m_count;
-       int                     p2m_jiffies;
-       unsigned int            p2m_timeouts;
 diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
-index a0f4868..139f1fb 100644
+index b2b6c3c..302e4e4 100644
 --- a/drivers/staging/octeon/ethernet-rx.c
 +++ b/drivers/staging/octeon/ethernet-rx.c
-@@ -417,11 +417,11 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
+@@ -416,11 +416,11 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
                                /* Increment RX stats for virtual ports */
                                if (work->ipprt >= CVMX_PIP_NUM_INPUT_PORTS) {
  #ifdef CONFIG_64BIT
@@ -50342,7 +52141,7 @@ index a0f4868..139f1fb 100644
  #endif
                                }
                                netif_receive_skb(skb);
-@@ -432,9 +432,9 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
+@@ -431,9 +431,9 @@ static int cvm_oct_napi_poll(struct napi_struct *napi, int budget)
                                           dev->name);
                                */
  #ifdef CONFIG_64BIT
@@ -50355,7 +52154,7 @@ index a0f4868..139f1fb 100644
                                dev_kfree_skb_irq(skb);
                        }
 diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
-index ff7214a..6dd90f0 100644
+index 8f9e3fb..d283fb9 100644
 --- a/drivers/staging/octeon/ethernet.c
 +++ b/drivers/staging/octeon/ethernet.c
 @@ -247,11 +247,11 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev)
@@ -50375,33 +52174,20 @@ index ff7214a..6dd90f0 100644
        }
  
 diff --git a/drivers/staging/rtl8188eu/include/hal_intf.h b/drivers/staging/rtl8188eu/include/hal_intf.h
-index c274b34..f84de76 100644
+index 9191993..30e9817 100644
 --- a/drivers/staging/rtl8188eu/include/hal_intf.h
 +++ b/drivers/staging/rtl8188eu/include/hal_intf.h
-@@ -271,7 +271,7 @@ struct hal_ops {
-       s32 (*c2h_handler)(struct adapter *padapter,
-                          struct c2h_evt_hdr *c2h_evt);
-       c2h_id_filter c2h_id_filter_ccx;
+@@ -225,7 +225,7 @@ struct hal_ops {
+       void (*hal_notch_filter)(struct adapter *adapter, bool enable);
+       void (*hal_reset_security_engine)(struct adapter *adapter);
 -};
 +} __no_const;
  
  enum rt_eeprom_type {
        EEPROM_93C46,
-diff --git a/drivers/staging/rtl8188eu/include/rtw_io.h b/drivers/staging/rtl8188eu/include/rtw_io.h
-index e8790f8..b4a5980 100644
---- a/drivers/staging/rtl8188eu/include/rtw_io.h
-+++ b/drivers/staging/rtl8188eu/include/rtw_io.h
-@@ -124,7 +124,7 @@ struct _io_ops {
-       u32 (*_write_scsi)(struct intf_hdl *pintfhdl, u32 cnt, u8 *pmem);
-       void (*_read_port_cancel)(struct intf_hdl *pintfhdl);
-       void (*_write_port_cancel)(struct intf_hdl *pintfhdl);
--};
-+} __no_const;
- struct io_req {
-       struct list_head list;
 diff --git a/drivers/staging/rtl8712/rtl871x_io.h b/drivers/staging/rtl8712/rtl871x_io.h
-index dc23395..cf7e9b1 100644
+index 070cc03..6806e37 100644
 --- a/drivers/staging/rtl8712/rtl871x_io.h
 +++ b/drivers/staging/rtl8712/rtl871x_io.h
 @@ -108,7 +108,7 @@ struct     _io_ops {
@@ -50413,157 +52199,53 @@ index dc23395..cf7e9b1 100644
  
  struct io_req {
        struct list_head list;
-diff --git a/drivers/staging/rtl8723au/include/hal_intf.h b/drivers/staging/rtl8723au/include/hal_intf.h
-index d183f4b..3f4903d 100644
---- a/drivers/staging/rtl8723au/include/hal_intf.h
-+++ b/drivers/staging/rtl8723au/include/hal_intf.h
-@@ -251,7 +251,7 @@ struct hal_ops {
-       void (*hal_reset_security_engine)(struct rtw_adapter *adapter);
-       s32 (*c2h_handler)(struct rtw_adapter *padapter, struct c2h_evt_hdr *c2h_evt);
-       c2h_id_filter c2h_id_filter_ccx;
--};
-+} __no_const;
- enum rt_eeprom_type {
-       EEPROM_93C46,
-diff --git a/drivers/staging/rtl8723au/include/rtw_io.h b/drivers/staging/rtl8723au/include/rtw_io.h
-index 8d39d800..3f21c0c 100644
---- a/drivers/staging/rtl8723au/include/rtw_io.h
-+++ b/drivers/staging/rtl8723au/include/rtw_io.h
-@@ -130,7 +130,7 @@ struct _io_ops
-               void (*_read_port_cancel)(struct intf_hdl *pintfhdl);
-               void (*_write_port_cancel)(struct intf_hdl *pintfhdl);
--};
-+} __no_const;
- struct io_req {
-       struct list_head        list;
-diff --git a/drivers/staging/sbe-2t3e3/netdev.c b/drivers/staging/sbe-2t3e3/netdev.c
-index fe6c951..72935ba 100644
---- a/drivers/staging/sbe-2t3e3/netdev.c
-+++ b/drivers/staging/sbe-2t3e3/netdev.c
-@@ -51,7 +51,7 @@ static int t3e3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-       t3e3_if_config(sc, cmd_2t3e3, (char *)&param, &resp, &rlen);
-       if (rlen)
--              if (copy_to_user(data, &resp, rlen))
-+              if (rlen > sizeof resp || copy_to_user(data, &resp, rlen))
-                       return -EFAULT;
-       return 0;
-diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h
-index a863a98..d272795 100644
---- a/drivers/staging/usbip/vhci.h
-+++ b/drivers/staging/usbip/vhci.h
-@@ -83,7 +83,7 @@ struct vhci_hcd {
-       unsigned resuming:1;
-       unsigned long re_timeout;
--      atomic_t seqnum;
-+      atomic_unchecked_t seqnum;
-       /*
-        * NOTE:
-diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c
-index 70e1755..de41855 100644
---- a/drivers/staging/usbip/vhci_hcd.c
-+++ b/drivers/staging/usbip/vhci_hcd.c
-@@ -439,7 +439,7 @@ static void vhci_tx_urb(struct urb *urb)
-       spin_lock(&vdev->priv_lock);
--      priv->seqnum = atomic_inc_return(&the_controller->seqnum);
-+      priv->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
-       if (priv->seqnum == 0xffff)
-               dev_info(&urb->dev->dev, "seqnum max\n");
-@@ -685,7 +685,7 @@ static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
-                       return -ENOMEM;
-               }
--              unlink->seqnum = atomic_inc_return(&the_controller->seqnum);
-+              unlink->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
-               if (unlink->seqnum == 0xffff)
-                       pr_info("seqnum max\n");
-@@ -889,7 +889,7 @@ static int vhci_start(struct usb_hcd *hcd)
-               vdev->rhport = rhport;
-       }
--      atomic_set(&vhci->seqnum, 0);
-+      atomic_set_unchecked(&vhci->seqnum, 0);
-       spin_lock_init(&vhci->lock);
-       hcd->power_budget = 0; /* no limit */
-diff --git a/drivers/staging/usbip/vhci_rx.c b/drivers/staging/usbip/vhci_rx.c
-index d07fcb5..358e1e1 100644
---- a/drivers/staging/usbip/vhci_rx.c
-+++ b/drivers/staging/usbip/vhci_rx.c
-@@ -80,7 +80,7 @@ static void vhci_recv_ret_submit(struct vhci_device *vdev,
-       if (!urb) {
-               pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum);
-               pr_info("max seqnum %d\n",
--                      atomic_read(&the_controller->seqnum));
-+                      atomic_read_unchecked(&the_controller->seqnum));
-               usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
-               return;
-       }
+diff --git a/drivers/staging/unisys/visorchipset/visorchipset.h b/drivers/staging/unisys/visorchipset/visorchipset.h
+index 2bf2e2f..84421c9 100644
+--- a/drivers/staging/unisys/visorchipset/visorchipset.h
++++ b/drivers/staging/unisys/visorchipset/visorchipset.h
+@@ -228,7 +228,7 @@ typedef struct {
+       void (*device_resume)(ulong busNo, ulong devNo);
+       int (*get_channel_info)(uuid_le typeGuid, ulong *minSize,
+                                ulong *maxSize);
+-} VISORCHIPSET_BUSDEV_NOTIFIERS;
++} __no_const VISORCHIPSET_BUSDEV_NOTIFIERS;
+ /*  These functions live inside visorchipset, and will be called to indicate
+  *  responses to specific events (by code outside of visorchipset).
+@@ -243,7 +243,7 @@ typedef struct {
+       void (*device_destroy)(ulong busNo, ulong devNo, int response);
+       void (*device_pause)(ulong busNo, ulong devNo, int response);
+       void (*device_resume)(ulong busNo, ulong devNo, int response);
+-} VISORCHIPSET_BUSDEV_RESPONDERS;
++} __no_const VISORCHIPSET_BUSDEV_RESPONDERS;
+ /** Register functions (in the bus driver) to get called by visorchipset
+  *  whenever a bus or device appears for which this service partition is
 diff --git a/drivers/staging/vt6655/hostap.c b/drivers/staging/vt6655/hostap.c
-index 6eecd53..29317c6 100644
+index ae0dade..803d53a 100644
 --- a/drivers/staging/vt6655/hostap.c
 +++ b/drivers/staging/vt6655/hostap.c
-@@ -69,14 +69,13 @@ static int msglevel = MSG_LEVEL_INFO;
+@@ -65,14 +65,13 @@
   *
   */
  
 +static net_device_ops_no_const apdev_netdev_ops;
 +
- static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked)
+ static int hostap_enable_hostapd(struct vnt_private *pDevice, int rtnl_locked)
  {
-       PSDevice apdev_priv;
+       struct vnt_private *apdev_priv;
        struct net_device *dev = pDevice->dev;
        int ret;
 -      const struct net_device_ops apdev_netdev_ops = {
 -              .ndo_start_xmit         = pDevice->tx_80211,
 -      };
  
-       DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Enabling hostapd mode\n", dev->name);
+       pr_debug("%s: Enabling hostapd mode\n", dev->name);
  
-@@ -88,6 +87,8 @@ static int hostap_enable_hostapd(PSDevice pDevice, int rtnl_locked)
+@@ -84,6 +83,8 @@ static int hostap_enable_hostapd(struct vnt_private *pDevice, int rtnl_locked)
        *apdev_priv = *pDevice;
        eth_hw_addr_inherit(pDevice->apdev, dev);
  
-+      /* only half broken now */
-+      apdev_netdev_ops.ndo_start_xmit = pDevice->tx_80211;
-       pDevice->apdev->netdev_ops = &apdev_netdev_ops;
-       pDevice->apdev->type = ARPHRD_IEEE80211;
-diff --git a/drivers/staging/vt6656/hostap.c b/drivers/staging/vt6656/hostap.c
-index 67ba48b..24e602f 100644
---- a/drivers/staging/vt6656/hostap.c
-+++ b/drivers/staging/vt6656/hostap.c
-@@ -60,14 +60,13 @@ static int          msglevel                =MSG_LEVEL_INFO;
-  *
-  */
-+static net_device_ops_no_const apdev_netdev_ops;
-+
- static int hostap_enable_hostapd(struct vnt_private *pDevice, int rtnl_locked)
- {
-       struct vnt_private *apdev_priv;
-       struct net_device *dev = pDevice->dev;
-       int ret;
--      const struct net_device_ops apdev_netdev_ops = {
--              .ndo_start_xmit = pDevice->tx_80211,
--      };
-     DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Enabling hostapd mode\n", dev->name);
-@@ -79,6 +78,8 @@ static int hostap_enable_hostapd(struct vnt_private *pDevice, int rtnl_locked)
-     *apdev_priv = *pDevice;
-       memcpy(pDevice->apdev->dev_addr, dev->dev_addr, ETH_ALEN);
 +      /* only half broken now */
 +      apdev_netdev_ops.ndo_start_xmit = pDevice->tx_80211;
        pDevice->apdev->netdev_ops = &apdev_netdev_ops;
@@ -50592,10 +52274,10 @@ index e7e9372..161f530 100644
        login->tgt_agt = sbp_target_agent_register(login);
        if (IS_ERR(login->tgt_agt)) {
 diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
-index 6ea95d2..88607b4 100644
+index c45f9e9..00e85f0 100644
 --- a/drivers/target/target_core_device.c
 +++ b/drivers/target/target_core_device.c
-@@ -1525,7 +1525,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)
+@@ -1532,7 +1532,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)
        spin_lock_init(&dev->se_tmr_lock);
        spin_lock_init(&dev->qf_cmd_lock);
        sema_init(&dev->caw_sem, 1);
@@ -50605,20 +52287,37 @@ index 6ea95d2..88607b4 100644
        spin_lock_init(&dev->t10_wwn.t10_vpd_lock);
        INIT_LIST_HEAD(&dev->t10_pr.registration_list);
 diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
-index 14772e9..42d9f63 100644
+index be877bf..7be9cd4 100644
 --- a/drivers/target/target_core_transport.c
 +++ b/drivers/target/target_core_transport.c
-@@ -1165,7 +1165,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd)
+@@ -1168,7 +1168,7 @@ transport_check_alloc_task_attr(struct se_cmd *cmd)
         * Used to determine when ORDERED commands should go from
         * Dormant to Active status.
         */
 -      cmd->se_ordered_id = atomic_inc_return(&dev->dev_ordered_id);
 +      cmd->se_ordered_id = atomic_inc_return_unchecked(&dev->dev_ordered_id);
-       smp_mb__after_atomic_inc();
        pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
                        cmd->se_ordered_id, cmd->sam_task_attr,
+                       dev->transport->name);
+diff --git a/drivers/thermal/int340x_thermal/int3400_thermal.c b/drivers/thermal/int340x_thermal/int3400_thermal.c
+index edc1cce..769e4cb 100644
+--- a/drivers/thermal/int340x_thermal/int3400_thermal.c
++++ b/drivers/thermal/int340x_thermal/int3400_thermal.c
+@@ -209,8 +209,10 @@ static int int3400_thermal_probe(struct platform_device *pdev)
+       platform_set_drvdata(pdev, priv);
+       if (priv->uuid_bitmap & 1 << INT3400_THERMAL_PASSIVE_1) {
+-              int3400_thermal_ops.get_mode = int3400_thermal_get_mode;
+-              int3400_thermal_ops.set_mode = int3400_thermal_set_mode;
++              pax_open_kernel();
++              *(void **)&int3400_thermal_ops.get_mode = int3400_thermal_get_mode;
++              *(void **)&int3400_thermal_ops.set_mode = int3400_thermal_set_mode;
++              pax_close_kernel();
+       }
+       priv->thermal = thermal_zone_device_register("INT3400 Thermal", 0, 0,
+                                               priv, &int3400_thermal_ops,
 diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
-index 04b1be7..5eff86d 100644
+index 62143ba..ae21165 100644
 --- a/drivers/thermal/of-thermal.c
 +++ b/drivers/thermal/of-thermal.c
 @@ -30,6 +30,7 @@
@@ -50642,7 +52341,7 @@ index 04b1be7..5eff86d 100644
        mutex_unlock(&tzd->lock);
  
        return tzd;
-@@ -461,8 +464,10 @@ void thermal_zone_of_sensor_unregister(struct device *dev,
+@@ -473,8 +476,10 @@ void thermal_zone_of_sensor_unregister(struct device *dev,
                return;
  
        mutex_lock(&tzd->lock);
@@ -50656,7 +52355,7 @@ index 04b1be7..5eff86d 100644
        tz->get_temp = NULL;
        tz->get_trend = NULL;
 diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
-index a57bb5a..1f727d33 100644
+index fd66f57..48e6376 100644
 --- a/drivers/tty/cyclades.c
 +++ b/drivers/tty/cyclades.c
 @@ -1570,10 +1570,10 @@ static int cy_open(struct tty_struct *tty, struct file *filp)
@@ -50682,7 +52381,7 @@ index a57bb5a..1f727d33 100644
                                struct tty_struct *tty;
                                struct tty_ldisc *ld;
 diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c
-index 0ff7fda..dbc7d52 100644
+index 4fcec1d..5a036f7 100644
 --- a/drivers/tty/hvc/hvc_console.c
 +++ b/drivers/tty/hvc/hvc_console.c
 @@ -342,7 +342,7 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
@@ -50956,7 +52655,7 @@ index 7ae6c29..05c6dba 100644
        pr_devel("HVSI@%x: Handshaking started\n", pv->termno);
  
 diff --git a/drivers/tty/ipwireless/tty.c b/drivers/tty/ipwireless/tty.c
-index 17ee3bf..8d2520d 100644
+index 345cebb..d5a1e9e 100644
 --- a/drivers/tty/ipwireless/tty.c
 +++ b/drivers/tty/ipwireless/tty.c
 @@ -28,6 +28,7 @@
@@ -50967,10 +52666,10 @@ index 17ee3bf..8d2520d 100644
  
  #include "tty.h"
  #include "network.h"
-@@ -98,10 +99,10 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp)
-               mutex_unlock(&tty->ipw_tty_mutex);
+@@ -93,10 +94,10 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp)
                return -ENODEV;
-       }
+       mutex_lock(&tty->ipw_tty_mutex);
 -      if (tty->port.count == 0)
 +      if (atomic_read(&tty->port.count) == 0)
                tty->tx_bytes_queued = 0;
@@ -50980,7 +52679,7 @@ index 17ee3bf..8d2520d 100644
  
        tty->port.tty = linux_tty;
        linux_tty->driver_data = tty;
-@@ -117,9 +118,7 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp)
+@@ -112,9 +113,7 @@ static int ipw_open(struct tty_struct *linux_tty, struct file *filp)
  
  static void do_ipw_close(struct ipw_tty *tty)
  {
@@ -50991,7 +52690,7 @@ index 17ee3bf..8d2520d 100644
                struct tty_struct *linux_tty = tty->port.tty;
  
                if (linux_tty != NULL) {
-@@ -140,7 +139,7 @@ static void ipw_hangup(struct tty_struct *linux_tty)
+@@ -135,7 +134,7 @@ static void ipw_hangup(struct tty_struct *linux_tty)
                return;
  
        mutex_lock(&tty->ipw_tty_mutex);
@@ -51000,7 +52699,7 @@ index 17ee3bf..8d2520d 100644
                mutex_unlock(&tty->ipw_tty_mutex);
                return;
        }
-@@ -163,7 +162,7 @@ void ipwireless_tty_received(struct ipw_tty *tty, unsigned char *data,
+@@ -158,7 +157,7 @@ void ipwireless_tty_received(struct ipw_tty *tty, unsigned char *data,
  
        mutex_lock(&tty->ipw_tty_mutex);
  
@@ -51009,7 +52708,7 @@ index 17ee3bf..8d2520d 100644
                mutex_unlock(&tty->ipw_tty_mutex);
                return;
        }
-@@ -202,7 +201,7 @@ static int ipw_write(struct tty_struct *linux_tty,
+@@ -197,7 +196,7 @@ static int ipw_write(struct tty_struct *linux_tty,
                return -ENODEV;
  
        mutex_lock(&tty->ipw_tty_mutex);
@@ -51018,7 +52717,7 @@ index 17ee3bf..8d2520d 100644
                mutex_unlock(&tty->ipw_tty_mutex);
                return -EINVAL;
        }
-@@ -242,7 +241,7 @@ static int ipw_write_room(struct tty_struct *linux_tty)
+@@ -237,7 +236,7 @@ static int ipw_write_room(struct tty_struct *linux_tty)
        if (!tty)
                return -ENODEV;
  
@@ -51027,7 +52726,7 @@ index 17ee3bf..8d2520d 100644
                return -EINVAL;
  
        room = IPWIRELESS_TX_QUEUE_SIZE - tty->tx_bytes_queued;
-@@ -284,7 +283,7 @@ static int ipw_chars_in_buffer(struct tty_struct *linux_tty)
+@@ -279,7 +278,7 @@ static int ipw_chars_in_buffer(struct tty_struct *linux_tty)
        if (!tty)
                return 0;
  
@@ -51036,7 +52735,7 @@ index 17ee3bf..8d2520d 100644
                return 0;
  
        return tty->tx_bytes_queued;
-@@ -365,7 +364,7 @@ static int ipw_tiocmget(struct tty_struct *linux_tty)
+@@ -360,7 +359,7 @@ static int ipw_tiocmget(struct tty_struct *linux_tty)
        if (!tty)
                return -ENODEV;
  
@@ -51045,7 +52744,7 @@ index 17ee3bf..8d2520d 100644
                return -EINVAL;
  
        return get_control_lines(tty);
-@@ -381,7 +380,7 @@ ipw_tiocmset(struct tty_struct *linux_tty,
+@@ -376,7 +375,7 @@ ipw_tiocmset(struct tty_struct *linux_tty,
        if (!tty)
                return -ENODEV;
  
@@ -51054,7 +52753,7 @@ index 17ee3bf..8d2520d 100644
                return -EINVAL;
  
        return set_control_lines(tty, set, clear);
-@@ -395,7 +394,7 @@ static int ipw_ioctl(struct tty_struct *linux_tty,
+@@ -390,7 +389,7 @@ static int ipw_ioctl(struct tty_struct *linux_tty,
        if (!tty)
                return -ENODEV;
  
@@ -51063,7 +52762,7 @@ index 17ee3bf..8d2520d 100644
                return -EINVAL;
  
        /* FIXME: Exactly how is the tty object locked here .. */
-@@ -551,7 +550,7 @@ void ipwireless_tty_free(struct ipw_tty *tty)
+@@ -546,7 +545,7 @@ void ipwireless_tty_free(struct ipw_tty *tty)
                                 * are gone */
                                mutex_lock(&ttyj->ipw_tty_mutex);
                        }
@@ -51073,7 +52772,7 @@ index 17ee3bf..8d2520d 100644
                        ipwireless_disassociate_network_ttys(network,
                                                             ttyj->channel_idx);
 diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
-index 1deaca4..c8582d4 100644
+index 14c54e0..1efd4f2 100644
 --- a/drivers/tty/moxa.c
 +++ b/drivers/tty/moxa.c
 @@ -1189,7 +1189,7 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
@@ -51086,7 +52785,7 @@ index 1deaca4..c8582d4 100644
        tty_port_tty_set(&ch->port, tty);
        mutex_lock(&ch->port.mutex);
 diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
-index 2ebe47b..3205833 100644
+index c434376..114ce13 100644
 --- a/drivers/tty/n_gsm.c
 +++ b/drivers/tty/n_gsm.c
 @@ -1644,7 +1644,7 @@ static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr)
@@ -51098,7 +52797,7 @@ index 2ebe47b..3205833 100644
                kfree(dlci);
                return NULL;
        }
-@@ -2954,7 +2954,7 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp)
+@@ -2958,7 +2958,7 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp)
        struct gsm_dlci *dlci = tty->driver_data;
        struct tty_port *port = &dlci->port;
  
@@ -51108,7 +52807,7 @@ index 2ebe47b..3205833 100644
  
        dlci->modem_rx = 0;
 diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
-index 0391f17..31fa586 100644
+index 2e900a9..576d216 100644
 --- a/drivers/tty/n_tty.c
 +++ b/drivers/tty/n_tty.c
 @@ -115,7 +115,7 @@ struct n_tty_data {
@@ -51120,7 +52819,7 @@ index 0391f17..31fa586 100644
        size_t line_start;
  
        /* protected by output lock */
-@@ -2517,6 +2517,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops)
+@@ -2522,6 +2522,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops)
  {
        *ops = tty_ldisc_N_TTY;
        ops->owner = NULL;
@@ -51130,10 +52829,10 @@ index 0391f17..31fa586 100644
  }
  EXPORT_SYMBOL_GPL(n_tty_inherit_ops);
 diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
-index 25c9bc7..24077b7 100644
+index 7c4447a..70fbc1e 100644
 --- a/drivers/tty/pty.c
 +++ b/drivers/tty/pty.c
-@@ -790,8 +790,10 @@ static void __init unix98_pty_init(void)
+@@ -830,8 +830,10 @@ static void __init unix98_pty_init(void)
                panic("Couldn't register Unix98 pts driver");
  
        /* Now create the /dev/ptmx special device */
@@ -51177,7 +52876,7 @@ index 383c4c7..d408e21 100644
        clear_bit((info->aiop * 8) + info->chan, (void *) &xmit_flags[info->board]);
        spin_unlock_irqrestore(&info->port.lock, flags);
 diff --git a/drivers/tty/serial/ioc4_serial.c b/drivers/tty/serial/ioc4_serial.c
-index 1274499..f541382 100644
+index aa28209..e08fb85 100644
 --- a/drivers/tty/serial/ioc4_serial.c
 +++ b/drivers/tty/serial/ioc4_serial.c
 @@ -437,7 +437,7 @@ struct ioc4_soft {
@@ -51207,6 +52906,21 @@ index 1274499..f541382 100644
                                &soft->is_intr_type[intr_type].is_num_intrs);
  
                this_mir = this_ir = pending_intrs(soft, intr_type);
+diff --git a/drivers/tty/serial/kgdb_nmi.c b/drivers/tty/serial/kgdb_nmi.c
+index 129dc5b..1da5bb8 100644
+--- a/drivers/tty/serial/kgdb_nmi.c
++++ b/drivers/tty/serial/kgdb_nmi.c
+@@ -53,7 +53,9 @@ static int kgdb_nmi_console_setup(struct console *co, char *options)
+        * I/O utilities that messages sent to the console will automatically
+        * be displayed on the dbg_io.
+        */
+-      dbg_io_ops->is_console = true;
++      pax_open_kernel();
++      *(int *)&dbg_io_ops->is_console = true;
++      pax_close_kernel();
+       return 0;
+ }
 diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c
 index a260cde..6b2b5ce 100644
 --- a/drivers/tty/serial/kgdboc.c
@@ -51314,10 +53028,10 @@ index a260cde..6b2b5ce 100644
  /* This is only available if kgdboc is a built in for early debugging */
  static int __init kgdboc_early_init(char *opt)
 diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
-index 7307dc4..ce4fe90 100644
+index 4b6c783..9a19db3 100644
 --- a/drivers/tty/serial/msm_serial.c
 +++ b/drivers/tty/serial/msm_serial.c
-@@ -1026,7 +1026,7 @@ static struct uart_driver msm_uart_driver = {
+@@ -1028,7 +1028,7 @@ static struct uart_driver msm_uart_driver = {
        .cons = MSM_CONSOLE,
  };
  
@@ -51326,7 +53040,7 @@ index 7307dc4..ce4fe90 100644
  
  static const struct of_device_id msm_uartdm_table[] = {
        { .compatible = "qcom,msm-uartdm-v1.1", .data = (void *)UARTDM_1P1 },
-@@ -1045,7 +1045,7 @@ static int __init msm_serial_probe(struct platform_device *pdev)
+@@ -1047,7 +1047,7 @@ static int msm_serial_probe(struct platform_device *pdev)
        int irq;
  
        if (pdev->id == -1)
@@ -51336,10 +53050,10 @@ index 7307dc4..ce4fe90 100644
        if (unlikely(pdev->id < 0 || pdev->id >= UART_NR))
                return -ENXIO;
 diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
-index 1f5505e..a1a767d 100644
+index c78f43a..22b1dab 100644
 --- a/drivers/tty/serial/samsung.c
 +++ b/drivers/tty/serial/samsung.c
-@@ -463,11 +463,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port)
+@@ -478,11 +478,16 @@ static void s3c24xx_serial_shutdown(struct uart_port *port)
        }
  }
  
@@ -51353,10 +53067,10 @@ index 1f5505e..a1a767d 100644
 +      if (s3c24xx_serial_has_interrupt_mask(port))
 +              return s3c64xx_serial_startup(port);
 +
-       dbg("s3c24xx_serial_startup: port=%p (%08lx,%p)\n",
-           port->mapbase, port->membase);
+       dbg("s3c24xx_serial_startup: port=%p (%08llx,%p)\n",
+           port, (unsigned long long)port->mapbase, port->membase);
  
-@@ -1141,10 +1146,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
+@@ -1155,10 +1160,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
        /* setup info for port */
        port->dev       = &platdev->dev;
  
@@ -51368,10 +53082,10 @@ index 1f5505e..a1a767d 100644
  
        if (cfg->uart_flags & UPF_CONS_FLOW) {
 diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
-index b68550d..a62d7f8 100644
+index eaeb9a0..01a238c 100644
 --- a/drivers/tty/serial/serial_core.c
 +++ b/drivers/tty/serial/serial_core.c
-@@ -1329,7 +1329,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp)
+@@ -1339,7 +1339,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp)
  
        pr_debug("uart_close(%d) called\n", uport ? uport->line : -1);
  
@@ -51380,7 +53094,7 @@ index b68550d..a62d7f8 100644
                return;
  
        /*
-@@ -1456,7 +1456,7 @@ static void uart_hangup(struct tty_struct *tty)
+@@ -1466,7 +1466,7 @@ static void uart_hangup(struct tty_struct *tty)
                uart_flush_buffer(tty);
                uart_shutdown(tty, state);
                spin_lock_irqsave(&port->lock, flags);
@@ -51389,7 +53103,7 @@ index b68550d..a62d7f8 100644
                clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags);
                spin_unlock_irqrestore(&port->lock, flags);
                tty_port_tty_set(port, NULL);
-@@ -1554,7 +1554,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
+@@ -1564,7 +1564,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
                goto end;
        }
  
@@ -51398,17 +53112,17 @@ index b68550d..a62d7f8 100644
        if (!state->uart_port || state->uart_port->flags & UPF_DEAD) {
                retval = -ENXIO;
                goto err_dec_count;
-@@ -1594,7 +1594,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
+@@ -1596,7 +1596,7 @@ static int uart_open(struct tty_struct *tty, struct file *filp)
  end:
        return retval;
  err_dec_count:
 -      port->count--;
-+      atomic_inc(&port->count);
++      atomic_dec(&port->count);
        mutex_unlock(&port->mutex);
        goto end;
  }
 diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c
-index d48e040..0f52764 100644
+index b799170..87dafd5 100644
 --- a/drivers/tty/synclink.c
 +++ b/drivers/tty/synclink.c
 @@ -3090,7 +3090,7 @@ static void mgsl_close(struct tty_struct *tty, struct file * filp)
@@ -51440,7 +53154,7 @@ index d48e040..0f52764 100644
        info->port.flags &= ~ASYNC_NORMAL_ACTIVE;
        info->port.tty = NULL;
  
-@@ -3297,12 +3297,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
+@@ -3296,10 +3296,10 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
        
        if (debug_level >= DEBUG_LEVEL_INFO)
                printk("%s(%d):block_til_ready before block on %s count=%d\n",
@@ -51448,14 +53162,12 @@ index d48e040..0f52764 100644
 +                       __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count));
  
        spin_lock_irqsave(&info->irq_spinlock, flags);
-       if (!tty_hung_up_p(filp)) {
-               extra_count = true;
--              port->count--;
-+              atomic_dec(&port->count);
-       }
+-      port->count--;
++      atomic_dec(&port->count);
        spin_unlock_irqrestore(&info->irq_spinlock, flags);
        port->blocked_open++;
-@@ -3331,7 +3331,7 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
+       
+@@ -3327,7 +3327,7 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
                
                if (debug_level >= DEBUG_LEVEL_INFO)
                        printk("%s(%d):block_til_ready blocking on %s count=%d\n",
@@ -51464,10 +53176,10 @@ index d48e040..0f52764 100644
                                 
                tty_unlock(tty);
                schedule();
-@@ -3343,12 +3343,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
+@@ -3339,12 +3339,12 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
        
        /* FIXME: Racy on hangup during close wait */
-       if (extra_count)
+       if (!tty_hung_up_p(filp))
 -              port->count++;
 +              atomic_inc(&port->count);
        port->blocked_open--;
@@ -51479,7 +53191,7 @@ index d48e040..0f52764 100644
                         
        if (!retval)
                port->flags |= ASYNC_NORMAL_ACTIVE;
-@@ -3400,7 +3400,7 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp)
+@@ -3396,7 +3396,7 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp)
                
        if (debug_level >= DEBUG_LEVEL_INFO)
                printk("%s(%d):mgsl_open(%s), old ref count = %d\n",
@@ -51487,8 +53199,8 @@ index d48e040..0f52764 100644
 +                       __FILE__,__LINE__,tty->driver->name, atomic_read(&info->port.count));
  
        /* If port is closing, signal caller to try again */
-       if (tty_hung_up_p(filp) || info->port.flags & ASYNC_CLOSING){
-@@ -3419,10 +3419,10 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp)
+       if (info->port.flags & ASYNC_CLOSING){
+@@ -3415,10 +3415,10 @@ static int mgsl_open(struct tty_struct *tty, struct file * filp)
                spin_unlock_irqrestore(&info->netlock, flags);
                goto cleanup;
        }
@@ -51501,7 +53213,7 @@ index d48e040..0f52764 100644
                /* 1st open on this device, init hardware */
                retval = startup(info);
                if (retval < 0)
-@@ -3446,8 +3446,8 @@ cleanup:
+@@ -3442,8 +3442,8 @@ cleanup:
        if (retval) {
                if (tty->count == 1)
                        info->port.tty = NULL; /* tty layer will release tty struct */
@@ -51512,7 +53224,7 @@ index d48e040..0f52764 100644
        }
        
        return retval;
-@@ -7665,7 +7665,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding,
+@@ -7661,7 +7661,7 @@ static int hdlcdev_attach(struct net_device *dev, unsigned short encoding,
        unsigned short new_crctype;
  
        /* return error if TTY interface open */
@@ -51521,7 +53233,7 @@ index d48e040..0f52764 100644
                return -EBUSY;
  
        switch (encoding)
-@@ -7760,7 +7760,7 @@ static int hdlcdev_open(struct net_device *dev)
+@@ -7756,7 +7756,7 @@ static int hdlcdev_open(struct net_device *dev)
  
        /* arbitrate between network and tty opens */
        spin_lock_irqsave(&info->netlock, flags);
@@ -51530,7 +53242,7 @@ index d48e040..0f52764 100644
                printk(KERN_WARNING "%s: hdlc_open returning busy\n", dev->name);
                spin_unlock_irqrestore(&info->netlock, flags);
                return -EBUSY;
-@@ -7846,7 +7846,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+@@ -7842,7 +7842,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
                printk("%s:hdlcdev_ioctl(%s)\n",__FILE__,dev->name);
  
        /* return error if TTY interface open */
@@ -51540,7 +53252,7 @@ index d48e040..0f52764 100644
  
        if (cmd != SIOCWANDEV)
 diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c
-index c359a91..959fc26 100644
+index 0e8c39b..e0cb171 100644
 --- a/drivers/tty/synclink_gt.c
 +++ b/drivers/tty/synclink_gt.c
 @@ -670,7 +670,7 @@ static int open(struct tty_struct *tty, struct file *filp)
@@ -51551,7 +53263,7 @@ index c359a91..959fc26 100644
 +      DBGINFO(("%s open, old ref count = %d\n", info->device_name, atomic_read(&info->port.count)));
  
        /* If port is closing, signal caller to try again */
-       if (tty_hung_up_p(filp) || info->port.flags & ASYNC_CLOSING){
+       if (info->port.flags & ASYNC_CLOSING){
 @@ -691,10 +691,10 @@ static int open(struct tty_struct *tty, struct file *filp)
                mutex_unlock(&info->port.mutex);
                goto cleanup;
@@ -51639,26 +53351,26 @@ index c359a91..959fc26 100644
                    port->pending_bh && !port->bh_running &&
                    !port->bh_requested) {
                        DBGISR(("%s bh queued\n", port->device_name));
-@@ -3302,7 +3302,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
+@@ -3299,7 +3299,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
+       add_wait_queue(&port->open_wait, &wait);
        spin_lock_irqsave(&info->lock, flags);
-       if (!tty_hung_up_p(filp)) {
-               extra_count = true;
--              port->count--;
-+              atomic_dec(&port->count);
-       }
+-      port->count--;
++      atomic_dec(&port->count);
        spin_unlock_irqrestore(&info->lock, flags);
        port->blocked_open++;
-@@ -3339,7 +3339,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
+@@ -3335,7 +3335,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
        remove_wait_queue(&port->open_wait, &wait);
  
-       if (extra_count)
+       if (!tty_hung_up_p(filp))
 -              port->count++;
 +              atomic_inc(&port->count);
        port->blocked_open--;
  
        if (!retval)
 diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c
-index 53ba853..3c30f6d 100644
+index c3f9091..abe4601 100644
 --- a/drivers/tty/synclinkmp.c
 +++ b/drivers/tty/synclinkmp.c
 @@ -750,7 +750,7 @@ static int open(struct tty_struct *tty, struct file *filp)
@@ -51669,7 +53381,7 @@ index 53ba853..3c30f6d 100644
 +                       __FILE__,__LINE__,tty->driver->name, atomic_read(&info->port.count));
  
        /* If port is closing, signal caller to try again */
-       if (tty_hung_up_p(filp) || info->port.flags & ASYNC_CLOSING){
+       if (info->port.flags & ASYNC_CLOSING){
 @@ -769,10 +769,10 @@ static int open(struct tty_struct *tty, struct file *filp)
                spin_unlock_irqrestore(&info->netlock, flags);
                goto cleanup;
@@ -51757,7 +53469,7 @@ index 53ba853..3c30f6d 100644
                     port->pending_bh && !port->bh_running &&
                     !port->bh_requested ) {
                        if ( debug_level >= DEBUG_LEVEL_ISR )
-@@ -3319,12 +3319,12 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
+@@ -3318,10 +3318,10 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
  
        if (debug_level >= DEBUG_LEVEL_INFO)
                printk("%s(%d):%s block_til_ready() before block, count=%d\n",
@@ -51765,14 +53477,12 @@ index 53ba853..3c30f6d 100644
 +                       __FILE__,__LINE__, tty->driver->name, atomic_read(&port->count));
  
        spin_lock_irqsave(&info->lock, flags);
-       if (!tty_hung_up_p(filp)) {
-               extra_count = true;
--              port->count--;
-+              atomic_dec(&port->count);
-       }
+-      port->count--;
++      atomic_dec(&port->count);
        spin_unlock_irqrestore(&info->lock, flags);
        port->blocked_open++;
-@@ -3353,7 +3353,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
+@@ -3349,7 +3349,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
  
                if (debug_level >= DEBUG_LEVEL_INFO)
                        printk("%s(%d):%s block_til_ready() count=%d\n",
@@ -51781,10 +53491,10 @@ index 53ba853..3c30f6d 100644
  
                tty_unlock(tty);
                schedule();
-@@ -3364,12 +3364,12 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
+@@ -3359,12 +3359,12 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
+       set_current_state(TASK_RUNNING);
        remove_wait_queue(&port->open_wait, &wait);
-       if (extra_count)
+       if (!tty_hung_up_p(filp))
 -              port->count++;
 +              atomic_inc(&port->count);
        port->blocked_open--;
@@ -51797,10 +53507,10 @@ index 53ba853..3c30f6d 100644
        if (!retval)
                port->flags |= ASYNC_NORMAL_ACTIVE;
 diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
-index ce396ec..04a37be 100644
+index 42bad18..447d7a2 100644
 --- a/drivers/tty/sysrq.c
 +++ b/drivers/tty/sysrq.c
-@@ -1075,7 +1075,7 @@ EXPORT_SYMBOL(unregister_sysrq_key);
+@@ -1084,7 +1084,7 @@ EXPORT_SYMBOL(unregister_sysrq_key);
  static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
                                   size_t count, loff_t *ppos)
  {
@@ -51810,10 +53520,10 @@ index ce396ec..04a37be 100644
  
                if (get_user(c, buf))
 diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
-index 3411071..86f2cf2 100644
+index 0508a1d..b610592 100644
 --- a/drivers/tty/tty_io.c
 +++ b/drivers/tty/tty_io.c
-@@ -3475,7 +3475,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
+@@ -3498,7 +3498,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
  
  void tty_default_fops(struct file_operations *fops)
  {
@@ -51863,10 +53573,10 @@ index 2d822aa..a566234 100644
        raw_spin_unlock_irqrestore(&tty_ldiscs_lock, flags);
  }
 diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c
-index 3f746c8..2f2fcaa 100644
+index 1b93357..ea9f82c 100644
 --- a/drivers/tty/tty_port.c
 +++ b/drivers/tty/tty_port.c
-@@ -235,7 +235,7 @@ void tty_port_hangup(struct tty_port *port)
+@@ -237,7 +237,7 @@ void tty_port_hangup(struct tty_port *port)
        unsigned long flags;
  
        spin_lock_irqsave(&port->lock, flags);
@@ -51875,16 +53585,16 @@ index 3f746c8..2f2fcaa 100644
        port->flags &= ~ASYNC_NORMAL_ACTIVE;
        tty = port->tty;
        if (tty)
-@@ -393,7 +393,7 @@ int tty_port_block_til_ready(struct tty_port *port,
+@@ -399,7 +399,7 @@ int tty_port_block_til_ready(struct tty_port *port,
        /* The port lock protects the port counts */
        spin_lock_irqsave(&port->lock, flags);
-       if (!tty_hung_up_p(filp))
--              port->count--;
-+              atomic_dec(&port->count);
+-      port->count--;
++      atomic_dec(&port->count);
        port->blocked_open++;
        spin_unlock_irqrestore(&port->lock, flags);
  
-@@ -435,7 +435,7 @@ int tty_port_block_til_ready(struct tty_port *port,
+@@ -441,7 +441,7 @@ int tty_port_block_til_ready(struct tty_port *port,
           we must not mess that up further */
        spin_lock_irqsave(&port->lock, flags);
        if (!tty_hung_up_p(filp))
@@ -51893,7 +53603,7 @@ index 3f746c8..2f2fcaa 100644
        port->blocked_open--;
        if (retval == 0)
                port->flags |= ASYNC_NORMAL_ACTIVE;
-@@ -469,19 +469,19 @@ int tty_port_close_start(struct tty_port *port,
+@@ -479,19 +479,19 @@ int tty_port_close_start(struct tty_port *port,
                return 0;
        }
  
@@ -51920,17 +53630,17 @@ index 3f746c8..2f2fcaa 100644
                spin_unlock_irqrestore(&port->lock, flags);
                return 0;
        }
-@@ -563,7 +563,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty,
+@@ -592,7 +592,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty,
+                                                       struct file *filp)
  {
        spin_lock_irq(&port->lock);
-       if (!tty_hung_up_p(filp))
--              ++port->count;
-+              atomic_inc(&port->count);
+-      ++port->count;
++      atomic_inc(&port->count);
        spin_unlock_irq(&port->lock);
        tty_port_tty_set(port, tty);
  
 diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
-index d0e3a44..5f8b754 100644
+index c039cfe..0b463b0 100644
 --- a/drivers/tty/vt/keyboard.c
 +++ b/drivers/tty/vt/keyboard.c
 @@ -641,6 +641,16 @@ static void k_spec(struct vc_data *vc, unsigned char value, char up_flag)
@@ -51991,7 +53701,7 @@ index d0e3a44..5f8b754 100644
                        ret = -EPERM;
                        goto reterr;
 diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
-index a673e5b..36e5d32 100644
+index 60fa627..7214965 100644
 --- a/drivers/uio/uio.c
 +++ b/drivers/uio/uio.c
 @@ -25,6 +25,7 @@
@@ -52002,16 +53712,7 @@ index a673e5b..36e5d32 100644
  
  #define UIO_MAX_DEVICES               (1U << MINORBITS)
  
-@@ -32,7 +33,7 @@ struct uio_device {
-       struct module           *owner;
-       struct device           *dev;
-       int                     minor;
--      atomic_t                event;
-+      atomic_unchecked_t      event;
-       struct fasync_struct    *async_queue;
-       wait_queue_head_t       wait;
-       struct uio_info         *info;
-@@ -243,7 +244,7 @@ static ssize_t event_show(struct device *dev,
+@@ -231,7 +232,7 @@ static ssize_t event_show(struct device *dev,
                          struct device_attribute *attr, char *buf)
  {
        struct uio_device *idev = dev_get_drvdata(dev);
@@ -52020,7 +53721,7 @@ index a673e5b..36e5d32 100644
  }
  static DEVICE_ATTR_RO(event);
  
-@@ -405,7 +406,7 @@ void uio_event_notify(struct uio_info *info)
+@@ -393,7 +394,7 @@ void uio_event_notify(struct uio_info *info)
  {
        struct uio_device *idev = info->uio_dev;
  
@@ -52029,7 +53730,7 @@ index a673e5b..36e5d32 100644
        wake_up_interruptible(&idev->wait);
        kill_fasync(&idev->async_queue, SIGIO, POLL_IN);
  }
-@@ -458,7 +459,7 @@ static int uio_open(struct inode *inode, struct file *filep)
+@@ -446,7 +447,7 @@ static int uio_open(struct inode *inode, struct file *filep)
        }
  
        listener->dev = idev;
@@ -52038,7 +53739,7 @@ index a673e5b..36e5d32 100644
        filep->private_data = listener;
  
        if (idev->info->open) {
-@@ -509,7 +510,7 @@ static unsigned int uio_poll(struct file *filep, poll_table *wait)
+@@ -497,7 +498,7 @@ static unsigned int uio_poll(struct file *filep, poll_table *wait)
                return -EIO;
  
        poll_wait(filep, &idev->wait, wait);
@@ -52047,7 +53748,7 @@ index a673e5b..36e5d32 100644
                return POLLIN | POLLRDNORM;
        return 0;
  }
-@@ -534,7 +535,7 @@ static ssize_t uio_read(struct file *filep, char __user *buf,
+@@ -522,7 +523,7 @@ static ssize_t uio_read(struct file *filep, char __user *buf,
        do {
                set_current_state(TASK_INTERRUPTIBLE);
  
@@ -52056,7 +53757,7 @@ index a673e5b..36e5d32 100644
                if (event_count != listener->event_count) {
                        if (copy_to_user(buf, &event_count, count))
                                retval = -EFAULT;
-@@ -591,9 +592,13 @@ static ssize_t uio_write(struct file *filep, const char __user *buf,
+@@ -579,9 +580,13 @@ static ssize_t uio_write(struct file *filep, const char __user *buf,
  static int uio_find_mem_index(struct vm_area_struct *vma)
  {
        struct uio_device *idev = vma->vm_private_data;
@@ -52071,7 +53772,7 @@ index a673e5b..36e5d32 100644
                        return -1;
                return (int)vma->vm_pgoff;
        }
-@@ -825,7 +830,7 @@ int __uio_register_device(struct module *owner,
+@@ -813,7 +818,7 @@ int __uio_register_device(struct module *owner,
        idev->owner = owner;
        idev->info = info;
        init_waitqueue_head(&idev->wait);
@@ -52208,7 +53909,7 @@ index 2a3bbdf..91d72cf 100644
                file->f_version = event_count;
                return POLLIN | POLLRDNORM;
 diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
-index 257876e..4304364 100644
+index 0b59731..46ee7d1 100644
 --- a/drivers/usb/core/devio.c
 +++ b/drivers/usb/core/devio.c
 @@ -187,7 +187,7 @@ static ssize_t usbdev_read(struct file *file, char __user *buf, size_t nbytes,
@@ -52248,10 +53949,10 @@ index 257876e..4304364 100644
                                    dev->rawdescriptors[i] + (*ppos - pos),
                                    min(len, alloclen))) {
 diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
-index 9c4e292..b89877f 100644
+index a6efb41..6f72549b 100644
 --- a/drivers/usb/core/hcd.c
 +++ b/drivers/usb/core/hcd.c
-@@ -1550,7 +1550,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
+@@ -1551,7 +1551,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
         */
        usb_get_urb(urb);
        atomic_inc(&urb->use_count);
@@ -52260,7 +53961,7 @@ index 9c4e292..b89877f 100644
        usbmon_urb_submit(&hcd->self, urb);
  
        /* NOTE requirements on root-hub callers (usbfs and the hub
-@@ -1577,7 +1577,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
+@@ -1578,7 +1578,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
                urb->hcpriv = NULL;
                INIT_LIST_HEAD(&urb->urb_list);
                atomic_dec(&urb->use_count);
@@ -52270,18 +53971,18 @@ index 9c4e292..b89877f 100644
                        wake_up(&usb_kill_urb_queue);
                usb_put_urb(urb);
 diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 229a73f..ef86f98 100644
+index b649fef..c7107a0 100644
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -27,6 +27,7 @@
- #include <linux/freezer.h>
+@@ -26,6 +26,7 @@
+ #include <linux/mutex.h>
  #include <linux/random.h>
  #include <linux/pm_qos.h>
 +#include <linux/grsecurity.h>
  
  #include <asm/uaccess.h>
  #include <asm/byteorder.h>
-@@ -4512,6 +4513,10 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
+@@ -4666,6 +4667,10 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
                        goto done;
                return;
        }
@@ -52293,7 +53994,7 @@ index 229a73f..ef86f98 100644
                unit_load = 150;
        else
 diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
-index 0c8a7fc..c45b40a 100644
+index f7b7713..23d07ec 100644
 --- a/drivers/usb/core/message.c
 +++ b/drivers/usb/core/message.c
 @@ -128,7 +128,7 @@ static int usb_internal_control_msg(struct usb_device *usb_dev,
@@ -52337,7 +54038,7 @@ index 1236c60..d47a51c 100644
  static DEVICE_ATTR_RO(urbnum);
  
 diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
-index 4d11449..f4ccabf 100644
+index 2dd2362..1135437 100644
 --- a/drivers/usb/core/usb.c
 +++ b/drivers/usb/core/usb.c
 @@ -433,7 +433,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent,
@@ -52349,19 +54050,6 @@ index 4d11449..f4ccabf 100644
  
        INIT_LIST_HEAD(&dev->ep0.urb_list);
        dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE;
-diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
-index 85f398d..d375bbe 100644
---- a/drivers/usb/dwc3/gadget.c
-+++ b/drivers/usb/dwc3/gadget.c
-@@ -550,8 +550,6 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
-               if (!usb_endpoint_xfer_isoc(desc))
-                       return 0;
--              memset(&trb_link, 0, sizeof(trb_link));
--
-               /* Link TRB for ISOC. The HWO bit is never reset */
-               trb_st_hw = &dep->trb_pool[0];
 diff --git a/drivers/usb/early/ehci-dbgp.c b/drivers/usb/early/ehci-dbgp.c
 index 8cfc319..4868255 100644
 --- a/drivers/usb/early/ehci-dbgp.c
@@ -52403,23 +54091,23 @@ index 8cfc319..4868255 100644
  
        return 0;
  }
-diff --git a/drivers/usb/gadget/f_uac1.c b/drivers/usb/gadget/f_uac1.c
-index 2b4c82d..06a8ee6 100644
---- a/drivers/usb/gadget/f_uac1.c
-+++ b/drivers/usb/gadget/f_uac1.c
-@@ -13,6 +13,7 @@
- #include <linux/kernel.h>
+diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c
+index f7b2032..fbb340c 100644
+--- a/drivers/usb/gadget/function/f_uac1.c
++++ b/drivers/usb/gadget/function/f_uac1.c
+@@ -14,6 +14,7 @@
+ #include <linux/module.h>
  #include <linux/device.h>
  #include <linux/atomic.h>
 +#include <linux/module.h>
  
  #include "u_uac1.h"
  
-diff --git a/drivers/usb/gadget/u_serial.c b/drivers/usb/gadget/u_serial.c
-index ad0aca8..8ff84865 100644
---- a/drivers/usb/gadget/u_serial.c
-+++ b/drivers/usb/gadget/u_serial.c
-@@ -733,9 +733,9 @@ static int gs_open(struct tty_struct *tty, struct file *file)
+diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c
+index 491082a..dfd7d17 100644
+--- a/drivers/usb/gadget/function/u_serial.c
++++ b/drivers/usb/gadget/function/u_serial.c
+@@ -729,9 +729,9 @@ static int gs_open(struct tty_struct *tty, struct file *file)
                        spin_lock_irq(&port->port_lock);
  
                        /* already open?  Great. */
@@ -52431,7 +54119,7 @@ index ad0aca8..8ff84865 100644
  
                        /* currently opening/closing? wait ... */
                        } else if (port->openclose) {
-@@ -794,7 +794,7 @@ static int gs_open(struct tty_struct *tty, struct file *file)
+@@ -790,7 +790,7 @@ static int gs_open(struct tty_struct *tty, struct file *file)
        tty->driver_data = port;
        port->port.tty = tty;
  
@@ -52440,7 +54128,7 @@ index ad0aca8..8ff84865 100644
        port->openclose = false;
  
        /* if connected, start the I/O stream */
-@@ -836,11 +836,11 @@ static void gs_close(struct tty_struct *tty, struct file *file)
+@@ -832,11 +832,11 @@ static void gs_close(struct tty_struct *tty, struct file *file)
  
        spin_lock_irq(&port->port_lock);
  
@@ -52455,7 +54143,7 @@ index ad0aca8..8ff84865 100644
                goto exit;
        }
  
-@@ -850,7 +850,7 @@ static void gs_close(struct tty_struct *tty, struct file *file)
+@@ -846,7 +846,7 @@ static void gs_close(struct tty_struct *tty, struct file *file)
         * and sleep if necessary
         */
        port->openclose = true;
@@ -52464,7 +54152,7 @@ index ad0aca8..8ff84865 100644
  
        gser = port->port_usb;
        if (gser && gser->disconnect)
-@@ -1066,7 +1066,7 @@ static int gs_closed(struct gs_port *port)
+@@ -1062,7 +1062,7 @@ static int gs_closed(struct gs_port *port)
        int cond;
  
        spin_lock_irq(&port->port_lock);
@@ -52473,7 +54161,7 @@ index ad0aca8..8ff84865 100644
        spin_unlock_irq(&port->port_lock);
        return cond;
  }
-@@ -1209,7 +1209,7 @@ int gserial_connect(struct gserial *gser, u8 port_num)
+@@ -1205,7 +1205,7 @@ int gserial_connect(struct gserial *gser, u8 port_num)
        /* if it's already open, start I/O ... and notify the serial
         * protocol about open/close status (connect/disconnect).
         */
@@ -52482,7 +54170,7 @@ index ad0aca8..8ff84865 100644
                pr_debug("gserial_connect: start ttyGS%d\n", port->port_num);
                gs_start_io(port);
                if (gser->connect)
-@@ -1256,7 +1256,7 @@ void gserial_disconnect(struct gserial *gser)
+@@ -1252,7 +1252,7 @@ void gserial_disconnect(struct gserial *gser)
  
        port->port_usb = NULL;
        gser->ioport = NULL;
@@ -52491,7 +54179,7 @@ index ad0aca8..8ff84865 100644
                wake_up_interruptible(&port->drain_wait);
                if (port->port.tty)
                        tty_hangup(port->port.tty);
-@@ -1272,7 +1272,7 @@ void gserial_disconnect(struct gserial *gser)
+@@ -1268,7 +1268,7 @@ void gserial_disconnect(struct gserial *gser)
  
        /* finally, free any unused/unusable I/O buffers */
        spin_lock_irqsave(&port->port_lock, flags);
@@ -52500,11 +54188,11 @@ index ad0aca8..8ff84865 100644
                gs_buf_free(&port->port_write_buf);
        gs_free_requests(gser->out, &port->read_pool, NULL);
        gs_free_requests(gser->out, &port->read_queue, NULL);
-diff --git a/drivers/usb/gadget/u_uac1.c b/drivers/usb/gadget/u_uac1.c
-index 7a55fea..cc0ed4f 100644
---- a/drivers/usb/gadget/u_uac1.c
-+++ b/drivers/usb/gadget/u_uac1.c
-@@ -16,6 +16,7 @@
+diff --git a/drivers/usb/gadget/function/u_uac1.c b/drivers/usb/gadget/function/u_uac1.c
+index a44a07f..ecea924 100644
+--- a/drivers/usb/gadget/function/u_uac1.c
++++ b/drivers/usb/gadget/function/u_uac1.c
+@@ -17,6 +17,7 @@
  #include <linux/ctype.h>
  #include <linux/random.h>
  #include <linux/syscalls.h>
@@ -52513,10 +54201,10 @@ index 7a55fea..cc0ed4f 100644
  #include "u_uac1.h"
  
 diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
-index 7ae0c4d..35521b7 100644
+index 5728829..fefc6bf 100644
 --- a/drivers/usb/host/ehci-hub.c
 +++ b/drivers/usb/host/ehci-hub.c
-@@ -780,7 +780,7 @@ static struct urb *request_single_step_set_feature_urb(
+@@ -771,7 +771,7 @@ static struct urb *request_single_step_set_feature_urb(
        urb->transfer_flags = URB_DIR_IN;
        usb_get_urb(urb);
        atomic_inc(&urb->use_count);
@@ -52525,7 +54213,7 @@ index 7ae0c4d..35521b7 100644
        urb->setup_dma = dma_map_single(
                        hcd->self.controller,
                        urb->setup_packet,
-@@ -847,7 +847,7 @@ static int ehset_single_step_set_feature(struct usb_hcd *hcd, int port)
+@@ -838,7 +838,7 @@ static int ehset_single_step_set_feature(struct usb_hcd *hcd, int port)
        urb->status = -EINPROGRESS;
        usb_get_urb(urb);
        atomic_inc(&urb->use_count);
@@ -52535,7 +54223,7 @@ index 7ae0c4d..35521b7 100644
        if (!retval && !wait_for_completion_timeout(&done,
                                                msecs_to_jiffies(2000))) {
 diff --git a/drivers/usb/host/hwa-hc.c b/drivers/usb/host/hwa-hc.c
-index d0d8fad..668ef7b 100644
+index 1db0626..4948782 100644
 --- a/drivers/usb/host/hwa-hc.c
 +++ b/drivers/usb/host/hwa-hc.c
 @@ -337,7 +337,10 @@ static int __hwahc_op_bwa_set(struct wusbhc *wusbhc, s8 stream_index,
@@ -52565,11 +54253,11 @@ index d0d8fad..668ef7b 100644
  }
  
 diff --git a/drivers/usb/misc/appledisplay.c b/drivers/usb/misc/appledisplay.c
-index ba6a5d6..f88f7f3 100644
+index b3d245e..99549ed 100644
 --- a/drivers/usb/misc/appledisplay.c
 +++ b/drivers/usb/misc/appledisplay.c
-@@ -83,7 +83,7 @@ struct appledisplay {
-       spinlock_t lock;
+@@ -84,7 +84,7 @@ struct appledisplay {
+       struct mutex sysfslock;         /* concurrent read and write */
  };
  
 -static atomic_t count_displays = ATOMIC_INIT(0);
@@ -52577,7 +54265,7 @@ index ba6a5d6..f88f7f3 100644
  static struct workqueue_struct *wq;
  
  static void appledisplay_complete(struct urb *urb)
-@@ -281,7 +281,7 @@ static int appledisplay_probe(struct usb_interface *iface,
+@@ -288,7 +288,7 @@ static int appledisplay_probe(struct usb_interface *iface,
  
        /* Register backlight device */
        snprintf(bl_name, sizeof(bl_name), "appledisplay%d",
@@ -52639,8 +54327,65 @@ index 307e339..6aa97cb 100644
  
  
  /* Dynamic bitflag definitions (us->dflags): used in set_bit() etc. */
+diff --git a/drivers/usb/usbip/vhci.h b/drivers/usb/usbip/vhci.h
+index a863a98..d272795 100644
+--- a/drivers/usb/usbip/vhci.h
++++ b/drivers/usb/usbip/vhci.h
+@@ -83,7 +83,7 @@ struct vhci_hcd {
+       unsigned resuming:1;
+       unsigned long re_timeout;
+-      atomic_t seqnum;
++      atomic_unchecked_t seqnum;
+       /*
+        * NOTE:
+diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c
+index c02374b..32d47a9 100644
+--- a/drivers/usb/usbip/vhci_hcd.c
++++ b/drivers/usb/usbip/vhci_hcd.c
+@@ -439,7 +439,7 @@ static void vhci_tx_urb(struct urb *urb)
+       spin_lock(&vdev->priv_lock);
+-      priv->seqnum = atomic_inc_return(&the_controller->seqnum);
++      priv->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
+       if (priv->seqnum == 0xffff)
+               dev_info(&urb->dev->dev, "seqnum max\n");
+@@ -686,7 +686,7 @@ static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
+                       return -ENOMEM;
+               }
+-              unlink->seqnum = atomic_inc_return(&the_controller->seqnum);
++              unlink->seqnum = atomic_inc_return_unchecked(&the_controller->seqnum);
+               if (unlink->seqnum == 0xffff)
+                       pr_info("seqnum max\n");
+@@ -891,7 +891,7 @@ static int vhci_start(struct usb_hcd *hcd)
+               vdev->rhport = rhport;
+       }
+-      atomic_set(&vhci->seqnum, 0);
++      atomic_set_unchecked(&vhci->seqnum, 0);
+       spin_lock_init(&vhci->lock);
+       hcd->power_budget = 0; /* no limit */
+diff --git a/drivers/usb/usbip/vhci_rx.c b/drivers/usb/usbip/vhci_rx.c
+index 00e4a54..d676f85 100644
+--- a/drivers/usb/usbip/vhci_rx.c
++++ b/drivers/usb/usbip/vhci_rx.c
+@@ -80,7 +80,7 @@ static void vhci_recv_ret_submit(struct vhci_device *vdev,
+       if (!urb) {
+               pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum);
+               pr_info("max seqnum %d\n",
+-                      atomic_read(&the_controller->seqnum));
++                      atomic_read_unchecked(&the_controller->seqnum));
+               usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
+               return;
+       }
 diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h
-index f2a8d29..7bc3fe7 100644
+index edc7267..9f65ce2 100644
 --- a/drivers/usb/wusbcore/wa-hc.h
 +++ b/drivers/usb/wusbcore/wa-hc.h
 @@ -240,7 +240,7 @@ struct wahc {
@@ -52662,7 +54407,7 @@ index f2a8d29..7bc3fe7 100644
        for (index = 0; index < WA_MAX_BUF_IN_URBS; ++index)
                usb_init_urb(&(wa->buf_in_urbs[index]));
 diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c
-index 3e2e4ed..060c9b8 100644
+index 69af4fd..da390d7 100644
 --- a/drivers/usb/wusbcore/wa-xfer.c
 +++ b/drivers/usb/wusbcore/wa-xfer.c
 @@ -314,7 +314,7 @@ static void wa_xfer_completion(struct wa_xfer *xfer)
@@ -52675,10 +54420,10 @@ index 3e2e4ed..060c9b8 100644
  
  /* Return the xfer's ID. */
 diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
-index 512f479..7e041d0 100644
+index f018d8d..ccab63f 100644
 --- a/drivers/vfio/vfio.c
 +++ b/drivers/vfio/vfio.c
-@@ -487,7 +487,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev)
+@@ -481,7 +481,7 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev)
                return 0;
  
        /* TODO Prevent device auto probing */
@@ -52784,7 +54529,7 @@ index 1b0b233..6f34c2c 100644
                err = -ENOSPC;
        }
 diff --git a/drivers/video/fbdev/aty/aty128fb.c b/drivers/video/fbdev/aty/aty128fb.c
-index 52108be..c7c110d 100644
+index aedf2fb..47c9aca 100644
 --- a/drivers/video/fbdev/aty/aty128fb.c
 +++ b/drivers/video/fbdev/aty/aty128fb.c
 @@ -149,7 +149,7 @@ enum {
@@ -52797,7 +54542,7 @@ index 52108be..c7c110d 100644
        "PCI",
        "PRO AGP",
 diff --git a/drivers/video/fbdev/aty/atyfb_base.c b/drivers/video/fbdev/aty/atyfb_base.c
-index c3d0074..0b9077e 100644
+index 37ec09b..98f8862 100644
 --- a/drivers/video/fbdev/aty/atyfb_base.c
 +++ b/drivers/video/fbdev/aty/atyfb_base.c
 @@ -1326,10 +1326,14 @@ static int atyfb_set_par(struct fb_info *info)
@@ -52865,37 +54610,10 @@ index 900aa4e..6d49418 100644
  }
  EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup);
 diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
-index b6d5008..5bca7bf 100644
+index 0705d88..d9429bf 100644
 --- a/drivers/video/fbdev/core/fbmem.c
 +++ b/drivers/video/fbdev/core/fbmem.c
-@@ -433,7 +433,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
-                       image->dx += image->width + 8;
-               }
-       } else if (rotate == FB_ROTATE_UD) {
--              for (x = 0; x < num && image->dx >= 0; x++) {
-+              for (x = 0; x < num && (__s32)image->dx >= 0; x++) {
-                       info->fbops->fb_imageblit(info, image);
-                       image->dx -= image->width + 8;
-               }
-@@ -445,7 +445,7 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
-                       image->dy += image->height + 8;
-               }
-       } else if (rotate == FB_ROTATE_CCW) {
--              for (x = 0; x < num && image->dy >= 0; x++) {
-+              for (x = 0; x < num && (__s32)image->dy >= 0; x++) {
-                       info->fbops->fb_imageblit(info, image);
-                       image->dy -= image->height + 8;
-               }
-@@ -1179,7 +1179,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
-                       return -EFAULT;
-               if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
-                       return -EINVAL;
--              if (con2fb.framebuffer < 0 || con2fb.framebuffer >= FB_MAX)
-+              if (con2fb.framebuffer >= FB_MAX)
-                       return -EINVAL;
-               if (!registered_fb[con2fb.framebuffer])
-                       request_module("fb%d", con2fb.framebuffer);
-@@ -1300,7 +1300,7 @@ static int do_fscreeninfo_to_user(struct fb_fix_screeninfo *fix,
+@@ -1301,7 +1301,7 @@ static int do_fscreeninfo_to_user(struct fb_fix_screeninfo *fix,
        __u32 data;
        int err;
  
@@ -52905,10 +54623,10 @@ index b6d5008..5bca7bf 100644
        data = (__u32) (unsigned long) fix->smem_start;
        err |= put_user(data, &fix32->smem_start);
 diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c
-index e23392e..8a77540 100644
+index 4254336..282567e 100644
 --- a/drivers/video/fbdev/hyperv_fb.c
 +++ b/drivers/video/fbdev/hyperv_fb.c
-@@ -235,7 +235,7 @@ static uint screen_fb_size;
+@@ -240,7 +240,7 @@ static uint screen_fb_size;
  static inline int synthvid_send(struct hv_device *hdev,
                                struct synthvid_msg *msg)
  {
@@ -52917,7 +54635,7 @@ index e23392e..8a77540 100644
        int ret;
  
        msg->pipe_hdr.type = PIPE_MSG_DATA;
-@@ -243,7 +243,7 @@ static inline int synthvid_send(struct hv_device *hdev,
+@@ -248,7 +248,7 @@ static inline int synthvid_send(struct hv_device *hdev,
  
        ret = vmbus_sendpacket(hdev->channel, msg,
                               msg->vid_hdr.size + sizeof(struct pipe_msg_hdr),
@@ -53132,7 +54850,7 @@ index d513ed6..90b0de9 100644
  
        pr_debug("released /dev/fb%d user=%d count=%d",
 diff --git a/drivers/video/fbdev/udlfb.c b/drivers/video/fbdev/udlfb.c
-index 77b890e..458e666 100644
+index 046d51d..be564da 100644
 --- a/drivers/video/fbdev/udlfb.c
 +++ b/drivers/video/fbdev/udlfb.c
 @@ -623,11 +623,11 @@ static int dlfb_handle_damage(struct dlfb_data *dev, int x, int y,
@@ -56222,7 +57940,7 @@ index fef20db..d28b1ab 100644
                return -ENOMEM;
        return 0;
 diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c
-index c71e886..61d3d44b 100644
+index eb14e05..5156de7 100644
 --- a/fs/9p/vfs_addr.c
 +++ b/fs/9p/vfs_addr.c
 @@ -187,7 +187,7 @@ static int v9fs_vfs_writepage_locked(struct page *page)
@@ -56235,7 +57953,7 @@ index c71e886..61d3d44b 100644
        if (retval > 0)
                retval = 0;
 diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
-index 53161ec..e261d8a 100644
+index 296482f..183ddc3 100644
 --- a/fs/9p/vfs_inode.c
 +++ b/fs/9p/vfs_inode.c
 @@ -1312,7 +1312,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
@@ -56245,8 +57963,8 @@ index 53161ec..e261d8a 100644
 -      char *s = nd_get_link(nd);
 +      const char *s = nd_get_link(nd);
  
-       p9_debug(P9_DEBUG_VFS, " %s %s\n",
-                dentry->d_name.name, IS_ERR(s) ? "<error>" : s);
+       p9_debug(P9_DEBUG_VFS, " %pd %s\n",
+                dentry, IS_ERR(s) ? "<error>" : s);
 diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt
 index 370b24c..ff0be7b 100644
 --- a/fs/Kconfig.binfmt
@@ -56283,10 +58001,10 @@ index 2946712..f737435 100644
                             &data);
        if (!inode) {
 diff --git a/fs/aio.c b/fs/aio.c
-index e609e15..c9fcd97 100644
+index 14b9315..365980f 100644
 --- a/fs/aio.c
 +++ b/fs/aio.c
-@@ -380,7 +380,7 @@ static int aio_setup_ring(struct kioctx *ctx)
+@@ -388,7 +388,7 @@ static int aio_setup_ring(struct kioctx *ctx)
        size += sizeof(struct io_event) * nr_events;
  
        nr_pages = PFN_UP(size);
@@ -56376,7 +58094,7 @@ index 2722387..56059b5 100644
  {
        if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
 diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
-index ca0ba15..0fa3257 100644
+index 929dec0..84bd914 100644
 --- a/fs/binfmt_aout.c
 +++ b/fs/binfmt_aout.c
 @@ -16,6 +16,7 @@
@@ -56418,7 +58136,7 @@ index ca0ba15..0fa3257 100644
        if (ex.a_data + ex.a_bss > rlim)
                return -ENOMEM;
  
-@@ -264,6 +271,27 @@ static int load_aout_binary(struct linux_binprm * bprm)
+@@ -261,6 +268,27 @@ static int load_aout_binary(struct linux_binprm * bprm)
  
        install_exec_creds(bprm);
  
@@ -56446,17 +58164,17 @@ index ca0ba15..0fa3257 100644
        if (N_MAGIC(ex) == OMAGIC) {
                unsigned long text_addr, map_size;
                loff_t pos;
-@@ -321,7 +349,7 @@ static int load_aout_binary(struct linux_binprm * bprm)
-               }
+@@ -312,7 +340,7 @@ static int load_aout_binary(struct linux_binprm * bprm)
+                       return error;
  
                error = vm_mmap(bprm->file, N_DATADDR(ex), ex.a_data,
 -                              PROT_READ | PROT_WRITE | PROT_EXEC,
 +                              PROT_READ | PROT_WRITE,
                                MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_EXECUTABLE,
                                fd_offset + ex.a_text);
-               if (error != N_DATADDR(ex)) {
+               if (error != N_DATADDR(ex))
 diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
-index aa3cb62..bc53934 100644
+index d8fc060..cbd44d5 100644
 --- a/fs/binfmt_elf.c
 +++ b/fs/binfmt_elf.c
 @@ -34,6 +34,7 @@
@@ -57078,7 +58796,7 @@ index aa3cb62..bc53934 100644
        if (elf_read_implies_exec(loc->elf_ex, executable_stack))
                current->personality |= READ_IMPLIES_EXEC;
  
-@@ -815,6 +1253,20 @@ static int load_elf_binary(struct linux_binprm *bprm)
+@@ -811,6 +1249,20 @@ static int load_elf_binary(struct linux_binprm *bprm)
  #else
                        load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr);
  #endif
@@ -57099,7 +58817,7 @@ index aa3cb62..bc53934 100644
                }
  
                error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
-@@ -847,9 +1299,9 @@ static int load_elf_binary(struct linux_binprm *bprm)
+@@ -842,9 +1294,9 @@ static int load_elf_binary(struct linux_binprm *bprm)
                 * allowed task size. Note that p_filesz must always be
                 * <= p_memsz so it is only necessary to check p_memsz.
                 */
@@ -57110,13 +58828,12 @@ index aa3cb62..bc53934 100644
 +                  elf_ppnt->p_memsz > pax_task_size ||
 +                  pax_task_size - elf_ppnt->p_memsz < k) {
                        /* set_brk can never work. Avoid overflows. */
-                       send_sig(SIGKILL, current, 0);
                        retval = -EINVAL;
-@@ -888,17 +1340,45 @@ static int load_elf_binary(struct linux_binprm *bprm)
+                       goto out_free_dentry;
+@@ -880,16 +1332,43 @@ static int load_elf_binary(struct linux_binprm *bprm)
+       if (retval)
                goto out_free_dentry;
-       }
        if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) {
--              send_sig(SIGSEGV, current, 0);
 -              retval = -EFAULT; /* Nobody gets to see this, but.. */
 -              goto out_free_dentry;
 +              /*
@@ -57148,10 +58865,8 @@ index aa3cb62..bc53934 100644
 +              up_write(&current->mm->mmap_sem);
 +              if (retval == 0)
 +                      retval = set_brk(start + size, start + size + PAGE_SIZE);
-+              if (retval < 0) {
-+                      send_sig(SIGKILL, current, 0);
++              if (retval < 0)
 +                      goto out_free_dentry;
-+              }
 +      }
 +#endif
 +
@@ -57164,7 +58879,7 @@ index aa3cb62..bc53934 100644
                                            load_bias);
                if (!IS_ERR((void *)elf_entry)) {
                        /*
-@@ -1122,7 +1602,7 @@ static bool always_dump_vma(struct vm_area_struct *vma)
+@@ -1115,7 +1594,7 @@ static bool always_dump_vma(struct vm_area_struct *vma)
   * Decide what to dump of a segment, part, all or none.
   */
  static unsigned long vma_dump_size(struct vm_area_struct *vma,
@@ -57173,7 +58888,7 @@ index aa3cb62..bc53934 100644
  {
  #define FILTER(type)  (mm_flags & (1UL << MMF_DUMP_##type))
  
-@@ -1160,7 +1640,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
+@@ -1153,7 +1632,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
        if (vma->vm_file == NULL)
                return 0;
  
@@ -57182,7 +58897,7 @@ index aa3cb62..bc53934 100644
                goto whole;
  
        /*
-@@ -1367,9 +1847,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
+@@ -1360,9 +1839,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm)
  {
        elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv;
        int i = 0;
@@ -57194,7 +58909,7 @@ index aa3cb62..bc53934 100644
        fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv);
  }
  
-@@ -1378,7 +1858,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
+@@ -1371,7 +1850,7 @@ static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata,
  {
        mm_segment_t old_fs = get_fs();
        set_fs(KERNEL_DS);
@@ -57203,7 +58918,7 @@ index aa3cb62..bc53934 100644
        set_fs(old_fs);
        fill_note(note, "CORE", NT_SIGINFO, sizeof(*csigdata), csigdata);
  }
-@@ -2002,14 +2482,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
+@@ -1995,14 +2474,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum,
  }
  
  static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma,
@@ -57220,7 +58935,7 @@ index aa3cb62..bc53934 100644
        return size;
  }
  
-@@ -2100,7 +2580,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -2093,7 +2572,7 @@ static int elf_core_dump(struct coredump_params *cprm)
  
        dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE);
  
@@ -57229,7 +58944,7 @@ index aa3cb62..bc53934 100644
        offset += elf_core_extra_data_size();
        e_shoff = offset;
  
-@@ -2128,7 +2608,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -2121,7 +2600,7 @@ static int elf_core_dump(struct coredump_params *cprm)
                phdr.p_offset = offset;
                phdr.p_vaddr = vma->vm_start;
                phdr.p_paddr = 0;
@@ -57238,7 +58953,7 @@ index aa3cb62..bc53934 100644
                phdr.p_memsz = vma->vm_end - vma->vm_start;
                offset += phdr.p_filesz;
                phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
-@@ -2161,7 +2641,7 @@ static int elf_core_dump(struct coredump_params *cprm)
+@@ -2154,7 +2633,7 @@ static int elf_core_dump(struct coredump_params *cprm)
                unsigned long addr;
                unsigned long end;
  
@@ -57247,7 +58962,7 @@ index aa3cb62..bc53934 100644
  
                for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) {
                        struct page *page;
-@@ -2202,6 +2682,167 @@ out:
+@@ -2195,6 +2674,167 @@ out:
  
  #endif                /* CONFIG_ELF_CORE */
  
@@ -57415,42 +59130,11 @@ index aa3cb62..bc53934 100644
  static int __init init_elf_binfmt(void)
  {
        register_binfmt(&elf_format);
-diff --git a/fs/bio.c b/fs/bio.c
-index 6f0362b..26a7496 100644
---- a/fs/bio.c
-+++ b/fs/bio.c
-@@ -1144,7 +1144,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
-               /*
-                * Overflow, abort
-                */
--              if (end < start)
-+              if (end < start || end - start > INT_MAX - nr_pages)
-                       return ERR_PTR(-EINVAL);
-               nr_pages += end - start;
-@@ -1278,7 +1278,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
-               /*
-                * Overflow, abort
-                */
--              if (end < start)
-+              if (end < start || end - start > INT_MAX - nr_pages)
-                       return ERR_PTR(-EINVAL);
-               nr_pages += end - start;
-@@ -1540,7 +1540,7 @@ static void bio_copy_kern_endio(struct bio *bio, int err)
-       const int read = bio_data_dir(bio) == READ;
-       struct bio_map_data *bmd = bio->bi_private;
-       int i;
--      char *p = bmd->sgvecs[0].iov_base;
-+      char *p = (char __force_kernel *)bmd->sgvecs[0].iov_base;
-       bio_for_each_segment_all(bvec, bio, i) {
-               char *addr = page_address(bvec->bv_page);
 diff --git a/fs/block_dev.c b/fs/block_dev.c
-index 552a8d1..d51ccf3 100644
+index 1d9c9f3..2905786 100644
 --- a/fs/block_dev.c
 +++ b/fs/block_dev.c
-@@ -637,7 +637,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole,
+@@ -697,7 +697,7 @@ static bool bd_may_claim(struct block_device *bdev, struct block_device *whole,
        else if (bdev->bd_contains == bdev)
                return true;     /* is a whole device which isn't held */
  
@@ -57460,10 +59144,10 @@ index 552a8d1..d51ccf3 100644
        else if (whole->bd_holder != NULL)
                return false;    /* is a partition of a held device */
 diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
-index 1bcfcdb..e942132 100644
+index 150822e..75bb326 100644
 --- a/fs/btrfs/ctree.c
 +++ b/fs/btrfs/ctree.c
-@@ -1216,9 +1216,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
+@@ -1173,9 +1173,12 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
                free_extent_buffer(buf);
                add_root_to_dirty_list(root);
        } else {
@@ -57480,10 +59164,10 @@ index 1bcfcdb..e942132 100644
  
                WARN_ON(trans->transid != btrfs_header_generation(parent));
 diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
-index 33e561a..16df7ae 100644
+index 054577b..9b342cc 100644
 --- a/fs/btrfs/delayed-inode.c
 +++ b/fs/btrfs/delayed-inode.c
-@@ -459,7 +459,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node,
+@@ -462,7 +462,7 @@ static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node,
  
  static void finish_one_item(struct btrfs_delayed_root *delayed_root)
  {
@@ -57492,7 +59176,7 @@ index 33e561a..16df7ae 100644
        if ((atomic_dec_return(&delayed_root->items) <
            BTRFS_DELAYED_BACKGROUND || seq % BTRFS_DELAYED_BATCH == 0) &&
            waitqueue_active(&delayed_root->wait))
-@@ -1409,7 +1409,7 @@ void btrfs_assert_delayed_root_empty(struct btrfs_root *root)
+@@ -1412,7 +1412,7 @@ void btrfs_assert_delayed_root_empty(struct btrfs_root *root)
  
  static int could_end_wait(struct btrfs_delayed_root *delayed_root, int seq)
  {
@@ -57501,7 +59185,7 @@ index 33e561a..16df7ae 100644
  
        if (val < seq || val >= seq + BTRFS_DELAYED_BATCH)
                return 1;
-@@ -1433,7 +1433,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root)
+@@ -1436,7 +1436,7 @@ void btrfs_balance_delayed_items(struct btrfs_root *root)
                int seq;
                int ret;
  
@@ -57533,10 +59217,10 @@ index f70119f..ab5894d 100644
        spin_lock_init(&delayed_root->lock);
        init_waitqueue_head(&delayed_root->wait);
 diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
-index 2f6d7b1..f186382 100644
+index 4399f0c..a34d8b4 100644
 --- a/fs/btrfs/ioctl.c
 +++ b/fs/btrfs/ioctl.c
-@@ -3575,9 +3575,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
+@@ -3953,9 +3953,12 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
        for (i = 0; i < num_types; i++) {
                struct btrfs_space_info *tmp;
  
@@ -57549,7 +59233,7 @@ index 2f6d7b1..f186382 100644
                info = NULL;
                rcu_read_lock();
                list_for_each_entry_rcu(tmp, &root->fs_info->space_info,
-@@ -3599,10 +3602,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
+@@ -3977,10 +3980,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
                                memcpy(dest, &space, sizeof(space));
                                dest++;
                                space_args.total_spaces++;
@@ -57561,10 +59245,10 @@ index 2f6d7b1..f186382 100644
                up_read(&info->groups_sem);
        }
 diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
-index 9601d25..2896d6c 100644
+index cde9c03..ad4d4db 100644
 --- a/fs/btrfs/super.c
 +++ b/fs/btrfs/super.c
-@@ -270,7 +270,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
+@@ -271,7 +271,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
                           function, line, errstr);
                return;
        }
@@ -57574,10 +59258,10 @@ index 9601d25..2896d6c 100644
        wake_up(&root->fs_info->transaction_wait);
        wake_up(&root->fs_info->transaction_blocked_wait);
 diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
-index 4825cd2..b2fe768 100644
+index b2e7bb4..3719201 100644
 --- a/fs/btrfs/sysfs.c
 +++ b/fs/btrfs/sysfs.c
-@@ -438,7 +438,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add)
+@@ -480,7 +480,7 @@ static int addrm_unknown_feature_attrs(struct btrfs_fs_info *fs_info, bool add)
        for (set = 0; set < FEAT_MAX; set++) {
                int i;
                struct attribute *attrs[2];
@@ -57586,60 +59270,50 @@ index 4825cd2..b2fe768 100644
                        .name = "features",
                        .attrs = attrs,
                };
-diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
-index e2f45fc..b036909 100644
---- a/fs/btrfs/tree-log.c
-+++ b/fs/btrfs/tree-log.c
-@@ -2533,7 +2533,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
-               blk_finish_plug(&plug);
-               btrfs_abort_transaction(trans, root, ret);
-               btrfs_free_logged_extents(log, log_transid);
--              ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) =
-+              ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) =
-                                                               trans->transid;
-               mutex_unlock(&root->log_mutex);
-               goto out;
-@@ -2577,7 +2577,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
-                       list_del_init(&root_log_ctx.list);
-               blk_finish_plug(&plug);
--              ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) =
-+              ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) =
-                                                               trans->transid;
-               if (ret != -ENOSPC) {
-                       btrfs_abort_transaction(trans, root, ret);
-@@ -2622,7 +2622,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
-        * now that we've moved on to the tree of log tree roots,
-        * check the full commit flag again
+diff --git a/fs/btrfs/tests/free-space-tests.c b/fs/btrfs/tests/free-space-tests.c
+index 2299bfd..4098e72 100644
+--- a/fs/btrfs/tests/free-space-tests.c
++++ b/fs/btrfs/tests/free-space-tests.c
+@@ -463,7 +463,9 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache)
+        * extent entry.
         */
--      if (ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) ==
-+      if (ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) ==
-           trans->transid) {
-               blk_finish_plug(&plug);
-               btrfs_wait_marked_extents(log, &log->dirty_log_pages, mark);
-@@ -2637,7 +2637,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
-                                        EXTENT_DIRTY | EXTENT_NEW);
-       blk_finish_plug(&plug);
-       if (ret) {
--              ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) =
-+              ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) =
-                                                               trans->transid;
-               btrfs_abort_transaction(trans, root, ret);
-               btrfs_free_logged_extents(log, log_transid);
-@@ -2667,7 +2667,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
-        */
-       ret = write_ctree_super(trans, root->fs_info->tree_root, 1);
-       if (ret) {
--              ACCESS_ONCE(root->fs_info->last_trans_log_full_commit) =
-+              ACCESS_ONCE_RW(root->fs_info->last_trans_log_full_commit) =
-                                                               trans->transid;
-               btrfs_abort_transaction(trans, root, ret);
-               goto out_wake_log_root;
+       use_bitmap_op = cache->free_space_ctl->op->use_bitmap;
+-      cache->free_space_ctl->op->use_bitmap = test_use_bitmap;
++      pax_open_kernel();
++      *(void **)&cache->free_space_ctl->op->use_bitmap = test_use_bitmap;
++      pax_close_kernel();
+       /*
+        * Extent entry covering free space range [128Mb - 256Kb, 128Mb - 128Kb[
+@@ -870,7 +872,9 @@ test_steal_space_from_bitmap_to_extent(struct btrfs_block_group_cache *cache)
+       if (ret)
+               return ret;
+-      cache->free_space_ctl->op->use_bitmap = use_bitmap_op;
++      pax_open_kernel();
++      *(void **)&cache->free_space_ctl->op->use_bitmap = use_bitmap_op;
++      pax_close_kernel();
+       __btrfs_remove_free_space_cache(cache->free_space_ctl);
+       return 0;
+diff --git a/fs/btrfs/tree-log.h b/fs/btrfs/tree-log.h
+index 154990c..d0cf699 100644
+--- a/fs/btrfs/tree-log.h
++++ b/fs/btrfs/tree-log.h
+@@ -43,7 +43,7 @@ static inline void btrfs_init_log_ctx(struct btrfs_log_ctx *ctx)
+ static inline void btrfs_set_log_full_commit(struct btrfs_fs_info *fs_info,
+                                            struct btrfs_trans_handle *trans)
+ {
+-      ACCESS_ONCE(fs_info->last_trans_log_full_commit) = trans->transid;
++      ACCESS_ONCE_RW(fs_info->last_trans_log_full_commit) = trans->transid;
+ }
+ static inline int btrfs_need_log_full_commit(struct btrfs_fs_info *fs_info,
 diff --git a/fs/buffer.c b/fs/buffer.c
-index 9ddb9fc..7aa2487 100644
+index 20805db..2e8fc69 100644
 --- a/fs/buffer.c
 +++ b/fs/buffer.c
-@@ -3428,7 +3428,7 @@ void __init buffer_init(void)
+@@ -3417,7 +3417,7 @@ void __init buffer_init(void)
        bh_cachep = kmem_cache_create("buffer_head",
                        sizeof(struct buffer_head), 0,
                                (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
@@ -57649,7 +59323,7 @@ index 9ddb9fc..7aa2487 100644
  
        /*
 diff --git a/fs/cachefiles/bind.c b/fs/cachefiles/bind.c
-index 5b99baf..47fffb5 100644
+index fbb08e9..0fda764 100644
 --- a/fs/cachefiles/bind.c
 +++ b/fs/cachefiles/bind.c
 @@ -39,13 +39,11 @@ int cachefiles_daemon_bind(struct cachefiles_cache *cache, char *args)
@@ -57669,7 +59343,7 @@ index 5b99baf..47fffb5 100644
               cache->brun_percent  < 100);
  
 diff --git a/fs/cachefiles/daemon.c b/fs/cachefiles/daemon.c
-index 0a1467b..6a53245 100644
+index ce1b115..4a6852c 100644
 --- a/fs/cachefiles/daemon.c
 +++ b/fs/cachefiles/daemon.c
 @@ -196,7 +196,7 @@ static ssize_t cachefiles_daemon_read(struct file *file, char __user *_buffer,
@@ -57690,7 +59364,7 @@ index 0a1467b..6a53245 100644
                return -EOPNOTSUPP;
  
        /* drag the command string into the kernel so we can parse it */
-@@ -386,7 +386,7 @@ static int cachefiles_daemon_fstop(struct cachefiles_cache *cache, char *args)
+@@ -385,7 +385,7 @@ static int cachefiles_daemon_fstop(struct cachefiles_cache *cache, char *args)
        if (args[0] != '%' || args[1] != '\0')
                return -EINVAL;
  
@@ -57699,7 +59373,7 @@ index 0a1467b..6a53245 100644
                return cachefiles_daemon_range_error(cache, args);
  
        cache->fstop_percent = fstop;
-@@ -458,7 +458,7 @@ static int cachefiles_daemon_bstop(struct cachefiles_cache *cache, char *args)
+@@ -457,7 +457,7 @@ static int cachefiles_daemon_bstop(struct cachefiles_cache *cache, char *args)
        if (args[0] != '%' || args[1] != '\0')
                return -EINVAL;
  
@@ -57709,10 +59383,10 @@ index 0a1467b..6a53245 100644
  
        cache->bstop_percent = bstop;
 diff --git a/fs/cachefiles/internal.h b/fs/cachefiles/internal.h
-index 5349473..d6c0b93 100644
+index 8c52472..c4e3a69 100644
 --- a/fs/cachefiles/internal.h
 +++ b/fs/cachefiles/internal.h
-@@ -59,7 +59,7 @@ struct cachefiles_cache {
+@@ -66,7 +66,7 @@ struct cachefiles_cache {
        wait_queue_head_t               daemon_pollwq;  /* poll waitqueue for daemon */
        struct rb_root                  active_nodes;   /* active nodes (can't be culled) */
        rwlock_t                        active_lock;    /* lock for active_nodes */
@@ -57721,7 +59395,7 @@ index 5349473..d6c0b93 100644
        unsigned                        frun_percent;   /* when to stop culling (% files) */
        unsigned                        fcull_percent;  /* when to start culling (% files) */
        unsigned                        fstop_percent;  /* when to stop allocating (% files) */
-@@ -171,19 +171,19 @@ extern int cachefiles_check_in_use(struct cachefiles_cache *cache,
+@@ -178,19 +178,19 @@ extern int cachefiles_check_in_use(struct cachefiles_cache *cache,
   * proc.c
   */
  #ifdef CONFIG_CACHEFILES_HISTOGRAM
@@ -57747,10 +59421,10 @@ index 5349473..d6c0b93 100644
  
  #else
 diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
-index c0a6817..ea811166 100644
+index e12f189..ed17244 100644
 --- a/fs/cachefiles/namei.c
 +++ b/fs/cachefiles/namei.c
-@@ -317,7 +317,7 @@ try_again:
+@@ -312,7 +312,7 @@ try_again:
        /* first step is to make up a grave dentry in the graveyard */
        sprintf(nbuffer, "%08x%08x",
                (uint32_t) get_seconds(),
@@ -57789,24 +59463,34 @@ index eccd339..4c1d995 100644
                if (x == 0 && y == 0 && z == 0)
                        return 0;
  
-diff --git a/fs/cachefiles/rdwr.c b/fs/cachefiles/rdwr.c
-index 4b1fb5c..0d2a699 100644
---- a/fs/cachefiles/rdwr.c
-+++ b/fs/cachefiles/rdwr.c
-@@ -943,7 +943,7 @@ int cachefiles_write_page(struct fscache_storage *op, struct page *page)
-                       old_fs = get_fs();
-                       set_fs(KERNEL_DS);
-                       ret = file->f_op->write(
--                              file, (const void __user *) data, len, &pos);
-+                              file, (const void __force_user *) data, len, &pos);
-                       set_fs(old_fs);
-                       kunmap(page);
-                       file_end_write(file);
 diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
-index c29d6ae..a56c4ae 100644
+index 695e788..f4a9d4d 100644
 --- a/fs/ceph/dir.c
 +++ b/fs/ceph/dir.c
-@@ -250,7 +250,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx)
+@@ -129,6 +129,8 @@ static int __dcache_readdir(struct file *file,  struct dir_context *ctx,
+       struct dentry *dentry, *last;
+       struct ceph_dentry_info *di;
+       int err = 0;
++      char d_name[DNAME_INLINE_LEN];
++      const unsigned char *name;
+       /* claim ref on last dentry we returned */
+       last = fi->dentry;
+@@ -192,7 +194,12 @@ more:
+       dout(" %llu (%llu) dentry %p %.*s %p\n", di->offset, ctx->pos,
+            dentry, dentry->d_name.len, dentry->d_name.name, dentry->d_inode);
+-      if (!dir_emit(ctx, dentry->d_name.name,
++      name = dentry->d_name.name;
++      if (name == dentry->d_iname) {
++              memcpy(d_name, name, dentry->d_name.len);
++              name = d_name;
++      }
++      if (!dir_emit(ctx, name,
+                     dentry->d_name.len,
+                     ceph_translate_ino(dentry->d_sb, dentry->d_inode->i_ino),
+                     dentry->d_inode->i_mode >> 12)) {
+@@ -250,7 +257,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx)
        struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
        struct ceph_mds_client *mdsc = fsc->mdsc;
        unsigned frag = fpos_frag(ctx->pos);
@@ -57816,7 +59500,7 @@ index c29d6ae..a56c4ae 100644
        u32 ftype;
        struct ceph_mds_reply_info_parsed *rinfo;
 diff --git a/fs/ceph/super.c b/fs/ceph/super.c
-index 06150fd..192061b 100644
+index f6e1237..796ffd1 100644
 --- a/fs/ceph/super.c
 +++ b/fs/ceph/super.c
 @@ -895,7 +895,7 @@ static int ceph_compare_super(struct super_block *sb, void *data)
@@ -57838,7 +59522,7 @@ index 06150fd..192061b 100644
                sb->s_bdi = &fsc->backing_dev_info;
        return err;
 diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
-index f3ac415..3d2420c 100644
+index 44ec726..bcb06a3 100644
 --- a/fs/cifs/cifs_debug.c
 +++ b/fs/cifs/cifs_debug.c
 @@ -286,8 +286,8 @@ static ssize_t cifs_stats_proc_write(struct file *file,
@@ -57882,10 +59566,10 @@ index f3ac415..3d2420c 100644
                                        server->ops->print_stats(m, tcon);
                        }
 diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
-index 5be1f997..fa1015a1 100644
+index 9d7996e..35ad5cf4 100644
 --- a/fs/cifs/cifsfs.c
 +++ b/fs/cifs/cifsfs.c
-@@ -1068,7 +1068,7 @@ cifs_init_request_bufs(void)
+@@ -1093,7 +1093,7 @@ cifs_init_request_bufs(void)
  */
        cifs_req_cachep = kmem_cache_create("cifs_request",
                                            CIFSMaxBufSize + max_hdr_size, 0,
@@ -57894,7 +59578,7 @@ index 5be1f997..fa1015a1 100644
        if (cifs_req_cachep == NULL)
                return -ENOMEM;
  
-@@ -1095,7 +1095,7 @@ cifs_init_request_bufs(void)
+@@ -1120,7 +1120,7 @@ cifs_init_request_bufs(void)
        efficient to alloc 1 per page off the slab compared to 17K (5page)
        alloc of large cifs buffers even when page debugging is on */
        cifs_sm_req_cachep = kmem_cache_create("cifs_small_rq",
@@ -57903,7 +59587,7 @@ index 5be1f997..fa1015a1 100644
                        NULL);
        if (cifs_sm_req_cachep == NULL) {
                mempool_destroy(cifs_req_poolp);
-@@ -1180,8 +1180,8 @@ init_cifs(void)
+@@ -1205,8 +1205,8 @@ init_cifs(void)
        atomic_set(&bufAllocCount, 0);
        atomic_set(&smBufAllocCount, 0);
  #ifdef CONFIG_CIFS_STATS2
@@ -57915,10 +59599,10 @@ index 5be1f997..fa1015a1 100644
  
        atomic_set(&midCount, 0);
 diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
-index 30f6e92..e915ba5 100644
+index 02a33e5..3a28b5a 100644
 --- a/fs/cifs/cifsglob.h
 +++ b/fs/cifs/cifsglob.h
-@@ -806,35 +806,35 @@ struct cifs_tcon {
+@@ -823,35 +823,35 @@ struct cifs_tcon {
        __u16 Flags;            /* optional support bits */
        enum statusEnum tidStatus;
  #ifdef CONFIG_CIFS_STATS
@@ -57978,7 +59662,7 @@ index 30f6e92..e915ba5 100644
                } smb2_stats;
  #endif /* CONFIG_CIFS_SMB2 */
        } stats;
-@@ -1170,7 +1170,7 @@ convert_delimiter(char *path, char delim)
+@@ -1192,7 +1192,7 @@ convert_delimiter(char *path, char delim)
  }
  
  #ifdef CONFIG_CIFS_STATS
@@ -57987,7 +59671,7 @@ index 30f6e92..e915ba5 100644
  
  static inline void cifs_stats_bytes_written(struct cifs_tcon *tcon,
                                            unsigned int bytes)
-@@ -1536,8 +1536,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
+@@ -1559,8 +1559,8 @@ GLOBAL_EXTERN atomic_t tconInfoReconnectCount;
  /* Various Debug counters */
  GLOBAL_EXTERN atomic_t bufAllocCount;    /* current number allocated  */
  #ifdef CONFIG_CIFS_STATS2
@@ -57999,10 +59683,10 @@ index 30f6e92..e915ba5 100644
  GLOBAL_EXTERN atomic_t smBufAllocCount;
  GLOBAL_EXTERN atomic_t midCount;
 diff --git a/fs/cifs/file.c b/fs/cifs/file.c
-index 5ed03e0..e9a3a6c 100644
+index 3e4d00a..38a122d 100644
 --- a/fs/cifs/file.c
 +++ b/fs/cifs/file.c
-@@ -1900,10 +1900,14 @@ static int cifs_writepages(struct address_space *mapping,
+@@ -2056,10 +2056,14 @@ static int cifs_writepages(struct address_space *mapping,
                index = mapping->writeback_index; /* Start from prev offset */
                end = -1;
        } else {
@@ -58019,9 +59703,9 @@ index 5ed03e0..e9a3a6c 100644
 +              }
                scanned = true;
        }
- retry:
+       server = cifs_sb_master_tcon(cifs_sb)->ses->server;
 diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
-index 3b0c62e..f7d090c 100644
+index b7415d5..3984ec0 100644
 --- a/fs/cifs/misc.c
 +++ b/fs/cifs/misc.c
 @@ -170,7 +170,7 @@ cifs_buf_get(void)
@@ -58043,10 +59727,10 @@ index 3b0c62e..f7d090c 100644
  
        }
 diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
-index d1fdfa8..94558f8 100644
+index d297903..1cb7516 100644
 --- a/fs/cifs/smb1ops.c
 +++ b/fs/cifs/smb1ops.c
-@@ -626,27 +626,27 @@ static void
+@@ -622,27 +622,27 @@ static void
  cifs_clear_stats(struct cifs_tcon *tcon)
  {
  #ifdef CONFIG_CIFS_STATS
@@ -58095,7 +59779,7 @@ index d1fdfa8..94558f8 100644
  #endif
  }
  
-@@ -655,36 +655,36 @@ cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
+@@ -651,36 +651,36 @@ cifs_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
  {
  #ifdef CONFIG_CIFS_STATS
        seq_printf(m, " Oplocks breaks: %d",
@@ -58152,10 +59836,10 @@ index d1fdfa8..94558f8 100644
  }
  
 diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
-index 35ddc3e..563e809 100644
+index c5f521b..1a40865 100644
 --- a/fs/cifs/smb2ops.c
 +++ b/fs/cifs/smb2ops.c
-@@ -364,8 +364,8 @@ smb2_clear_stats(struct cifs_tcon *tcon)
+@@ -417,8 +417,8 @@ smb2_clear_stats(struct cifs_tcon *tcon)
  #ifdef CONFIG_CIFS_STATS
        int i;
        for (i = 0; i < NUMBER_OF_SMB2_COMMANDS; i++) {
@@ -58166,7 +59850,7 @@ index 35ddc3e..563e809 100644
        }
  #endif
  }
-@@ -405,65 +405,65 @@ static void
+@@ -458,65 +458,65 @@ static void
  smb2_print_stats(struct seq_file *m, struct cifs_tcon *tcon)
  {
  #ifdef CONFIG_CIFS_STATS
@@ -58273,10 +59957,10 @@ index 35ddc3e..563e809 100644
  }
  
 diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
-index 1fb6ad2..758e171 100644
+index 8f1672b..af339c07 100644
 --- a/fs/cifs/smb2pdu.c
 +++ b/fs/cifs/smb2pdu.c
-@@ -2097,8 +2097,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon,
+@@ -2145,8 +2145,7 @@ SMB2_query_directory(const unsigned int xid, struct cifs_tcon *tcon,
        default:
                cifs_dbg(VFS, "info level %u isn't supported\n",
                         srch_inf->info_level);
@@ -58287,7 +59971,7 @@ index 1fb6ad2..758e171 100644
  
        req->FileIndex = cpu_to_le32(index);
 diff --git a/fs/coda/cache.c b/fs/coda/cache.c
-index 1da168c..8bc7ff6 100644
+index 46ee6f2..89a9e7f 100644
 --- a/fs/coda/cache.c
 +++ b/fs/coda/cache.c
 @@ -24,7 +24,7 @@
@@ -58335,7 +60019,7 @@ index 1da168c..8bc7ff6 100644
  
        return hit;
 diff --git a/fs/compat.c b/fs/compat.c
-index 66d3d3c..9c10175 100644
+index b13df99..6f6f4a3 100644
 --- a/fs/compat.c
 +++ b/fs/compat.c
 @@ -54,7 +54,7 @@
@@ -58365,7 +60049,7 @@ index 66d3d3c..9c10175 100644
                goto out;
        if (nr_segs > fast_segs) {
                ret = -ENOMEM;
-@@ -850,6 +850,7 @@ struct compat_old_linux_dirent {
+@@ -844,6 +844,7 @@ struct compat_old_linux_dirent {
  struct compat_readdir_callback {
        struct dir_context ctx;
        struct compat_old_linux_dirent __user *dirent;
@@ -58373,7 +60057,7 @@ index 66d3d3c..9c10175 100644
        int result;
  };
  
-@@ -867,6 +868,10 @@ static int compat_fillonedir(void *__buf, const char *name, int namlen,
+@@ -861,6 +862,10 @@ static int compat_fillonedir(void *__buf, const char *name, int namlen,
                buf->result = -EOVERFLOW;
                return -EOVERFLOW;
        }
@@ -58384,7 +60068,7 @@ index 66d3d3c..9c10175 100644
        buf->result++;
        dirent = buf->dirent;
        if (!access_ok(VERIFY_WRITE, dirent,
-@@ -898,6 +903,7 @@ COMPAT_SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
+@@ -892,6 +897,7 @@ COMPAT_SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
        if (!f.file)
                return -EBADF;
  
@@ -58392,7 +60076,7 @@ index 66d3d3c..9c10175 100644
        error = iterate_dir(f.file, &buf.ctx);
        if (buf.result)
                error = buf.result;
-@@ -917,6 +923,7 @@ struct compat_getdents_callback {
+@@ -911,6 +917,7 @@ struct compat_getdents_callback {
        struct dir_context ctx;
        struct compat_linux_dirent __user *current_dir;
        struct compat_linux_dirent __user *previous;
@@ -58400,7 +60084,7 @@ index 66d3d3c..9c10175 100644
        int count;
        int error;
  };
-@@ -938,6 +945,10 @@ static int compat_filldir(void *__buf, const char *name, int namlen,
+@@ -932,6 +939,10 @@ static int compat_filldir(void *__buf, const char *name, int namlen,
                buf->error = -EOVERFLOW;
                return -EOVERFLOW;
        }
@@ -58411,7 +60095,7 @@ index 66d3d3c..9c10175 100644
        dirent = buf->previous;
        if (dirent) {
                if (__put_user(offset, &dirent->d_off))
-@@ -983,6 +994,7 @@ COMPAT_SYSCALL_DEFINE3(getdents, unsigned int, fd,
+@@ -977,6 +988,7 @@ COMPAT_SYSCALL_DEFINE3(getdents, unsigned int, fd,
        if (!f.file)
                return -EBADF;
  
@@ -58419,7 +60103,7 @@ index 66d3d3c..9c10175 100644
        error = iterate_dir(f.file, &buf.ctx);
        if (error >= 0)
                error = buf.error;
-@@ -1003,6 +1015,7 @@ struct compat_getdents_callback64 {
+@@ -997,6 +1009,7 @@ struct compat_getdents_callback64 {
        struct dir_context ctx;
        struct linux_dirent64 __user *current_dir;
        struct linux_dirent64 __user *previous;
@@ -58427,7 +60111,7 @@ index 66d3d3c..9c10175 100644
        int count;
        int error;
  };
-@@ -1019,6 +1032,10 @@ static int compat_filldir64(void * __buf, const char * name, int namlen, loff_t
+@@ -1013,6 +1026,10 @@ static int compat_filldir64(void * __buf, const char * name, int namlen, loff_t
        buf->error = -EINVAL;   /* only used if we fail.. */
        if (reclen > buf->count)
                return -EINVAL;
@@ -58438,7 +60122,7 @@ index 66d3d3c..9c10175 100644
        dirent = buf->previous;
  
        if (dirent) {
-@@ -1068,6 +1085,7 @@ COMPAT_SYSCALL_DEFINE3(getdents64, unsigned int, fd,
+@@ -1062,6 +1079,7 @@ COMPAT_SYSCALL_DEFINE3(getdents64, unsigned int, fd,
        if (!f.file)
                return -EBADF;
  
@@ -58465,7 +60149,7 @@ index 4d24d17..4f8c09e 100644
  
  /*
 diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
-index e822890..59374d5 100644
+index afec645..9c65620 100644
 --- a/fs/compat_ioctl.c
 +++ b/fs/compat_ioctl.c
 @@ -621,7 +621,7 @@ static int serial_struct_ioctl(unsigned fd, unsigned cmd,
@@ -58483,7 +60167,7 @@ index e822890..59374d5 100644
                        return -EFAULT;
 -              if (get_user(datap, &umsgs[i].buf) ||
 -                  put_user(compat_ptr(datap), &tmsgs[i].buf))
-+              if (get_user(datap, (u8 __user * __user *)&umsgs[i].buf) ||
++              if (get_user(datap, (compat_caddr_t __user *)&umsgs[i].buf) ||
 +                  put_user(compat_ptr(datap), (u8 __user * __user *)&tmsgs[i].buf))
                        return -EFAULT;
        }
@@ -58509,7 +60193,7 @@ index e822890..59374d5 100644
                return 1;
        if (a < b)
 diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
-index e081acb..911df21 100644
+index 668dcab..daebcd6 100644
 --- a/fs/configfs/dir.c
 +++ b/fs/configfs/dir.c
 @@ -1548,7 +1548,8 @@ static int configfs_readdir(struct file *file, struct dir_context *ctx)
@@ -58537,10 +60221,10 @@ index e081acb..911df21 100644
                /*
                 * We'll have a dentry and an inode for
 diff --git a/fs/coredump.c b/fs/coredump.c
-index 0b2528f..836c55f 100644
+index b5c86ff..0dac262 100644
 --- a/fs/coredump.c
 +++ b/fs/coredump.c
-@@ -442,8 +442,8 @@ static void wait_for_dump_helpers(struct file *file)
+@@ -450,8 +450,8 @@ static void wait_for_dump_helpers(struct file *file)
        struct pipe_inode_info *pipe = file->private_data;
  
        pipe_lock(pipe);
@@ -58551,7 +60235,7 @@ index 0b2528f..836c55f 100644
        wake_up_interruptible_sync(&pipe->wait);
        kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
        pipe_unlock(pipe);
-@@ -452,11 +452,11 @@ static void wait_for_dump_helpers(struct file *file)
+@@ -460,11 +460,11 @@ static void wait_for_dump_helpers(struct file *file)
         * We actually want wait_event_freezable() but then we need
         * to clear TIF_SIGPENDING and improve dump_interrupted().
         */
@@ -58566,7 +60250,7 @@ index 0b2528f..836c55f 100644
        pipe_unlock(pipe);
  }
  
-@@ -503,7 +503,9 @@ void do_coredump(const siginfo_t *siginfo)
+@@ -511,7 +511,9 @@ void do_coredump(const siginfo_t *siginfo)
        struct files_struct *displaced;
        bool need_nonrelative = false;
        bool core_dumped = false;
@@ -58577,7 +60261,7 @@ index 0b2528f..836c55f 100644
        struct coredump_params cprm = {
                .siginfo = siginfo,
                .regs = signal_pt_regs(),
-@@ -516,12 +518,17 @@ void do_coredump(const siginfo_t *siginfo)
+@@ -524,12 +526,17 @@ void do_coredump(const siginfo_t *siginfo)
                .mm_flags = mm->flags,
        };
  
@@ -58597,7 +60281,7 @@ index 0b2528f..836c55f 100644
                goto fail;
  
        cred = prepare_creds();
-@@ -540,7 +547,7 @@ void do_coredump(const siginfo_t *siginfo)
+@@ -548,7 +555,7 @@ void do_coredump(const siginfo_t *siginfo)
                need_nonrelative = true;
        }
  
@@ -58606,7 +60290,7 @@ index 0b2528f..836c55f 100644
        if (retval < 0)
                goto fail_creds;
  
-@@ -583,7 +590,7 @@ void do_coredump(const siginfo_t *siginfo)
+@@ -591,7 +598,7 @@ void do_coredump(const siginfo_t *siginfo)
                }
                cprm.limit = RLIM_INFINITY;
  
@@ -58615,7 +60299,7 @@ index 0b2528f..836c55f 100644
                if (core_pipe_limit && (core_pipe_limit < dump_count)) {
                        printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n",
                               task_tgid_vnr(current), current->comm);
-@@ -615,6 +622,8 @@ void do_coredump(const siginfo_t *siginfo)
+@@ -623,6 +630,8 @@ void do_coredump(const siginfo_t *siginfo)
        } else {
                struct inode *inode;
  
@@ -58624,7 +60308,7 @@ index 0b2528f..836c55f 100644
                if (cprm.limit < binfmt->min_coredump)
                        goto fail_unlock;
  
-@@ -673,7 +682,7 @@ close_fail:
+@@ -681,7 +690,7 @@ close_fail:
                filp_close(cprm.file, NULL);
  fail_dropcount:
        if (ispipe)
@@ -58633,7 +60317,7 @@ index 0b2528f..836c55f 100644
  fail_unlock:
        kfree(cn.corename);
        coredump_finish(mm, core_dumped);
-@@ -694,6 +703,8 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr)
+@@ -702,6 +711,8 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr)
        struct file *file = cprm->file;
        loff_t pos = file->f_pos;
        ssize_t n;
@@ -58643,19 +60327,170 @@ index 0b2528f..836c55f 100644
                return 0;
        while (nr) {
 diff --git a/fs/dcache.c b/fs/dcache.c
-index e99c6f5..2838bf58 100644
+index 03dca3c..f66c622 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
-@@ -1445,7 +1445,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
+@@ -508,7 +508,7 @@ static void __dentry_kill(struct dentry *dentry)
+        * dentry_iput drops the locks, at which point nobody (except
+        * transient RCU lookups) can reach this dentry.
+        */
+-      BUG_ON((int)dentry->d_lockref.count > 0);
++      BUG_ON((int)__lockref_read(&dentry->d_lockref) > 0);
+       this_cpu_dec(nr_dentry);
+       if (dentry->d_op && dentry->d_op->d_release)
+               dentry->d_op->d_release(dentry);
+@@ -561,7 +561,7 @@ static inline struct dentry *lock_parent(struct dentry *dentry)
+       struct dentry *parent = dentry->d_parent;
+       if (IS_ROOT(dentry))
+               return NULL;
+-      if (unlikely((int)dentry->d_lockref.count < 0))
++      if (unlikely((int)__lockref_read(&dentry->d_lockref) < 0))
+               return NULL;
+       if (likely(spin_trylock(&parent->d_lock)))
+               return parent;
+@@ -638,7 +638,7 @@ repeat:
+               dentry->d_flags |= DCACHE_REFERENCED;
+       dentry_lru_add(dentry);
+-      dentry->d_lockref.count--;
++      __lockref_dec(&dentry->d_lockref);
+       spin_unlock(&dentry->d_lock);
+       return;
+@@ -653,7 +653,7 @@ EXPORT_SYMBOL(dput);
+ /* This must be called with d_lock held */
+ static inline void __dget_dlock(struct dentry *dentry)
+ {
+-      dentry->d_lockref.count++;
++      __lockref_inc(&dentry->d_lockref);
+ }
+ static inline void __dget(struct dentry *dentry)
+@@ -694,8 +694,8 @@ repeat:
+               goto repeat;
+       }
+       rcu_read_unlock();
+-      BUG_ON(!ret->d_lockref.count);
+-      ret->d_lockref.count++;
++      BUG_ON(!__lockref_read(&ret->d_lockref));
++      __lockref_inc(&ret->d_lockref);
+       spin_unlock(&ret->d_lock);
+       return ret;
+ }
+@@ -773,9 +773,9 @@ restart:
+       spin_lock(&inode->i_lock);
+       hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
+               spin_lock(&dentry->d_lock);
+-              if (!dentry->d_lockref.count) {
++              if (!__lockref_read(&dentry->d_lockref)) {
+                       struct dentry *parent = lock_parent(dentry);
+-                      if (likely(!dentry->d_lockref.count)) {
++                      if (likely(!__lockref_read(&dentry->d_lockref))) {
+                               __dentry_kill(dentry);
+                               dput(parent);
+                               goto restart;
+@@ -810,7 +810,7 @@ static void shrink_dentry_list(struct list_head *list)
+                * We found an inuse dentry which was not removed from
+                * the LRU because of laziness during lookup. Do not free it.
+                */
+-              if ((int)dentry->d_lockref.count > 0) {
++              if ((int)__lockref_read(&dentry->d_lockref) > 0) {
+                       spin_unlock(&dentry->d_lock);
+                       if (parent)
+                               spin_unlock(&parent->d_lock);
+@@ -848,8 +848,8 @@ static void shrink_dentry_list(struct list_head *list)
+               dentry = parent;
+               while (dentry && !lockref_put_or_lock(&dentry->d_lockref)) {
+                       parent = lock_parent(dentry);
+-                      if (dentry->d_lockref.count != 1) {
+-                              dentry->d_lockref.count--;
++                      if (__lockref_read(&dentry->d_lockref) != 1) {
++                              __lockref_inc(&dentry->d_lockref);
+                               spin_unlock(&dentry->d_lock);
+                               if (parent)
+                                       spin_unlock(&parent->d_lock);
+@@ -889,7 +889,7 @@ dentry_lru_isolate(struct list_head *item, spinlock_t *lru_lock, void *arg)
+        * counts, just remove them from the LRU. Otherwise give them
+        * another pass through the LRU.
         */
+-      if (dentry->d_lockref.count) {
++      if (__lockref_read(&dentry->d_lockref) > 0) {
+               d_lru_isolate(dentry);
+               spin_unlock(&dentry->d_lock);
+               return LRU_REMOVED;
+@@ -1225,7 +1225,7 @@ static enum d_walk_ret select_collect(void *_data, struct dentry *dentry)
+       } else {
+               if (dentry->d_flags & DCACHE_LRU_LIST)
+                       d_lru_del(dentry);
+-              if (!dentry->d_lockref.count) {
++              if (!__lockref_read(&dentry->d_lockref)) {
+                       d_shrink_add(dentry, &data->dispose);
+                       data->found++;
+               }
+@@ -1273,7 +1273,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry)
+               return D_WALK_CONTINUE;
+       /* root with refcount 1 is fine */
+-      if (dentry == _data && dentry->d_lockref.count == 1)
++      if (dentry == _data && __lockref_read(&dentry->d_lockref) == 1)
+               return D_WALK_CONTINUE;
+       printk(KERN_ERR "BUG: Dentry %p{i=%lx,n=%pd} "
+@@ -1282,7 +1282,7 @@ static enum d_walk_ret umount_check(void *_data, struct dentry *dentry)
+                      dentry->d_inode ?
+                      dentry->d_inode->i_ino : 0UL,
+                      dentry,
+-                     dentry->d_lockref.count,
++                     __lockref_read(&dentry->d_lockref),
+                      dentry->d_sb->s_type->name,
+                      dentry->d_sb->s_id);
+       WARN_ON(1);
+@@ -1423,7 +1423,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
        dentry->d_iname[DNAME_INLINE_LEN-1] = 0;
        if (name->len > DNAME_INLINE_LEN-1) {
--              dname = kmalloc(name->len + 1, GFP_KERNEL);
-+              dname = kmalloc(round_up(name->len + 1, sizeof(unsigned long)), GFP_KERNEL);
-               if (!dname) {
+               size_t size = offsetof(struct external_name, name[1]);
+-              struct external_name *p = kmalloc(size + name->len, GFP_KERNEL);
++              struct external_name *p = kmalloc(round_up(size + name->len, sizeof(unsigned long)), GFP_KERNEL);
+               if (!p) {
                        kmem_cache_free(dentry_cache, dentry); 
                        return NULL;
-@@ -3413,7 +3413,8 @@ void __init vfs_caches_init(unsigned long mempages)
+@@ -1443,7 +1443,7 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
+       smp_wmb();
+       dentry->d_name.name = dname;
+-      dentry->d_lockref.count = 1;
++      __lockref_set(&dentry->d_lockref, 1);
+       dentry->d_flags = 0;
+       spin_lock_init(&dentry->d_lock);
+       seqcount_init(&dentry->d_seq);
+@@ -2183,7 +2183,7 @@ struct dentry *__d_lookup(const struct dentry *parent, const struct qstr *name)
+                               goto next;
+               }
+-              dentry->d_lockref.count++;
++              __lockref_inc(&dentry->d_lockref);
+               found = dentry;
+               spin_unlock(&dentry->d_lock);
+               break;
+@@ -2282,7 +2282,7 @@ again:
+       spin_lock(&dentry->d_lock);
+       inode = dentry->d_inode;
+       isdir = S_ISDIR(inode->i_mode);
+-      if (dentry->d_lockref.count == 1) {
++      if (__lockref_read(&dentry->d_lockref) == 1) {
+               if (!spin_trylock(&inode->i_lock)) {
+                       spin_unlock(&dentry->d_lock);
+                       cpu_relax();
+@@ -3308,7 +3308,7 @@ static enum d_walk_ret d_genocide_kill(void *data, struct dentry *dentry)
+               if (!(dentry->d_flags & DCACHE_GENOCIDE)) {
+                       dentry->d_flags |= DCACHE_GENOCIDE;
+-                      dentry->d_lockref.count--;
++                      __lockref_dec(&dentry->d_lockref);
+               }
+       }
+       return D_WALK_CONTINUE;
+@@ -3424,7 +3424,8 @@ void __init vfs_caches_init(unsigned long mempages)
        mempages -= reserve;
  
        names_cachep = kmem_cache_create("names_cache", PATH_MAX, 0,
@@ -58666,7 +60501,7 @@ index e99c6f5..2838bf58 100644
        dcache_init();
        inode_init();
 diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
-index 8c41b52..145b1b9 100644
+index 05f2960..b012481 100644
 --- a/fs/debugfs/inode.c
 +++ b/fs/debugfs/inode.c
 @@ -416,7 +416,11 @@ EXPORT_SYMBOL_GPL(debugfs_create_file);
@@ -58682,10 +60517,10 @@ index 8c41b52..145b1b9 100644
  }
  EXPORT_SYMBOL_GPL(debugfs_create_dir);
 diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
-index d4a9431..77f9b2e 100644
+index 1686dc2..9611c50 100644
 --- a/fs/ecryptfs/inode.c
 +++ b/fs/ecryptfs/inode.c
-@@ -673,7 +673,7 @@ static char *ecryptfs_readlink_lower(struct dentry *dentry, size_t *bufsiz)
+@@ -664,7 +664,7 @@ static char *ecryptfs_readlink_lower(struct dentry *dentry, size_t *bufsiz)
        old_fs = get_fs();
        set_fs(get_ds());
        rc = lower_dentry->d_inode->i_op->readlink(lower_dentry,
@@ -58708,7 +60543,7 @@ index e4141f2..d8263e8 100644
                i += packet_length_size;
                if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size))
 diff --git a/fs/exec.c b/fs/exec.c
-index 238b7aa..a421d91 100644
+index 7302b75..7d61d19 100644
 --- a/fs/exec.c
 +++ b/fs/exec.c
 @@ -56,8 +56,20 @@
@@ -58843,7 +60678,7 @@ index 238b7aa..a421d91 100644
        return 0;
  err:
        up_write(&mm->mmap_sem);
-@@ -399,7 +440,7 @@ struct user_arg_ptr {
+@@ -395,7 +436,7 @@ struct user_arg_ptr {
        } ptr;
  };
  
@@ -58852,7 +60687,7 @@ index 238b7aa..a421d91 100644
  {
        const char __user *native;
  
-@@ -408,14 +449,14 @@ static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
+@@ -404,14 +445,14 @@ static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr)
                compat_uptr_t compat;
  
                if (get_user(compat, argv.ptr.compat + nr))
@@ -58869,7 +60704,7 @@ index 238b7aa..a421d91 100644
  
        return native;
  }
-@@ -434,7 +475,7 @@ static int count(struct user_arg_ptr argv, int max)
+@@ -430,7 +471,7 @@ static int count(struct user_arg_ptr argv, int max)
                        if (!p)
                                break;
  
@@ -58878,7 +60713,7 @@ index 238b7aa..a421d91 100644
                                return -EFAULT;
  
                        if (i >= max)
-@@ -469,7 +510,7 @@ static int copy_strings(int argc, struct user_arg_ptr argv,
+@@ -465,7 +506,7 @@ static int copy_strings(int argc, struct user_arg_ptr argv,
  
                ret = -EFAULT;
                str = get_user_arg_ptr(argv, argc);
@@ -58887,7 +60722,7 @@ index 238b7aa..a421d91 100644
                        goto out;
  
                len = strnlen_user(str, MAX_ARG_STRLEN);
-@@ -551,7 +592,7 @@ int copy_strings_kernel(int argc, const char *const *__argv,
+@@ -547,7 +588,7 @@ int copy_strings_kernel(int argc, const char *const *__argv,
        int r;
        mm_segment_t oldfs = get_fs();
        struct user_arg_ptr argv = {
@@ -58896,7 +60731,7 @@ index 238b7aa..a421d91 100644
        };
  
        set_fs(KERNEL_DS);
-@@ -586,7 +627,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
+@@ -582,7 +623,8 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
        unsigned long new_end = old_end - shift;
        struct mmu_gather tlb;
  
@@ -58906,7 +60741,7 @@ index 238b7aa..a421d91 100644
  
        /*
         * ensure there are no vmas between where we want to go
-@@ -595,6 +637,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
+@@ -591,6 +633,10 @@ static int shift_arg_pages(struct vm_area_struct *vma, unsigned long shift)
        if (vma != find_vma(mm, new_start))
                return -EFAULT;
  
@@ -58917,7 +60752,7 @@ index 238b7aa..a421d91 100644
        /*
         * cover the whole range: [new_start, old_end)
         */
-@@ -675,10 +721,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -671,10 +717,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
        stack_top = arch_align_stack(stack_top);
        stack_top = PAGE_ALIGN(stack_top);
  
@@ -58928,7 +60763,7 @@ index 238b7aa..a421d91 100644
        stack_shift = vma->vm_end - stack_top;
  
        bprm->p -= stack_shift;
-@@ -690,8 +732,28 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -686,8 +728,28 @@ int setup_arg_pages(struct linux_binprm *bprm,
        bprm->exec -= stack_shift;
  
        down_write(&mm->mmap_sem);
@@ -58957,7 +60792,7 @@ index 238b7aa..a421d91 100644
        /*
         * Adjust stack execute permissions; explicitly enable for
         * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone
-@@ -710,13 +772,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -706,13 +768,6 @@ int setup_arg_pages(struct linux_binprm *bprm,
                goto out_unlock;
        BUG_ON(prev != vma);
  
@@ -58971,7 +60806,7 @@ index 238b7aa..a421d91 100644
        /* mprotect_fixup is overkill to remove the temporary stack flags */
        vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
  
-@@ -740,6 +795,27 @@ int setup_arg_pages(struct linux_binprm *bprm,
+@@ -736,6 +791,27 @@ int setup_arg_pages(struct linux_binprm *bprm,
  #endif
        current->mm->start_stack = bprm->p;
        ret = expand_stack(vma, stack_base);
@@ -58999,7 +60834,7 @@ index 238b7aa..a421d91 100644
        if (ret)
                ret = -EFAULT;
  
-@@ -775,6 +851,8 @@ static struct file *do_open_exec(struct filename *name)
+@@ -771,6 +847,8 @@ static struct file *do_open_exec(struct filename *name)
  
        fsnotify_open(file);
  
@@ -59008,7 +60843,7 @@ index 238b7aa..a421d91 100644
        err = deny_write_access(file);
        if (err)
                goto exit;
-@@ -804,7 +882,7 @@ int kernel_read(struct file *file, loff_t offset,
+@@ -800,7 +878,7 @@ int kernel_read(struct file *file, loff_t offset,
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
@@ -59017,7 +60852,7 @@ index 238b7aa..a421d91 100644
        set_fs(old_fs);
        return result;
  }
-@@ -849,6 +927,7 @@ static int exec_mmap(struct mm_struct *mm)
+@@ -845,6 +923,7 @@ static int exec_mmap(struct mm_struct *mm)
        tsk->mm = mm;
        tsk->active_mm = mm;
        activate_mm(active_mm, mm);
@@ -59025,7 +60860,7 @@ index 238b7aa..a421d91 100644
        tsk->mm->vmacache_seqnum = 0;
        vmacache_flush(tsk);
        task_unlock(tsk);
-@@ -1246,7 +1325,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
+@@ -1243,7 +1322,7 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
        }
        rcu_read_unlock();
  
@@ -59034,7 +60869,7 @@ index 238b7aa..a421d91 100644
                bprm->unsafe |= LSM_UNSAFE_SHARE;
        else
                p->fs->in_exec = 1;
-@@ -1422,6 +1501,31 @@ static int exec_binprm(struct linux_binprm *bprm)
+@@ -1424,6 +1503,31 @@ static int exec_binprm(struct linux_binprm *bprm)
        return ret;
  }
  
@@ -59066,7 +60901,7 @@ index 238b7aa..a421d91 100644
  /*
   * sys_execve() executes a new program.
   */
-@@ -1429,6 +1533,11 @@ static int do_execve_common(struct filename *filename,
+@@ -1431,6 +1535,11 @@ static int do_execve_common(struct filename *filename,
                                struct user_arg_ptr argv,
                                struct user_arg_ptr envp)
  {
@@ -59078,7 +60913,7 @@ index 238b7aa..a421d91 100644
        struct linux_binprm *bprm;
        struct file *file;
        struct files_struct *displaced;
-@@ -1437,6 +1546,8 @@ static int do_execve_common(struct filename *filename,
+@@ -1439,6 +1548,8 @@ static int do_execve_common(struct filename *filename,
        if (IS_ERR(filename))
                return PTR_ERR(filename);
  
@@ -59087,7 +60922,7 @@ index 238b7aa..a421d91 100644
        /*
         * We move the actual failure in case of RLIMIT_NPROC excess from
         * set*uid() to execve() because too many poorly written programs
-@@ -1474,11 +1585,21 @@ static int do_execve_common(struct filename *filename,
+@@ -1476,11 +1587,21 @@ static int do_execve_common(struct filename *filename,
        if (IS_ERR(file))
                goto out_unmark;
  
@@ -59109,7 +60944,7 @@ index 238b7aa..a421d91 100644
        retval = bprm_mm_init(bprm);
        if (retval)
                goto out_unmark;
-@@ -1495,24 +1616,70 @@ static int do_execve_common(struct filename *filename,
+@@ -1497,24 +1618,70 @@ static int do_execve_common(struct filename *filename,
        if (retval < 0)
                goto out;
  
@@ -59184,7 +61019,7 @@ index 238b7aa..a421d91 100644
        current->fs->in_exec = 0;
        current->in_execve = 0;
        acct_update_integrals(current);
-@@ -1523,6 +1690,14 @@ static int do_execve_common(struct filename *filename,
+@@ -1525,6 +1692,14 @@ static int do_execve_common(struct filename *filename,
                put_files_struct(displaced);
        return retval;
  
@@ -59199,7 +61034,7 @@ index 238b7aa..a421d91 100644
  out:
        if (bprm->mm) {
                acct_arg_size(bprm, 0);
-@@ -1614,3 +1789,312 @@ COMPAT_SYSCALL_DEFINE3(execve, const char __user *, filename,
+@@ -1616,3 +1791,312 @@ COMPAT_SYSCALL_DEFINE3(execve, const char __user *, filename,
        return compat_do_execve(getname(filename), argv, envp);
  }
  #endif
@@ -59529,6 +61364,33 @@ index 9f9992b..8b59411 100644
                return 0;
        }
        return 1;
+diff --git a/fs/ext2/super.c b/fs/ext2/super.c
+index 170dc41..62f6b18 100644
+--- a/fs/ext2/super.c
++++ b/fs/ext2/super.c
+@@ -264,10 +264,8 @@ static int ext2_show_options(struct seq_file *seq, struct dentry *root)
+ #ifdef CONFIG_EXT2_FS_XATTR
+       if (test_opt(sb, XATTR_USER))
+               seq_puts(seq, ",user_xattr");
+-      if (!test_opt(sb, XATTR_USER) &&
+-          (def_mount_opts & EXT2_DEFM_XATTR_USER)) {
++      if (!test_opt(sb, XATTR_USER))
+               seq_puts(seq, ",nouser_xattr");
+-      }
+ #endif
+ #ifdef CONFIG_EXT2_FS_POSIX_ACL
+@@ -841,8 +839,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
+       if (def_mount_opts & EXT2_DEFM_UID16)
+               set_opt(sbi->s_mount_opt, NO_UID32);
+ #ifdef CONFIG_EXT2_FS_XATTR
+-      if (def_mount_opts & EXT2_DEFM_XATTR_USER)
+-              set_opt(sbi->s_mount_opt, XATTR_USER);
++      /* always enable user xattrs */
++      set_opt(sbi->s_mount_opt, XATTR_USER);
+ #endif
+ #ifdef CONFIG_EXT2_FS_POSIX_ACL
+       if (def_mount_opts & EXT2_DEFM_ACL)
 diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
 index 9142614..97484fa 100644
 --- a/fs/ext2/xattr.c
@@ -59571,6 +61433,33 @@ index 158b5d4..2432610 100644
                return 0;
        }
        return 1;
+diff --git a/fs/ext3/super.c b/fs/ext3/super.c
+index eb742d0..c19f705 100644
+--- a/fs/ext3/super.c
++++ b/fs/ext3/super.c
+@@ -649,10 +649,8 @@ static int ext3_show_options(struct seq_file *seq, struct dentry *root)
+ #ifdef CONFIG_EXT3_FS_XATTR
+       if (test_opt(sb, XATTR_USER))
+               seq_puts(seq, ",user_xattr");
+-      if (!test_opt(sb, XATTR_USER) &&
+-          (def_mount_opts & EXT3_DEFM_XATTR_USER)) {
++      if (!test_opt(sb, XATTR_USER))
+               seq_puts(seq, ",nouser_xattr");
+-      }
+ #endif
+ #ifdef CONFIG_EXT3_FS_POSIX_ACL
+       if (test_opt(sb, POSIX_ACL))
+@@ -1749,8 +1747,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
+       if (def_mount_opts & EXT3_DEFM_UID16)
+               set_opt(sbi->s_mount_opt, NO_UID32);
+ #ifdef CONFIG_EXT3_FS_XATTR
+-      if (def_mount_opts & EXT3_DEFM_XATTR_USER)
+-              set_opt(sbi->s_mount_opt, XATTR_USER);
++      /* always enable user xattrs */
++      set_opt(sbi->s_mount_opt, XATTR_USER);
+ #endif
+ #ifdef CONFIG_EXT3_FS_POSIX_ACL
+       if (def_mount_opts & EXT3_DEFM_ACL)
 diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c
 index c6874be..f8a6ae8 100644
 --- a/fs/ext3/xattr.c
@@ -59597,10 +61486,10 @@ index c6874be..f8a6ae8 100644
  
  static int
 diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
-index 5c56785..77698a2 100644
+index 83a6f49..d4e4d03 100644
 --- a/fs/ext4/balloc.c
 +++ b/fs/ext4/balloc.c
-@@ -534,8 +534,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi,
+@@ -557,8 +557,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi,
        /* Hm, nope.  Are (enough) root reserved clusters available? */
        if (uid_eq(sbi->s_resuid, current_fsuid()) ||
            (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) ||
@@ -59612,10 +61501,10 @@ index 5c56785..77698a2 100644
                if (free_clusters >= (nclusters + dirty_clusters +
                                      resv_clusters))
 diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
-index f542e48..c0275f5 100644
+index c55a1fa..9904ebb 100644
 --- a/fs/ext4/ext4.h
 +++ b/fs/ext4/ext4.h
-@@ -1274,19 +1274,19 @@ struct ext4_sb_info {
+@@ -1279,19 +1279,19 @@ struct ext4_sb_info {
        unsigned long s_mb_last_start;
  
        /* stats for buddy allocator */
@@ -59645,26 +61534,11 @@ index f542e48..c0275f5 100644
        atomic_t s_lock_busy;
  
        /* locality groups */
-diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c
-index e6574d7..c30cbe2 100644
---- a/fs/ext4/indirect.c
-+++ b/fs/ext4/indirect.c
-@@ -1345,8 +1345,8 @@ static int free_hole_blocks(handle_t *handle, struct inode *inode,
-               if (level == 0 ||
-                   (bh && all_zeroes((__le32 *)bh->b_data,
-                                     (__le32 *)bh->b_data + addr_per_block))) {
--                      ext4_free_data(handle, inode, parent_bh, &blk, &blk+1);
--                      *i_data = 0;
-+                      ext4_free_data(handle, inode, parent_bh,
-+                                     i_data, i_data + 1);
-               }
-               brelse(bh);
-               bh = NULL;
 diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
-index 2735a72..d083044 100644
+index dbfe15c..9a6ee8d 100644
 --- a/fs/ext4/mballoc.c
 +++ b/fs/ext4/mballoc.c
-@@ -1889,7 +1889,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
+@@ -1901,7 +1901,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac,
                BUG_ON(ac->ac_b_ex.fe_len != ac->ac_g_ex.fe_len);
  
                if (EXT4_SB(sb)->s_mb_stats)
@@ -59673,7 +61547,7 @@ index 2735a72..d083044 100644
  
                break;
        }
-@@ -2199,7 +2199,7 @@ repeat:
+@@ -2211,7 +2211,7 @@ repeat:
                        ac->ac_status = AC_STATUS_CONTINUE;
                        ac->ac_flags |= EXT4_MB_HINT_FIRST;
                        cr = 3;
@@ -59682,7 +61556,7 @@ index 2735a72..d083044 100644
                        goto repeat;
                }
        }
-@@ -2707,25 +2707,25 @@ int ext4_mb_release(struct super_block *sb)
+@@ -2717,25 +2717,25 @@ int ext4_mb_release(struct super_block *sb)
        if (sbi->s_mb_stats) {
                ext4_msg(sb, KERN_INFO,
                       "mballoc: %u blocks %u reqs (%u success)",
@@ -59718,7 +61592,7 @@ index 2735a72..d083044 100644
        }
  
        free_percpu(sbi->s_locality_groups);
-@@ -3179,16 +3179,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
+@@ -3191,16 +3191,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac)
        struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
  
        if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) {
@@ -59741,7 +61615,7 @@ index 2735a72..d083044 100644
        }
  
        if (ac->ac_op == EXT4_MB_HISTORY_ALLOC)
-@@ -3593,7 +3593,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
+@@ -3627,7 +3627,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac)
        trace_ext4_mb_new_inode_pa(ac, pa);
  
        ext4_mb_use_inode_pa(ac, pa);
@@ -59750,7 +61624,7 @@ index 2735a72..d083044 100644
  
        ei = EXT4_I(ac->ac_inode);
        grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
-@@ -3653,7 +3653,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
+@@ -3687,7 +3687,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac)
        trace_ext4_mb_new_group_pa(ac, pa);
  
        ext4_mb_use_group_pa(ac, pa);
@@ -59759,7 +61633,7 @@ index 2735a72..d083044 100644
  
        grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group);
        lg = ac->ac_lg;
-@@ -3742,7 +3742,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
+@@ -3776,7 +3776,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
                 * from the bitmap and continue.
                 */
        }
@@ -59768,7 +61642,7 @@ index 2735a72..d083044 100644
  
        return err;
  }
-@@ -3760,7 +3760,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
+@@ -3794,7 +3794,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b,
        ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit);
        BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
        mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
@@ -59778,10 +61652,10 @@ index 2735a72..d083044 100644
  
        return 0;
 diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c
-index 04434ad..6404663 100644
+index 8313ca3..8a37d08 100644
 --- a/fs/ext4/mmp.c
 +++ b/fs/ext4/mmp.c
-@@ -113,7 +113,7 @@ static int read_mmp_block(struct super_block *sb, struct buffer_head **bh,
+@@ -111,7 +111,7 @@ static int read_mmp_block(struct super_block *sb, struct buffer_head **bh,
  void __dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp,
                    const char *function, unsigned int line, const char *msg)
  {
@@ -59791,10 +61665,10 @@ index 04434ad..6404663 100644
                       "MMP failure info: last update time: %llu, last update "
                       "node: %s, last update device: %s\n",
 diff --git a/fs/ext4/super.c b/fs/ext4/super.c
-index 29a403c..f58dbdb 100644
+index 2c9e686..6a40edc 100644
 --- a/fs/ext4/super.c
 +++ b/fs/ext4/super.c
-@@ -1275,7 +1275,7 @@ static ext4_fsblk_t get_sb_block(void **data)
+@@ -1254,7 +1254,7 @@ static ext4_fsblk_t get_sb_block(void **data)
  }
  
  #define DEFAULT_JOURNAL_IOPRIO (IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 3))
@@ -59803,7 +61677,7 @@ index 29a403c..f58dbdb 100644
        "Contact linux-ext4@vger.kernel.org if you think we should keep it.\n";
  
  #ifdef CONFIG_QUOTA
-@@ -2453,7 +2453,7 @@ struct ext4_attr {
+@@ -2434,7 +2434,7 @@ struct ext4_attr {
                int offset;
                int deprecated_val;
        } u;
@@ -59813,10 +61687,10 @@ index 29a403c..f58dbdb 100644
  static int parse_strtoull(const char *buf,
                unsigned long long max, unsigned long long *value)
 diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
-index 4eec399..1d9444c 100644
+index 1e09fc7..0400dd4 100644
 --- a/fs/ext4/xattr.c
 +++ b/fs/ext4/xattr.c
-@@ -383,7 +383,7 @@ static int
+@@ -399,7 +399,7 @@ static int
  ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
                        char *buffer, size_t buffer_size)
  {
@@ -59825,7 +61699,7 @@ index 4eec399..1d9444c 100644
  
        for (; !IS_LAST_ENTRY(entry); entry = EXT4_XATTR_NEXT(entry)) {
                const struct xattr_handler *handler =
-@@ -400,9 +400,10 @@ ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
+@@ -416,9 +416,10 @@ ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
                                buffer += size;
                        }
                        rest -= size;
@@ -59838,21 +61712,20 @@ index 4eec399..1d9444c 100644
  
  static int
 diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 72c82f6..a18b263 100644
+index 99d440a..eb979d1 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
-@@ -106,6 +106,11 @@ int __f_setown(struct file *filp, struct pid *pid, enum pid_type type,
-       if (err)
-               return err;
+@@ -102,6 +102,10 @@ void __f_setown(struct file *filp, struct pid *pid, enum pid_type type,
+               int force)
+ {
+       security_file_set_fowner(filp);
 +      if (gr_handle_chroot_fowner(pid, type))
-+              return -ENOENT;
++              return;
 +      if (gr_check_protected_task_fowner(pid, type))
-+              return -EACCES;
-+
++              return;
        f_modown(filp, pid, type, force);
-       return 0;
  }
+ EXPORT_SYMBOL(__f_setown);
 diff --git a/fs/fhandle.c b/fs/fhandle.c
 index 999ff5c..ac037c9 100644
 --- a/fs/fhandle.c
@@ -59885,7 +61758,7 @@ index 999ff5c..ac037c9 100644
                goto out_err;
        }
 diff --git a/fs/file.c b/fs/file.c
-index 8f294cf..d0f3872 100644
+index ab3eb6a..8de2392 100644
 --- a/fs/file.c
 +++ b/fs/file.c
 @@ -16,6 +16,7 @@
@@ -59896,7 +61769,7 @@ index 8f294cf..d0f3872 100644
  #include <linux/fdtable.h>
  #include <linux/bitops.h>
  #include <linux/interrupt.h>
-@@ -144,7 +145,7 @@ out:
+@@ -139,7 +140,7 @@ out:
   * Return <0 error code on error; 1 on successful completion.
   * The files->file_lock should be held on entry, and will be held on exit.
   */
@@ -59905,7 +61778,7 @@ index 8f294cf..d0f3872 100644
        __releases(files->file_lock)
        __acquires(files->file_lock)
  {
-@@ -189,7 +190,7 @@ static int expand_fdtable(struct files_struct *files, int nr)
+@@ -184,7 +185,7 @@ static int expand_fdtable(struct files_struct *files, int nr)
   * expanded and execution may have blocked.
   * The files->file_lock should be held on entry, and will be held on exit.
   */
@@ -59914,7 +61787,7 @@ index 8f294cf..d0f3872 100644
  {
        struct fdtable *fdt;
  
-@@ -804,6 +805,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags)
+@@ -800,6 +801,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags)
        if (!file)
                return __close_fd(files, fd);
  
@@ -59922,7 +61795,7 @@ index 8f294cf..d0f3872 100644
        if (fd >= rlimit(RLIMIT_NOFILE))
                return -EBADF;
  
-@@ -830,6 +832,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
+@@ -826,6 +828,7 @@ SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
        if (unlikely(oldfd == newfd))
                return -EINVAL;
  
@@ -59930,7 +61803,7 @@ index 8f294cf..d0f3872 100644
        if (newfd >= rlimit(RLIMIT_NOFILE))
                return -EBADF;
  
-@@ -885,6 +888,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes)
+@@ -881,6 +884,7 @@ SYSCALL_DEFINE1(dup, unsigned int, fildes)
  int f_dupfd(unsigned int from, struct file *file, unsigned flags)
  {
        int err;
@@ -60042,7 +61915,7 @@ index 7dca743..543d620 100644
        .seq            = SEQCNT_ZERO(init_fs.seq),
        .umask          = 0022,
 diff --git a/fs/fscache/cookie.c b/fs/fscache/cookie.c
-index 29d7feb..303644d 100644
+index 89acec7..a575262 100644
 --- a/fs/fscache/cookie.c
 +++ b/fs/fscache/cookie.c
 @@ -19,7 +19,7 @@
@@ -60148,7 +62021,7 @@ index 29d7feb..303644d 100644
  
        /* Only permit invalidation of data files.  Invalidating an index will
         * require the caller to release all its attachments to the tree rooted
-@@ -477,10 +477,10 @@ void __fscache_update_cookie(struct fscache_cookie *cookie)
+@@ -476,10 +476,10 @@ void __fscache_update_cookie(struct fscache_cookie *cookie)
  {
        struct fscache_object *object;
  
@@ -60161,7 +62034,7 @@ index 29d7feb..303644d 100644
                _leave(" [no cookie]");
                return;
        }
-@@ -581,12 +581,12 @@ EXPORT_SYMBOL(__fscache_disable_cookie);
+@@ -580,12 +580,12 @@ EXPORT_SYMBOL(__fscache_disable_cookie);
   */
  void __fscache_relinquish_cookie(struct fscache_cookie *cookie, bool retire)
  {
@@ -60177,7 +62050,7 @@ index 29d7feb..303644d 100644
                _leave(" [no cookie]");
                return;
        }
-@@ -687,7 +687,7 @@ int __fscache_check_consistency(struct fscache_cookie *cookie)
+@@ -686,7 +686,7 @@ int __fscache_check_consistency(struct fscache_cookie *cookie)
        if (test_bit(FSCACHE_IOERROR, &object->cache->flags))
                goto inconsistent;
  
@@ -60187,10 +62060,10 @@ index 29d7feb..303644d 100644
        __fscache_use_cookie(cookie);
        if (fscache_submit_op(object, op) < 0)
 diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h
-index 4226f66..0fb3f45 100644
+index 7872a62..d91b19f 100644
 --- a/fs/fscache/internal.h
 +++ b/fs/fscache/internal.h
-@@ -133,8 +133,8 @@ extern void fscache_operation_gc(struct work_struct *);
+@@ -137,8 +137,8 @@ extern void fscache_operation_gc(struct work_struct *);
  extern int fscache_wait_for_deferred_lookup(struct fscache_cookie *);
  extern int fscache_wait_for_operation_activation(struct fscache_object *,
                                                 struct fscache_operation *,
@@ -60201,7 +62074,7 @@ index 4226f66..0fb3f45 100644
                                                 void (*)(struct fscache_operation *));
  extern void fscache_invalidate_writes(struct fscache_cookie *);
  
-@@ -153,101 +153,101 @@ extern void fscache_proc_cleanup(void);
+@@ -157,101 +157,101 @@ extern void fscache_proc_cleanup(void);
   * stats.c
   */
  #ifdef CONFIG_FSCACHE_STATS
@@ -60384,7 +62257,7 @@ index 4226f66..0fb3f45 100644
  
  extern atomic_t fscache_n_cop_alloc_object;
  extern atomic_t fscache_n_cop_lookup_object;
-@@ -272,6 +272,11 @@ static inline void fscache_stat(atomic_t *stat)
+@@ -276,6 +276,11 @@ static inline void fscache_stat(atomic_t *stat)
        atomic_inc(stat);
  }
  
@@ -60396,7 +62269,7 @@ index 4226f66..0fb3f45 100644
  static inline void fscache_stat_d(atomic_t *stat)
  {
        atomic_dec(stat);
-@@ -284,6 +289,7 @@ extern const struct file_operations fscache_stats_fops;
+@@ -288,6 +293,7 @@ extern const struct file_operations fscache_stats_fops;
  
  #define __fscache_stat(stat) (NULL)
  #define fscache_stat(stat) do {} while (0)
@@ -60405,7 +62278,7 @@ index 4226f66..0fb3f45 100644
  #endif
  
 diff --git a/fs/fscache/object.c b/fs/fscache/object.c
-index d3b4539..ed0c659 100644
+index da032da..0076ce7 100644
 --- a/fs/fscache/object.c
 +++ b/fs/fscache/object.c
 @@ -454,7 +454,7 @@ static const struct fscache_state *fscache_look_up_object(struct fscache_object
@@ -60501,7 +62374,7 @@ index d3b4539..ed0c659 100644
                break;
  
        default:
-@@ -992,7 +992,7 @@ static const struct fscache_state *fscache_invalidate_object(struct fscache_obje
+@@ -993,7 +993,7 @@ static const struct fscache_state *fscache_invalidate_object(struct fscache_obje
  {
        const struct fscache_state *s;
  
@@ -60510,7 +62383,7 @@ index d3b4539..ed0c659 100644
        fscache_stat(&fscache_n_cop_invalidate_object);
        s = _fscache_invalidate_object(object, event);
        fscache_stat_d(&fscache_n_cop_invalidate_object);
-@@ -1007,7 +1007,7 @@ static const struct fscache_state *fscache_update_object(struct fscache_object *
+@@ -1008,7 +1008,7 @@ static const struct fscache_state *fscache_update_object(struct fscache_object *
  {
        _enter("{OBJ%x},%d", object->debug_id, event);
  
@@ -60520,7 +62393,7 @@ index d3b4539..ed0c659 100644
        object->cache->ops->update_object(object);
        fscache_stat_d(&fscache_n_cop_update_object);
 diff --git a/fs/fscache/operation.c b/fs/fscache/operation.c
-index 318071a..379938b 100644
+index e7b87a0..a85d47a 100644
 --- a/fs/fscache/operation.c
 +++ b/fs/fscache/operation.c
 @@ -17,7 +17,7 @@
@@ -60541,7 +62414,7 @@ index 318071a..379938b 100644
        switch (op->flags & FSCACHE_OP_TYPE) {
        case FSCACHE_OP_ASYNC:
                _debug("queue async");
-@@ -73,7 +73,7 @@ static void fscache_run_op(struct fscache_object *object,
+@@ -72,7 +72,7 @@ static void fscache_run_op(struct fscache_object *object,
                wake_up_bit(&op->flags, FSCACHE_OP_WAITING);
        if (op->processor)
                fscache_enqueue_operation(op);
@@ -60550,7 +62423,7 @@ index 318071a..379938b 100644
  }
  
  /*
-@@ -105,11 +105,11 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
+@@ -104,11 +104,11 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
                if (object->n_in_progress > 0) {
                        atomic_inc(&op->usage);
                        list_add_tail(&op->pend_link, &object->pending_ops);
@@ -60564,7 +62437,7 @@ index 318071a..379938b 100644
                        fscache_start_operations(object);
                } else {
                        ASSERTCMP(object->n_in_progress, ==, 0);
-@@ -125,7 +125,7 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
+@@ -124,7 +124,7 @@ int fscache_submit_exclusive_op(struct fscache_object *object,
                object->n_exclusive++;  /* reads and writes must wait */
                atomic_inc(&op->usage);
                list_add_tail(&op->pend_link, &object->pending_ops);
@@ -60573,7 +62446,7 @@ index 318071a..379938b 100644
                ret = 0;
        } else {
                /* If we're in any other state, there must have been an I/O
-@@ -212,11 +212,11 @@ int fscache_submit_op(struct fscache_object *object,
+@@ -211,11 +211,11 @@ int fscache_submit_op(struct fscache_object *object,
                if (object->n_exclusive > 0) {
                        atomic_inc(&op->usage);
                        list_add_tail(&op->pend_link, &object->pending_ops);
@@ -60587,7 +62460,7 @@ index 318071a..379938b 100644
                        fscache_start_operations(object);
                } else {
                        ASSERTCMP(object->n_exclusive, ==, 0);
-@@ -228,10 +228,10 @@ int fscache_submit_op(struct fscache_object *object,
+@@ -227,10 +227,10 @@ int fscache_submit_op(struct fscache_object *object,
                object->n_ops++;
                atomic_inc(&op->usage);
                list_add_tail(&op->pend_link, &object->pending_ops);
@@ -60600,7 +62473,7 @@ index 318071a..379938b 100644
                op->state = FSCACHE_OP_ST_CANCELLED;
                ret = -ENOBUFS;
        } else if (!test_bit(FSCACHE_IOERROR, &object->cache->flags)) {
-@@ -310,7 +310,7 @@ int fscache_cancel_op(struct fscache_operation *op,
+@@ -309,7 +309,7 @@ int fscache_cancel_op(struct fscache_operation *op,
        ret = -EBUSY;
        if (op->state == FSCACHE_OP_ST_PENDING) {
                ASSERT(!list_empty(&op->pend_link));
@@ -60609,7 +62482,7 @@ index 318071a..379938b 100644
                list_del_init(&op->pend_link);
                if (do_cancel)
                        do_cancel(op);
-@@ -342,7 +342,7 @@ void fscache_cancel_all_ops(struct fscache_object *object)
+@@ -341,7 +341,7 @@ void fscache_cancel_all_ops(struct fscache_object *object)
        while (!list_empty(&object->pending_ops)) {
                op = list_entry(object->pending_ops.next,
                                struct fscache_operation, pend_link);
@@ -60618,7 +62491,7 @@ index 318071a..379938b 100644
                list_del_init(&op->pend_link);
  
                ASSERTCMP(op->state, ==, FSCACHE_OP_ST_PENDING);
-@@ -414,7 +414,7 @@ void fscache_put_operation(struct fscache_operation *op)
+@@ -413,7 +413,7 @@ void fscache_put_operation(struct fscache_operation *op)
                    op->state, ==, FSCACHE_OP_ST_CANCELLED);
        op->state = FSCACHE_OP_ST_DEAD;
  
@@ -60627,7 +62500,7 @@ index 318071a..379938b 100644
  
        if (op->release) {
                op->release(op);
-@@ -433,7 +433,7 @@ void fscache_put_operation(struct fscache_operation *op)
+@@ -432,7 +432,7 @@ void fscache_put_operation(struct fscache_operation *op)
         * lock, and defer it otherwise */
        if (!spin_trylock(&object->lock)) {
                _debug("defer put");
@@ -60636,7 +62509,7 @@ index 318071a..379938b 100644
  
                cache = object->cache;
                spin_lock(&cache->op_gc_list_lock);
-@@ -486,7 +486,7 @@ void fscache_operation_gc(struct work_struct *work)
+@@ -485,7 +485,7 @@ void fscache_operation_gc(struct work_struct *work)
  
                _debug("GC DEFERRED REL OBJ%x OP%x",
                       object->debug_id, op->debug_id);
@@ -60646,10 +62519,10 @@ index 318071a..379938b 100644
                ASSERTCMP(atomic_read(&op->usage), ==, 0);
                ASSERTCMP(op->state, ==, FSCACHE_OP_ST_DEAD);
 diff --git a/fs/fscache/page.c b/fs/fscache/page.c
-index 7f5c658..6c1e164 100644
+index de33b3f..8be4d29 100644
 --- a/fs/fscache/page.c
 +++ b/fs/fscache/page.c
-@@ -61,7 +61,7 @@ try_again:
+@@ -74,7 +74,7 @@ try_again:
        val = radix_tree_lookup(&cookie->stores, page->index);
        if (!val) {
                rcu_read_unlock();
@@ -60658,7 +62531,7 @@ index 7f5c658..6c1e164 100644
                __fscache_uncache_page(cookie, page);
                return true;
        }
-@@ -91,11 +91,11 @@ try_again:
+@@ -104,11 +104,11 @@ try_again:
        spin_unlock(&cookie->stores_lock);
  
        if (xpage) {
@@ -60673,7 +62546,7 @@ index 7f5c658..6c1e164 100644
        }
  
        wake_up_bit(&cookie->flags, 0);
-@@ -110,11 +110,11 @@ page_busy:
+@@ -123,11 +123,11 @@ page_busy:
         * sleeping on memory allocation, so we may need to impose a timeout
         * too. */
        if (!(gfp & __GFP_WAIT) || !(gfp & __GFP_FS)) {
@@ -60684,10 +62557,10 @@ index 7f5c658..6c1e164 100644
  
 -      fscache_stat(&fscache_n_store_vmscan_wait);
 +      fscache_stat_unchecked(&fscache_n_store_vmscan_wait);
-       __fscache_wait_on_page_write(cookie, page);
-       gfp &= ~__GFP_WAIT;
-       goto try_again;
-@@ -140,7 +140,7 @@ static void fscache_end_page_write(struct fscache_object *object,
+       if (!release_page_wait_timeout(cookie, page))
+               _debug("fscache writeout timeout page: %p{%lx}",
+                       page, page->index);
+@@ -156,7 +156,7 @@ static void fscache_end_page_write(struct fscache_object *object,
                                     FSCACHE_COOKIE_STORING_TAG);
                if (!radix_tree_tag_get(&cookie->stores, page->index,
                                        FSCACHE_COOKIE_PENDING_TAG)) {
@@ -60696,7 +62569,7 @@ index 7f5c658..6c1e164 100644
                        xpage = radix_tree_delete(&cookie->stores, page->index);
                }
                spin_unlock(&cookie->stores_lock);
-@@ -161,7 +161,7 @@ static void fscache_attr_changed_op(struct fscache_operation *op)
+@@ -177,7 +177,7 @@ static void fscache_attr_changed_op(struct fscache_operation *op)
  
        _enter("{OBJ%x OP%x}", object->debug_id, op->debug_id);
  
@@ -60705,7 +62578,7 @@ index 7f5c658..6c1e164 100644
  
        if (fscache_object_is_active(object)) {
                fscache_stat(&fscache_n_cop_attr_changed);
-@@ -188,11 +188,11 @@ int __fscache_attr_changed(struct fscache_cookie *cookie)
+@@ -204,11 +204,11 @@ int __fscache_attr_changed(struct fscache_cookie *cookie)
  
        ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
  
@@ -60719,16 +62592,16 @@ index 7f5c658..6c1e164 100644
                _leave(" = -ENOMEM");
                return -ENOMEM;
        }
-@@ -214,7 +214,7 @@ int __fscache_attr_changed(struct fscache_cookie *cookie)
+@@ -230,7 +230,7 @@ int __fscache_attr_changed(struct fscache_cookie *cookie)
        if (fscache_submit_exclusive_op(object, op) < 0)
-               goto nobufs;
+               goto nobufs_dec;
        spin_unlock(&cookie->lock);
 -      fscache_stat(&fscache_n_attr_changed_ok);
 +      fscache_stat_unchecked(&fscache_n_attr_changed_ok);
        fscache_put_operation(op);
        _leave(" = 0");
        return 0;
-@@ -225,7 +225,7 @@ nobufs:
+@@ -242,7 +242,7 @@ nobufs:
        kfree(op);
        if (wake_cookie)
                __fscache_wake_unused_cookie(cookie);
@@ -60737,7 +62610,7 @@ index 7f5c658..6c1e164 100644
        _leave(" = %d", -ENOBUFS);
        return -ENOBUFS;
  }
-@@ -264,7 +264,7 @@ static struct fscache_retrieval *fscache_alloc_retrieval(
+@@ -281,7 +281,7 @@ static struct fscache_retrieval *fscache_alloc_retrieval(
        /* allocate a retrieval operation and attempt to submit it */
        op = kzalloc(sizeof(*op), GFP_NOIO);
        if (!op) {
@@ -60746,7 +62619,7 @@ index 7f5c658..6c1e164 100644
                return NULL;
        }
  
-@@ -294,13 +294,13 @@ int fscache_wait_for_deferred_lookup(struct fscache_cookie *cookie)
+@@ -311,12 +311,12 @@ int fscache_wait_for_deferred_lookup(struct fscache_cookie *cookie)
                return 0;
        }
  
@@ -60755,14 +62628,13 @@ index 7f5c658..6c1e164 100644
  
        jif = jiffies;
        if (wait_on_bit(&cookie->flags, FSCACHE_COOKIE_LOOKING_UP,
-                       fscache_wait_bit_interruptible,
                        TASK_INTERRUPTIBLE) != 0) {
 -              fscache_stat(&fscache_n_retrievals_intr);
 +              fscache_stat_unchecked(&fscache_n_retrievals_intr);
                _leave(" = -ERESTARTSYS");
                return -ERESTARTSYS;
        }
-@@ -329,8 +329,8 @@ static void fscache_do_cancel_retrieval(struct fscache_operation *_op)
+@@ -345,8 +345,8 @@ static void fscache_do_cancel_retrieval(struct fscache_operation *_op)
   */
  int fscache_wait_for_operation_activation(struct fscache_object *object,
                                          struct fscache_operation *op,
@@ -60773,16 +62645,16 @@ index 7f5c658..6c1e164 100644
                                          void (*do_cancel)(struct fscache_operation *))
  {
        int ret;
-@@ -340,7 +340,7 @@ int fscache_wait_for_operation_activation(struct fscache_object *object,
+@@ -356,7 +356,7 @@ int fscache_wait_for_operation_activation(struct fscache_object *object,
  
        _debug(">>> WT");
        if (stat_op_waits)
 -              fscache_stat(stat_op_waits);
 +              fscache_stat_unchecked(stat_op_waits);
        if (wait_on_bit(&op->flags, FSCACHE_OP_WAITING,
-                       fscache_wait_bit_interruptible,
                        TASK_INTERRUPTIBLE) != 0) {
-@@ -358,7 +358,7 @@ int fscache_wait_for_operation_activation(struct fscache_object *object,
+               ret = fscache_cancel_op(op, do_cancel);
+@@ -373,7 +373,7 @@ int fscache_wait_for_operation_activation(struct fscache_object *object,
  check_if_dead:
        if (op->state == FSCACHE_OP_ST_CANCELLED) {
                if (stat_object_dead)
@@ -60791,7 +62663,7 @@ index 7f5c658..6c1e164 100644
                _leave(" = -ENOBUFS [cancelled]");
                return -ENOBUFS;
        }
-@@ -366,7 +366,7 @@ check_if_dead:
+@@ -381,7 +381,7 @@ check_if_dead:
                pr_err("%s() = -ENOBUFS [obj dead %d]\n", __func__, op->state);
                fscache_cancel_op(op, do_cancel);
                if (stat_object_dead)
@@ -60800,7 +62672,7 @@ index 7f5c658..6c1e164 100644
                return -ENOBUFS;
        }
        return 0;
-@@ -394,7 +394,7 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
+@@ -409,7 +409,7 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
  
        _enter("%p,%p,,,", cookie, page);
  
@@ -60809,7 +62681,7 @@ index 7f5c658..6c1e164 100644
  
        if (hlist_empty(&cookie->backing_objects))
                goto nobufs;
-@@ -436,7 +436,7 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
+@@ -451,7 +451,7 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
                goto nobufs_unlock_dec;
        spin_unlock(&cookie->lock);
  
@@ -60818,7 +62690,7 @@ index 7f5c658..6c1e164 100644
  
        /* pin the netfs read context in case we need to do the actual netfs
         * read because we've encountered a cache read failure */
-@@ -467,15 +467,15 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
+@@ -482,15 +482,15 @@ int __fscache_read_or_alloc_page(struct fscache_cookie *cookie,
  
  error:
        if (ret == -ENOMEM)
@@ -60839,7 +62711,7 @@ index 7f5c658..6c1e164 100644
  
        fscache_put_retrieval(op);
        _leave(" = %d", ret);
-@@ -490,7 +490,7 @@ nobufs_unlock:
+@@ -505,7 +505,7 @@ nobufs_unlock:
                __fscache_wake_unused_cookie(cookie);
        kfree(op);
  nobufs:
@@ -60848,7 +62720,7 @@ index 7f5c658..6c1e164 100644
        _leave(" = -ENOBUFS");
        return -ENOBUFS;
  }
-@@ -529,7 +529,7 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
+@@ -544,7 +544,7 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
  
        _enter("%p,,%d,,,", cookie, *nr_pages);
  
@@ -60857,7 +62729,7 @@ index 7f5c658..6c1e164 100644
  
        if (hlist_empty(&cookie->backing_objects))
                goto nobufs;
-@@ -567,7 +567,7 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
+@@ -582,7 +582,7 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
                goto nobufs_unlock_dec;
        spin_unlock(&cookie->lock);
  
@@ -60866,7 +62738,7 @@ index 7f5c658..6c1e164 100644
  
        /* pin the netfs read context in case we need to do the actual netfs
         * read because we've encountered a cache read failure */
-@@ -598,15 +598,15 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
+@@ -613,15 +613,15 @@ int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie,
  
  error:
        if (ret == -ENOMEM)
@@ -60887,7 +62759,7 @@ index 7f5c658..6c1e164 100644
  
        fscache_put_retrieval(op);
        _leave(" = %d", ret);
-@@ -621,7 +621,7 @@ nobufs_unlock:
+@@ -636,7 +636,7 @@ nobufs_unlock:
        if (wake_cookie)
                __fscache_wake_unused_cookie(cookie);
  nobufs:
@@ -60896,7 +62768,7 @@ index 7f5c658..6c1e164 100644
        _leave(" = -ENOBUFS");
        return -ENOBUFS;
  }
-@@ -646,7 +646,7 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
+@@ -661,7 +661,7 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
  
        _enter("%p,%p,,,", cookie, page);
  
@@ -60905,7 +62777,7 @@ index 7f5c658..6c1e164 100644
  
        if (hlist_empty(&cookie->backing_objects))
                goto nobufs;
-@@ -680,7 +680,7 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
+@@ -695,7 +695,7 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
                goto nobufs_unlock_dec;
        spin_unlock(&cookie->lock);
  
@@ -60914,7 +62786,7 @@ index 7f5c658..6c1e164 100644
  
        ret = fscache_wait_for_operation_activation(
                object, &op->op,
-@@ -697,11 +697,11 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
+@@ -712,11 +712,11 @@ int __fscache_alloc_page(struct fscache_cookie *cookie,
  
  error:
        if (ret == -ERESTARTSYS)
@@ -60929,7 +62801,7 @@ index 7f5c658..6c1e164 100644
  
        fscache_put_retrieval(op);
        _leave(" = %d", ret);
-@@ -715,7 +715,7 @@ nobufs_unlock:
+@@ -730,7 +730,7 @@ nobufs_unlock:
        if (wake_cookie)
                __fscache_wake_unused_cookie(cookie);
  nobufs:
@@ -60938,7 +62810,7 @@ index 7f5c658..6c1e164 100644
        _leave(" = -ENOBUFS");
        return -ENOBUFS;
  }
-@@ -791,7 +791,7 @@ static void fscache_write_op(struct fscache_operation *_op)
+@@ -806,7 +806,7 @@ static void fscache_write_op(struct fscache_operation *_op)
  
        spin_lock(&cookie->stores_lock);
  
@@ -60947,7 +62819,7 @@ index 7f5c658..6c1e164 100644
  
        /* find a page to store */
        page = NULL;
-@@ -802,7 +802,7 @@ static void fscache_write_op(struct fscache_operation *_op)
+@@ -817,7 +817,7 @@ static void fscache_write_op(struct fscache_operation *_op)
        page = results[0];
        _debug("gang %d [%lx]", n, page->index);
        if (page->index > op->store_limit) {
@@ -60956,7 +62828,7 @@ index 7f5c658..6c1e164 100644
                goto superseded;
        }
  
-@@ -814,7 +814,7 @@ static void fscache_write_op(struct fscache_operation *_op)
+@@ -829,7 +829,7 @@ static void fscache_write_op(struct fscache_operation *_op)
        spin_unlock(&cookie->stores_lock);
        spin_unlock(&object->lock);
  
@@ -60965,7 +62837,7 @@ index 7f5c658..6c1e164 100644
        fscache_stat(&fscache_n_cop_write_page);
        ret = object->cache->ops->write_page(op, page);
        fscache_stat_d(&fscache_n_cop_write_page);
-@@ -918,7 +918,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
+@@ -933,7 +933,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
        ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
        ASSERT(PageFsCache(page));
  
@@ -60974,7 +62846,7 @@ index 7f5c658..6c1e164 100644
  
        if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) {
                _leave(" = -ENOBUFS [invalidating]");
-@@ -977,7 +977,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
+@@ -992,7 +992,7 @@ int __fscache_write_page(struct fscache_cookie *cookie,
        spin_unlock(&cookie->stores_lock);
        spin_unlock(&object->lock);
  
@@ -60983,7 +62855,7 @@ index 7f5c658..6c1e164 100644
        op->store_limit = object->store_limit;
  
        __fscache_use_cookie(cookie);
-@@ -986,8 +986,8 @@ int __fscache_write_page(struct fscache_cookie *cookie,
+@@ -1001,8 +1001,8 @@ int __fscache_write_page(struct fscache_cookie *cookie,
  
        spin_unlock(&cookie->lock);
        radix_tree_preload_end();
@@ -60994,7 +62866,7 @@ index 7f5c658..6c1e164 100644
  
        /* the work queue now carries its own ref on the object */
        fscache_put_operation(&op->op);
-@@ -995,14 +995,14 @@ int __fscache_write_page(struct fscache_cookie *cookie,
+@@ -1010,14 +1010,14 @@ int __fscache_write_page(struct fscache_cookie *cookie,
        return 0;
  
  already_queued:
@@ -61011,7 +62883,7 @@ index 7f5c658..6c1e164 100644
        _leave(" = 0");
        return 0;
  
-@@ -1024,14 +1024,14 @@ nobufs:
+@@ -1039,14 +1039,14 @@ nobufs:
        kfree(op);
        if (wake_cookie)
                __fscache_wake_unused_cookie(cookie);
@@ -61028,7 +62900,7 @@ index 7f5c658..6c1e164 100644
        _leave(" = -ENOMEM");
        return -ENOMEM;
  }
-@@ -1049,7 +1049,7 @@ void __fscache_uncache_page(struct fscache_cookie *cookie, struct page *page)
+@@ -1064,7 +1064,7 @@ void __fscache_uncache_page(struct fscache_cookie *cookie, struct page *page)
        ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX);
        ASSERTCMP(page, !=, NULL);
  
@@ -61037,7 +62909,7 @@ index 7f5c658..6c1e164 100644
  
        /* cache withdrawal may beat us to it */
        if (!PageFsCache(page))
-@@ -1100,7 +1100,7 @@ void fscache_mark_page_cached(struct fscache_retrieval *op, struct page *page)
+@@ -1115,7 +1115,7 @@ void fscache_mark_page_cached(struct fscache_retrieval *op, struct page *page)
        struct fscache_cookie *cookie = op->op.object->cookie;
  
  #ifdef CONFIG_FSCACHE_STATS
@@ -61429,10 +63301,10 @@ index 40d13c7..ddf52b9 100644
        seq_printf(m, "CacheOp: alo=%d luo=%d luc=%d gro=%d\n",
                   atomic_read(&fscache_n_cop_alloc_object),
 diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c
-index 13b691a..1ffca5ae 100644
+index 966ace8..030a03a 100644
 --- a/fs/fuse/cuse.c
 +++ b/fs/fuse/cuse.c
-@@ -607,10 +607,12 @@ static int __init cuse_init(void)
+@@ -611,10 +611,12 @@ static int __init cuse_init(void)
                INIT_LIST_HEAD(&cuse_conntbl[i]);
  
        /* inherit and extend fuse_dev_operations */
@@ -61450,10 +63322,10 @@ index 13b691a..1ffca5ae 100644
        cuse_class = class_create(THIS_MODULE, "cuse");
        if (IS_ERR(cuse_class))
 diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
-index aac71ce..fcd6a1b 100644
+index ca88731..8e9c55d 100644
 --- a/fs/fuse/dev.c
 +++ b/fs/fuse/dev.c
-@@ -1323,7 +1323,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
+@@ -1318,7 +1318,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
        ret = 0;
        pipe_lock(pipe);
  
@@ -61462,7 +63334,7 @@ index aac71ce..fcd6a1b 100644
                send_sig(SIGPIPE, current, 0);
                if (!ret)
                        ret = -EPIPE;
-@@ -1352,7 +1352,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
+@@ -1347,7 +1347,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
                page_nr++;
                ret += buf->len;
  
@@ -61472,10 +63344,10 @@ index aac71ce..fcd6a1b 100644
        }
  
 diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
-index 4219835..3473b7e 100644
+index dbab798..fefa22b 100644
 --- a/fs/fuse/dir.c
 +++ b/fs/fuse/dir.c
-@@ -1478,7 +1478,7 @@ static char *read_link(struct dentry *dentry)
+@@ -1474,7 +1474,7 @@ static char *read_link(struct dentry *dentry)
        return link;
  }
  
@@ -61485,10 +63357,10 @@ index 4219835..3473b7e 100644
        if (!IS_ERR(link))
                free_page((unsigned long) link);
 diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
-index 9c470fd..aae410e 100644
+index fd62cae..3494dfa 100644
 --- a/fs/hostfs/hostfs_kern.c
 +++ b/fs/hostfs/hostfs_kern.c
-@@ -898,7 +898,7 @@ static void *hostfs_follow_link(struct dentry *dentry, struct nameidata *nd)
+@@ -908,7 +908,7 @@ static void *hostfs_follow_link(struct dentry *dentry, struct nameidata *nd)
  
  static void hostfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
  {
@@ -61498,10 +63370,10 @@ index 9c470fd..aae410e 100644
                __putname(s);
  }
 diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
-index e19d4c0..8a357a9 100644
+index 1e2872b..7aea000 100644
 --- a/fs/hugetlbfs/inode.c
 +++ b/fs/hugetlbfs/inode.c
-@@ -152,6 +152,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
+@@ -154,6 +154,7 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
        struct mm_struct *mm = current->mm;
        struct vm_area_struct *vma;
        struct hstate *h = hstate_file(file);
@@ -61509,7 +63381,7 @@ index e19d4c0..8a357a9 100644
        struct vm_unmapped_area_info info;
  
        if (len & ~huge_page_mask(h))
-@@ -165,17 +166,26 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
+@@ -167,17 +168,26 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
                return addr;
        }
  
@@ -61538,7 +63410,7 @@ index e19d4c0..8a357a9 100644
        info.high_limit = TASK_SIZE;
        info.align_mask = PAGE_MASK & ~huge_page_mask(h);
        info.align_offset = 0;
-@@ -921,7 +931,7 @@ static struct file_system_type hugetlbfs_fs_type = {
+@@ -919,7 +929,7 @@ static struct file_system_type hugetlbfs_fs_type = {
  };
  MODULE_ALIAS_FS("hugetlbfs");
  
@@ -61548,10 +63420,10 @@ index e19d4c0..8a357a9 100644
  static int can_do_hugetlb_shm(void)
  {
 diff --git a/fs/inode.c b/fs/inode.c
-index d2fb2f2..a6444b0 100644
+index 26753ba..d19eb34 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
-@@ -839,16 +839,20 @@ unsigned int get_next_ino(void)
+@@ -840,16 +840,20 @@ unsigned int get_next_ino(void)
        unsigned int *p = &get_cpu_var(last_ino);
        unsigned int res = *p;
  
@@ -61590,7 +63462,7 @@ index 4a6cf28..d3a29d3 100644
  
                jffs2_prealloc_raw_node_refs(c, jeb, 1);
 diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
-index a6597d6..41b30ec 100644
+index 09ed551..45684f8 100644
 --- a/fs/jffs2/wbuf.c
 +++ b/fs/jffs2/wbuf.c
 @@ -1023,7 +1023,8 @@ static const struct jffs2_unknown_node oob_cleanmarker =
@@ -61604,10 +63476,10 @@ index a6597d6..41b30ec 100644
  
  /*
 diff --git a/fs/jfs/super.c b/fs/jfs/super.c
-index 97f7fda..09bd33d 100644
+index 93e897e..a863de4 100644
 --- a/fs/jfs/super.c
 +++ b/fs/jfs/super.c
-@@ -885,7 +885,7 @@ static int __init init_jfs_fs(void)
+@@ -893,7 +893,7 @@ static int __init init_jfs_fs(void)
  
        jfs_inode_cachep =
            kmem_cache_create("jfs_ip", sizeof(struct jfs_inode_info), 0,
@@ -61617,7 +63489,7 @@ index 97f7fda..09bd33d 100644
        if (jfs_inode_cachep == NULL)
                return -ENOMEM;
 diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
-index a693f5b..82276a1 100644
+index 1c77193..ba73e66 100644
 --- a/fs/kernfs/dir.c
 +++ b/fs/kernfs/dir.c
 @@ -182,7 +182,7 @@ struct kernfs_node *kernfs_get_parent(struct kernfs_node *kn)
@@ -61629,11 +63501,24 @@ index a693f5b..82276a1 100644
  {
        unsigned long hash = init_name_hash();
        unsigned int len = strlen(name);
+@@ -829,6 +829,12 @@ static int kernfs_iop_mkdir(struct inode *dir, struct dentry *dentry,
+       ret = scops->mkdir(parent, dentry->d_name.name, mode);
+       kernfs_put_active(parent);
++
++      if (!ret) {
++              struct dentry *dentry_ret = kernfs_iop_lookup(dir, dentry, 0);
++              ret = PTR_ERR_OR_ZERO(dentry_ret);
++      }
++
+       return ret;
+ }
 diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
-index 5e9a80c..3853a24 100644
+index 4429d6d..9831f52 100644
 --- a/fs/kernfs/file.c
 +++ b/fs/kernfs/file.c
-@@ -33,7 +33,7 @@ static DEFINE_MUTEX(kernfs_open_file_mutex);
+@@ -34,7 +34,7 @@ static DEFINE_MUTEX(kernfs_open_file_mutex);
  
  struct kernfs_open_node {
        atomic_t                refcnt;
@@ -61642,7 +63527,7 @@ index 5e9a80c..3853a24 100644
        wait_queue_head_t       poll;
        struct list_head        files; /* goes through kernfs_open_file.list */
  };
-@@ -149,7 +149,7 @@ static int kernfs_seq_show(struct seq_file *sf, void *v)
+@@ -163,7 +163,7 @@ static int kernfs_seq_show(struct seq_file *sf, void *v)
  {
        struct kernfs_open_file *of = sf->private;
  
@@ -61651,7 +63536,7 @@ index 5e9a80c..3853a24 100644
  
        return of->kn->attr.ops->seq_show(sf, v);
  }
-@@ -361,12 +361,12 @@ static int kernfs_vma_page_mkwrite(struct vm_area_struct *vma,
+@@ -375,12 +375,12 @@ static int kernfs_vma_page_mkwrite(struct vm_area_struct *vma,
        return ret;
  }
  
@@ -61667,7 +63552,7 @@ index 5e9a80c..3853a24 100644
  
        if (!of->vm_ops)
                return -EINVAL;
-@@ -567,7 +567,7 @@ static int kernfs_get_open_node(struct kernfs_node *kn,
+@@ -581,7 +581,7 @@ static int kernfs_get_open_node(struct kernfs_node *kn,
                return -ENOMEM;
  
        atomic_set(&new_on->refcnt, 0);
@@ -61676,7 +63561,7 @@ index 5e9a80c..3853a24 100644
        init_waitqueue_head(&new_on->poll);
        INIT_LIST_HEAD(&new_on->files);
        goto retry;
-@@ -773,7 +773,7 @@ static unsigned int kernfs_fop_poll(struct file *filp, poll_table *wait)
+@@ -787,7 +787,7 @@ static unsigned int kernfs_fop_poll(struct file *filp, poll_table *wait)
  
        kernfs_put_active(kn);
  
@@ -61685,15 +63570,15 @@ index 5e9a80c..3853a24 100644
                goto trigger;
  
        return DEFAULT_POLLMASK;
-@@ -798,7 +798,7 @@ void kernfs_notify(struct kernfs_node *kn)
-       if (!WARN_ON(kernfs_type(kn) != KERNFS_FILE)) {
-               on = kn->attr.open;
-               if (on) {
--                      atomic_inc(&on->event);
-+                      atomic_inc_unchecked(&on->event);
-                       wake_up_interruptible(&on->poll);
-               }
+@@ -818,7 +818,7 @@ repeat:
+       on = kn->attr.open;
+       if (on) {
+-              atomic_inc(&on->event);
++              atomic_inc_unchecked(&on->event);
+               wake_up_interruptible(&on->poll);
        }
 diff --git a/fs/kernfs/symlink.c b/fs/kernfs/symlink.c
 index 8a19889..4c3069a 100644
 --- a/fs/kernfs/symlink.c
@@ -61708,20 +63593,20 @@ index 8a19889..4c3069a 100644
                free_page((unsigned long)page);
  }
 diff --git a/fs/libfs.c b/fs/libfs.c
-index a184424..944ddce 100644
+index 005843c..06c4191 100644
 --- a/fs/libfs.c
 +++ b/fs/libfs.c
-@@ -159,6 +159,9 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
+@@ -160,6 +160,9 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
  
        for (p = q->next; p != &dentry->d_subdirs; p = p->next) {
-               struct dentry *next = list_entry(p, struct dentry, d_u.d_child);
+               struct dentry *next = list_entry(p, struct dentry, d_child);
 +              char d_name[sizeof(next->d_iname)];
 +              const unsigned char *name;
 +
                spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
                if (!simple_positive(next)) {
                        spin_unlock(&next->d_lock);
-@@ -167,7 +170,12 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
+@@ -168,7 +171,12 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
  
                spin_unlock(&next->d_lock);
                spin_unlock(&dentry->d_lock);
@@ -61735,7 +63620,7 @@ index a184424..944ddce 100644
                              next->d_inode->i_ino, dt_type(next->d_inode)))
                        return 0;
                spin_lock(&dentry->d_lock);
-@@ -999,7 +1007,7 @@ EXPORT_SYMBOL(noop_fsync);
+@@ -1027,7 +1035,7 @@ EXPORT_SYMBOL(noop_fsync);
  void kfree_put_link(struct dentry *dentry, struct nameidata *nd,
                                void *cookie)
  {
@@ -61763,18 +63648,19 @@ index acd3947..1f896e2 100644
        memcpy(c->data, &cookie, 4);
        c->len=4;
 diff --git a/fs/locks.c b/fs/locks.c
-index e390bd9..c79870e 100644
+index 735b8d3..dfc44a2 100644
 --- a/fs/locks.c
 +++ b/fs/locks.c
-@@ -2315,16 +2315,16 @@ void locks_remove_file(struct file *filp)
-       locks_remove_posix(filp, (fl_owner_t)filp);
+@@ -2374,7 +2374,7 @@ void locks_remove_file(struct file *filp)
+       locks_remove_posix(filp, filp);
  
        if (filp->f_op->flock) {
 -              struct file_lock fl = {
 +              struct file_lock flock = {
+                       .fl_owner = filp,
                        .fl_pid = current->tgid,
                        .fl_file = filp,
-                       .fl_flags = FL_FLOCK,
+@@ -2382,9 +2382,9 @@ void locks_remove_file(struct file *filp)
                        .fl_type = F_UNLCK,
                        .fl_end = OFFSET_MAX,
                };
@@ -61788,7 +63674,7 @@ index e390bd9..c79870e 100644
  
        spin_lock(&inode->i_lock);
 diff --git a/fs/mount.h b/fs/mount.h
-index d55297f..f5b28c5 100644
+index f82c628..9492b99 100644
 --- a/fs/mount.h
 +++ b/fs/mount.h
 @@ -11,7 +11,7 @@ struct mnt_namespace {
@@ -61800,9 +63686,9 @@ index d55297f..f5b28c5 100644
  
  struct mnt_pcp {
        int mnt_count;
-@@ -57,7 +57,7 @@ struct mount {
+@@ -62,7 +62,7 @@ struct mount {
        int mnt_expiry_mark;            /* true if marked for expiry */
-       int mnt_pinned;
+       struct hlist_head mnt_pins;
        struct path mnt_ex_mountpoint;
 -};
 +} __randomize_layout;
@@ -61810,10 +63696,10 @@ index d55297f..f5b28c5 100644
  #define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */
  
 diff --git a/fs/namei.c b/fs/namei.c
-index 985c6f3..5f520b67 100644
+index db5fe86..d3dcc14 100644
 --- a/fs/namei.c
 +++ b/fs/namei.c
-@@ -330,17 +330,32 @@ int generic_permission(struct inode *inode, int mask)
+@@ -331,17 +331,32 @@ int generic_permission(struct inode *inode, int mask)
        if (ret != -EACCES)
                return ret;
  
@@ -61850,7 +63736,7 @@ index 985c6f3..5f520b67 100644
         * Read/write DACs are always overridable.
         * Executable DACs are overridable when there is
         * at least one exec bit set.
-@@ -349,14 +364,6 @@ int generic_permission(struct inode *inode, int mask)
+@@ -350,14 +365,6 @@ int generic_permission(struct inode *inode, int mask)
                if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
                        return 0;
  
@@ -61887,7 +63773,7 @@ index 985c6f3..5f520b67 100644
        nd->last_type = LAST_BIND;
        *p = dentry->d_inode->i_op->follow_link(dentry, nd);
        error = PTR_ERR(*p);
-@@ -1596,6 +1609,8 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd)
+@@ -1608,6 +1621,8 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd)
                if (res)
                        break;
                res = walk_component(nd, path, LOOKUP_FOLLOW);
@@ -61896,8 +63782,8 @@ index 985c6f3..5f520b67 100644
                put_link(nd, &link, cookie);
        } while (res > 0);
  
-@@ -1669,7 +1684,7 @@ EXPORT_SYMBOL(full_name_hash);
- static inline unsigned long hash_name(const char *name, unsigned int *hashp)
+@@ -1680,7 +1695,7 @@ EXPORT_SYMBOL(full_name_hash);
+ static inline u64 hash_name(const char *name)
  {
        unsigned long a, b, adata, bdata, mask, hash, len;
 -      const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
@@ -61905,7 +63791,7 @@ index 985c6f3..5f520b67 100644
  
        hash = a = 0;
        len = -sizeof(unsigned long);
-@@ -1953,6 +1968,8 @@ static int path_lookupat(int dfd, const char *name,
+@@ -1969,6 +1984,8 @@ static int path_lookupat(int dfd, const char *name,
                        if (err)
                                break;
                        err = lookup_last(nd, &path);
@@ -61914,7 +63800,7 @@ index 985c6f3..5f520b67 100644
                        put_link(nd, &link, cookie);
                }
        }
-@@ -1960,6 +1977,13 @@ static int path_lookupat(int dfd, const char *name,
+@@ -1976,6 +1993,13 @@ static int path_lookupat(int dfd, const char *name,
        if (!err)
                err = complete_walk(nd);
  
@@ -61928,7 +63814,7 @@ index 985c6f3..5f520b67 100644
        if (!err && nd->flags & LOOKUP_DIRECTORY) {
                if (!d_can_lookup(nd->path.dentry)) {
                        path_put(&nd->path);
-@@ -1987,8 +2011,15 @@ static int filename_lookup(int dfd, struct filename *name,
+@@ -2004,8 +2028,15 @@ static int filename_lookup(int dfd, struct filename *name,
                retval = path_lookupat(dfd, name->name,
                                                flags | LOOKUP_REVAL, nd);
  
@@ -61945,19 +63831,7 @@ index 985c6f3..5f520b67 100644
        return retval;
  }
  
-@@ -2256,9 +2287,10 @@ done:
-               goto out;
-       }
-       path->dentry = dentry;
--      path->mnt = mntget(nd->path.mnt);
-+      path->mnt = nd->path.mnt;
-       if (should_follow_link(dentry, nd->flags & LOOKUP_FOLLOW))
-               return 1;
-+      mntget(path->mnt);
-       follow_mount(path);
-       error = 0;
- out:
-@@ -2569,6 +2601,13 @@ static int may_open(struct path *path, int acc_mode, int flag)
+@@ -2582,6 +2613,13 @@ static int may_open(struct path *path, int acc_mode, int flag)
        if (flag & O_NOATIME && !inode_owner_or_capable(inode))
                return -EPERM;
  
@@ -61971,7 +63845,7 @@ index 985c6f3..5f520b67 100644
        return 0;
  }
  
-@@ -2800,7 +2839,7 @@ looked_up:
+@@ -2813,7 +2851,7 @@ looked_up:
   * cleared otherwise prior to returning.
   */
  static int lookup_open(struct nameidata *nd, struct path *path,
@@ -61980,7 +63854,7 @@ index 985c6f3..5f520b67 100644
                        const struct open_flags *op,
                        bool got_write, int *opened)
  {
-@@ -2835,6 +2874,17 @@ static int lookup_open(struct nameidata *nd, struct path *path,
+@@ -2848,6 +2886,17 @@ static int lookup_open(struct nameidata *nd, struct path *path,
        /* Negative dentry, just create the file */
        if (!dentry->d_inode && (op->open_flag & O_CREAT)) {
                umode_t mode = op->mode;
@@ -61998,7 +63872,7 @@ index 985c6f3..5f520b67 100644
                if (!IS_POSIXACL(dir->d_inode))
                        mode &= ~current_umask();
                /*
-@@ -2856,6 +2906,8 @@ static int lookup_open(struct nameidata *nd, struct path *path,
+@@ -2869,6 +2918,8 @@ static int lookup_open(struct nameidata *nd, struct path *path,
                                   nd->flags & LOOKUP_EXCL);
                if (error)
                        goto out_dput;
@@ -62007,7 +63881,7 @@ index 985c6f3..5f520b67 100644
        }
  out_no_open:
        path->dentry = dentry;
-@@ -2870,7 +2922,7 @@ out_dput:
+@@ -2883,7 +2934,7 @@ out_dput:
  /*
   * Handle the last step of open()
   */
@@ -62016,7 +63890,7 @@ index 985c6f3..5f520b67 100644
                   struct file *file, const struct open_flags *op,
                   int *opened, struct filename *name)
  {
-@@ -2920,6 +2972,15 @@ static int do_last(struct nameidata *nd, struct path *path,
+@@ -2933,6 +2984,15 @@ static int do_last(struct nameidata *nd, struct path *path,
                if (error)
                        return error;
  
@@ -62032,7 +63906,7 @@ index 985c6f3..5f520b67 100644
                audit_inode(name, dir, LOOKUP_PARENT);
                error = -EISDIR;
                /* trailing slashes? */
-@@ -2939,7 +3000,7 @@ retry_lookup:
+@@ -2952,7 +3012,7 @@ retry_lookup:
                 */
        }
        mutex_lock(&dir->d_inode->i_mutex);
@@ -62041,7 +63915,7 @@ index 985c6f3..5f520b67 100644
        mutex_unlock(&dir->d_inode->i_mutex);
  
        if (error <= 0) {
-@@ -2963,11 +3024,28 @@ retry_lookup:
+@@ -2976,11 +3036,28 @@ retry_lookup:
                goto finish_open_created;
        }
  
@@ -62071,7 +63945,7 @@ index 985c6f3..5f520b67 100644
  
        /*
         * If atomic_open() acquired write access it is dropped now due to
-@@ -3008,6 +3086,11 @@ finish_lookup:
+@@ -3021,6 +3098,11 @@ finish_lookup:
                        }
                }
                BUG_ON(inode != path->dentry->d_inode);
@@ -62083,15 +63957,7 @@ index 985c6f3..5f520b67 100644
                return 1;
        }
  
-@@ -3017,7 +3100,6 @@ finish_lookup:
-               save_parent.dentry = nd->path.dentry;
-               save_parent.mnt = mntget(path->mnt);
-               nd->path.dentry = path->dentry;
--
-       }
-       nd->inode = inode;
-       /* Why this, you ask?  _Now_ we might have grown LOOKUP_JUMPED... */
-@@ -3027,7 +3109,18 @@ finish_open:
+@@ -3040,7 +3122,18 @@ finish_open:
                path_put(&save_parent);
                return error;
        }
@@ -62110,7 +63976,7 @@ index 985c6f3..5f520b67 100644
        error = -EISDIR;
        if ((open_flag & O_CREAT) && d_is_dir(nd->path.dentry))
                goto out;
-@@ -3190,7 +3283,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
+@@ -3207,7 +3300,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
        if (unlikely(error))
                goto out;
  
@@ -62119,7 +63985,7 @@ index 985c6f3..5f520b67 100644
        while (unlikely(error > 0)) { /* trailing symlink */
                struct path link = path;
                void *cookie;
-@@ -3208,7 +3301,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
+@@ -3225,7 +3318,7 @@ static struct file *path_openat(int dfd, struct filename *pathname,
                error = follow_link(&link, nd, &cookie);
                if (unlikely(error))
                        break;
@@ -62128,7 +63994,7 @@ index 985c6f3..5f520b67 100644
                put_link(nd, &link, cookie);
        }
  out:
-@@ -3308,9 +3401,11 @@ struct dentry *kern_path_create(int dfd, const char *pathname,
+@@ -3325,9 +3418,11 @@ struct dentry *kern_path_create(int dfd, const char *pathname,
                goto unlock;
  
        error = -EEXIST;
@@ -62142,7 +64008,7 @@ index 985c6f3..5f520b67 100644
        /*
         * Special case - lookup gave negative, but... we had foo/bar/
         * From the vfs_mknod() POV we just have a negative dentry -
-@@ -3362,6 +3457,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname,
+@@ -3379,6 +3474,20 @@ struct dentry *user_path_create(int dfd, const char __user *pathname,
  }
  EXPORT_SYMBOL(user_path_create);
  
@@ -62163,7 +64029,7 @@ index 985c6f3..5f520b67 100644
  int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
  {
        int error = may_create(dir, dentry);
-@@ -3425,6 +3534,17 @@ retry:
+@@ -3442,6 +3551,17 @@ retry:
  
        if (!IS_POSIXACL(path.dentry->d_inode))
                mode &= ~current_umask();
@@ -62181,16 +64047,16 @@ index 985c6f3..5f520b67 100644
        error = security_path_mknod(&path, dentry, mode, dev);
        if (error)
                goto out;
-@@ -3441,6 +3561,8 @@ retry:
+@@ -3457,6 +3577,8 @@ retry:
+                       error = vfs_mknod(path.dentry->d_inode,dentry,mode,0);
                        break;
        }
- out:
 +      if (!error)
 +              gr_handle_create(dentry, path.mnt);
+ out:
        done_path_create(&path, dentry);
        if (retry_estale(error, lookup_flags)) {
-               lookup_flags |= LOOKUP_REVAL;
-@@ -3494,9 +3616,16 @@ retry:
+@@ -3511,9 +3633,16 @@ retry:
  
        if (!IS_POSIXACL(path.dentry->d_inode))
                mode &= ~current_umask();
@@ -62207,7 +64073,7 @@ index 985c6f3..5f520b67 100644
        done_path_create(&path, dentry);
        if (retry_estale(error, lookup_flags)) {
                lookup_flags |= LOOKUP_REVAL;
-@@ -3579,6 +3708,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
+@@ -3597,6 +3726,8 @@ static long do_rmdir(int dfd, const char __user *pathname)
        struct filename *name;
        struct dentry *dentry;
        struct nameidata nd;
@@ -62216,7 +64082,7 @@ index 985c6f3..5f520b67 100644
        unsigned int lookup_flags = 0;
  retry:
        name = user_path_parent(dfd, pathname, &nd, lookup_flags);
-@@ -3611,10 +3742,21 @@ retry:
+@@ -3629,10 +3760,21 @@ retry:
                error = -ENOENT;
                goto exit3;
        }
@@ -62238,7 +64104,7 @@ index 985c6f3..5f520b67 100644
  exit3:
        dput(dentry);
  exit2:
-@@ -3705,6 +3847,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
+@@ -3725,6 +3867,8 @@ static long do_unlinkat(int dfd, const char __user *pathname)
        struct nameidata nd;
        struct inode *inode = NULL;
        struct inode *delegated_inode = NULL;
@@ -62247,7 +64113,7 @@ index 985c6f3..5f520b67 100644
        unsigned int lookup_flags = 0;
  retry:
        name = user_path_parent(dfd, pathname, &nd, lookup_flags);
-@@ -3731,10 +3875,22 @@ retry_deleg:
+@@ -3751,10 +3895,22 @@ retry_deleg:
                if (d_is_negative(dentry))
                        goto slashes;
                ihold(inode);
@@ -62270,7 +64136,7 @@ index 985c6f3..5f520b67 100644
  exit2:
                dput(dentry);
        }
-@@ -3823,9 +3979,17 @@ retry:
+@@ -3843,9 +3999,17 @@ retry:
        if (IS_ERR(dentry))
                goto out_putname;
  
@@ -62288,7 +64154,7 @@ index 985c6f3..5f520b67 100644
        done_path_create(&path, dentry);
        if (retry_estale(error, lookup_flags)) {
                lookup_flags |= LOOKUP_REVAL;
-@@ -3929,6 +4093,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
+@@ -3949,6 +4113,7 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
        struct dentry *new_dentry;
        struct path old_path, new_path;
        struct inode *delegated_inode = NULL;
@@ -62296,7 +64162,7 @@ index 985c6f3..5f520b67 100644
        int how = 0;
        int error;
  
-@@ -3952,7 +4117,7 @@ retry:
+@@ -3972,7 +4137,7 @@ retry:
        if (error)
                return error;
  
@@ -62305,7 +64171,7 @@ index 985c6f3..5f520b67 100644
                                        (how & LOOKUP_REVAL));
        error = PTR_ERR(new_dentry);
        if (IS_ERR(new_dentry))
-@@ -3964,11 +4129,28 @@ retry:
+@@ -3984,11 +4149,28 @@ retry:
        error = may_linkat(&old_path);
        if (unlikely(error))
                goto out_dput;
@@ -62334,7 +64200,7 @@ index 985c6f3..5f520b67 100644
        done_path_create(&new_path, new_dentry);
        if (delegated_inode) {
                error = break_deleg_wait(&delegated_inode);
-@@ -4278,6 +4460,12 @@ retry_deleg:
+@@ -4304,6 +4486,12 @@ retry_deleg:
        if (new_dentry == trap)
                goto exit5;
  
@@ -62347,7 +64213,7 @@ index 985c6f3..5f520b67 100644
        error = security_path_rename(&oldnd.path, old_dentry,
                                     &newnd.path, new_dentry, flags);
        if (error)
-@@ -4285,6 +4473,9 @@ retry_deleg:
+@@ -4311,6 +4499,9 @@ retry_deleg:
        error = vfs_rename(old_dir->d_inode, old_dentry,
                           new_dir->d_inode, new_dentry,
                           &delegated_inode, flags);
@@ -62357,7 +64223,7 @@ index 985c6f3..5f520b67 100644
  exit5:
        dput(new_dentry);
  exit4:
-@@ -4327,14 +4518,24 @@ SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newna
+@@ -4367,14 +4558,24 @@ EXPORT_SYMBOL(vfs_whiteout);
  
  int readlink_copy(char __user *buffer, int buflen, const char *link)
  {
@@ -62384,10 +64250,10 @@ index 985c6f3..5f520b67 100644
  out:
        return len;
 diff --git a/fs/namespace.c b/fs/namespace.c
-index 182bc41..72e3cf1 100644
+index bbde147..f4deeba 100644
 --- a/fs/namespace.c
 +++ b/fs/namespace.c
-@@ -1348,6 +1348,9 @@ static int do_umount(struct mount *mnt, int flags)
+@@ -1447,6 +1447,9 @@ static int do_umount(struct mount *mnt, int flags)
                if (!(sb->s_flags & MS_RDONLY))
                        retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);
                up_write(&sb->s_umount);
@@ -62397,7 +64263,7 @@ index 182bc41..72e3cf1 100644
                return retval;
        }
  
-@@ -1370,6 +1373,9 @@ static int do_umount(struct mount *mnt, int flags)
+@@ -1469,6 +1472,9 @@ static int do_umount(struct mount *mnt, int flags)
        }
        unlock_mount_hash();
        namespace_unlock();
@@ -62407,7 +64273,7 @@ index 182bc41..72e3cf1 100644
        return retval;
  }
  
-@@ -1389,7 +1395,7 @@ static inline bool may_mount(void)
+@@ -1519,7 +1525,7 @@ static inline bool may_mount(void)
   * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
   */
  
@@ -62416,7 +64282,7 @@ index 182bc41..72e3cf1 100644
  {
        struct path path;
        struct mount *mnt;
-@@ -1431,7 +1437,7 @@ out:
+@@ -1564,7 +1570,7 @@ out:
  /*
   *    The 2.0 compatible umount. No flags.
   */
@@ -62425,7 +64291,7 @@ index 182bc41..72e3cf1 100644
  {
        return sys_umount(name, 0);
  }
-@@ -2440,6 +2446,16 @@ long do_mount(const char *dev_name, const char *dir_name,
+@@ -2632,6 +2638,16 @@ long do_mount(const char *dev_name, const char __user *dir_name,
                   MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT |
                   MS_STRICTATIME);
  
@@ -62442,17 +64308,18 @@ index 182bc41..72e3cf1 100644
        if (flags & MS_REMOUNT)
                retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags,
                                    data_page);
-@@ -2454,6 +2470,9 @@ long do_mount(const char *dev_name, const char *dir_name,
+@@ -2645,7 +2661,10 @@ long do_mount(const char *dev_name, const char __user *dir_name,
+               retval = do_new_mount(&path, type_page, flags, mnt_flags,
                                      dev_name, data_page);
  dput_out:
-       path_put(&path);
++      gr_log_mount(dev_name, &path, retval);
 +
-+      gr_log_mount(dev_name, dir_name, retval);
+       path_put(&path);
 +
        return retval;
  }
  
-@@ -2471,7 +2490,7 @@ static void free_mnt_ns(struct mnt_namespace *ns)
+@@ -2663,7 +2682,7 @@ static void free_mnt_ns(struct mnt_namespace *ns)
   * number incrementing at 10Ghz will take 12,427 years to wrap which
   * is effectively never, so we can ignore the possibility.
   */
@@ -62461,7 +64328,7 @@ index 182bc41..72e3cf1 100644
  
  static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
  {
-@@ -2486,7 +2505,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
+@@ -2678,7 +2697,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
                kfree(new_ns);
                return ERR_PTR(ret);
        }
@@ -62470,7 +64337,7 @@ index 182bc41..72e3cf1 100644
        atomic_set(&new_ns->count, 1);
        new_ns->root = NULL;
        INIT_LIST_HEAD(&new_ns->list);
-@@ -2496,7 +2515,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
+@@ -2688,7 +2707,7 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
        return new_ns;
  }
  
@@ -62479,7 +64346,7 @@ index 182bc41..72e3cf1 100644
                struct user_namespace *user_ns, struct fs_struct *new_fs)
  {
        struct mnt_namespace *new_ns;
-@@ -2617,8 +2636,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name)
+@@ -2809,8 +2828,8 @@ struct dentry *mount_subtree(struct vfsmount *mnt, const char *name)
  }
  EXPORT_SYMBOL(mount_subtree);
  
@@ -62490,7 +64357,7 @@ index 182bc41..72e3cf1 100644
  {
        int ret;
        char *kernel_type;
-@@ -2731,6 +2750,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
+@@ -2916,6 +2935,11 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
        if (error)
                goto out2;
  
@@ -62502,7 +64369,7 @@ index 182bc41..72e3cf1 100644
        get_fs_root(current->fs, &root);
        old_mp = lock_mount(&old);
        error = PTR_ERR(old_mp);
-@@ -2999,7 +3023,7 @@ static int mntns_install(struct nsproxy *nsproxy, void *ns)
+@@ -3187,7 +3211,7 @@ static int mntns_install(struct nsproxy *nsproxy, void *ns)
            !ns_capable(current_user_ns(), CAP_SYS_ADMIN))
                return -EPERM;
  
@@ -62525,10 +64392,10 @@ index f4ccfe6..a5cf064 100644
  static struct callback_op callback_ops[];
  
 diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
-index c79f3e7..d61d671 100644
+index 00689a8..b162632 100644
 --- a/fs/nfs/inode.c
 +++ b/fs/nfs/inode.c
-@@ -1209,16 +1209,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt
+@@ -1232,16 +1232,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt
        return nfs_size_to_loff_t(fattr->size) > i_size_read(inode);
  }
  
@@ -62549,10 +64416,10 @@ index c79f3e7..d61d671 100644
  
  void nfs_fattr_init(struct nfs_fattr *fattr)
 diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
-index 95e3720..46c23fa 100644
+index 0beb023..3f685ec 100644
 --- a/fs/nfsd/nfs4proc.c
 +++ b/fs/nfsd/nfs4proc.c
-@@ -1169,7 +1169,7 @@ struct nfsd4_operation {
+@@ -1198,7 +1198,7 @@ struct nfsd4_operation {
        nfsd4op_rsize op_rsize_bop;
        stateid_getter op_get_currentstateid;
        stateid_setter op_set_currentstateid;
@@ -62562,10 +64429,10 @@ index 95e3720..46c23fa 100644
  static struct nfsd4_operation nfsd4_ops[];
  
 diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
-index 3297158..7bb8436 100644
+index eeea7a9..f3ba422 100644
 --- a/fs/nfsd/nfs4xdr.c
 +++ b/fs/nfsd/nfs4xdr.c
-@@ -1541,7 +1541,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p)
+@@ -1543,7 +1543,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p)
  
  typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *);
  
@@ -62575,19 +64442,21 @@ index 3297158..7bb8436 100644
        [OP_CLOSE]              = (nfsd4_dec)nfsd4_decode_close,
        [OP_COMMIT]             = (nfsd4_dec)nfsd4_decode_commit,
 diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
-index f8f060f..c4ba09a 100644
+index 122f691..a00e2e0 100644
 --- a/fs/nfsd/nfscache.c
 +++ b/fs/nfsd/nfscache.c
-@@ -519,14 +519,17 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
- {
-       struct svc_cacherep *rp = rqstp->rq_cacherep;
+@@ -537,7 +537,7 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
        struct kvec     *resv = &rqstp->rq_res.head[0], *cachv;
+       u32             hash;
+       struct nfsd_drc_bucket *b;
 -      int             len;
 +      long            len;
        size_t          bufsize = 0;
  
        if (!rp)
-               return;
+@@ -546,11 +546,14 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
+       hash = nfsd_cache_hash(rp->c_xid);
+       b = &drc_hashtbl[hash];
  
 -      len = resv->iov_len - ((char*)statp - (char*)resv->iov_base);
 -      len >>= 2;
@@ -62598,21 +64467,34 @@ index f8f060f..c4ba09a 100644
 +      }
  
        /* Don't cache excessive amounts of data and XDR failures */
-       if (!statp || len > (256 >> 2)) {
+-      if (!statp || len > (256 >> 2)) {
++      if (!statp || len > (256 >> 2) || len < 0) {
+               nfsd_reply_cache_free(b, rp);
+               return;
+       }
+@@ -558,7 +561,7 @@ nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp)
+       switch (cachetype) {
+       case RC_REPLSTAT:
+               if (len != 1)
+-                      printk("nfsd: RC_REPLSTAT/reply len %d!\n",len);
++                      printk("nfsd: RC_REPLSTAT/reply len %ld!\n",len);
+               rp->c_replstat = *statp;
+               break;
+       case RC_REPLBUFF:
 diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
-index 16f0673..1c2c30ab 100644
+index 989129e..42e019e 100644
 --- a/fs/nfsd/vfs.c
 +++ b/fs/nfsd/vfs.c
-@@ -843,7 +843,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
-       } else {
-               oldfs = get_fs();
-               set_fs(KERNEL_DS);
--              host_err = vfs_readv(file, (struct iovec __user *)vec, vlen, &offset);
-+              host_err = vfs_readv(file, (struct iovec __force_user *)vec, vlen, &offset);
-               set_fs(oldfs);
-       }
+@@ -872,7 +872,7 @@ __be32 nfsd_readv(struct file *file, loff_t offset, struct kvec *vec, int vlen,
  
-@@ -934,7 +934,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
+       oldfs = get_fs();
+       set_fs(KERNEL_DS);
+-      host_err = vfs_readv(file, (struct iovec __user *)vec, vlen, &offset);
++      host_err = vfs_readv(file, (struct iovec __force_user *)vec, vlen, &offset);
+       set_fs(oldfs);
+       return nfsd_finish_read(file, count, host_err);
+ }
+@@ -960,7 +960,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
  
        /* Write the data. */
        oldfs = get_fs(); set_fs(KERNEL_DS);
@@ -62621,7 +64503,7 @@ index 16f0673..1c2c30ab 100644
        set_fs(oldfs);
        if (host_err < 0)
                goto out_nfserr;
-@@ -1479,7 +1479,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
+@@ -1502,7 +1502,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
         */
  
        oldfs = get_fs(); set_fs(KERNEL_DS);
@@ -62631,7 +64513,7 @@ index 16f0673..1c2c30ab 100644
  
        if (host_err < 0)
 diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
-index 52ccd34..43a53b1 100644
+index 52ccd34..7a6b202 100644
 --- a/fs/nls/nls_base.c
 +++ b/fs/nls/nls_base.c
 @@ -234,21 +234,25 @@ EXPORT_SYMBOL(utf16s_to_utf8s);
@@ -62683,6 +64565,24 @@ index 52ccd34..43a53b1 100644
                        spin_unlock(&nls_lock);
                        return 0;
                }
+@@ -272,7 +278,7 @@ int unregister_nls(struct nls_table * nls)
+       return -EINVAL;
+ }
+-static struct nls_table *find_nls(char *charset)
++static struct nls_table *find_nls(const char *charset)
+ {
+       struct nls_table *nls;
+       spin_lock(&nls_lock);
+@@ -288,7 +294,7 @@ static struct nls_table *find_nls(char *charset)
+       return nls;
+ }
+-struct nls_table *load_nls(char *charset)
++struct nls_table *load_nls(const char *charset)
+ {
+       return try_then_request_module(find_nls(charset), "nls_%s", charset);
+ }
 diff --git a/fs/nls/nls_euc-jp.c b/fs/nls/nls_euc-jp.c
 index 162b3f1..6076a7c 100644
 --- a/fs/nls/nls_euc-jp.c
@@ -62718,10 +64618,10 @@ index a80a741..7b96e1b 100644
        }
  
 diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
-index 732648b..d3b017f 100644
+index c991616..5ae51af 100644
 --- a/fs/notify/fanotify/fanotify_user.c
 +++ b/fs/notify/fanotify/fanotify_user.c
-@@ -203,8 +203,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
+@@ -216,8 +216,8 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group,
  
        fd = fanotify_event_metadata.fd;
        ret = -EFAULT;
@@ -62733,7 +64633,7 @@ index 732648b..d3b017f 100644
  
  #ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
 diff --git a/fs/notify/notification.c b/fs/notify/notification.c
-index 1e58402..bb2d6f4 100644
+index a95d8e0..a91a5fd 100644
 --- a/fs/notify/notification.c
 +++ b/fs/notify/notification.c
 @@ -48,7 +48,7 @@
@@ -62768,10 +64668,10 @@ index 9e38daf..5727cae 100644
                                "inode 0x%lx or driver bug.", vdir->i_ino);
                goto err_out;
 diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c
-index db9bd8a..8338fb6 100644
+index 643faa4..ef9027e 100644
 --- a/fs/ntfs/file.c
 +++ b/fs/ntfs/file.c
-@@ -1282,7 +1282,7 @@ static inline size_t ntfs_copy_from_user(struct page **pages,
+@@ -1280,7 +1280,7 @@ static inline size_t ntfs_copy_from_user(struct page **pages,
        char *addr;
        size_t total = 0;
        unsigned len;
@@ -62781,7 +64681,7 @@ index db9bd8a..8338fb6 100644
        do {
                len = PAGE_CACHE_SIZE - ofs;
 diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
-index 9de2491..3306095 100644
+index 9e1e112..241a52a 100644
 --- a/fs/ntfs/super.c
 +++ b/fs/ntfs/super.c
 @@ -688,7 +688,7 @@ static struct buffer_head *read_ntfs_boot_sector(struct super_block *sb,
@@ -62825,7 +64725,7 @@ index 0440134..d52c93a 100644
  bail:
        if (handle)
 diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
-index 8d64a97..c37665d 100644
+index bbec539..7b266d5 100644
 --- a/fs/ocfs2/ocfs2.h
 +++ b/fs/ocfs2/ocfs2.h
 @@ -236,11 +236,11 @@ enum ocfs2_vol_state
@@ -62904,7 +64804,7 @@ index 0cb889a..6a26b24 100644
                }
        }
 diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
-index a7cdd56..c583144 100644
+index 93c85bc..02f68a4 100644
 --- a/fs/ocfs2/super.c
 +++ b/fs/ocfs2/super.c
 @@ -300,11 +300,11 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
@@ -62942,7 +64842,7 @@ index a7cdd56..c583144 100644
        /* Copy the blockcheck stats from the superblock probe */
        osb->osb_ecc_stats = *stats;
 diff --git a/fs/open.c b/fs/open.c
-index 9d64679..75f925c 100644
+index de92c13..52d2a6c 100644
 --- a/fs/open.c
 +++ b/fs/open.c
 @@ -32,6 +32,8 @@
@@ -62972,7 +64872,7 @@ index 9d64679..75f925c 100644
        if (!error)
                error = do_truncate(dentry, length, ATTR_MTIME|ATTR_CTIME, f.file);
        sb_end_write(inode->i_sb);
-@@ -381,6 +387,9 @@ retry:
+@@ -380,6 +386,9 @@ retry:
        if (__mnt_is_readonly(path.mnt))
                res = -EROFS;
  
@@ -62982,7 +64882,7 @@ index 9d64679..75f925c 100644
  out_path_release:
        path_put(&path);
        if (retry_estale(res, lookup_flags)) {
-@@ -412,6 +421,8 @@ retry:
+@@ -411,6 +420,8 @@ retry:
        if (error)
                goto dput_and_out;
  
@@ -62991,7 +64891,7 @@ index 9d64679..75f925c 100644
        set_fs_pwd(current->fs, &path);
  
  dput_and_out:
-@@ -441,6 +452,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd)
+@@ -440,6 +451,13 @@ SYSCALL_DEFINE1(fchdir, unsigned int, fd)
                goto out_putf;
  
        error = inode_permission(inode, MAY_EXEC | MAY_CHDIR);
@@ -63005,7 +64905,7 @@ index 9d64679..75f925c 100644
        if (!error)
                set_fs_pwd(current->fs, &f.file->f_path);
  out_putf:
-@@ -470,7 +488,13 @@ retry:
+@@ -469,7 +487,13 @@ retry:
        if (error)
                goto dput_and_out;
  
@@ -63019,7 +64919,7 @@ index 9d64679..75f925c 100644
        error = 0;
  dput_and_out:
        path_put(&path);
-@@ -494,6 +518,16 @@ static int chmod_common(struct path *path, umode_t mode)
+@@ -493,6 +517,16 @@ static int chmod_common(struct path *path, umode_t mode)
                return error;
  retry_deleg:
        mutex_lock(&inode->i_mutex);
@@ -63036,7 +64936,7 @@ index 9d64679..75f925c 100644
        error = security_path_chmod(path, mode);
        if (error)
                goto out_unlock;
-@@ -559,6 +593,9 @@ static int chown_common(struct path *path, uid_t user, gid_t group)
+@@ -558,6 +592,9 @@ static int chown_common(struct path *path, uid_t user, gid_t group)
        uid = make_kuid(current_user_ns(), user);
        gid = make_kgid(current_user_ns(), group);
  
@@ -63046,7 +64946,7 @@ index 9d64679..75f925c 100644
        newattrs.ia_valid =  ATTR_CTIME;
        if (user != (uid_t) -1) {
                if (!uid_valid(uid))
-@@ -978,6 +1015,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
+@@ -1002,6 +1039,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
                } else {
                        fsnotify_open(f);
                        fd_install(fd, f);
@@ -63055,7 +64955,7 @@ index 9d64679..75f925c 100644
        }
        putname(tmp);
 diff --git a/fs/pipe.c b/fs/pipe.c
-index 034bffa..6c6b522 100644
+index 21981e5..3d5f55c 100644
 --- a/fs/pipe.c
 +++ b/fs/pipe.c
 @@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE;
@@ -63076,7 +64976,7 @@ index 034bffa..6c6b522 100644
                mutex_unlock(&pipe->mutex);
  }
  EXPORT_SYMBOL(pipe_unlock);
-@@ -342,9 +342,9 @@ pipe_read(struct kiocb *iocb, const struct iovec *_iov,
+@@ -292,9 +292,9 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to)
                }
                if (bufs)       /* More to do? */
                        continue;
@@ -63088,8 +64988,8 @@ index 034bffa..6c6b522 100644
                        /* syscall merging: Usually we must not sleep
                         * if O_NONBLOCK is set, or if we got some data.
                         * But if a writer sleeps in kernel space, then
-@@ -406,7 +406,7 @@ pipe_write(struct kiocb *iocb, const struct iovec *_iov,
-       ret = 0;
+@@ -351,7 +351,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
        __pipe_lock(pipe);
  
 -      if (!pipe->readers) {
@@ -63097,7 +64997,7 @@ index 034bffa..6c6b522 100644
                send_sig(SIGPIPE, current, 0);
                ret = -EPIPE;
                goto out;
-@@ -461,7 +461,7 @@ redo1:
+@@ -387,7 +387,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
        for (;;) {
                int bufs;
  
@@ -63106,7 +65006,7 @@ index 034bffa..6c6b522 100644
                        send_sig(SIGPIPE, current, 0);
                        if (!ret)
                                ret = -EPIPE;
-@@ -552,9 +552,9 @@ redo2:
+@@ -455,9 +455,9 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
                        kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
                        do_wakeup = 0;
                }
@@ -63118,7 +65018,7 @@ index 034bffa..6c6b522 100644
        }
  out:
        __pipe_unlock(pipe);
-@@ -609,7 +609,7 @@ pipe_poll(struct file *filp, poll_table *wait)
+@@ -512,7 +512,7 @@ pipe_poll(struct file *filp, poll_table *wait)
        mask = 0;
        if (filp->f_mode & FMODE_READ) {
                mask = (nrbufs > 0) ? POLLIN | POLLRDNORM : 0;
@@ -63127,7 +65027,7 @@ index 034bffa..6c6b522 100644
                        mask |= POLLHUP;
        }
  
-@@ -619,7 +619,7 @@ pipe_poll(struct file *filp, poll_table *wait)
+@@ -522,7 +522,7 @@ pipe_poll(struct file *filp, poll_table *wait)
                 * Most Unices do not set POLLERR for FIFOs but on Linux they
                 * behave exactly like pipes for poll().
                 */
@@ -63136,7 +65036,7 @@ index 034bffa..6c6b522 100644
                        mask |= POLLERR;
        }
  
-@@ -631,7 +631,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe)
+@@ -534,7 +534,7 @@ static void put_pipe_info(struct inode *inode, struct pipe_inode_info *pipe)
        int kill = 0;
  
        spin_lock(&inode->i_lock);
@@ -63145,7 +65045,7 @@ index 034bffa..6c6b522 100644
                inode->i_pipe = NULL;
                kill = 1;
        }
-@@ -648,11 +648,11 @@ pipe_release(struct inode *inode, struct file *file)
+@@ -551,11 +551,11 @@ pipe_release(struct inode *inode, struct file *file)
  
        __pipe_lock(pipe);
        if (file->f_mode & FMODE_READ)
@@ -63160,7 +65060,7 @@ index 034bffa..6c6b522 100644
                wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM | POLLERR | POLLHUP);
                kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
                kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
-@@ -717,7 +717,7 @@ void free_pipe_info(struct pipe_inode_info *pipe)
+@@ -620,7 +620,7 @@ void free_pipe_info(struct pipe_inode_info *pipe)
        kfree(pipe);
  }
  
@@ -63169,7 +65069,7 @@ index 034bffa..6c6b522 100644
  
  /*
   * pipefs_dname() is called from d_path().
-@@ -747,8 +747,9 @@ static struct inode * get_pipe_inode(void)
+@@ -650,8 +650,9 @@ static struct inode * get_pipe_inode(void)
                goto fail_iput;
  
        inode->i_pipe = pipe;
@@ -63181,7 +65081,7 @@ index 034bffa..6c6b522 100644
        inode->i_fop = &pipefifo_fops;
  
        /*
-@@ -927,17 +928,17 @@ static int fifo_open(struct inode *inode, struct file *filp)
+@@ -830,17 +831,17 @@ static int fifo_open(struct inode *inode, struct file *filp)
        spin_lock(&inode->i_lock);
        if (inode->i_pipe) {
                pipe = inode->i_pipe;
@@ -63202,7 +65102,7 @@ index 034bffa..6c6b522 100644
                        spin_unlock(&inode->i_lock);
                        free_pipe_info(pipe);
                        pipe = inode->i_pipe;
-@@ -962,10 +963,10 @@ static int fifo_open(struct inode *inode, struct file *filp)
+@@ -865,10 +866,10 @@ static int fifo_open(struct inode *inode, struct file *filp)
         *  opened, even when there is no process writing the FIFO.
         */
                pipe->r_counter++;
@@ -63215,7 +65115,7 @@ index 034bffa..6c6b522 100644
                        if ((filp->f_flags & O_NONBLOCK)) {
                                /* suppress POLLHUP until we have
                                 * seen a writer */
-@@ -984,14 +985,14 @@ static int fifo_open(struct inode *inode, struct file *filp)
+@@ -887,14 +888,14 @@ static int fifo_open(struct inode *inode, struct file *filp)
         *  errno=ENXIO when there is no process reading the FIFO.
         */
                ret = -ENXIO;
@@ -63233,7 +65133,7 @@ index 034bffa..6c6b522 100644
                        if (wait_for_partner(pipe, &pipe->r_counter))
                                goto err_wr;
                }
-@@ -1005,11 +1006,11 @@ static int fifo_open(struct inode *inode, struct file *filp)
+@@ -908,11 +909,11 @@ static int fifo_open(struct inode *inode, struct file *filp)
         *  the process can at least talk to itself.
         */
  
@@ -63248,7 +65148,7 @@ index 034bffa..6c6b522 100644
                        wake_up_partner(pipe);
                break;
  
-@@ -1023,13 +1024,13 @@ static int fifo_open(struct inode *inode, struct file *filp)
+@@ -926,13 +927,13 @@ static int fifo_open(struct inode *inode, struct file *filp)
        return 0;
  
  err_rd:
@@ -63381,7 +65281,7 @@ index 2183fcf..3c32a98 100644
        help
          Various /proc files exist to monitor process memory utilization:
 diff --git a/fs/proc/array.c b/fs/proc/array.c
-index 64db2bc..a8185d6 100644
+index cd3653e..9b9b79a 100644
 --- a/fs/proc/array.c
 +++ b/fs/proc/array.c
 @@ -60,6 +60,7 @@
@@ -63392,7 +65292,7 @@ index 64db2bc..a8185d6 100644
  #include <linux/proc_fs.h>
  #include <linux/ioport.h>
  #include <linux/uaccess.h>
-@@ -356,6 +357,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task)
+@@ -347,6 +348,21 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task)
        seq_putc(m, '\n');
  }
  
@@ -63414,7 +65314,7 @@ index 64db2bc..a8185d6 100644
  int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
                        struct pid *pid, struct task_struct *task)
  {
-@@ -374,9 +390,24 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
+@@ -365,9 +381,24 @@ int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
        task_cpus_allowed(m, task);
        cpuset_task_status_allowed(m, task);
        task_context_switch_counts(m, task);
@@ -63439,7 +65339,7 @@ index 64db2bc..a8185d6 100644
  static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
                        struct pid *pid, struct task_struct *task, int whole)
  {
-@@ -398,6 +429,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
+@@ -389,6 +420,13 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
        char tcomm[sizeof(task->comm)];
        unsigned long flags;
  
@@ -63453,7 +65353,7 @@ index 64db2bc..a8185d6 100644
        state = *get_task_state(task);
        vsize = eip = esp = 0;
        permitted = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT);
-@@ -468,6 +506,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
+@@ -459,6 +497,19 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
                gtime = task_gtime(task);
        }
  
@@ -63473,7 +65373,7 @@ index 64db2bc..a8185d6 100644
        /* scale priority and nice values from timeslices to -20..20 */
        /* to make it look like a "normal" Unix priority/nice value  */
        priority = task_prio(task);
-@@ -504,9 +555,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
+@@ -490,9 +541,15 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
        seq_put_decimal_ull(m, ' ', vsize);
        seq_put_decimal_ull(m, ' ', mm ? get_mm_rss(mm) : 0);
        seq_put_decimal_ull(m, ' ', rsslim);
@@ -63489,7 +65389,7 @@ index 64db2bc..a8185d6 100644
        seq_put_decimal_ull(m, ' ', esp);
        seq_put_decimal_ull(m, ' ', eip);
        /* The signal information here is obsolete.
-@@ -528,7 +585,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
+@@ -514,7 +571,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
        seq_put_decimal_ull(m, ' ', cputime_to_clock_t(gtime));
        seq_put_decimal_ll(m, ' ', cputime_to_clock_t(cgtime));
  
@@ -63502,7 +65402,7 @@ index 64db2bc..a8185d6 100644
                seq_put_decimal_ull(m, ' ', mm->start_data);
                seq_put_decimal_ull(m, ' ', mm->end_data);
                seq_put_decimal_ull(m, ' ', mm->start_brk);
-@@ -566,8 +627,15 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
+@@ -552,8 +613,15 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
                        struct pid *pid, struct task_struct *task)
  {
        unsigned long size = 0, resident = 0, shared = 0, text = 0, data = 0;
@@ -63519,14 +65419,21 @@ index 64db2bc..a8185d6 100644
        if (mm) {
                size = task_statm(mm, &shared, &text, &data, &resident);
                mmput(mm);
-@@ -590,6 +658,13 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
+@@ -576,6 +644,20 @@ int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
        return 0;
  }
  
 +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR
-+int proc_pid_ipaddr(struct task_struct *task, char *buffer)
++int proc_pid_ipaddr(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task)
 +{
-+      return sprintf(buffer, "%pI4\n", &task->signal->curr_ip);
++      unsigned long flags;
++      u32 curr_ip = 0;
++
++      if (lock_task_sighand(task, &flags)) {
++              curr_ip = task->signal->curr_ip;
++              unlock_task_sighand(task, &flags);
++      }
++      return seq_printf(m, "%pI4\n", &curr_ip);
 +}
 +#endif
 +
@@ -63534,7 +65441,7 @@ index 64db2bc..a8185d6 100644
  static struct pid *
  get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos)
 diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 2d696b0..b9da447 100644
+index 7dc3ea8..4cfe92f 100644
 --- a/fs/proc/base.c
 +++ b/fs/proc/base.c
 @@ -113,6 +113,14 @@ struct pid_entry {
@@ -63552,8 +65459,8 @@ index 2d696b0..b9da447 100644
  #define NOD(NAME, MODE, IOP, FOP, OP) {                       \
        .name = (NAME),                                 \
        .len  = sizeof(NAME) - 1,                       \
-@@ -205,12 +213,28 @@ static int proc_pid_cmdline(struct task_struct *task, char *buffer)
-       return get_cmdline(task, buffer, PAGE_SIZE);
+@@ -208,12 +216,28 @@ static int proc_pid_cmdline(struct seq_file *m, struct pid_namespace *ns,
+       return 0;
  }
  
 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
@@ -63562,10 +65469,10 @@ index 2d696b0..b9da447 100644
 +                            _mm->pax_flags & MF_PAX_SEGMEXEC))
 +#endif
 +
- static int proc_pid_auxv(struct task_struct *task, char *buffer)
+ static int proc_pid_auxv(struct seq_file *m, struct pid_namespace *ns,
+                        struct pid *pid, struct task_struct *task)
  {
        struct mm_struct *mm = mm_access(task, PTRACE_MODE_READ);
-       int res = PTR_ERR(mm);
        if (mm && !IS_ERR(mm)) {
                unsigned int nwords = 0;
 +
@@ -63581,7 +65488,7 @@ index 2d696b0..b9da447 100644
                do {
                        nwords += 2;
                } while (mm->saved_auxv[nwords - 2] != 0); /* AT_NULL */
-@@ -224,7 +248,7 @@ static int proc_pid_auxv(struct task_struct *task, char *buffer)
+@@ -225,7 +249,7 @@ static int proc_pid_auxv(struct seq_file *m, struct pid_namespace *ns,
  }
  
  
@@ -63590,7 +65497,7 @@ index 2d696b0..b9da447 100644
  /*
   * Provides a wchan file via kallsyms in a proper one-value-per-file format.
   * Returns the resolved symbol.  If that fails, simply return the address.
-@@ -263,7 +287,7 @@ static void unlock_trace(struct task_struct *task)
+@@ -265,7 +289,7 @@ static void unlock_trace(struct task_struct *task)
        mutex_unlock(&task->signal->cred_guard_mutex);
  }
  
@@ -63599,16 +65506,16 @@ index 2d696b0..b9da447 100644
  
  #define MAX_STACK_TRACE_DEPTH 64
  
-@@ -486,7 +510,7 @@ static int proc_pid_limits(struct task_struct *task, char *buffer)
-       return count;
+@@ -456,7 +480,7 @@ static int proc_pid_limits(struct seq_file *m, struct pid_namespace *ns,
+       return 0;
  }
  
 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
- static int proc_pid_syscall(struct task_struct *task, char *buffer)
+ static int proc_pid_syscall(struct seq_file *m, struct pid_namespace *ns,
+                           struct pid *pid, struct task_struct *task)
  {
-       long nr;
-@@ -515,7 +539,7 @@ static int proc_pid_syscall(struct task_struct *task, char *buffer)
+@@ -486,7 +510,7 @@ static int proc_pid_syscall(struct seq_file *m, struct pid_namespace *ns,
  /************************************************************************/
  
  /* permission checks */
@@ -63617,7 +65524,7 @@ index 2d696b0..b9da447 100644
  {
        struct task_struct *task;
        int allowed = 0;
-@@ -525,7 +549,10 @@ static int proc_fd_access_allowed(struct inode *inode)
+@@ -496,7 +520,10 @@ static int proc_fd_access_allowed(struct inode *inode)
         */
        task = get_proc_task(inode);
        if (task) {
@@ -63629,7 +65536,7 @@ index 2d696b0..b9da447 100644
                put_task_struct(task);
        }
        return allowed;
-@@ -556,10 +583,35 @@ static bool has_pid_permissions(struct pid_namespace *pid,
+@@ -527,10 +554,35 @@ static bool has_pid_permissions(struct pid_namespace *pid,
                                 struct task_struct *task,
                                 int hide_pid_min)
  {
@@ -63665,7 +65572,7 @@ index 2d696b0..b9da447 100644
        return ptrace_may_access(task, PTRACE_MODE_READ);
  }
  
-@@ -577,7 +629,11 @@ static int proc_pid_permission(struct inode *inode, int mask)
+@@ -548,7 +600,11 @@ static int proc_pid_permission(struct inode *inode, int mask)
        put_task_struct(task);
  
        if (!has_perms) {
@@ -63677,22 +65584,20 @@ index 2d696b0..b9da447 100644
                        /*
                         * Let's make getdents(), stat(), and open()
                         * consistent with each other.  If a process
-@@ -675,6 +731,11 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode)
-       if (!task)
-               return -ESRCH;
+@@ -609,6 +665,8 @@ struct mm_struct *proc_mem_open(struct inode *inode, unsigned int mode)
  
-+      if (gr_acl_handle_procpidmem(task)) {
-+              put_task_struct(task);
-+              return -EPERM;
-+      }
-+
-       mm = mm_access(task, mode);
-       put_task_struct(task);
+       if (task) {
+               mm = mm_access(task, mode);
++              if (gr_acl_handle_procpidmem(task))
++                      mm = ERR_PTR(-EPERM);
+               put_task_struct(task);
  
-@@ -690,6 +751,10 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode)
+               if (!IS_ERR_OR_NULL(mm)) {
+@@ -630,6 +688,11 @@ static int __mem_open(struct inode *inode, struct file *file, unsigned int mode)
+               return PTR_ERR(mm);
  
        file->private_data = mm;
++
 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
 +      file->f_version = current->exec_id;
 +#endif
@@ -63700,7 +65605,7 @@ index 2d696b0..b9da447 100644
        return 0;
  }
  
-@@ -711,6 +776,17 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
+@@ -651,6 +714,17 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
        ssize_t copied;
        char *page;
  
@@ -63718,7 +65623,7 @@ index 2d696b0..b9da447 100644
        if (!mm)
                return 0;
  
-@@ -723,7 +799,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
+@@ -663,7 +737,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
                goto free;
  
        while (count > 0) {
@@ -63727,7 +65632,7 @@ index 2d696b0..b9da447 100644
  
                if (write && copy_from_user(page, buf, this_len)) {
                        copied = -EFAULT;
-@@ -815,6 +891,13 @@ static ssize_t environ_read(struct file *file, char __user *buf,
+@@ -755,6 +829,13 @@ static ssize_t environ_read(struct file *file, char __user *buf,
        if (!mm)
                return 0;
  
@@ -63741,7 +65646,7 @@ index 2d696b0..b9da447 100644
        page = (char *)__get_free_page(GFP_TEMPORARY);
        if (!page)
                return -ENOMEM;
-@@ -824,7 +907,7 @@ static ssize_t environ_read(struct file *file, char __user *buf,
+@@ -764,7 +845,7 @@ static ssize_t environ_read(struct file *file, char __user *buf,
                goto free;
        while (count > 0) {
                size_t this_len, max_len;
@@ -63750,7 +65655,7 @@ index 2d696b0..b9da447 100644
  
                if (src >= (mm->env_end - mm->env_start))
                        break;
-@@ -1438,7 +1521,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd)
+@@ -1378,7 +1459,7 @@ static void *proc_pid_follow_link(struct dentry *dentry, struct nameidata *nd)
        int error = -EACCES;
  
        /* Are we allowed to snoop on the tasks file descriptors? */
@@ -63759,7 +65664,7 @@ index 2d696b0..b9da447 100644
                goto out;
  
        error = PROC_I(inode)->op.proc_get_link(dentry, &path);
-@@ -1482,8 +1565,18 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b
+@@ -1422,8 +1503,18 @@ static int proc_pid_readlink(struct dentry * dentry, char __user * buffer, int b
        struct path path;
  
        /* Are we allowed to snoop on the tasks file descriptors? */
@@ -63780,7 +65685,7 @@ index 2d696b0..b9da447 100644
  
        error = PROC_I(inode)->op.proc_get_link(dentry, &path);
        if (error)
-@@ -1533,7 +1626,11 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t
+@@ -1473,7 +1564,11 @@ struct inode *proc_pid_make_inode(struct super_block * sb, struct task_struct *t
                rcu_read_lock();
                cred = __task_cred(task);
                inode->i_uid = cred->euid;
@@ -63792,7 +65697,7 @@ index 2d696b0..b9da447 100644
                rcu_read_unlock();
        }
        security_task_to_inode(task, inode);
-@@ -1569,10 +1666,19 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
+@@ -1509,10 +1604,19 @@ int pid_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
                        return -ENOENT;
                }
                if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
@@ -63812,7 +65717,7 @@ index 2d696b0..b9da447 100644
                }
        }
        rcu_read_unlock();
-@@ -1610,11 +1716,20 @@ int pid_revalidate(struct dentry *dentry, unsigned int flags)
+@@ -1550,11 +1654,20 @@ int pid_revalidate(struct dentry *dentry, unsigned int flags)
  
        if (task) {
                if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
@@ -63833,7 +65738,7 @@ index 2d696b0..b9da447 100644
                        rcu_read_unlock();
                } else {
                        inode->i_uid = GLOBAL_ROOT_UID;
-@@ -2149,6 +2264,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir,
+@@ -2085,6 +2198,9 @@ static struct dentry *proc_pident_lookup(struct inode *dir,
        if (!task)
                goto out_no_task;
  
@@ -63843,7 +65748,7 @@ index 2d696b0..b9da447 100644
        /*
         * Yes, it does not scale. And it should not. Don't add
         * new entries into /proc/<tgid>/ without very good reasons.
-@@ -2179,6 +2297,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx,
+@@ -2115,6 +2231,9 @@ static int proc_pident_readdir(struct file *file, struct dir_context *ctx,
        if (!task)
                return -ENOENT;
  
@@ -63853,39 +65758,39 @@ index 2d696b0..b9da447 100644
        if (!dir_emit_dots(file, ctx))
                goto out;
  
-@@ -2568,7 +2689,7 @@ static const struct pid_entry tgid_base_stuff[] = {
+@@ -2557,7 +2676,7 @@ static const struct pid_entry tgid_base_stuff[] = {
        REG("autogroup",  S_IRUGO|S_IWUSR, proc_pid_sched_autogroup_operations),
  #endif
        REG("comm",      S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
-       INF("syscall",    S_IRUSR, proc_pid_syscall),
+       ONE("syscall",    S_IRUSR, proc_pid_syscall),
  #endif
-       INF("cmdline",    S_IRUGO, proc_pid_cmdline),
-@@ -2593,10 +2714,10 @@ static const struct pid_entry tgid_base_stuff[] = {
+       ONE("cmdline",    S_IRUGO, proc_pid_cmdline),
+@@ -2582,10 +2701,10 @@ static const struct pid_entry tgid_base_stuff[] = {
  #ifdef CONFIG_SECURITY
        DIR("attr",       S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
  #endif
 -#ifdef CONFIG_KALLSYMS
 +#if defined(CONFIG_KALLSYMS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
-       INF("wchan",      S_IRUGO, proc_pid_wchan),
+       ONE("wchan",      S_IRUGO, proc_pid_wchan),
  #endif
 -#ifdef CONFIG_STACKTRACE
 +#if defined(CONFIG_STACKTRACE) && !defined(CONFIG_GRKERNSEC_HIDESYM)
        ONE("stack",      S_IRUSR, proc_pid_stack),
  #endif
  #ifdef CONFIG_SCHEDSTATS
-@@ -2630,6 +2751,9 @@ static const struct pid_entry tgid_base_stuff[] = {
+@@ -2619,6 +2738,9 @@ static const struct pid_entry tgid_base_stuff[] = {
  #ifdef CONFIG_HARDWALL
-       INF("hardwall",   S_IRUGO, proc_pid_hardwall),
+       ONE("hardwall",   S_IRUGO, proc_pid_hardwall),
  #endif
 +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR
-+      INF("ipaddr",     S_IRUSR, proc_pid_ipaddr),
++      ONE("ipaddr",     S_IRUSR, proc_pid_ipaddr),
 +#endif
  #ifdef CONFIG_USER_NS
        REG("uid_map",    S_IRUGO|S_IWUSR, proc_uid_map_operations),
        REG("gid_map",    S_IRUGO|S_IWUSR, proc_gid_map_operations),
-@@ -2760,7 +2884,14 @@ static int proc_pid_instantiate(struct inode *dir,
+@@ -2748,7 +2870,14 @@ static int proc_pid_instantiate(struct inode *dir,
        if (!inode)
                goto out;
  
@@ -63900,7 +65805,7 @@ index 2d696b0..b9da447 100644
        inode->i_op = &proc_tgid_base_inode_operations;
        inode->i_fop = &proc_tgid_base_operations;
        inode->i_flags|=S_IMMUTABLE;
-@@ -2798,7 +2929,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign
+@@ -2786,7 +2915,11 @@ struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsign
        if (!task)
                goto out;
  
@@ -63912,22 +65817,22 @@ index 2d696b0..b9da447 100644
        put_task_struct(task);
  out:
        return ERR_PTR(result);
-@@ -2904,7 +3039,7 @@ static const struct pid_entry tid_base_stuff[] = {
+@@ -2900,7 +3033,7 @@ static const struct pid_entry tid_base_stuff[] = {
        REG("sched",     S_IRUGO|S_IWUSR, proc_pid_sched_operations),
  #endif
        REG("comm",      S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
 -#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
 +#if defined(CONFIG_HAVE_ARCH_TRACEHOOK) && !defined(CONFIG_GRKERNSEC_PROC_MEMMAP)
-       INF("syscall",   S_IRUSR, proc_pid_syscall),
+       ONE("syscall",   S_IRUSR, proc_pid_syscall),
  #endif
-       INF("cmdline",   S_IRUGO, proc_pid_cmdline),
-@@ -2931,10 +3066,10 @@ static const struct pid_entry tid_base_stuff[] = {
+       ONE("cmdline",   S_IRUGO, proc_pid_cmdline),
+@@ -2927,10 +3060,10 @@ static const struct pid_entry tid_base_stuff[] = {
  #ifdef CONFIG_SECURITY
        DIR("attr",      S_IRUGO|S_IXUGO, proc_attr_dir_inode_operations, proc_attr_dir_operations),
  #endif
 -#ifdef CONFIG_KALLSYMS
 +#if defined(CONFIG_KALLSYMS) && !defined(CONFIG_GRKERNSEC_HIDESYM)
-       INF("wchan",     S_IRUGO, proc_pid_wchan),
+       ONE("wchan",     S_IRUGO, proc_pid_wchan),
  #endif
 -#ifdef CONFIG_STACKTRACE
 +#if defined(CONFIG_STACKTRACE) && !defined(CONFIG_GRKERNSEC_HIDESYM)
@@ -63967,7 +65872,7 @@ index 50493ed..248166b 100644
  }
  fs_initcall(proc_devices_init);
 diff --git a/fs/proc/fd.c b/fs/proc/fd.c
-index 0788d09..9cc1385 100644
+index e11d7c5..9128ce06 100644
 --- a/fs/proc/fd.c
 +++ b/fs/proc/fd.c
 @@ -26,7 +26,8 @@ static int seq_show(struct seq_file *m, void *v)
@@ -63980,7 +65885,7 @@ index 0788d09..9cc1385 100644
        put_task_struct(task);
  
        if (files) {
-@@ -285,11 +286,21 @@ static struct dentry *proc_lookupfd(struct inode *dir, struct dentry *dentry,
+@@ -283,11 +284,21 @@ static struct dentry *proc_lookupfd(struct inode *dir, struct dentry *dentry,
   */
  int proc_fd_permission(struct inode *inode, int mask)
  {
@@ -64005,7 +65910,7 @@ index 0788d09..9cc1385 100644
  }
  
 diff --git a/fs/proc/generic.c b/fs/proc/generic.c
-index b7f268e..3bea6b7 100644
+index 317b726..e329aed 100644
 --- a/fs/proc/generic.c
 +++ b/fs/proc/generic.c
 @@ -23,6 +23,7 @@
@@ -64134,7 +66039,7 @@ index b7f268e..3bea6b7 100644
                                        struct proc_dir_entry *parent,
                                        const struct file_operations *proc_fops,
 diff --git a/fs/proc/inode.c b/fs/proc/inode.c
-index 0adbc02..bee4d0b 100644
+index 333080d..0a35ec4 100644
 --- a/fs/proc/inode.c
 +++ b/fs/proc/inode.c
 @@ -23,11 +23,17 @@
@@ -64182,7 +66087,7 @@ index 0adbc02..bee4d0b 100644
                if (de->size)
                        inode->i_size = de->size;
 diff --git a/fs/proc/internal.h b/fs/proc/internal.h
-index 3ab6d14..b26174e 100644
+index aa7a0ee..f2318df 100644
 --- a/fs/proc/internal.h
 +++ b/fs/proc/internal.h
 @@ -46,9 +46,10 @@ struct proc_dir_entry {
@@ -64197,7 +66102,7 @@ index 3ab6d14..b26174e 100644
  
  union proc_op {
        int (*proc_get_link)(struct dentry *, struct path *);
-@@ -67,7 +68,7 @@ struct proc_inode {
+@@ -66,7 +67,7 @@ struct proc_inode {
        struct ctl_table *sysctl_entry;
        struct proc_ns ns;
        struct inode vfs_inode;
@@ -64206,19 +66111,20 @@ index 3ab6d14..b26174e 100644
  
  /*
   * General functions
-@@ -155,6 +156,9 @@ extern int proc_pid_status(struct seq_file *, struct pid_namespace *,
+@@ -154,6 +155,10 @@ extern int proc_pid_status(struct seq_file *, struct pid_namespace *,
                           struct pid *, struct task_struct *);
  extern int proc_pid_statm(struct seq_file *, struct pid_namespace *,
                          struct pid *, struct task_struct *);
 +#ifdef CONFIG_GRKERNSEC_PROC_IPADDR
-+extern int proc_pid_ipaddr(struct task_struct *task, char *buffer);
++extern int proc_pid_ipaddr(struct seq_file *, struct pid_namespace *,
++                        struct pid *, struct task_struct *);
 +#endif
  
  /*
   * base.c
-@@ -181,9 +185,11 @@ extern bool proc_fill_cache(struct file *, struct dir_context *, const char *, i
- extern spinlock_t proc_subdir_lock;
+@@ -178,9 +183,11 @@ extern bool proc_fill_cache(struct file *, struct dir_context *, const char *, i
+  * generic.c
+  */
  extern struct dentry *proc_lookup(struct inode *, struct dentry *, unsigned int);
 +extern struct dentry *proc_lookup_restrict(struct inode *, struct dentry *, unsigned int);
  extern struct dentry *proc_lookup_de(struct proc_dir_entry *, struct inode *,
@@ -64245,7 +66151,7 @@ index a352d57..cb94a5c 100644
  }
  fs_initcall(proc_interrupts_init);
 diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
-index 39e6ef3..2f9cb5e 100644
+index 91a4e64..cb007c0 100644
 --- a/fs/proc/kcore.c
 +++ b/fs/proc/kcore.c
 @@ -483,9 +483,10 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
@@ -64307,7 +66213,7 @@ index 39e6ef3..2f9cb5e 100644
                return -EPERM;
        if (kcore_need_update)
 diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
-index 7445af0..7c5113c 100644
+index aa1eee0..03dda72 100644
 --- a/fs/proc/meminfo.c
 +++ b/fs/proc/meminfo.c
 @@ -187,7 +187,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
@@ -64333,7 +66239,7 @@ index d4a3574..b421ce9 100644
  
        seq_putc(m, '\n');
 diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c
-index 4677bb7..dad3045 100644
+index a63af3e..b4f262a 100644
 --- a/fs/proc/proc_net.c
 +++ b/fs/proc/proc_net.c
 @@ -23,9 +23,27 @@
@@ -64399,7 +66305,7 @@ index 4677bb7..dad3045 100644
        net = get_proc_net(inode);
        if (net == NULL)
 diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
-index 7129046..6914844 100644
+index f92d5dd..26398ac 100644
 --- a/fs/proc/proc_sysctl.c
 +++ b/fs/proc/proc_sysctl.c
 @@ -11,13 +11,21 @@
@@ -64491,7 +66397,7 @@ index 7129046..6914844 100644
                                d_add(child, inode);
                        }
                } else {
-@@ -641,6 +677,9 @@ static int scan(struct ctl_table_header *head, ctl_table *table,
+@@ -641,6 +677,9 @@ static int scan(struct ctl_table_header *head, struct ctl_table *table,
        if ((*pos)++ < ctx->pos)
                return true;
  
@@ -64597,10 +66503,10 @@ index 7129046..6914844 100644
                        kfree(ctl_table_arg);
                        goto out;
 diff --git a/fs/proc/root.c b/fs/proc/root.c
-index 5dbadec..473af2f 100644
+index 094e44d..085a877 100644
 --- a/fs/proc/root.c
 +++ b/fs/proc/root.c
-@@ -185,7 +185,15 @@ void __init proc_root_init(void)
+@@ -188,7 +188,15 @@ void __init proc_root_init(void)
        proc_mkdir("openprom", NULL);
  #endif
        proc_tty_init();
@@ -64617,7 +66523,7 @@ index 5dbadec..473af2f 100644
  }
  
 diff --git a/fs/proc/stat.c b/fs/proc/stat.c
-index 9d231e9..2e1b51a 100644
+index bf2d03f..f058f9c 100644
 --- a/fs/proc/stat.c
 +++ b/fs/proc/stat.c
 @@ -11,6 +11,7 @@
@@ -64734,7 +66640,7 @@ index 9d231e9..2e1b51a 100644
        seq_printf(p, "softirq %llu", (unsigned long long)sum_softirq);
  
 diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index c4b2646..84f0d7b 100644
+index 4e0388c..fc6a0e1 100644
 --- a/fs/proc/task_mmu.c
 +++ b/fs/proc/task_mmu.c
 @@ -13,12 +13,19 @@
@@ -64794,7 +66700,7 @@ index c4b2646..84f0d7b 100644
  }
  
  unsigned long task_vsize(struct mm_struct *mm)
-@@ -271,13 +295,13 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
+@@ -282,13 +306,13 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
                pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
        }
  
@@ -64813,7 +66719,7 @@ index c4b2646..84f0d7b 100644
  
        seq_setwidth(m, 25 + sizeof(void *) * 6 - 1);
        seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu ",
-@@ -287,7 +311,11 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
+@@ -298,7 +322,11 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
                        flags & VM_WRITE ? 'w' : '-',
                        flags & VM_EXEC ? 'x' : '-',
                        flags & VM_MAYSHARE ? 's' : 'p',
@@ -64825,7 +66731,7 @@ index c4b2646..84f0d7b 100644
                        MAJOR(dev), MINOR(dev), ino);
  
        /*
-@@ -296,7 +324,7 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
+@@ -307,7 +335,7 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
         */
        if (file) {
                seq_pad(m, ' ');
@@ -64834,7 +66740,7 @@ index c4b2646..84f0d7b 100644
                goto done;
        }
  
-@@ -322,8 +350,9 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
+@@ -338,8 +366,9 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
                         * Thread stack in /proc/PID/task/TID/maps or
                         * the main process stack.
                         */
@@ -64846,21 +66752,20 @@ index c4b2646..84f0d7b 100644
                                name = "[stack]";
                        } else {
                                /* Thread stack in /proc/PID/maps */
-@@ -347,6 +376,13 @@ static int show_map(struct seq_file *m, void *v, int is_pid)
-       struct proc_maps_private *priv = m->private;
-       struct task_struct *task = priv->task;
+@@ -359,6 +388,12 @@ done:
  
+ static int show_map(struct seq_file *m, void *v, int is_pid)
+ {
 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
 +      if (current->exec_id != m->exec_id) {
 +              gr_log_badprocpid("maps");
 +              return 0;
 +      }
 +#endif
-+
-       show_map_vma(m, vma, is_pid);
-       if (m->count < m->size)  /* vma is copied successfully */
-@@ -587,12 +623,23 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
+       show_map_vma(m, v, is_pid);
+       m_cache_vma(m, v);
+       return 0;
+@@ -594,12 +629,23 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
                .private = &mss,
        };
  
@@ -64889,7 +66794,7 @@ index c4b2646..84f0d7b 100644
        show_map_vma(m, vma, is_pid);
  
        seq_printf(m,
-@@ -610,7 +657,11 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
+@@ -617,7 +663,11 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
                   "KernelPageSize: %8lu kB\n"
                   "MMUPageSize:    %8lu kB\n"
                   "Locked:         %8lu kB\n",
@@ -64901,7 +66806,7 @@ index c4b2646..84f0d7b 100644
                   mss.resident >> 10,
                   (unsigned long)(mss.pss >> (10 + PSS_SHIFT)),
                   mss.shared_clean  >> 10,
-@@ -1388,6 +1439,13 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
+@@ -1447,6 +1497,13 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
        char buffer[64];
        int nid;
  
@@ -64915,9 +66820,9 @@ index c4b2646..84f0d7b 100644
        if (!mm)
                return 0;
  
-@@ -1405,11 +1463,15 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
-       mpol_to_str(buffer, sizeof(buffer), pol);
-       mpol_cond_put(pol);
+@@ -1468,11 +1525,15 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
+               mpol_to_str(buffer, sizeof(buffer), proc_priv->task_mempolicy);
+       }
  
 +#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
 +      seq_printf(m, "%08lx %s", PAX_RAND_FLAGS(vma->vm_mm) ? 0UL : vma->vm_start, buffer);
@@ -64926,14 +66831,14 @@ index c4b2646..84f0d7b 100644
 +#endif
  
        if (file) {
-               seq_printf(m, " file=");
+               seq_puts(m, " file=");
 -              seq_path(m, &file->f_path, "\n\t= ");
 +              seq_path(m, &file->f_path, "\n\t\\= ");
        } else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
-               seq_printf(m, " heap");
+               seq_puts(m, " heap");
        } else {
 diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
-index 678455d..ebd3245 100644
+index 599ec2e..f1413ae 100644
 --- a/fs/proc/task_nommu.c
 +++ b/fs/proc/task_nommu.c
 @@ -51,7 +51,7 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
@@ -64945,17 +66850,17 @@ index 678455d..ebd3245 100644
                sbytes += kobjsize(current->fs);
        else
                bytes += kobjsize(current->fs);
-@@ -161,7 +161,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
+@@ -180,7 +180,7 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
  
        if (file) {
                seq_pad(m, ' ');
 -              seq_path(m, &file->f_path, "");
 +              seq_path(m, &file->f_path, "\n\\");
        } else if (mm) {
-               pid_t tid = vm_is_stack(priv->task, vma, is_pid);
+               pid_t tid = pid_of_stack(priv, vma, is_pid);
  
 diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
-index 6a8e785..41f2a6c 100644
+index a90d6d35..d08047c 100644
 --- a/fs/proc/vmcore.c
 +++ b/fs/proc/vmcore.c
 @@ -105,9 +105,13 @@ static ssize_t read_from_oldmem(char *buf, size_t count,
@@ -65003,7 +66908,7 @@ index 6a8e785..41f2a6c 100644
  
  /*
 diff --git a/fs/qnx6/qnx6.h b/fs/qnx6/qnx6.h
-index b00fcc9..e0c6381 100644
+index d3fb2b6..43a8140 100644
 --- a/fs/qnx6/qnx6.h
 +++ b/fs/qnx6/qnx6.h
 @@ -74,7 +74,7 @@ enum {
@@ -65025,10 +66930,10 @@ index b00fcc9..e0c6381 100644
        if (sbi->s_bytesex == BYTESEX_LE)
                return le32_to_cpu((__force __le32)n);
 diff --git a/fs/quota/netlink.c b/fs/quota/netlink.c
-index 72d2917..c917c12 100644
+index bb2869f..d34ada8 100644
 --- a/fs/quota/netlink.c
 +++ b/fs/quota/netlink.c
-@@ -45,7 +45,7 @@ static struct genl_family quota_genl_family = {
+@@ -44,7 +44,7 @@ static struct genl_family quota_genl_family = {
  void quota_send_warning(struct kqid qid, dev_t dev,
                        const char warntype)
  {
@@ -65037,7 +66942,7 @@ index 72d2917..c917c12 100644
        struct sk_buff *skb;
        void *msg_head;
        int ret;
-@@ -61,7 +61,7 @@ void quota_send_warning(struct kqid qid, dev_t dev,
+@@ -60,7 +60,7 @@ void quota_send_warning(struct kqid qid, dev_t dev,
                  "VFS: Not enough memory to send quota warning.\n");
                return;
        }
@@ -65047,10 +66952,10 @@ index 72d2917..c917c12 100644
        if (!msg_head) {
                printk(KERN_ERR
 diff --git a/fs/read_write.c b/fs/read_write.c
-index 31c6efa..a068805 100644
+index 7d9318c..51b336f 100644
 --- a/fs/read_write.c
 +++ b/fs/read_write.c
-@@ -450,7 +450,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t
+@@ -495,7 +495,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t
  
        old_fs = get_fs();
        set_fs(get_ds());
@@ -65060,10 +66965,10 @@ index 31c6efa..a068805 100644
                count =  MAX_RW_COUNT;
        if (file->f_op->write)
 diff --git a/fs/readdir.c b/fs/readdir.c
-index 5b53d99..a6c3049 100644
+index 33fd922..e0d6094 100644
 --- a/fs/readdir.c
 +++ b/fs/readdir.c
-@@ -17,6 +17,7 @@
+@@ -18,6 +18,7 @@
  #include <linux/security.h>
  #include <linux/syscalls.h>
  #include <linux/unistd.h>
@@ -65071,7 +66976,7 @@ index 5b53d99..a6c3049 100644
  
  #include <asm/uaccess.h>
  
-@@ -69,6 +70,7 @@ struct old_linux_dirent {
+@@ -71,6 +72,7 @@ struct old_linux_dirent {
  struct readdir_callback {
        struct dir_context ctx;
        struct old_linux_dirent __user * dirent;
@@ -65079,7 +66984,7 @@ index 5b53d99..a6c3049 100644
        int result;
  };
  
-@@ -86,6 +88,10 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset
+@@ -88,6 +90,10 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset
                buf->result = -EOVERFLOW;
                return -EOVERFLOW;
        }
@@ -65090,7 +66995,7 @@ index 5b53d99..a6c3049 100644
        buf->result++;
        dirent = buf->dirent;
        if (!access_ok(VERIFY_WRITE, dirent,
-@@ -117,6 +123,7 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
+@@ -119,6 +125,7 @@ SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
        if (!f.file)
                return -EBADF;
  
@@ -65098,7 +67003,7 @@ index 5b53d99..a6c3049 100644
        error = iterate_dir(f.file, &buf.ctx);
        if (buf.result)
                error = buf.result;
-@@ -142,6 +149,7 @@ struct getdents_callback {
+@@ -144,6 +151,7 @@ struct getdents_callback {
        struct dir_context ctx;
        struct linux_dirent __user * current_dir;
        struct linux_dirent __user * previous;
@@ -65106,7 +67011,7 @@ index 5b53d99..a6c3049 100644
        int count;
        int error;
  };
-@@ -163,6 +171,10 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
+@@ -165,6 +173,10 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
                buf->error = -EOVERFLOW;
                return -EOVERFLOW;
        }
@@ -65117,7 +67022,7 @@ index 5b53d99..a6c3049 100644
        dirent = buf->previous;
        if (dirent) {
                if (__put_user(offset, &dirent->d_off))
-@@ -208,6 +220,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, fd,
+@@ -210,6 +222,7 @@ SYSCALL_DEFINE3(getdents, unsigned int, fd,
        if (!f.file)
                return -EBADF;
  
@@ -65125,7 +67030,7 @@ index 5b53d99..a6c3049 100644
        error = iterate_dir(f.file, &buf.ctx);
        if (error >= 0)
                error = buf.error;
-@@ -226,6 +239,7 @@ struct getdents_callback64 {
+@@ -228,6 +241,7 @@ struct getdents_callback64 {
        struct dir_context ctx;
        struct linux_dirent64 __user * current_dir;
        struct linux_dirent64 __user * previous;
@@ -65133,7 +67038,7 @@ index 5b53d99..a6c3049 100644
        int count;
        int error;
  };
-@@ -241,6 +255,10 @@ static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,
+@@ -243,6 +257,10 @@ static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,
        buf->error = -EINVAL;   /* only used if we fail.. */
        if (reclen > buf->count)
                return -EINVAL;
@@ -65144,7 +67049,7 @@ index 5b53d99..a6c3049 100644
        dirent = buf->previous;
        if (dirent) {
                if (__put_user(offset, &dirent->d_off))
-@@ -288,6 +306,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int, fd,
+@@ -290,6 +308,7 @@ SYSCALL_DEFINE3(getdents64, unsigned int, fd,
        if (!f.file)
                return -EBADF;
  
@@ -65153,23 +67058,23 @@ index 5b53d99..a6c3049 100644
        if (error >= 0)
                error = buf.error;
 diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c
-index 9a3c68c..767933e 100644
+index 9c02d96..6562c10 100644
 --- a/fs/reiserfs/do_balan.c
 +++ b/fs/reiserfs/do_balan.c
-@@ -1546,7 +1546,7 @@ void do_balance(struct tree_balance *tb, /* tree_balance structure */
+@@ -1887,7 +1887,7 @@ void do_balance(struct tree_balance *tb, struct item_head *ih,
                return;
        }
  
--      atomic_inc(&(fs_generation(tb->tb_sb)));
-+      atomic_inc_unchecked(&(fs_generation(tb->tb_sb)));
+-      atomic_inc(&fs_generation(tb->tb_sb));
++      atomic_inc_unchecked(&fs_generation(tb->tb_sb));
        do_balance_starts(tb);
  
-       /* balance leaf returns 0 except if combining L R and S into
+       /*
 diff --git a/fs/reiserfs/item_ops.c b/fs/reiserfs/item_ops.c
-index ee382ef..f4eb6eb5 100644
+index aca73dd..e3c558d 100644
 --- a/fs/reiserfs/item_ops.c
 +++ b/fs/reiserfs/item_ops.c
-@@ -725,18 +725,18 @@ static void errcatch_print_vi(struct virtual_item *vi)
+@@ -724,18 +724,18 @@ static void errcatch_print_vi(struct virtual_item *vi)
  }
  
  static struct item_operations errcatch_ops = {
@@ -65198,9 +67103,9 @@ index ee382ef..f4eb6eb5 100644
 +      .print_vi = errcatch_print_vi
  };
  
- //////////////////////////////////////////////////////////////////////////////
+ #if ! (TYPE_STAT_DATA == 0 && TYPE_INDIRECT == 1 && TYPE_DIRECT == 2 && TYPE_DIRENTRY == 3)
 diff --git a/fs/reiserfs/procfs.c b/fs/reiserfs/procfs.c
-index 02b0b7d..c85018b 100644
+index 621b9f3..af527fd 100644
 --- a/fs/reiserfs/procfs.c
 +++ b/fs/reiserfs/procfs.c
 @@ -114,7 +114,7 @@ static int show_super(struct seq_file *m, void *unused)
@@ -65213,20 +67118,20 @@ index 02b0b7d..c85018b 100644
                   SF(s_do_balance), SF(s_unneeded_left_neighbor),
                   SF(s_good_search_by_key_reada), SF(s_bmaps),
 diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h
-index 83d4eac..04e39a7 100644
+index 1894d96..1dfd1c2 100644
 --- a/fs/reiserfs/reiserfs.h
 +++ b/fs/reiserfs/reiserfs.h
-@@ -453,7 +453,7 @@ struct reiserfs_sb_info {
+@@ -576,7 +576,7 @@ struct reiserfs_sb_info {
        /* Comment? -Hans */
        wait_queue_head_t s_wait;
-       /* To be obsoleted soon by per buffer seals.. -Hans */
--      atomic_t s_generation_counter;  // increased by one every time the
-+      atomic_unchecked_t s_generation_counter;        // increased by one every time the
-       // tree gets re-balanced
-       unsigned long s_properties;     /* File system properties. Currently holds
-                                          on-disk FS format */
-@@ -1972,7 +1972,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode)
- #define REISERFS_USER_MEM             1       /* reiserfs user memory mode            */
+       /* increased by one every time the  tree gets re-balanced */
+-      atomic_t s_generation_counter;
++      atomic_unchecked_t s_generation_counter;
+       /* File system properties. Currently holds on-disk FS format */
+       unsigned long s_properties;
+@@ -2297,7 +2297,7 @@ static inline loff_t max_reiserfs_offset(struct inode *inode)
+ #define REISERFS_USER_MEM             1       /* user memory mode */
  
  #define fs_generation(s) (REISERFS_SB(s)->s_generation_counter)
 -#define get_generation(s) atomic_read (&fs_generation(s))
@@ -65234,6 +67139,21 @@ index 83d4eac..04e39a7 100644
  #define FILESYSTEM_CHANGED_TB(tb)  (get_generation((tb)->tb_sb) != (tb)->fs_gen)
  #define __fs_changed(gen,s) (gen != get_generation (s))
  #define fs_changed(gen,s)             \
+diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
+index f1376c9..f9378e9 100644
+--- a/fs/reiserfs/super.c
++++ b/fs/reiserfs/super.c
+@@ -1857,6 +1857,10 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent)
+       sbi->s_mount_opt |= (1 << REISERFS_SMALLTAIL);
+       sbi->s_mount_opt |= (1 << REISERFS_ERROR_RO);
+       sbi->s_mount_opt |= (1 << REISERFS_BARRIER_FLUSH);
++#ifdef CONFIG_REISERFS_FS_XATTR
++      /* turn on user xattrs by default */
++      sbi->s_mount_opt |= (1 << REISERFS_XATTRS_USER);
++#endif
+       /* no preallocation minimum, be smart in reiserfs_file_write instead */
+       sbi->s_alloc_options.preallocmin = 0;
+       /* Preallocate by 16 blocks (17-1) at once */
 diff --git a/fs/select.c b/fs/select.c
 index 467bb1c..cf9d65a 100644
 --- a/fs/select.c
@@ -65255,19 +67175,33 @@ index 467bb1c..cf9d65a 100644
                return -EINVAL;
  
 diff --git a/fs/seq_file.c b/fs/seq_file.c
-index 1d641bb..c2f4743 100644
+index 3857b72..0b7281e 100644
 --- a/fs/seq_file.c
 +++ b/fs/seq_file.c
-@@ -10,6 +10,8 @@
- #include <linux/seq_file.h>
+@@ -12,6 +12,8 @@
  #include <linux/slab.h>
  #include <linux/cred.h>
+ #include <linux/mm.h>
 +#include <linux/sched.h>
 +#include <linux/grsecurity.h>
  
  #include <asm/uaccess.h>
  #include <asm/page.h>
-@@ -60,6 +62,9 @@ int seq_open(struct file *file, const struct seq_operations *op)
+@@ -34,12 +36,7 @@ static void seq_set_overflow(struct seq_file *m)
+ static void *seq_buf_alloc(unsigned long size)
+ {
+-      void *buf;
+-
+-      buf = kmalloc(size, GFP_KERNEL | __GFP_NOWARN);
+-      if (!buf && size > PAGE_SIZE)
+-              buf = vmalloc(size);
+-      return buf;
++      return kmalloc(size, GFP_KERNEL | GFP_USERCOPY);
+ }
+ /**
+@@ -72,6 +69,9 @@ int seq_open(struct file *file, const struct seq_operations *op)
  #ifdef CONFIG_USER_NS
        p->user_ns = file->f_cred->user_ns;
  #endif
@@ -65277,7 +67211,7 @@ index 1d641bb..c2f4743 100644
  
        /*
         * Wrappers around seq_open(e.g. swaps_open) need to be
-@@ -82,6 +87,16 @@ int seq_open(struct file *file, const struct seq_operations *op)
+@@ -94,6 +94,16 @@ int seq_open(struct file *file, const struct seq_operations *op)
  }
  EXPORT_SYMBOL(seq_open);
  
@@ -65294,25 +67228,7 @@ index 1d641bb..c2f4743 100644
  static int traverse(struct seq_file *m, loff_t offset)
  {
        loff_t pos = 0, index;
-@@ -96,7 +111,7 @@ static int traverse(struct seq_file *m, loff_t offset)
-               return 0;
-       }
-       if (!m->buf) {
--              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
-+              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL | GFP_USERCOPY);
-               if (!m->buf)
-                       return -ENOMEM;
-       }
-@@ -137,7 +152,7 @@ Eoverflow:
-       m->op->stop(m, p);
-       kfree(m->buf);
-       m->count = 0;
--      m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
-+      m->buf = kmalloc(m->size <<= 1, GFP_KERNEL | GFP_USERCOPY);
-       return !m->buf ? -ENOMEM : -EAGAIN;
- }
-@@ -153,7 +168,7 @@ Eoverflow:
+@@ -165,7 +175,7 @@ Eoverflow:
  ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
  {
        struct seq_file *m = file->private_data;
@@ -65321,25 +67237,7 @@ index 1d641bb..c2f4743 100644
        loff_t pos;
        size_t n;
        void *p;
-@@ -192,7 +207,7 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
-       /* grab buffer if we didn't have one */
-       if (!m->buf) {
--              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
-+              m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL | GFP_USERCOPY);
-               if (!m->buf)
-                       goto Enomem;
-       }
-@@ -234,7 +249,7 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
-               m->op->stop(m, p);
-               kfree(m->buf);
-               m->count = 0;
--              m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
-+              m->buf = kmalloc(m->size <<= 1, GFP_KERNEL | GFP_USERCOPY);
-               if (!m->buf)
-                       goto Enomem;
-               m->version = 0;
-@@ -584,7 +599,7 @@ static void single_stop(struct seq_file *p, void *v)
+@@ -596,7 +606,7 @@ static void single_stop(struct seq_file *p, void *v)
  int single_open(struct file *file, int (*show)(struct seq_file *, void *),
                void *data)
  {
@@ -65348,7 +67246,7 @@ index 1d641bb..c2f4743 100644
        int res = -ENOMEM;
  
        if (op) {
-@@ -620,6 +635,17 @@ int single_open_size(struct file *file, int (*show)(struct seq_file *, void *),
+@@ -632,6 +642,17 @@ int single_open_size(struct file *file, int (*show)(struct seq_file *, void *),
  }
  EXPORT_SYMBOL(single_open_size);
  
@@ -65367,10 +67265,10 @@ index 1d641bb..c2f4743 100644
  {
        const struct seq_operations *op = ((struct seq_file *)file->private_data)->op;
 diff --git a/fs/splice.c b/fs/splice.c
-index e246954..bd4f5b5 100644
+index 75c6058..770d40c 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
-@@ -192,7 +192,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
+@@ -193,7 +193,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
        pipe_lock(pipe);
  
        for (;;) {
@@ -65379,7 +67277,7 @@ index e246954..bd4f5b5 100644
                        send_sig(SIGPIPE, current, 0);
                        if (!ret)
                                ret = -EPIPE;
-@@ -215,7 +215,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
+@@ -216,7 +216,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
                        page_nr++;
                        ret += buf->len;
  
@@ -65388,7 +67286,7 @@ index e246954..bd4f5b5 100644
                                do_wakeup = 1;
  
                        if (!--spd->nr_pages)
-@@ -246,9 +246,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
+@@ -247,9 +247,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
                        do_wakeup = 0;
                }
  
@@ -65400,7 +67298,7 @@ index e246954..bd4f5b5 100644
        }
  
        pipe_unlock(pipe);
-@@ -575,7 +575,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec,
+@@ -576,7 +576,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec,
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
@@ -65409,7 +67307,7 @@ index e246954..bd4f5b5 100644
        set_fs(old_fs);
  
        return res;
-@@ -590,7 +590,7 @@ ssize_t kernel_write(struct file *file, const char *buf, size_t count,
+@@ -591,7 +591,7 @@ ssize_t kernel_write(struct file *file, const char *buf, size_t count,
        old_fs = get_fs();
        set_fs(get_ds());
        /* The cast to a user pointer is valid due to the set_fs() */
@@ -65418,7 +67316,7 @@ index e246954..bd4f5b5 100644
        set_fs(old_fs);
  
        return res;
-@@ -643,7 +643,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
+@@ -644,7 +644,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos,
                        goto err;
  
                this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset);
@@ -65427,7 +67325,7 @@ index e246954..bd4f5b5 100644
                vec[i].iov_len = this_len;
                spd.pages[i] = page;
                spd.nr_pages++;
-@@ -839,7 +839,7 @@ int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd,
+@@ -783,7 +783,7 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des
                        ops->release(pipe, buf);
                        pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1);
                        pipe->nrbufs--;
@@ -65436,8 +67334,8 @@ index e246954..bd4f5b5 100644
                                sd->need_wakeup = true;
                }
  
-@@ -864,10 +864,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed);
- int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
+@@ -807,10 +807,10 @@ static int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_des
static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
  {
        while (!pipe->nrbufs) {
 -              if (!pipe->writers)
@@ -65449,7 +67347,16 @@ index e246954..bd4f5b5 100644
                        return 0;
  
                if (sd->flags & SPLICE_F_NONBLOCK)
-@@ -1189,7 +1189,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
+@@ -1040,7 +1040,7 @@ iter_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
+                               ops->release(pipe, buf);
+                               pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1);
+                               pipe->nrbufs--;
+-                              if (pipe->files)
++                              if (atomic_read(&pipe->files))
+                                       sd.need_wakeup = true;
+                       } else {
+                               buf->offset += ret;
+@@ -1200,7 +1200,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
                 * out of the pipe right after the splice_to_pipe(). So set
                 * PIPE_READERS appropriately.
                 */
@@ -65458,7 +67365,7 @@ index e246954..bd4f5b5 100644
  
                current->splice_pipe = pipe;
        }
-@@ -1485,6 +1485,7 @@ static int get_iovec_page_array(const struct iovec __user *iov,
+@@ -1497,6 +1497,7 @@ static int get_iovec_page_array(const struct iovec __user *iov,
  
                        partial[buffers].offset = off;
                        partial[buffers].len = plen;
@@ -65466,7 +67373,7 @@ index e246954..bd4f5b5 100644
  
                        off = 0;
                        len -= plen;
-@@ -1721,9 +1722,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1733,9 +1734,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
                        ret = -ERESTARTSYS;
                        break;
                }
@@ -65478,7 +67385,7 @@ index e246954..bd4f5b5 100644
                        if (flags & SPLICE_F_NONBLOCK) {
                                ret = -EAGAIN;
                                break;
-@@ -1755,7 +1756,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1767,7 +1768,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
        pipe_lock(pipe);
  
        while (pipe->nrbufs >= pipe->buffers) {
@@ -65487,7 +67394,7 @@ index e246954..bd4f5b5 100644
                        send_sig(SIGPIPE, current, 0);
                        ret = -EPIPE;
                        break;
-@@ -1768,9 +1769,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
+@@ -1780,9 +1781,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
                        ret = -ERESTARTSYS;
                        break;
                }
@@ -65499,7 +67406,7 @@ index e246954..bd4f5b5 100644
        }
  
        pipe_unlock(pipe);
-@@ -1806,14 +1807,14 @@ retry:
+@@ -1818,14 +1819,14 @@ retry:
        pipe_double_lock(ipipe, opipe);
  
        do {
@@ -65516,7 +67423,7 @@ index e246954..bd4f5b5 100644
                        break;
  
                /*
-@@ -1910,7 +1911,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
+@@ -1922,7 +1923,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
        pipe_double_lock(ipipe, opipe);
  
        do {
@@ -65525,7 +67432,7 @@ index e246954..bd4f5b5 100644
                        send_sig(SIGPIPE, current, 0);
                        if (!ret)
                                ret = -EPIPE;
-@@ -1955,7 +1956,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
+@@ -1967,7 +1968,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
         * return EAGAIN if we have the potential of some data in the
         * future, otherwise just return 0
         */
@@ -65634,7 +67541,7 @@ index 69d4889..a810bd4 100644
        if (sbi->s_bytesex == BYTESEX_PDP)
                return PDP_swab((__force __u32)n);
 diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
-index e18b988..f1d4ad0f 100644
+index fb08b0c..65fcc7e 100644
 --- a/fs/ubifs/io.c
 +++ b/fs/ubifs/io.c
 @@ -155,7 +155,7 @@ int ubifs_leb_change(struct ubifs_info *c, int lnum, const void *buf, int len)
@@ -65707,7 +67614,7 @@ index aa138d6..5f3a811 100644
        error = notify_change(path->dentry, &newattrs, &delegated_inode);
        mutex_unlock(&inode->i_mutex);
 diff --git a/fs/xattr.c b/fs/xattr.c
-index 3377dff..f394815 100644
+index 64e83ef..b6be154 100644
 --- a/fs/xattr.c
 +++ b/fs/xattr.c
 @@ -227,6 +227,27 @@ int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name,
@@ -65761,16 +67668,7 @@ index 3377dff..f394815 100644
  out:
        if (vvalue)
                vfree(vvalue);
-@@ -377,7 +403,7 @@ retry:
-               return error;
-       error = mnt_want_write(path.mnt);
-       if (!error) {
--              error = setxattr(path.dentry, name, value, size, flags);
-+              error = setxattr(&path, name, value, size, flags);
-               mnt_drop_write(path.mnt);
-       }
-       path_put(&path);
-@@ -401,7 +427,7 @@ retry:
+@@ -376,7 +402,7 @@ retry:
                return error;
        error = mnt_want_write(path.mnt);
        if (!error) {
@@ -65779,7 +67677,7 @@ index 3377dff..f394815 100644
                mnt_drop_write(path.mnt);
        }
        path_put(&path);
-@@ -416,16 +442,14 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
+@@ -405,16 +431,14 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
                const void __user *,value, size_t, size, int, flags)
  {
        struct fd f = fdget(fd);
@@ -65798,7 +67696,7 @@ index 3377dff..f394815 100644
                mnt_drop_write_file(f.file);
        }
        fdput(f);
-@@ -626,7 +650,7 @@ SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
+@@ -600,7 +624,7 @@ SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
   * Extended attribute REMOVE operations
   */
  static long
@@ -65807,7 +67705,7 @@ index 3377dff..f394815 100644
  {
        int error;
        char kname[XATTR_NAME_MAX + 1];
-@@ -637,7 +661,10 @@ removexattr(struct dentry *d, const char __user *name)
+@@ -611,7 +635,10 @@ removexattr(struct dentry *d, const char __user *name)
        if (error < 0)
                return error;
  
@@ -65818,17 +67716,8 @@ index 3377dff..f394815 100644
 +      return vfs_removexattr(path->dentry, kname);
  }
  
- SYSCALL_DEFINE2(removexattr, const char __user *, pathname,
-@@ -652,7 +679,7 @@ retry:
-               return error;
-       error = mnt_want_write(path.mnt);
-       if (!error) {
--              error = removexattr(path.dentry, name);
-+              error = removexattr(&path, name);
-               mnt_drop_write(path.mnt);
-       }
-       path_put(&path);
-@@ -675,7 +702,7 @@ retry:
+ static int path_removexattr(const char __user *pathname,
+@@ -625,7 +652,7 @@ retry:
                return error;
        error = mnt_want_write(path.mnt);
        if (!error) {
@@ -65837,7 +67726,7 @@ index 3377dff..f394815 100644
                mnt_drop_write(path.mnt);
        }
        path_put(&path);
-@@ -689,16 +716,16 @@ retry:
+@@ -651,16 +678,16 @@ SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname,
  SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
  {
        struct fd f = fdget(fd);
@@ -65858,11 +67747,11 @@ index 3377dff..f394815 100644
                mnt_drop_write_file(f.file);
        }
        fdput(f);
-diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
-index f0efc7e..ba72910 100644
---- a/fs/xfs/xfs_bmap.c
-+++ b/fs/xfs/xfs_bmap.c
-@@ -584,7 +584,7 @@ xfs_bmap_validate_ret(
+diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
+index 79c9819..22226b4 100644
+--- a/fs/xfs/libxfs/xfs_bmap.c
++++ b/fs/xfs/libxfs/xfs_bmap.c
+@@ -583,7 +583,7 @@ xfs_bmap_validate_ret(
  
  #else
  #define xfs_bmap_check_leaf_extents(cur, ip, whichfork)               do { } while (0)
@@ -65872,10 +67761,10 @@ index f0efc7e..ba72910 100644
  
  /*
 diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c
-index aead369..0dfecfd 100644
+index f1b69ed..3d0222f 100644
 --- a/fs/xfs/xfs_dir2_readdir.c
 +++ b/fs/xfs/xfs_dir2_readdir.c
-@@ -160,7 +160,12 @@ xfs_dir2_sf_getdents(
+@@ -159,7 +159,12 @@ xfs_dir2_sf_getdents(
                ino = dp->d_ops->sf_get_ino(sfp, sfep);
                filetype = dp->d_ops->sf_get_ftype(sfep);
                ctx->pos = off & 0x7fffffff;
@@ -65883,14 +67772,14 @@ index aead369..0dfecfd 100644
 +              if (dp->i_df.if_u1.if_data == dp->i_df.if_u2.if_inline_data) {
 +                      char name[sfep->namelen];
 +                      memcpy(name, sfep->name, sfep->namelen);
-+                      if (!dir_emit(ctx, name, sfep->namelen, ino, xfs_dir3_get_dtype(mp, filetype)))
++                      if (!dir_emit(ctx, name, sfep->namelen, ino, xfs_dir3_get_dtype(dp->i_mount, filetype)))
 +                              return 0;
 +              } else if (!dir_emit(ctx, (char *)sfep->name, sfep->namelen, ino,
-                           xfs_dir3_get_dtype(mp, filetype)))
+                           xfs_dir3_get_dtype(dp->i_mount, filetype)))
                        return 0;
                sfep = dp->d_ops->sf_nextentry(sfp, sfep);
 diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
-index 6152cbe..f0f9eaa 100644
+index 24c926b6..8726af88 100644
 --- a/fs/xfs/xfs_ioctl.c
 +++ b/fs/xfs/xfs_ioctl.c
 @@ -122,7 +122,7 @@ xfs_find_handle(
@@ -65902,12 +67791,34 @@ index 6152cbe..f0f9eaa 100644
            copy_to_user(hreq->ohandlen, &hsize, sizeof(__s32)))
                goto out_put;
  
+diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h
+index 6a51619..9592e1b 100644
+--- a/fs/xfs/xfs_linux.h
++++ b/fs/xfs/xfs_linux.h
+@@ -234,7 +234,7 @@ static inline kgid_t xfs_gid_to_kgid(__uint32_t gid)
+  * of the compiler which do not like us using do_div in the middle
+  * of large functions.
+  */
+-static inline __u32 xfs_do_div(void *a, __u32 b, int n)
++static inline __u32 __intentional_overflow(-1) xfs_do_div(void *a, __u32 b, int n)
+ {
+       __u32   mod;
+@@ -290,7 +290,7 @@ static inline __u32 xfs_do_mod(void *a, __u32 b, int n)
+       return 0;
+ }
+ #else
+-static inline __u32 xfs_do_div(void *a, __u32 b, int n)
++static inline __u32 __intentional_overflow(-1) xfs_do_div(void *a, __u32 b, int n)
+ {
+       __u32   mod;
 diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig
 new file mode 100644
-index 0000000..bfd482c
+index 0000000..f27264e
 --- /dev/null
 +++ b/grsecurity/Kconfig
-@@ -0,0 +1,1176 @@
+@@ -0,0 +1,1166 @@
 +#
 +# grecurity configuration
 +#
@@ -65970,19 +67881,17 @@ index 0000000..bfd482c
 +        you may not be able to boot into a graphical environment with this
 +        option enabled.  In this case, you should use the RBAC system instead.
 +
-+config GRKERNSEC_JIT_HARDEN
-+      bool "Harden BPF JIT against spray attacks"
++config GRKERNSEC_BPF_HARDEN
++      bool "Harden BPF interpreter"
 +      default y if GRKERNSEC_CONFIG_AUTO
-+      depends on BPF_JIT && X86
 +      help
-+        If you say Y here, the native code generated by the kernel's Berkeley
-+        Packet Filter (BPF) JIT engine will be hardened against JIT-spraying
-+        attacks that attempt to fit attacker-beneficial instructions in
-+        32bit immediate fields of JIT-generated native instructions.  The
-+        attacker will generally aim to cause an unintended instruction sequence
-+        of JIT-generated native code to execute by jumping into the middle of
-+        a generated instruction.  This feature effectively randomizes the 32bit
-+        immediate constants present in the generated code to thwart such attacks.
++        Unlike previous versions of grsecurity that hardened both the BPF
++        interpreted code against corruption at rest as well as the JIT code
++        against JIT-spray attacks and attacker-controlled immediate values
++        for ROP, this feature will enforce disabling of the new eBPF JIT engine
++        and will ensure the interpreted code is read-only at rest.  This feature
++        may be removed at a later time when eBPF stabilizes to entirely revert
++        back to the more secure pre-3.16 BPF interpreter/JIT.
 +
 +        If you're using KERNEXEC, it's recommended that you enable this option
 +        to supplement the hardening of the kernel.
@@ -66840,16 +68749,6 @@ index 0000000..bfd482c
 +menu "Network Protections"
 +depends on GRKERNSEC
 +
-+config GRKERNSEC_RANDNET
-+      bool "Larger entropy pools"
-+      default y if GRKERNSEC_CONFIG_AUTO
-+      help
-+        If you say Y here, the entropy pools used for many features of Linux
-+        and grsecurity will be doubled in size.  Since several grsecurity
-+        features use additional randomness, it is recommended that you say Y
-+        here.  Saying Y here has a similar effect as modifying
-+        /proc/sys/kernel/random/poolsize.
-+
 +config GRKERNSEC_BLACKHOLE
 +      bool "TCP/UDP blackhole and LAST_ACK DoS prevention"
 +      default y if GRKERNSEC_CONFIG_AUTO
@@ -66858,6 +68757,8 @@ index 0000000..bfd482c
 +        If you say Y here, neither TCP resets nor ICMP
 +        destination-unreachable packets will be sent in response to packets
 +        sent to ports for which no associated listening process exists.
++        It will also prevent the sending of ICMP protocol unreachable packets
++        in response to packets with unknown protocols.
 +        This feature supports both IPV4 and IPV6 and exempts the 
 +        loopback interface from blackholing.  Enabling this feature 
 +        makes a host more resilient to DoS attacks and reduces network
@@ -67146,10 +69047,10 @@ index 0000000..30ababb
 +endif
 diff --git a/grsecurity/gracl.c b/grsecurity/gracl.c
 new file mode 100644
-index 0000000..58223f6
+index 0000000..6ae3aa0
 --- /dev/null
 +++ b/grsecurity/gracl.c
-@@ -0,0 +1,2702 @@
+@@ -0,0 +1,2703 @@
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +#include <linux/sched.h>
@@ -69663,14 +71564,15 @@ index 0000000..58223f6
 +      __u8 whr, chr;
 +      __u8 wmin, cmin;
 +      __u8 wsec, csec;
-+      struct timespec timeval;
++      struct timespec curtime, starttime;
 +
 +      if (unlikely(!(gr_status & GR_READY) || !task->acl ||
 +                   !(task->acl->mode & GR_PROCACCT)))
 +              return;
-+
-+      do_posix_clock_monotonic_gettime(&timeval);
-+      runtime = timeval.tv_sec - task->start_time.tv_sec;
++      
++      curtime = ns_to_timespec(ktime_get_ns());
++      starttime = ns_to_timespec(task->start_time);
++      runtime = curtime.tv_sec - starttime.tv_sec;
 +      wday = runtime / (60 * 60 * 24);
 +      runtime -= wday * (60 * 60 * 24);
 +      whr = runtime / (60 * 60);
@@ -69965,10 +71867,10 @@ index 0000000..18ffbbd
 +}
 diff --git a/grsecurity/gracl_cap.c b/grsecurity/gracl_cap.c
 new file mode 100644
-index 0000000..bdd51ea
+index 0000000..1a94c11
 --- /dev/null
 +++ b/grsecurity/gracl_cap.c
-@@ -0,0 +1,110 @@
+@@ -0,0 +1,127 @@
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +#include <linux/sched.h>
@@ -69979,6 +71881,29 @@ index 0000000..bdd51ea
 +extern const char *captab_log[];
 +extern int captab_log_entries;
 +
++int gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap)
++{
++      struct acl_subject_label *curracl;
++
++      if (!gr_acl_is_enabled())
++              return 1;
++
++      curracl = task->acl;
++
++      if (curracl->mode & (GR_LEARN | GR_INHERITLEARN)) {
++              security_learn(GR_LEARN_AUDIT_MSG, task->role->rolename,
++                             task->role->roletype, GR_GLOBAL_UID(cred->uid),
++                             GR_GLOBAL_GID(cred->gid), task->exec_file ?
++                             gr_to_filename(task->exec_file->f_path.dentry,
++                             task->exec_file->f_path.mnt) : curracl->filename,
++                             curracl->filename, 0UL,
++                             0UL, "", (unsigned long) cap, &task->signal->saved_ip);
++              return 1;
++      }
++
++      return 0;
++}
++
 +int gr_task_acl_is_capable(const struct task_struct *task, const struct cred *cred, const int cap)
 +{
 +      struct acl_subject_label *curracl;
@@ -70015,19 +71940,13 @@ index 0000000..bdd51ea
 +              return 1;
 +      }
 +
-+      curracl = task->acl;
-+
-+      if ((curracl->mode & (GR_LEARN | GR_INHERITLEARN))
-+          && cap_raised(cred->cap_effective, cap)) {
-+              security_learn(GR_LEARN_AUDIT_MSG, task->role->rolename,
-+                             task->role->roletype, GR_GLOBAL_UID(cred->uid),
-+                             GR_GLOBAL_GID(cred->gid), task->exec_file ?
-+                             gr_to_filename(task->exec_file->f_path.dentry,
-+                             task->exec_file->f_path.mnt) : curracl->filename,
-+                             curracl->filename, 0UL,
-+                             0UL, "", (unsigned long) cap, &task->signal->saved_ip);
++      /* only learn the capability use if the process has the capability in the
++         general case, the two uses in sys.c of gr_learn_cap are an exception
++         to this rule to ensure any role transition involves what the full-learned
++         policy believes in a privileged process
++      */
++      if (cap_raised(cred->cap_effective, cap) && gr_learn_cap(task, cred, cap))
 +              return 1;
-+      }
 +
 +      if ((cap >= 0) && (cap < captab_log_entries) && cap_raised(cred->cap_effective, cap) && !cap_raised(cap_audit, cap))
 +              gr_log_cap(GR_DONT_AUDIT, GR_CAP_ACL_MSG, task, captab_log[cap]);
@@ -71413,7 +73332,7 @@ index 0000000..25f54ef
 +};
 diff --git a/grsecurity/gracl_policy.c b/grsecurity/gracl_policy.c
 new file mode 100644
-index 0000000..361a099
+index 0000000..3f8ade0
 --- /dev/null
 +++ b/grsecurity/gracl_policy.c
 @@ -0,0 +1,1782 @@
@@ -71472,9 +73391,9 @@ index 0000000..361a099
 +extern int chkpw(struct gr_arg *entry, unsigned char *salt, unsigned char *sum);
 +extern void gr_clear_learn_entries(void);
 +
-+static struct gr_arg gr_usermode;
-+static unsigned char gr_system_salt[GR_SALT_LEN];
-+static unsigned char gr_system_sum[GR_SHA_LEN];
++struct gr_arg *gr_usermode __read_only;
++unsigned char *gr_system_salt __read_only;
++unsigned char *gr_system_sum __read_only;
 +
 +static unsigned int gr_auth_attempts = 0;
 +static unsigned long gr_auth_expires = 0UL;
@@ -72716,8 +74635,8 @@ index 0000000..361a099
 +{
 +      int error = 0;
 +
-+      memcpy(&gr_system_salt, args->salt, sizeof(gr_system_salt));
-+      memcpy(&gr_system_sum, args->sum, sizeof(gr_system_sum));
++      memcpy(gr_system_salt, args->salt, GR_SALT_LEN);
++      memcpy(gr_system_sum, args->sum, GR_SHA_LEN);
 +
 +      if (init_variables(args, false)) {
 +              gr_log_str(GR_DONT_AUDIT_GOOD, GR_INITF_ACL_MSG, GR_VERSION);
@@ -72944,11 +74863,11 @@ index 0000000..361a099
 +      if (error)
 +              goto out;
 +
-+      error = copy_gr_arg(uwrap.arg, &gr_usermode);
++      error = copy_gr_arg(uwrap.arg, gr_usermode);
 +      if (error)
 +              goto out;
 +
-+      if (gr_usermode.mode != GR_SPROLE && gr_usermode.mode != GR_SPROLEPAM &&
++      if (gr_usermode->mode != GR_SPROLE && gr_usermode->mode != GR_SPROLEPAM &&
 +          gr_auth_attempts >= CONFIG_GRKERNSEC_ACL_MAXTRIES &&
 +          time_after(gr_auth_expires, get_seconds())) {
 +              error = -EBUSY;
@@ -72960,8 +74879,8 @@ index 0000000..361a099
 +         locking
 +       */
 +
-+      if (gr_usermode.mode != GR_SPROLE && gr_usermode.mode != GR_STATUS &&
-+          gr_usermode.mode != GR_UNSPROLE && gr_usermode.mode != GR_SPROLEPAM &&
++      if (gr_usermode->mode != GR_SPROLE && gr_usermode->mode != GR_STATUS &&
++          gr_usermode->mode != GR_UNSPROLE && gr_usermode->mode != GR_SPROLEPAM &&
 +          gr_is_global_nonroot(current_uid())) {
 +              error = -EPERM;
 +              goto out;
@@ -72969,15 +74888,15 @@ index 0000000..361a099
 +
 +      /* ensure pw and special role name are null terminated */
 +
-+      gr_usermode.pw[GR_PW_LEN - 1] = '\0';
-+      gr_usermode.sp_role[GR_SPROLE_LEN - 1] = '\0';
++      gr_usermode->pw[GR_PW_LEN - 1] = '\0';
++      gr_usermode->sp_role[GR_SPROLE_LEN - 1] = '\0';
 +
 +      /* Okay. 
 +       * We have our enough of the argument structure..(we have yet
 +       * to copy_from_user the tables themselves) . Copy the tables
 +       * only if we need them, i.e. for loading operations. */
 +
-+      switch (gr_usermode.mode) {
++      switch (gr_usermode->mode) {
 +      case GR_STATUS:
 +                      if (gr_acl_is_enabled()) {
 +                              error = 1;
@@ -72987,12 +74906,12 @@ index 0000000..361a099
 +                              error = 2;
 +                      goto out;
 +      case GR_SHUTDOWN:
-+              if (gr_acl_is_enabled() && !(chkpw(&gr_usermode, (unsigned char *)&gr_system_salt, (unsigned char *)&gr_system_sum))) {
++              if (gr_acl_is_enabled() && !(chkpw(gr_usermode, gr_system_salt, gr_system_sum))) {
 +                      stop_machine(gr_rbac_disable, NULL, NULL);
 +                      free_variables(false);
-+                      memset(&gr_usermode, 0, sizeof(gr_usermode));
-+                      memset(&gr_system_salt, 0, sizeof(gr_system_salt));
-+                      memset(&gr_system_sum, 0, sizeof(gr_system_sum));
++                      memset(gr_usermode, 0, sizeof(struct gr_arg));
++                      memset(gr_system_salt, 0, GR_SALT_LEN);
++                      memset(gr_system_sum, 0, GR_SHA_LEN);
 +                      gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_SHUTS_ACL_MSG);
 +              } else if (gr_acl_is_enabled()) {
 +                      gr_log_noargs(GR_DONT_AUDIT, GR_SHUTF_ACL_MSG);
@@ -73003,7 +74922,7 @@ index 0000000..361a099
 +              }
 +              break;
 +      case GR_ENABLE:
-+              if (!gr_acl_is_enabled() && !(error2 = gracl_init(&gr_usermode)))
++              if (!gr_acl_is_enabled() && !(error2 = gracl_init(gr_usermode)))
 +                      gr_log_str(GR_DONT_AUDIT_GOOD, GR_ENABLE_ACL_MSG, GR_VERSION);
 +              else {
 +                      if (gr_acl_is_enabled())
@@ -73019,8 +74938,8 @@ index 0000000..361a099
 +              if (!gr_acl_is_enabled()) {
 +                      gr_log_str(GR_DONT_AUDIT_GOOD, GR_RELOADI_ACL_MSG, GR_VERSION);
 +                      error = -EAGAIN;
-+              } else if (!(chkpw(&gr_usermode, (unsigned char *)&gr_system_salt, (unsigned char *)&gr_system_sum))) {
-+                      error2 = gracl_reload(&gr_usermode, oldmode);
++              } else if (!(chkpw(gr_usermode, gr_system_salt, gr_system_sum))) {
++                      error2 = gracl_reload(gr_usermode, oldmode);
 +                      if (!error2)
 +                              gr_log_str(GR_DONT_AUDIT_GOOD, GR_RELOAD_ACL_MSG, GR_VERSION);
 +                      else {
@@ -73039,20 +74958,20 @@ index 0000000..361a099
 +                      break;
 +              }
 +
-+              if (!(chkpw(&gr_usermode, (unsigned char *)&gr_system_salt, (unsigned char *)&gr_system_sum))) {
++              if (!(chkpw(gr_usermode, gr_system_salt, gr_system_sum))) {
 +                      gr_log_noargs(GR_DONT_AUDIT_GOOD, GR_SEGVMODS_ACL_MSG);
-+                      if (gr_usermode.segv_device && gr_usermode.segv_inode) {
++                      if (gr_usermode->segv_device && gr_usermode->segv_inode) {
 +                              struct acl_subject_label *segvacl;
 +                              segvacl =
-+                                  lookup_acl_subj_label(gr_usermode.segv_inode,
-+                                                        gr_usermode.segv_device,
++                                  lookup_acl_subj_label(gr_usermode->segv_inode,
++                                                        gr_usermode->segv_device,
 +                                                        current->role);
 +                              if (segvacl) {
 +                                      segvacl->crashes = 0;
 +                                      segvacl->expires = 0;
 +                              }
-+                      } else if (gr_find_uid(gr_usermode.segv_uid) >= 0) {
-+                              gr_remove_uid(gr_usermode.segv_uid);
++                      } else if (gr_find_uid(gr_usermode->segv_uid) >= 0) {
++                              gr_remove_uid(gr_usermode->segv_uid);
 +                      }
 +              } else {
 +                      gr_log_noargs(GR_DONT_AUDIT, GR_SEGVMODF_ACL_MSG);
@@ -73079,11 +74998,11 @@ index 0000000..361a099
 +              }
 +
 +              if (lookup_special_role_auth
-+                  (gr_usermode.mode, gr_usermode.sp_role, &sprole_salt, &sprole_sum)
++                  (gr_usermode->mode, gr_usermode->sp_role, &sprole_salt, &sprole_sum)
 +                  && ((!sprole_salt && !sprole_sum)
-+                      || !(chkpw(&gr_usermode, sprole_salt, sprole_sum)))) {
++                      || !(chkpw(gr_usermode, sprole_salt, sprole_sum)))) {
 +                      char *p = "";
-+                      assign_special_role(gr_usermode.sp_role);
++                      assign_special_role(gr_usermode->sp_role);
 +                      read_lock(&tasklist_lock);
 +                      if (current->real_parent)
 +                              p = current->real_parent->role->rolename;
@@ -73091,7 +75010,7 @@ index 0000000..361a099
 +                      gr_log_str_int(GR_DONT_AUDIT_GOOD, GR_SPROLES_ACL_MSG,
 +                                      p, acl_sp_role_value);
 +              } else {
-+                      gr_log_str(GR_DONT_AUDIT, GR_SPROLEF_ACL_MSG, gr_usermode.sp_role);
++                      gr_log_str(GR_DONT_AUDIT, GR_SPROLEF_ACL_MSG, gr_usermode->sp_role);
 +                      error = -EPERM;
 +                      if(!(current->role->auth_attempts++))
 +                              current->role->expires = get_seconds() + CONFIG_GRKERNSEC_ACL_TIMEOUT;
@@ -73125,7 +75044,7 @@ index 0000000..361a099
 +              }
 +              break;
 +      default:
-+              gr_log_int(GR_DONT_AUDIT, GR_INVMODE_ACL_MSG, gr_usermode.mode);
++              gr_log_int(GR_DONT_AUDIT, GR_INVMODE_ACL_MSG, gr_usermode->mode);
 +              error = -EINVAL;
 +              break;
 +      }
@@ -73594,7 +75513,7 @@ index 0000000..2040e61
 +}
 diff --git a/grsecurity/gracl_shm.c b/grsecurity/gracl_shm.c
 new file mode 100644
-index 0000000..98011b0
+index 0000000..6b0c9cc
 --- /dev/null
 +++ b/grsecurity/gracl_shm.c
 @@ -0,0 +1,40 @@
@@ -73609,7 +75528,7 @@ index 0000000..98011b0
 +
 +int
 +gr_handle_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
-+              const time_t shm_createtime, const kuid_t cuid, const int shmid)
++              const u64 shm_createtime, const kuid_t cuid, const int shmid)
 +{
 +      struct task_struct *task;
 +
@@ -73624,7 +75543,7 @@ index 0000000..98011b0
 +      if (unlikely(!task))
 +              task = find_task_by_vpid(shm_lapid);
 +
-+      if (unlikely(task && (time_before_eq((unsigned long)task->start_time.tv_sec, (unsigned long)shm_createtime) ||
++      if (unlikely(task && (time_before_eq64(task->start_time, shm_createtime) ||
 +                            (task_pid_nr(task) == shm_lapid)) &&
 +                   (task->acl->mode & GR_PROTSHM) &&
 +                   (task->acl != current->acl))) {
@@ -73665,10 +75584,10 @@ index 0000000..bc0be01
 +}
 diff --git a/grsecurity/grsec_chroot.c b/grsecurity/grsec_chroot.c
 new file mode 100644
-index 0000000..baa635c
+index 0000000..6d99cec
 --- /dev/null
 +++ b/grsecurity/grsec_chroot.c
-@@ -0,0 +1,387 @@
+@@ -0,0 +1,385 @@
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +#include <linux/sched.h>
@@ -73861,11 +75780,10 @@ index 0000000..baa635c
 +
 +int
 +gr_chroot_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
-+              const time_t shm_createtime)
++              const u64 shm_createtime)
 +{
 +#ifdef CONFIG_GRKERNSEC_CHROOT_SHMAT
 +      struct task_struct *p;
-+      time_t starttime;
 +
 +      if (unlikely(!grsec_enable_chroot_shmat))
 +              return 1;
@@ -73877,8 +75795,7 @@ index 0000000..baa635c
 +      read_lock(&tasklist_lock);
 +
 +      if ((p = find_task_by_vpid_unrestricted(shm_cprid))) {
-+              starttime = p->start_time.tv_sec;
-+              if (time_before_eq((unsigned long)starttime, (unsigned long)shm_createtime)) {
++              if (time_before_eq64(p->start_time, shm_createtime)) {
 +                      if (have_same_root(current, p)) {
 +                              goto allow;
 +                      } else {
@@ -74058,10 +75975,10 @@ index 0000000..baa635c
 +}
 diff --git a/grsecurity/grsec_disabled.c b/grsecurity/grsec_disabled.c
 new file mode 100644
-index 0000000..de31e65
+index 0000000..0f9ac91
 --- /dev/null
 +++ b/grsecurity/grsec_disabled.c
-@@ -0,0 +1,434 @@
+@@ -0,0 +1,440 @@
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +#include <linux/sched.h>
@@ -74103,6 +76020,12 @@ index 0000000..de31e65
 +      return 0;
 +}
 +
++int
++gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap)
++{
++      return 0;
++}
++
 +void
 +gr_handle_proc_create(const struct dentry *dentry, const struct inode *inode) 
 +{
@@ -74385,7 +76308,7 @@ index 0000000..de31e65
 +
 +int
 +gr_handle_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
-+              const time_t shm_createtime, const kuid_t cuid, const int shmid)
++              const u64 shm_createtime, const kuid_t cuid, const int shmid)
 +{
 +      return 1;
 +}
@@ -74498,10 +76421,10 @@ index 0000000..de31e65
 +#endif
 diff --git a/grsecurity/grsec_exec.c b/grsecurity/grsec_exec.c
 new file mode 100644
-index 0000000..f35f454
+index 0000000..14638ff
 --- /dev/null
 +++ b/grsecurity/grsec_exec.c
-@@ -0,0 +1,187 @@
+@@ -0,0 +1,188 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/file.h>
@@ -74636,7 +76559,8 @@ index 0000000..f35f454
 +      "CAP_MAC_OVERRIDE",
 +      "CAP_MAC_ADMIN",
 +      "CAP_SYSLOG",
-+      "CAP_WAKE_ALARM"
++      "CAP_WAKE_ALARM",
++      "CAP_BLOCK_SUSPEND"
 +};
 +
 +int captab_log_entries = sizeof(captab_log)/sizeof(captab_log[0]);
@@ -74750,10 +76674,10 @@ index 0000000..8ca18bf
 +}
 diff --git a/grsecurity/grsec_init.c b/grsecurity/grsec_init.c
 new file mode 100644
-index 0000000..ae6c028
+index 0000000..b7cb191
 --- /dev/null
 +++ b/grsecurity/grsec_init.c
-@@ -0,0 +1,272 @@
+@@ -0,0 +1,286 @@
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
 +#include <linux/mm.h>
@@ -74833,6 +76757,10 @@ index 0000000..ae6c028
 +char *gr_alert_log_buf;
 +char *gr_audit_log_buf;
 +
++extern struct gr_arg *gr_usermode;
++extern unsigned char *gr_system_salt;
++extern unsigned char *gr_system_sum;
++
 +void __init
 +grsecurity_init(void)
 +{
@@ -74873,6 +76801,16 @@ index 0000000..ae6c028
 +              return;
 +      }
 +
++      /* allocate memory for authentication structure */
++      gr_usermode = kmalloc(sizeof(struct gr_arg), GFP_KERNEL);
++      gr_system_salt = kmalloc(GR_SALT_LEN, GFP_KERNEL);
++      gr_system_sum = kmalloc(GR_SHA_LEN, GFP_KERNEL);
++
++      if (!gr_usermode || !gr_system_salt || !gr_system_sum) {
++              panic("Unable to allocate grsecurity authentication structure");
++              return;
++      }
++
 +#ifdef CONFIG_GRKERNSEC_IO
 +#if !defined(CONFIG_GRKERNSEC_SYSCTL_DISTRO)
 +      grsec_disable_privio = 1;
@@ -75547,7 +77485,7 @@ index 0000000..0e39d8c
 +}
 diff --git a/grsecurity/grsec_mount.c b/grsecurity/grsec_mount.c
 new file mode 100644
-index 0000000..cd9e124
+index 0000000..6f9eb73
 --- /dev/null
 +++ b/grsecurity/grsec_mount.c
 @@ -0,0 +1,65 @@
@@ -75579,11 +77517,11 @@ index 0000000..cd9e124
 +}
 +
 +void
-+gr_log_mount(const char *from, const char *to, const int retval)
++gr_log_mount(const char *from, struct path *to, const int retval)
 +{
 +#ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT
 +      if (grsec_enable_mount && (retval >= 0))
-+              gr_log_str_str(GR_DO_AUDIT, GR_MOUNT_AUDIT_MSG, from ? from : "none", to);
++              gr_log_str_fs(GR_DO_AUDIT, GR_MOUNT_AUDIT_MSG, from ? from : "none", to->dentry, to->mnt);
 +#endif
 +      return;
 +}
@@ -75973,7 +77911,7 @@ index 0000000..3860c7e
 +}
 diff --git a/grsecurity/grsec_sock.c b/grsecurity/grsec_sock.c
 new file mode 100644
-index 0000000..c0aef3a
+index 0000000..e3650b6
 --- /dev/null
 +++ b/grsecurity/grsec_sock.c
 @@ -0,0 +1,244 @@
@@ -76100,10 +78038,10 @@ index 0000000..c0aef3a
 +
 +#endif
 +
-+void gr_update_task_in_ip_table(struct task_struct *task, const struct inet_sock *inet)
++void gr_update_task_in_ip_table(const struct inet_sock *inet)
 +{
 +#ifdef CONFIG_GRKERNSEC
-+      struct signal_struct *sig = task->signal;
++      struct signal_struct *sig = current->signal;
 +      struct conn_table_entry *newent;
 +
 +      newent = kmalloc(sizeof(struct conn_table_entry), GFP_ATOMIC);
@@ -76835,10 +78773,10 @@ index 0000000..ae02d8e
 +EXPORT_SYMBOL_GPL(gr_handle_new_usb);
 diff --git a/grsecurity/grsum.c b/grsecurity/grsum.c
 new file mode 100644
-index 0000000..9f7b1ac
+index 0000000..158b330
 --- /dev/null
 +++ b/grsecurity/grsum.c
-@@ -0,0 +1,61 @@
+@@ -0,0 +1,64 @@
 +#include <linux/err.h>
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
@@ -76855,47 +78793,50 @@ index 0000000..9f7b1ac
 +int
 +chkpw(struct gr_arg *entry, unsigned char *salt, unsigned char *sum)
 +{
-+      char *p;
 +      struct crypto_hash *tfm;
 +      struct hash_desc desc;
-+      struct scatterlist sg;
-+      unsigned char temp_sum[GR_SHA_LEN];
-+      volatile int retval = 0;
++      struct scatterlist sg[2];
++      unsigned char temp_sum[GR_SHA_LEN] __attribute__((aligned(__alignof__(unsigned long))));
++      unsigned long *tmpsumptr = (unsigned long *)temp_sum;
++      unsigned long *sumptr = (unsigned long *)sum;
++      int cryptres;
++      int retval = 1;
++      volatile int mismatched = 0;
 +      volatile int dummy = 0;
 +      unsigned int i;
 +
-+      sg_init_table(&sg, 1);
-+
 +      tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC);
 +      if (IS_ERR(tfm)) {
 +              /* should never happen, since sha256 should be built in */
++              memset(entry->pw, 0, GR_PW_LEN);
 +              return 1;
 +      }
 +
++      sg_init_table(sg, 2);
++      sg_set_buf(&sg[0], salt, GR_SALT_LEN);
++      sg_set_buf(&sg[1], entry->pw, strlen(entry->pw));
++
 +      desc.tfm = tfm;
 +      desc.flags = 0;
 +
-+      crypto_hash_init(&desc);
-+
-+      p = salt;
-+      sg_set_buf(&sg, p, GR_SALT_LEN);
-+      crypto_hash_update(&desc, &sg, sg.length);
-+
-+      p = entry->pw;
-+      sg_set_buf(&sg, p, strlen(p));
-+      
-+      crypto_hash_update(&desc, &sg, sg.length);
-+
-+      crypto_hash_final(&desc, temp_sum);
++      cryptres = crypto_hash_digest(&desc, sg, GR_SALT_LEN + strlen(entry->pw),
++                                      temp_sum);
 +
 +      memset(entry->pw, 0, GR_PW_LEN);
 +
-+      for (i = 0; i < GR_SHA_LEN; i++)
-+              if (sum[i] != temp_sum[i])
-+                      retval = 1;
++      if (cryptres)
++              goto out;
++
++      for (i = 0; i < GR_SHA_LEN/sizeof(tmpsumptr[0]); i++)
++              if (sumptr[i] != tmpsumptr[i])
++                      mismatched = 1;
 +              else
 +                      dummy = 1;      // waste a cycle
 +
++      if (!mismatched)
++              retval = dummy - 1;
++
++out:
 +      crypto_free_hash(tfm);
 +
 +      return retval;
@@ -76916,7 +78857,7 @@ index 77ff547..181834f 100644
  #define pud_none(pud)                 0
  #define pud_bad(pud)                  0
 diff --git a/include/asm-generic/atomic-long.h b/include/asm-generic/atomic-long.h
-index b7babf0..97f4c4f 100644
+index b7babf0..1e4b4f1 100644
 --- a/include/asm-generic/atomic-long.h
 +++ b/include/asm-generic/atomic-long.h
 @@ -22,6 +22,12 @@
@@ -77177,7 +79118,15 @@ index b7babf0..97f4c4f 100644
  static inline int atomic_long_sub_and_test(long i, atomic_long_t *l)
  {
        atomic_t *v = (atomic_t *)l;
-@@ -218,6 +356,16 @@ static inline long atomic_long_add_return(long i, atomic_long_t *l)
+@@ -211,13 +349,23 @@ static inline int atomic_long_add_negative(long i, atomic_long_t *l)
+       return atomic_add_negative(i, v);
+ }
+-static inline long atomic_long_add_return(long i, atomic_long_t *l)
++static inline long __intentional_overflow(-1) atomic_long_add_return(long i, atomic_long_t *l)
+ {
+       atomic_t *v = (atomic_t *)l;
        return (long)atomic_add_return(i, v);
  }
  
@@ -77268,21 +79217,8 @@ index b7babf0..97f4c4f 100644
 +#endif
 +
  #endif  /*  _ASM_GENERIC_ATOMIC_LONG_H  */
-diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h
-index 33bd2de..f31bff97 100644
---- a/include/asm-generic/atomic.h
-+++ b/include/asm-generic/atomic.h
-@@ -153,7 +153,7 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
-  * Atomically clears the bits set in @mask from @v
-  */
- #ifndef atomic_clear_mask
--static inline void atomic_clear_mask(unsigned long mask, atomic_t *v)
-+static inline void atomic_clear_mask(unsigned int mask, atomic_t *v)
- {
-       unsigned long flags;
 diff --git a/include/asm-generic/atomic64.h b/include/asm-generic/atomic64.h
-index b18ce4f..2ee2843 100644
+index 30ad9c8..c70c170 100644
 --- a/include/asm-generic/atomic64.h
 +++ b/include/asm-generic/atomic64.h
 @@ -16,6 +16,8 @@ typedef struct {
@@ -77294,7 +79230,7 @@ index b18ce4f..2ee2843 100644
  #define ATOMIC64_INIT(i)      { (i) }
  
  extern long long atomic64_read(const atomic64_t *v);
-@@ -39,4 +41,14 @@ extern int   atomic64_add_unless(atomic64_t *v, long long a, long long u);
+@@ -51,4 +53,14 @@ extern int   atomic64_add_unless(atomic64_t *v, long long a, long long u);
  #define atomic64_dec_and_test(v)      (atomic64_dec_return((v)) == 0)
  #define atomic64_inc_not_zero(v)      atomic64_add_unless((v), 1LL, 0LL)
  
@@ -77310,10 +79246,10 @@ index b18ce4f..2ee2843 100644
 +
  #endif  /*  _ASM_GENERIC_ATOMIC64_H  */
 diff --git a/include/asm-generic/barrier.h b/include/asm-generic/barrier.h
-index 6f692f8..2ad9dd2 100644
+index 1402fa8..025a736 100644
 --- a/include/asm-generic/barrier.h
 +++ b/include/asm-generic/barrier.h
-@@ -66,7 +66,7 @@
+@@ -74,7 +74,7 @@
  do {                                                                  \
        compiletime_assert_atomic_type(*p);                             \
        smp_mb();                                                       \
@@ -77398,7 +79334,7 @@ index 0d68a1e..b74a761 100644
        machine_restart(NULL);
  }
 diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h
-index 975e1cc..0b8a083 100644
+index b8fdc57..c6d5a5c 100644
 --- a/include/asm-generic/io.h
 +++ b/include/asm-generic/io.h
 @@ -289,7 +289,7 @@ static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
@@ -77551,10 +79487,10 @@ index 810431d..0ec4804f 100644
   * (puds are folded into pgds so this doesn't get actually called,
   * but the define is needed for a generic inline function.)
 diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
-index a8015a7..7a4407b 100644
+index 752e30d..87f172d 100644
 --- a/include/asm-generic/pgtable.h
 +++ b/include/asm-generic/pgtable.h
-@@ -815,6 +815,22 @@ static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
+@@ -828,6 +828,22 @@ static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
  }
  #endif /* CONFIG_NUMA_BALANCING */
  
@@ -77603,10 +79539,10 @@ index 72d8803..cb9749c 100644
 +
  #endif /* __ASM_GENERIC_UACCESS_H */
 diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
-index 146e4ff..f4f9609 100644
+index aa70cbd..fd72c7a 100644
 --- a/include/asm-generic/vmlinux.lds.h
 +++ b/include/asm-generic/vmlinux.lds.h
-@@ -251,6 +251,7 @@
+@@ -233,6 +233,7 @@
        .rodata           : AT(ADDR(.rodata) - LOAD_OFFSET) {           \
                VMLINUX_SYMBOL(__start_rodata) = .;                     \
                *(.rodata) *(.rodata.*)                                 \
@@ -77614,7 +79550,7 @@ index 146e4ff..f4f9609 100644
                *(__vermagic)           /* Kernel version magic */      \
                . = ALIGN(8);                                           \
                VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .;         \
-@@ -737,17 +738,18 @@
+@@ -724,17 +725,18 @@
   * section in the linker script will go there too.  @phdr should have
   * a leading colon.
   *
@@ -77638,7 +79574,7 @@ index 146e4ff..f4f9609 100644
  /**
   * PERCPU_SECTION - define output section for percpu area, simple version
 diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h
-index 016c2f1..c4baa98 100644
+index 623a59c..1e79ab9 100644
 --- a/include/crypto/algapi.h
 +++ b/include/crypto/algapi.h
 @@ -34,7 +34,7 @@ struct crypto_type {
@@ -77651,18 +79587,18 @@ index 016c2f1..c4baa98 100644
  struct crypto_instance {
        struct crypto_alg alg;
 diff --git a/include/drm/drmP.h b/include/drm/drmP.h
-index a7c2a86..078f1b6 100644
+index 53ed876..5bb09be 100644
 --- a/include/drm/drmP.h
 +++ b/include/drm/drmP.h
-@@ -68,6 +68,7 @@
- #include <linux/workqueue.h>
- #include <linux/poll.h>
+@@ -59,6 +59,7 @@
+ #include <asm/mman.h>
  #include <asm/pgalloc.h>
 +#include <asm/local.h>
- #include <drm/drm.h>
- #include <drm/drm_sarea.h>
- #include <drm/drm_vma_manager.h>
-@@ -268,10 +269,12 @@ do {                                                                             \
+ #include <asm/uaccess.h>
+ #include <uapi/drm/drm.h>
+@@ -223,10 +224,12 @@ void drm_err(const char *func, const char *format, ...);
   * \param cmd command.
   * \param arg argument.
   */
@@ -77677,7 +79613,7 @@ index a7c2a86..078f1b6 100644
                               unsigned long arg);
  
  #define DRM_IOCTL_NR(n)                _IOC_NR(n)
-@@ -287,10 +290,10 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
+@@ -242,10 +245,10 @@ typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
  struct drm_ioctl_desc {
        unsigned int cmd;
        int flags;
@@ -77690,7 +79626,7 @@ index a7c2a86..078f1b6 100644
  
  /**
   * Creates a driver or general drm_ioctl_desc array entry for the given
-@@ -1001,7 +1004,8 @@ struct drm_info_list {
+@@ -629,7 +632,8 @@ struct drm_info_list {
        int (*show)(struct seq_file*, void*); /** show callback */
        u32 driver_features; /**< Required driver features for this entry */
        void *data;
@@ -77700,17 +79636,17 @@ index a7c2a86..078f1b6 100644
  
  /**
   * debugfs node structure. This structure represents a debugfs file.
-@@ -1083,7 +1087,7 @@ struct drm_device {
+@@ -713,7 +717,7 @@ struct drm_device {
  
        /** \name Usage Counters */
        /*@{ */
--      int open_count;                 /**< Outstanding files open */
-+      local_t open_count;             /**< Outstanding files open */
+-      int open_count;                 /**< Outstanding files open, protected by drm_global_mutex. */
++      local_t open_count;             /**< Outstanding files open, protected by drm_global_mutex. */
+       spinlock_t buf_lock;            /**< For drm_device::buf_use and a few other things. */
        int buf_use;                    /**< Buffers in use -- cannot alloc */
        atomic_t buf_alloc;             /**< Buffer allocation in progress */
-       /*@} */
 diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
-index 36a5feb..d9f01aa 100644
+index a3d75fe..6802f9c 100644
 --- a/include/drm/drm_crtc_helper.h
 +++ b/include/drm/drm_crtc_helper.h
 @@ -109,7 +109,7 @@ struct drm_encoder_helper_funcs {
@@ -77723,7 +79659,7 @@ index 36a5feb..d9f01aa 100644
  /**
   * drm_connector_helper_funcs - helper operations for connectors
 diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h
-index 012d58f..d0a0642 100644
+index a70d456..6ea07cd 100644
 --- a/include/drm/i915_pciids.h
 +++ b/include/drm/i915_pciids.h
 @@ -37,7 +37,7 @@
@@ -77796,10 +79732,10 @@ index c1da539..1dcec55 100644
  struct atmphy_ops {
        int (*start)(struct atm_dev *dev);
 diff --git a/include/linux/audit.h b/include/linux/audit.h
-index 22cfddb..ab759e8 100644
+index 10f155b..6c73ffe 100644
 --- a/include/linux/audit.h
 +++ b/include/linux/audit.h
-@@ -210,7 +210,7 @@ static inline void audit_ptrace(struct task_struct *t)
+@@ -219,7 +219,7 @@ static inline void audit_ptrace(struct task_struct *t)
  extern unsigned int audit_serial(void);
  extern int auditsc_get_stamp(struct audit_context *ctx,
                              struct timespec *t, unsigned int *serial);
@@ -77834,10 +79770,10 @@ index 61f29e5..e67c658 100644
  extern void __register_binfmt(struct linux_binfmt *fmt, int insert);
  
 diff --git a/include/linux/bitops.h b/include/linux/bitops.h
-index be5fd38..d71192a 100644
+index 5d858e0..336c1d9 100644
 --- a/include/linux/bitops.h
 +++ b/include/linux/bitops.h
-@@ -102,7 +102,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift)
+@@ -105,7 +105,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift)
   * @word: value to rotate
   * @shift: bits to roll
   */
@@ -77846,7 +79782,7 @@ index be5fd38..d71192a 100644
  {
        return (word << shift) | (word >> (32 - shift));
  }
-@@ -112,7 +112,7 @@ static inline __u32 rol32(__u32 word, unsigned int shift)
+@@ -115,7 +115,7 @@ static inline __u32 rol32(__u32 word, unsigned int shift)
   * @word: value to rotate
   * @shift: bits to roll
   */
@@ -77855,7 +79791,7 @@ index be5fd38..d71192a 100644
  {
        return (word >> shift) | (word << (32 - shift));
  }
-@@ -168,7 +168,7 @@ static inline __s32 sign_extend32(__u32 value, int index)
+@@ -171,7 +171,7 @@ static inline __s32 sign_extend32(__u32 value, int index)
        return (__s32)(value << shift) >> shift;
  }
  
@@ -77865,10 +79801,10 @@ index be5fd38..d71192a 100644
        if (sizeof(l) == 4)
                return fls(l);
 diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
-index 0d84981..bb741c0 100644
+index aac0f9e..73c9869 100644
 --- a/include/linux/blkdev.h
 +++ b/include/linux/blkdev.h
-@@ -1584,7 +1584,7 @@ struct block_device_operations {
+@@ -1615,7 +1615,7 @@ struct block_device_operations {
        /* this callback is with swap_lock and sometimes page table lock held */
        void (*swap_slot_free_notify) (struct block_device *, unsigned long);
        struct module *owner;
@@ -77910,10 +79846,10 @@ index 17e7e82..1d7da26 100644
  #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
  #endif
 diff --git a/include/linux/capability.h b/include/linux/capability.h
-index 84b13ad..172cdee 100644
+index aa93e5e..985a1b0 100644
 --- a/include/linux/capability.h
 +++ b/include/linux/capability.h
-@@ -211,9 +211,14 @@ extern bool has_ns_capability_noaudit(struct task_struct *t,
+@@ -214,9 +214,14 @@ extern bool has_ns_capability_noaudit(struct task_struct *t,
  extern bool capable(int cap);
  extern bool ns_capable(struct user_namespace *ns, int cap);
  extern bool capable_wrt_inode_uidgid(const struct inode *inode, int cap);
@@ -77954,10 +79890,10 @@ index 4ce9056..86caac6 100644
  extern struct cleancache_ops *
        cleancache_register_ops(struct cleancache_ops *ops);
 diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
-index 5119174..8e264f8 100644
+index 2839c63..5b06b6b 100644
 --- a/include/linux/clk-provider.h
 +++ b/include/linux/clk-provider.h
-@@ -174,6 +174,7 @@ struct clk_ops {
+@@ -191,6 +191,7 @@ struct clk_ops {
        void            (*init)(struct clk_hw *hw);
        int             (*debug_init)(struct clk_hw *hw, struct dentry *dentry);
  };
@@ -77988,7 +79924,7 @@ index e649426..a74047b 100644
  asmlinkage long compat_sys_lookup_dcookie(u32, u32, char __user *, compat_size_t);
  /*
 diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h
-index 2507fd2..55203f8 100644
+index d1a5582..4424efa 100644
 --- a/include/linux/compiler-gcc4.h
 +++ b/include/linux/compiler-gcc4.h
 @@ -39,9 +39,34 @@
@@ -78027,7 +79963,7 @@ index 2507fd2..55203f8 100644
   * Mark a position in code as unreachable.  This can be used to
   * suppress control flow warnings after asm blocks that transfer
 diff --git a/include/linux/compiler.h b/include/linux/compiler.h
-index ee7239e..7c11769 100644
+index d5ad7b1..3b74638 100644
 --- a/include/linux/compiler.h
 +++ b/include/linux/compiler.h
 @@ -5,11 +5,14 @@
@@ -78153,7 +80089,7 @@ index ee7239e..7c11769 100644
  /* Simple shorthand for a section definition */
  #ifndef __section
  # define __section(S) __attribute__ ((__section__(#S)))
-@@ -369,7 +435,8 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
+@@ -378,7 +444,8 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
   * use is to mediate communication between process-level code and irq/NMI
   * handlers, all running on the same CPU.
   */
@@ -78204,10 +80140,10 @@ index 34025df..d94bbbc 100644
  /*
   * Users often need to create attribute structures for their configurable
 diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
-index 5ae5100..b809662 100644
+index 503b085b..1638c9e 100644
 --- a/include/linux/cpufreq.h
 +++ b/include/linux/cpufreq.h
-@@ -200,6 +200,7 @@ struct global_attr {
+@@ -206,6 +206,7 @@ struct global_attr {
        ssize_t (*store)(struct kobject *a, struct attribute *b,
                         const char *c, size_t count);
  };
@@ -78215,7 +80151,7 @@ index 5ae5100..b809662 100644
  
  #define define_one_global_ro(_name)           \
  static struct global_attr _name =             \
-@@ -242,7 +243,7 @@ struct cpufreq_driver {
+@@ -273,7 +274,7 @@ struct cpufreq_driver {
        bool                    boost_supported;
        bool                    boost_enabled;
        int     (*set_boost)    (int state);
@@ -78225,7 +80161,7 @@ index 5ae5100..b809662 100644
  /* flags */
  #define CPUFREQ_STICKY                (1 << 0)        /* driver isn't removed even if
 diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
-index b0238cb..db89e1e 100644
+index 25e0df6..952dffd 100644
 --- a/include/linux/cpuidle.h
 +++ b/include/linux/cpuidle.h
 @@ -50,7 +50,8 @@ struct cpuidle_state {
@@ -78238,7 +80174,7 @@ index b0238cb..db89e1e 100644
  
  /* Idle State Flags */
  #define CPUIDLE_FLAG_TIME_VALID       (0x01) /* is residency time measurable? */
-@@ -211,7 +212,7 @@ struct cpuidle_governor {
+@@ -209,7 +210,7 @@ struct cpuidle_governor {
        void (*reflect)         (struct cpuidle_device *dev, int index);
  
        struct module           *owner;
@@ -78248,7 +80184,7 @@ index b0238cb..db89e1e 100644
  #ifdef CONFIG_CPU_IDLE
  extern int cpuidle_register_governor(struct cpuidle_governor *gov);
 diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
-index d08e4d2..95fad61 100644
+index 0a9a6da..ea597ca 100644
 --- a/include/linux/cpumask.h
 +++ b/include/linux/cpumask.h
 @@ -118,17 +118,17 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
@@ -78272,7 +80208,7 @@ index d08e4d2..95fad61 100644
                                            const struct cpumask *srcp,
                                            const struct cpumask *andp)
  {
-@@ -167,7 +167,7 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
+@@ -174,7 +174,7 @@ static inline unsigned int cpumask_first(const struct cpumask *srcp)
   *
   * Returns >= nr_cpu_ids if no further cpus set.
   */
@@ -78281,7 +80217,7 @@ index d08e4d2..95fad61 100644
  {
        /* -1 is a legal arg here. */
        if (n != -1)
-@@ -182,7 +182,7 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
+@@ -189,7 +189,7 @@ static inline unsigned int cpumask_next(int n, const struct cpumask *srcp)
   *
   * Returns >= nr_cpu_ids if no further cpus unset.
   */
@@ -78290,17 +80226,17 @@ index d08e4d2..95fad61 100644
  {
        /* -1 is a legal arg here. */
        if (n != -1)
-@@ -190,7 +190,7 @@ static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
+@@ -197,7 +197,7 @@ static inline unsigned int cpumask_next_zero(int n, const struct cpumask *srcp)
        return find_next_zero_bit(cpumask_bits(srcp), nr_cpumask_bits, n+1);
  }
  
 -int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *);
 +int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *) __intentional_overflow(-1);
  int cpumask_any_but(const struct cpumask *mask, unsigned int cpu);
+ int cpumask_set_cpu_local_first(int i, int numa_node, cpumask_t *dstp);
  
- /**
 diff --git a/include/linux/cred.h b/include/linux/cred.h
-index f61d6c8..d372d95 100644
+index 2fb2ca2..d6a3340 100644
 --- a/include/linux/cred.h
 +++ b/include/linux/cred.h
 @@ -35,7 +35,7 @@ struct group_info {
@@ -78312,7 +80248,7 @@ index f61d6c8..d372d95 100644
  
  /**
   * get_group_info - Get a reference to a group info structure
-@@ -136,7 +136,7 @@ struct cred {
+@@ -137,7 +137,7 @@ struct cred {
        struct user_namespace *user_ns; /* user_ns the caps and keyrings are relative to. */
        struct group_info *group_info;  /* supplementary groups for euid/fsgid */
        struct rcu_head rcu;            /* RCU deletion hook */
@@ -78321,7 +80257,7 @@ index f61d6c8..d372d95 100644
  
  extern void __put_cred(struct cred *);
  extern void exit_creds(struct task_struct *);
-@@ -194,6 +194,9 @@ static inline void validate_creds_for_do_exit(struct task_struct *tsk)
+@@ -195,6 +195,9 @@ static inline void validate_creds_for_do_exit(struct task_struct *tsk)
  static inline void validate_process_creds(void)
  {
  }
@@ -78331,7 +80267,7 @@ index f61d6c8..d372d95 100644
  #endif
  
  /**
-@@ -322,6 +325,7 @@ static inline void put_cred(const struct cred *_cred)
+@@ -332,6 +335,7 @@ static inline void put_cred(const struct cred *_cred)
  
  #define task_uid(task)                (task_cred_xxx((task), uid))
  #define task_euid(task)               (task_cred_xxx((task), euid))
@@ -78340,7 +80276,7 @@ index f61d6c8..d372d95 100644
  #define current_cred_xxx(xxx)                 \
  ({                                            \
 diff --git a/include/linux/crypto.h b/include/linux/crypto.h
-index b92eadf..b4ecdc1 100644
+index d45e949..51cf5ea 100644
 --- a/include/linux/crypto.h
 +++ b/include/linux/crypto.h
 @@ -373,7 +373,7 @@ struct cipher_tfm {
@@ -78382,13 +80318,13 @@ index 653589e..4ef254a 100644
        return c | 0x20;
  }
 diff --git a/include/linux/dcache.h b/include/linux/dcache.h
-index 3c7ec32..4ca97cc 100644
+index 1c2f1b8..c67151e 100644
 --- a/include/linux/dcache.h
 +++ b/include/linux/dcache.h
 @@ -133,7 +133,7 @@ struct dentry {
+               struct hlist_node d_alias;      /* inode alias list */
+               struct rcu_head d_rcu;
        } d_u;
-       struct list_head d_subdirs;     /* our children */
-       struct hlist_node d_alias;      /* inode alias list */
 -};
 +} __randomize_layout;
  
@@ -78408,7 +80344,7 @@ index 7925bf0..d5143d2 100644
  
  #define large_malloc(a) vmalloc(a)
 diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
-index d48dc00..211ee54 100644
+index f1863dc..5c26074 100644
 --- a/include/linux/devfreq.h
 +++ b/include/linux/devfreq.h
 @@ -114,7 +114,7 @@ struct devfreq_governor {
@@ -78421,10 +80357,10 @@ index d48dc00..211ee54 100644
  /**
   * struct devfreq - Device devfreq structure
 diff --git a/include/linux/device.h b/include/linux/device.h
-index d1d1c05..a90fdb0 100644
+index ce1f2160..189bc33 100644
 --- a/include/linux/device.h
 +++ b/include/linux/device.h
-@@ -310,7 +310,7 @@ struct subsys_interface {
+@@ -311,7 +311,7 @@ struct subsys_interface {
        struct list_head node;
        int (*add_dev)(struct device *dev, struct subsys_interface *sif);
        int (*remove_dev)(struct device *dev, struct subsys_interface *sif);
@@ -78433,7 +80369,7 @@ index d1d1c05..a90fdb0 100644
  
  int subsys_interface_register(struct subsys_interface *sif);
  void subsys_interface_unregister(struct subsys_interface *sif);
-@@ -506,7 +506,7 @@ struct device_type {
+@@ -507,7 +507,7 @@ struct device_type {
        void (*release)(struct device *dev);
  
        const struct dev_pm_ops *pm;
@@ -78442,7 +80378,7 @@ index d1d1c05..a90fdb0 100644
  
  /* interface for exporting device attributes */
  struct device_attribute {
-@@ -516,11 +516,12 @@ struct device_attribute {
+@@ -517,11 +517,12 @@ struct device_attribute {
        ssize_t (*store)(struct device *dev, struct device_attribute *attr,
                         const char *buf, size_t count);
  };
@@ -78457,10 +80393,10 @@ index d1d1c05..a90fdb0 100644
  ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr,
                          char *buf);
 diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
-index fd4aee2..1f28db9 100644
+index d5d3881..7ed54af 100644
 --- a/include/linux/dma-mapping.h
 +++ b/include/linux/dma-mapping.h
-@@ -54,7 +54,7 @@ struct dma_map_ops {
+@@ -60,7 +60,7 @@ struct dma_map_ops {
        u64 (*get_required_mask)(struct device *dev);
  #endif
        int is_phys;
@@ -78470,10 +80406,10 @@ index fd4aee2..1f28db9 100644
  #define DMA_BIT_MASK(n)       (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
  
 diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
-index 72cb0dd..7fe9a4b 100644
+index 653a1fd..9133cd1 100644
 --- a/include/linux/dmaengine.h
 +++ b/include/linux/dmaengine.h
-@@ -1147,9 +1147,9 @@ struct dma_pinned_list {
+@@ -1136,9 +1136,9 @@ struct dma_pinned_list {
  struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len);
  void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list);
  
@@ -78486,11 +80422,11 @@ index 72cb0dd..7fe9a4b 100644
        unsigned int offset, size_t len);
  
 diff --git a/include/linux/efi.h b/include/linux/efi.h
-index 6c100ff..e3289b4 100644
+index 0949f9c..04cb9a5 100644
 --- a/include/linux/efi.h
 +++ b/include/linux/efi.h
-@@ -1009,6 +1009,7 @@ struct efivar_operations {
-       efi_set_variable_t *set_variable;
+@@ -1050,6 +1050,7 @@ struct efivar_operations {
+       efi_set_variable_nonblocking_t *set_variable_nonblocking;
        efi_query_variable_store_t *query_variable_store;
  };
 +typedef struct efivar_operations __no_const efivar_operations_no_const;
@@ -78537,7 +80473,7 @@ index a729120..6ede2c9 100644
        return (long) ptr;
  }
 diff --git a/include/linux/extcon.h b/include/linux/extcon.h
-index f488145..3b6b04e 100644
+index 36f49c4..a2a1f4c 100644
 --- a/include/linux/extcon.h
 +++ b/include/linux/extcon.h
 @@ -135,7 +135,7 @@ struct extcon_dev {
@@ -78550,10 +80486,10 @@ index f488145..3b6b04e 100644
  
  /**
 diff --git a/include/linux/fb.h b/include/linux/fb.h
-index fe6ac95..898d41d 100644
+index 09bb7a1..d98870a 100644
 --- a/include/linux/fb.h
 +++ b/include/linux/fb.h
-@@ -304,7 +304,7 @@ struct fb_ops {
+@@ -305,7 +305,7 @@ struct fb_ops {
        /* called at KDB enter and leave time to prepare the console */
        int (*fb_debug_enter)(struct fb_info *info);
        int (*fb_debug_leave)(struct fb_info *info);
@@ -78589,10 +80525,10 @@ index 8293262..2b3b8bd 100644
  extern bool frontswap_enabled;
  extern struct frontswap_ops *
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 8780312..425cc22 100644
+index 9ab779e..0c636f2 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -398,7 +398,7 @@ struct address_space {
+@@ -412,7 +412,7 @@ struct address_space {
        spinlock_t              private_lock;   /* for use by the address_space */
        struct list_head        private_list;   /* ditto */
        void                    *private_data;  /* ditto */
@@ -78601,7 +80537,7 @@ index 8780312..425cc22 100644
        /*
         * On most architectures that alignment is already the case; but
         * must be enforced here for CRIS, to let the least significant bit
-@@ -441,7 +441,7 @@ struct block_device {
+@@ -455,7 +455,7 @@ struct block_device {
        int                     bd_fsfreeze_count;
        /* Mutex for freeze */
        struct mutex            bd_fsfreeze_mutex;
@@ -78610,7 +80546,7 @@ index 8780312..425cc22 100644
  
  /*
   * Radix-tree tags, for tagging dirty and writeback pages within the pagecache
-@@ -585,7 +585,7 @@ struct inode {
+@@ -624,7 +624,7 @@ struct inode {
  #endif
  
        void                    *i_private; /* fs or device private pointer */
@@ -78619,7 +80555,7 @@ index 8780312..425cc22 100644
  
  static inline int inode_unhashed(struct inode *inode)
  {
-@@ -778,7 +778,7 @@ struct file {
+@@ -820,7 +820,7 @@ struct file {
        struct list_head        f_tfile_llink;
  #endif /* #ifdef CONFIG_EPOLL */
        struct address_space    *f_mapping;
@@ -78628,7 +80564,7 @@ index 8780312..425cc22 100644
  
  struct file_handle {
        __u32 handle_bytes;
-@@ -906,7 +906,7 @@ struct file_lock {
+@@ -945,7 +945,7 @@ struct file_lock {
                        int state;              /* state of grant or error if -ve */
                } afs;
        } fl_u;
@@ -78637,16 +80573,16 @@ index 8780312..425cc22 100644
  
  /* The following constant reflects the upper bound of the file/locking space */
  #ifndef OFFSET_MAX
-@@ -1255,7 +1255,7 @@ struct super_block {
-       struct list_lru         s_dentry_lru ____cacheline_aligned_in_smp;
-       struct list_lru         s_inode_lru ____cacheline_aligned_in_smp;
-       struct rcu_head         rcu;
+@@ -1287,7 +1287,7 @@ struct super_block {
+        * Indicates how deep in a filesystem stack this SB is
+        */
+       int s_stack_depth;
 -};
 +} __randomize_layout;
  
  extern struct timespec current_fs_time(struct super_block *sb);
  
-@@ -1477,7 +1477,8 @@ struct file_operations {
+@@ -1514,7 +1514,8 @@ struct file_operations {
        long (*fallocate)(struct file *file, int mode, loff_t offset,
                          loff_t len);
        int (*show_fdinfo)(struct seq_file *m, struct file *f);
@@ -78656,7 +80592,7 @@ index 8780312..425cc22 100644
  
  struct inode_operations {
        struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
-@@ -2757,4 +2758,14 @@ static inline bool dir_relax(struct inode *inode)
+@@ -2823,4 +2824,14 @@ static inline bool dir_relax(struct inode *inode)
        return !IS_DEADDIR(inode);
  }
  
@@ -78760,7 +80696,7 @@ index 1c804b0..1432c2b 100644
  
  /*
 diff --git a/include/linux/genhd.h b/include/linux/genhd.h
-index 9f3c275..8bdff5d 100644
+index ec274e0..e678159 100644
 --- a/include/linux/genhd.h
 +++ b/include/linux/genhd.h
 @@ -194,7 +194,7 @@ struct gendisk {
@@ -78782,7 +80718,7 @@ index 9f3c275..8bdff5d 100644
  
  static inline sector_t get_start_sect(struct block_device *bdev)
 diff --git a/include/linux/genl_magic_func.h b/include/linux/genl_magic_func.h
-index c0894dd..2fbf10c 100644
+index 667c311..abac2a7 100644
 --- a/include/linux/genl_magic_func.h
 +++ b/include/linux/genl_magic_func.h
 @@ -246,7 +246,7 @@ const char *CONCAT_(GENL_MAGIC_FAMILY, _genl_cmd_to_str)(__u8 cmd)
@@ -78795,10 +80731,10 @@ index c0894dd..2fbf10c 100644
  };
  
 diff --git a/include/linux/gfp.h b/include/linux/gfp.h
-index 39b81dc..819dc51 100644
+index 41b30fd..a3718cf 100644
 --- a/include/linux/gfp.h
 +++ b/include/linux/gfp.h
-@@ -36,6 +36,13 @@ struct vm_area_struct;
+@@ -34,6 +34,13 @@ struct vm_area_struct;
  #define ___GFP_NO_KSWAPD      0x400000u
  #define ___GFP_OTHER_NODE     0x800000u
  #define ___GFP_WRITE          0x1000000u
@@ -78812,15 +80748,15 @@ index 39b81dc..819dc51 100644
  /* If the above are modified, __GFP_BITS_SHIFT may need updating */
  
  /*
-@@ -93,6 +100,7 @@ struct vm_area_struct;
+@@ -90,6 +97,7 @@ struct vm_area_struct;
+ #define __GFP_NO_KSWAPD       ((__force gfp_t)___GFP_NO_KSWAPD)
  #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */
- #define __GFP_KMEMCG  ((__force gfp_t)___GFP_KMEMCG) /* Allocation comes from a memcg-accounted resource */
  #define __GFP_WRITE   ((__force gfp_t)___GFP_WRITE)   /* Allocator intends to dirty page */
 +#define __GFP_USERCOPY        ((__force gfp_t)___GFP_USERCOPY)/* Allocator intends to copy page to/from userland */
  
  /*
   * This may seem redundant, but it's a way of annotating false positives vs.
-@@ -100,7 +108,7 @@ struct vm_area_struct;
+@@ -97,7 +105,7 @@ struct vm_area_struct;
   */
  #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK)
  
@@ -78829,14 +80765,14 @@ index 39b81dc..819dc51 100644
  #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
  
  /* This equals 0, but use constants in case they ever change */
-@@ -158,6 +166,8 @@ struct vm_area_struct;
+@@ -155,6 +163,8 @@ struct vm_area_struct;
  /* 4GB DMA on some platforms */
  #define GFP_DMA32     __GFP_DMA32
  
 +#define GFP_USERCOPY  __GFP_USERCOPY
 +
  /* Convert GFP flags to their corresponding migrate type */
- static inline int allocflags_to_migratetype(gfp_t gfp_flags)
+ static inline int gfpflags_to_migratetype(const gfp_t gfp_flags)
  {
 diff --git a/include/linux/gracl.h b/include/linux/gracl.h
 new file mode 100644
@@ -79867,10 +81803,10 @@ index 0000000..b02ba9d
 +#define GR_MSRWRITE_MSG "denied write to CPU MSR by "
 diff --git a/include/linux/grsecurity.h b/include/linux/grsecurity.h
 new file mode 100644
-index 0000000..13ac2e2
+index 0000000..c3b0738
 --- /dev/null
 +++ b/include/linux/grsecurity.h
-@@ -0,0 +1,249 @@
+@@ -0,0 +1,244 @@
 +#ifndef GR_SECURITY_H
 +#define GR_SECURITY_H
 +#include <linux/fs.h>
@@ -79882,6 +81818,9 @@ index 0000000..13ac2e2
 +#if defined(CONFIG_GRKERNSEC_PROC_USER) && defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
 +#error "CONFIG_GRKERNSEC_PROC_USER and CONFIG_GRKERNSEC_PROC_USERGROUP cannot both be enabled."
 +#endif
++#if defined(CONFIG_GRKERNSEC_PROC) && !defined(CONFIG_GRKERNSEC_PROC_USER) && !defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
++#error "CONFIG_GRKERNSEC_PROC enabled, but neither CONFIG_GRKERNSEC_PROC_USER nor CONFIG_GRKERNSEC_PROC_USERGROUP enabled"
++#endif
 +#if defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_PAGEEXEC) && !defined(CONFIG_PAX_SEGMEXEC) && !defined(CONFIG_PAX_KERNEXEC)
 +#error "CONFIG_PAX_NOEXEC enabled, but PAGEEXEC, SEGMEXEC, and KERNEXEC are disabled."
 +#endif
@@ -79907,6 +81846,8 @@ index 0000000..13ac2e2
 +int gr_check_user_change(kuid_t real, kuid_t effective, kuid_t fs);
 +int gr_check_group_change(kgid_t real, kgid_t effective, kgid_t fs);
 +
++int gr_learn_cap(const struct task_struct *task, const struct cred *cred, const int cap);
++
 +void gr_del_task_from_ip_table(struct task_struct *p);
 +
 +int gr_pid_is_chrooted(struct task_struct *p);
@@ -79952,7 +81893,7 @@ index 0000000..13ac2e2
 +                             const struct vfsmount *mnt);
 +void gr_log_remount(const char *devname, const int retval);
 +void gr_log_unmount(const char *devname, const int retval);
-+void gr_log_mount(const char *from, const char *to, const int retval);
++void gr_log_mount(const char *from, struct path *to, const int retval);
 +void gr_log_textrel(struct vm_area_struct *vma);
 +void gr_log_ptgnustack(struct file *file);
 +void gr_log_rwxmmap(struct file *file);
@@ -80077,16 +82018,6 @@ index 0000000..13ac2e2
 +
 +int gr_ptrace_readexec(struct file *file, int unsafe_flags);
 +
-+#if defined(CONFIG_GRKERNSEC) && (defined(CONFIG_GRKERNSEC_RESLOG) || !defined(CONFIG_GRKERNSEC_NO_RBAC))
-+extern void gr_learn_resource(const struct task_struct *task, const int res,
-+                            const unsigned long wanted, const int gt);
-+#else
-+static inline void gr_learn_resource(const struct task_struct *task, const int res,
-+                                   const unsigned long wanted, const int gt)
-+{
-+}
-+#endif
-+
 +#ifdef CONFIG_GRKERNSEC_RESLOG
 +extern void gr_log_resource(const struct task_struct *task, const int res,
 +                                 const unsigned long wanted, const int gt);
@@ -80146,10 +82077,10 @@ index 0000000..e7ffaaf
 +
 +#endif
 diff --git a/include/linux/hash.h b/include/linux/hash.h
-index bd1754c..8240892 100644
+index d0494c3..69b7715 100644
 --- a/include/linux/hash.h
 +++ b/include/linux/hash.h
-@@ -83,7 +83,7 @@ static inline u32 hash32_ptr(const void *ptr)
+@@ -87,7 +87,7 @@ static inline u32 hash32_ptr(const void *ptr)
  struct fast_hash_ops {
        u32 (*hash)(const void *data, u32 len, u32 seed);
        u32 (*hash2)(const u32 *data, u32 len, u32 seed);
@@ -80159,7 +82090,7 @@ index bd1754c..8240892 100644
  /**
   *    arch_fast_hash - Caclulates a hash over a given buffer that can have
 diff --git a/include/linux/highmem.h b/include/linux/highmem.h
-index 7fb31da..08b5114 100644
+index 9286a46..373f27f 100644
 --- a/include/linux/highmem.h
 +++ b/include/linux/highmem.h
 @@ -189,6 +189,18 @@ static inline void clear_highpage(struct page *page)
@@ -80244,7 +82175,7 @@ index aff7ad8..3942bbd 100644
  extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp);
  extern void unregister_pppox_proto(int proto_num);
 diff --git a/include/linux/init.h b/include/linux/init.h
-index a3ba270..a1b6604 100644
+index 2df8e8d..3e1280d 100644
 --- a/include/linux/init.h
 +++ b/include/linux/init.h
 @@ -37,9 +37,17 @@
@@ -80276,10 +82207,10 @@ index a3ba270..a1b6604 100644
  #define __meminitconst   __constsection(.meminit.rodata)
  #define __memexit        __section(.memexit.text) __exitused __cold notrace
 diff --git a/include/linux/init_task.h b/include/linux/init_task.h
-index 6df7f9f..d0bf699 100644
+index 77fc43f..73caf92 100644
 --- a/include/linux/init_task.h
 +++ b/include/linux/init_task.h
-@@ -156,6 +156,12 @@ extern struct task_group root_task_group;
+@@ -158,6 +158,12 @@ extern struct task_group root_task_group;
  
  #define INIT_TASK_COMM "swapper"
  
@@ -80292,7 +82223,7 @@ index 6df7f9f..d0bf699 100644
  #ifdef CONFIG_RT_MUTEXES
  # define INIT_RT_MUTEXES(tsk)                                         \
        .pi_waiters = RB_ROOT,                                          \
-@@ -203,6 +209,7 @@ extern struct task_group root_task_group;
+@@ -205,6 +211,7 @@ extern struct task_group root_task_group;
        RCU_POINTER_INITIALIZER(cred, &init_cred),                      \
        .comm           = INIT_TASK_COMM,                               \
        .thread         = INIT_THREAD,                                  \
@@ -80301,10 +82232,10 @@ index 6df7f9f..d0bf699 100644
        .files          = &init_files,                                  \
        .signal         = &init_signals,                                \
 diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
-index 051c850..431f83a 100644
+index 69517a2..6b12d37 100644
 --- a/include/linux/interrupt.h
 +++ b/include/linux/interrupt.h
-@@ -412,8 +412,8 @@ extern const char * const softirq_to_name[NR_SOFTIRQS];
+@@ -413,8 +413,8 @@ extern const char * const softirq_to_name[NR_SOFTIRQS];
  
  struct softirq_action
  {
@@ -80315,7 +82246,7 @@ index 051c850..431f83a 100644
  
  asmlinkage void do_softirq(void);
  asmlinkage void __do_softirq(void);
-@@ -427,7 +427,7 @@ static inline void do_softirq_own_stack(void)
+@@ -428,7 +428,7 @@ static inline void do_softirq_own_stack(void)
  }
  #endif
  
@@ -80325,10 +82256,10 @@ index 051c850..431f83a 100644
  extern void __raise_softirq_irqoff(unsigned int nr);
  
 diff --git a/include/linux/iommu.h b/include/linux/iommu.h
-index b96a5b2..2732d1c 100644
+index e6a7c9f..5804745 100644
 --- a/include/linux/iommu.h
 +++ b/include/linux/iommu.h
-@@ -131,7 +131,7 @@ struct iommu_ops {
+@@ -133,7 +133,7 @@ struct iommu_ops {
        u32 (*domain_get_windows)(struct iommu_domain *domain);
  
        unsigned long pgsize_bitmap;
@@ -80338,7 +82269,7 @@ index b96a5b2..2732d1c 100644
  #define IOMMU_GROUP_NOTIFY_ADD_DEVICE         1 /* Device added */
  #define IOMMU_GROUP_NOTIFY_DEL_DEVICE         2 /* Pre Device removed */
 diff --git a/include/linux/ioport.h b/include/linux/ioport.h
-index 5e3a906..3131d0f 100644
+index 2c525022..345b106 100644
 --- a/include/linux/ioport.h
 +++ b/include/linux/ioport.h
 @@ -161,7 +161,7 @@ struct resource *lookup_resource(struct resource *root, resource_size_t start);
@@ -80364,10 +82295,10 @@ index 35e7eca..6afb7ad 100644
  extern struct ipc_namespace init_ipc_ns;
  extern atomic_t nr_ipc_ns;
 diff --git a/include/linux/irq.h b/include/linux/irq.h
-index 5c57efb..965a62b 100644
+index 03f48d9..e86af0c 100644
 --- a/include/linux/irq.h
 +++ b/include/linux/irq.h
-@@ -344,7 +344,8 @@ struct irq_chip {
+@@ -352,7 +352,8 @@ struct irq_chip {
        void            (*irq_release_resources)(struct irq_data *data);
  
        unsigned long   flags;
@@ -80378,10 +82309,10 @@ index 5c57efb..965a62b 100644
  /*
   * irq_chip specific flags
 diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h
-index 7ed92d0..589abf5 100644
+index 13eed92..3261c86 100644
 --- a/include/linux/irqchip/arm-gic.h
 +++ b/include/linux/irqchip/arm-gic.h
-@@ -73,9 +73,11 @@
+@@ -91,9 +91,11 @@
  
  #ifndef __ASSEMBLY__
  
@@ -80395,10 +82326,10 @@ index 7ed92d0..589abf5 100644
  void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *,
                    u32 offset, struct device_node *);
 diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
-index 1f44466..b481806 100644
+index c367cbd..c9b79e6 100644
 --- a/include/linux/jiffies.h
 +++ b/include/linux/jiffies.h
-@@ -292,20 +292,20 @@ extern unsigned long preset_lpj;
+@@ -280,20 +280,20 @@ extern unsigned long preset_lpj;
  /*
   * Convert various time units to each other:
   */
@@ -80463,10 +82394,10 @@ index 6883e19..e854fcb 100644
  /* This macro allows us to keep printk typechecking */
  static __printf(1, 2)
 diff --git a/include/linux/key-type.h b/include/linux/key-type.h
-index a74c3a8..28d3f21 100644
+index ff9f1d3..6712be5 100644
 --- a/include/linux/key-type.h
 +++ b/include/linux/key-type.h
-@@ -131,7 +131,7 @@ struct key_type {
+@@ -152,7 +152,7 @@ struct key_type {
        /* internal fields */
        struct list_head        link;           /* link in types list */
        struct lock_class_key   lock_class;     /* key->sem lock class */
@@ -80476,7 +82407,7 @@ index a74c3a8..28d3f21 100644
  extern struct key_type key_type_keyring;
  
 diff --git a/include/linux/kgdb.h b/include/linux/kgdb.h
-index 6b06d37..c134867 100644
+index e465bb1..19f605f 100644
 --- a/include/linux/kgdb.h
 +++ b/include/linux/kgdb.h
 @@ -52,7 +52,7 @@ extern int kgdb_connected;
@@ -80530,10 +82461,10 @@ index 0555cc6..40116ce 100644
        char **envp;
        int wait;
 diff --git a/include/linux/kobject.h b/include/linux/kobject.h
-index f896a33..f2eb10f 100644
+index 2d61b90..a1d0a13 100644
 --- a/include/linux/kobject.h
 +++ b/include/linux/kobject.h
-@@ -116,7 +116,7 @@ struct kobj_type {
+@@ -118,7 +118,7 @@ struct kobj_type {
        struct attribute **default_attrs;
        const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj);
        const void *(*namespace)(struct kobject *kobj);
@@ -80542,7 +82473,7 @@ index f896a33..f2eb10f 100644
  
  struct kobj_uevent_env {
        char *argv[3];
-@@ -140,6 +140,7 @@ struct kobj_attribute {
+@@ -142,6 +142,7 @@ struct kobj_attribute {
        ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr,
                         const char *buf, size_t count);
  };
@@ -80550,7 +82481,7 @@ index f896a33..f2eb10f 100644
  
  extern const struct sysfs_ops kobj_sysfs_ops;
  
-@@ -167,7 +168,7 @@ struct kset {
+@@ -169,7 +170,7 @@ struct kset {
        spinlock_t list_lock;
        struct kobject kobj;
        const struct kset_uevent_ops *uevent_ops;
@@ -80586,10 +82517,10 @@ index 484604d..0f6c5b6 100644
        if (atomic_sub_and_test((int) count, &kref->refcount)) {
                release(kref);
 diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
-index 7d21cf9..bc0c81f 100644
+index a6059bd..8126d5c 100644
 --- a/include/linux/kvm_host.h
 +++ b/include/linux/kvm_host.h
-@@ -466,7 +466,7 @@ static inline void kvm_irqfd_exit(void)
+@@ -460,7 +460,7 @@ static inline void kvm_irqfd_exit(void)
  {
  }
  #endif
@@ -80598,7 +82529,7 @@ index 7d21cf9..bc0c81f 100644
                  struct module *module);
  void kvm_exit(void);
  
-@@ -632,7 +632,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
+@@ -629,7 +629,7 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
                                        struct kvm_guest_debug *dbg);
  int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
  
@@ -80608,10 +82539,10 @@ index 7d21cf9..bc0c81f 100644
  
  int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
 diff --git a/include/linux/libata.h b/include/linux/libata.h
-index 5ab4e3a..2fe237b 100644
+index bd5fefe..2a8a8d2 100644
 --- a/include/linux/libata.h
 +++ b/include/linux/libata.h
-@@ -975,7 +975,7 @@ struct ata_port_operations {
+@@ -976,7 +976,7 @@ struct ata_port_operations {
         * fields must be pointers.
         */
        const struct ata_port_operations        *inherits;
@@ -80633,10 +82564,10 @@ index a6a42dd..6c5ebce 100644
  
  /*
 diff --git a/include/linux/list.h b/include/linux/list.h
-index ef95941..82db65a 100644
+index f33f831..1ffe5e2 100644
 --- a/include/linux/list.h
 +++ b/include/linux/list.h
-@@ -112,6 +112,19 @@ extern void __list_del_entry(struct list_head *entry);
+@@ -113,6 +113,19 @@ extern void __list_del_entry(struct list_head *entry);
  extern void list_del(struct list_head *entry);
  #endif
  
@@ -80656,7 +82587,7 @@ index ef95941..82db65a 100644
  /**
   * list_replace - replace old entry by new one
   * @old : the element to be replaced
-@@ -145,6 +158,8 @@ static inline void list_del_init(struct list_head *entry)
+@@ -146,6 +159,8 @@ static inline void list_del_init(struct list_head *entry)
        INIT_LIST_HEAD(entry);
  }
  
@@ -80665,6 +82596,47 @@ index ef95941..82db65a 100644
  /**
   * list_move - delete from one list and add as another's head
   * @list: the entry to move
+diff --git a/include/linux/lockref.h b/include/linux/lockref.h
+index 4bfde0e..d6e2e09 100644
+--- a/include/linux/lockref.h
++++ b/include/linux/lockref.h
+@@ -47,4 +47,36 @@ static inline int __lockref_is_dead(const struct lockref *l)
+       return ((int)l->count < 0);
+ }
++static inline unsigned int __lockref_read(struct lockref *lockref)
++{
++      return lockref->count;
++}
++
++static inline void __lockref_set(struct lockref *lockref, unsigned int count)
++{
++      lockref->count = count;
++}
++
++static inline void __lockref_inc(struct lockref *lockref)
++{
++
++#ifdef CONFIG_PAX_REFCOUNT
++      atomic_inc((atomic_t *)&lockref->count);
++#else
++      lockref->count++;
++#endif
++
++}
++
++static inline void __lockref_dec(struct lockref *lockref)
++{
++
++#ifdef CONFIG_PAX_REFCOUNT
++      atomic_dec((atomic_t *)&lockref->count);
++#else
++      lockref->count--;
++#endif
++
++}
++
+ #endif /* __LINUX_LOCKREF_H */
 diff --git a/include/linux/math64.h b/include/linux/math64.h
 index c45c089..298841c 100644
 --- a/include/linux/math64.h
@@ -80715,7 +82687,7 @@ index c45c089..298841c 100644
        u32 remainder;
        return div_u64_rem(dividend, divisor, &remainder);
 diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
-index f230a97..714c006 100644
+index 3d385c8..deacb6a 100644
 --- a/include/linux/mempolicy.h
 +++ b/include/linux/mempolicy.h
 @@ -91,6 +91,10 @@ static inline struct mempolicy *mpol_dup(struct mempolicy *pol)
@@ -80729,7 +82701,7 @@ index f230a97..714c006 100644
  
  static inline void mpol_get(struct mempolicy *pol)
  {
-@@ -228,6 +232,9 @@ static inline void mpol_free_shared_policy(struct shared_policy *p)
+@@ -229,6 +233,9 @@ static inline void mpol_free_shared_policy(struct shared_policy *p)
  }
  
  #define vma_policy(vma) NULL
@@ -80740,10 +82712,10 @@ index f230a97..714c006 100644
  static inline int
  vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst)
 diff --git a/include/linux/mm.h b/include/linux/mm.h
-index d677706..673408c 100644
+index b464611..77cbfc1 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -127,6 +127,11 @@ extern unsigned int kobjsize(const void *objp);
+@@ -128,6 +128,11 @@ extern unsigned int kobjsize(const void *objp);
  #define VM_HUGETLB    0x00400000      /* Huge TLB Page VM */
  #define VM_NONLINEAR  0x00800000      /* Is non-linear (remap_file_pages) */
  #define VM_ARCH_1     0x01000000      /* Architecture-specific flag */
@@ -80755,7 +82727,7 @@ index d677706..673408c 100644
  #define VM_DONTDUMP   0x04000000      /* Do not include in the core dump */
  
  #ifdef CONFIG_MEM_SOFT_DIRTY
-@@ -237,8 +242,8 @@ struct vm_operations_struct {
+@@ -238,8 +243,8 @@ struct vm_operations_struct {
        /* called by access_process_vm when get_user_pages() fails, typically
         * for use by special VMAs that can switch between memory and hardware
         */
@@ -80763,10 +82735,10 @@ index d677706..673408c 100644
 -                    void *buf, int len, int write);
 +      ssize_t (*access)(struct vm_area_struct *vma, unsigned long addr,
 +                    void *buf, size_t len, int write);
- #ifdef CONFIG_NUMA
-       /*
-        * set_policy() op must add a reference to any non-NULL @new mempolicy
-@@ -268,6 +273,7 @@ struct vm_operations_struct {
+       /* Called by the /proc/PID/maps code to ask the vma whether it
+        * has a special name.  Returning non-NULL will also cause this
+@@ -275,6 +280,7 @@ struct vm_operations_struct {
        int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr,
                           unsigned long size, pgoff_t pgoff);
  };
@@ -80774,7 +82746,7 @@ index d677706..673408c 100644
  
  struct mmu_gather;
  struct inode;
-@@ -1133,8 +1139,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address,
+@@ -1165,8 +1171,8 @@ int follow_pfn(struct vm_area_struct *vma, unsigned long address,
        unsigned long *pfn);
  int follow_phys(struct vm_area_struct *vma, unsigned long address,
                unsigned int flags, unsigned long *prot, resource_size_t *phys);
@@ -80785,7 +82757,7 @@ index d677706..673408c 100644
  
  static inline void unmap_shared_mapping_range(struct address_space *mapping,
                loff_t const holebegin, loff_t const holelen)
-@@ -1173,9 +1179,9 @@ static inline int fixup_user_fault(struct task_struct *tsk,
+@@ -1206,9 +1212,9 @@ static inline int fixup_user_fault(struct task_struct *tsk,
  }
  #endif
  
@@ -80798,7 +82770,7 @@ index d677706..673408c 100644
  
  long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
                      unsigned long start, unsigned long nr_pages,
-@@ -1208,34 +1214,6 @@ int set_page_dirty_lock(struct page *page);
+@@ -1240,34 +1246,6 @@ int set_page_dirty_lock(struct page *page);
  int clear_page_dirty_for_io(struct page *page);
  int get_cmdline(struct task_struct *task, char *buffer, int buflen);
  
@@ -80830,26 +82802,10 @@ index d677706..673408c 100644
 -              !vma_growsup(vma->vm_next, addr);
 -}
 -
- extern pid_t
vm_is_stack(struct task_struct *task, struct vm_area_struct *vma, int in_group);
+ extern struct task_struct *task_of_stack(struct task_struct *task,
                              struct vm_area_struct *vma, bool in_group);
  
-@@ -1335,6 +1313,15 @@ static inline void sync_mm_rss(struct mm_struct *mm)
- }
- #endif
-+#ifdef CONFIG_MMU
-+pgprot_t vm_get_page_prot(vm_flags_t vm_flags);
-+#else
-+static inline pgprot_t vm_get_page_prot(vm_flags_t vm_flags)
-+{
-+      return __pgprot(0);
-+}
-+#endif
-+
- int vma_wants_writenotify(struct vm_area_struct *vma);
- extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,
-@@ -1353,8 +1340,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd,
+@@ -1385,8 +1363,15 @@ static inline int __pud_alloc(struct mm_struct *mm, pgd_t *pgd,
  {
        return 0;
  }
@@ -80865,7 +82821,7 @@ index d677706..673408c 100644
  #endif
  
  #ifdef __PAGETABLE_PMD_FOLDED
-@@ -1363,8 +1357,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud,
+@@ -1395,8 +1380,15 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud,
  {
        return 0;
  }
@@ -80881,7 +82837,7 @@ index d677706..673408c 100644
  #endif
  
  int __pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
-@@ -1382,11 +1383,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a
+@@ -1414,11 +1406,23 @@ static inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long a
                NULL: pud_offset(pgd, address);
  }
  
@@ -80905,7 +82861,31 @@ index d677706..673408c 100644
  #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */
  
  #if USE_SPLIT_PTE_PTLOCKS
-@@ -1783,7 +1796,7 @@ extern int install_special_mapping(struct mm_struct *mm,
+@@ -1801,12 +1805,23 @@ extern struct vm_area_struct *copy_vma(struct vm_area_struct **,
+       bool *need_rmap_locks);
+ extern void exit_mmap(struct mm_struct *);
++#if defined(CONFIG_GRKERNSEC) && (defined(CONFIG_GRKERNSEC_RESLOG) || !defined(CONFIG_GRKERNSEC_NO_RBAC))
++extern void gr_learn_resource(const struct task_struct *task, const int res,
++                            const unsigned long wanted, const int gt);
++#else
++static inline void gr_learn_resource(const struct task_struct *task, const int res,
++                                   const unsigned long wanted, const int gt)
++{
++}
++#endif
++
+ static inline int check_data_rlimit(unsigned long rlim,
+                                   unsigned long new,
+                                   unsigned long start,
+                                   unsigned long end_data,
+                                   unsigned long start_data)
+ {
++      gr_learn_resource(current, RLIMIT_DATA, (new - start) + (end_data - start_data), 1);
+       if (rlim < RLIM_INFINITY) {
+               if (((new - start) + (end_data - start_data)) > rlim)
+                       return -ENOSPC;
+@@ -1831,7 +1846,7 @@ extern int install_special_mapping(struct mm_struct *mm,
                                   unsigned long addr, unsigned long len,
                                   unsigned long flags, struct page **pages);
  
@@ -80914,7 +82894,7 @@ index d677706..673408c 100644
  
  extern unsigned long mmap_region(struct file *file, unsigned long addr,
        unsigned long len, vm_flags_t vm_flags, unsigned long pgoff);
-@@ -1791,6 +1804,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
+@@ -1839,6 +1854,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
        unsigned long len, unsigned long prot, unsigned long flags,
        unsigned long pgoff, unsigned long *populate);
  extern int do_munmap(struct mm_struct *, unsigned long, size_t);
@@ -80922,7 +82902,7 @@ index d677706..673408c 100644
  
  #ifdef CONFIG_MMU
  extern int __mm_populate(unsigned long addr, unsigned long len,
-@@ -1819,10 +1833,11 @@ struct vm_unmapped_area_info {
+@@ -1867,10 +1883,11 @@ struct vm_unmapped_area_info {
        unsigned long high_limit;
        unsigned long align_mask;
        unsigned long align_offset;
@@ -80936,7 +82916,7 @@ index d677706..673408c 100644
  
  /*
   * Search for an unmapped address range.
-@@ -1834,7 +1849,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info);
+@@ -1882,7 +1899,7 @@ extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info);
   * - satisfies (begin_addr & align_mask) == (align_offset & align_mask)
   */
  static inline unsigned long
@@ -80945,7 +82925,7 @@ index d677706..673408c 100644
  {
        if (!(info->flags & VM_UNMAPPED_AREA_TOPDOWN))
                return unmapped_area(info);
-@@ -1896,6 +1911,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add
+@@ -1944,6 +1961,10 @@ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long add
  extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
                                             struct vm_area_struct **pprev);
  
@@ -80956,23 +82936,20 @@ index d677706..673408c 100644
  /* Look up the first VMA which intersects the interval start_addr..end_addr-1,
     NULL if none.  Assume start_addr < end_addr. */
  static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
-@@ -1924,15 +1943,6 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm,
-       return vma;
+@@ -1973,10 +1994,10 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm,
  }
  
--#ifdef CONFIG_MMU
+ #ifdef CONFIG_MMU
 -pgprot_t vm_get_page_prot(unsigned long vm_flags);
--#else
++pgprot_t vm_get_page_prot(vm_flags_t vm_flags);
+ void vma_set_page_prot(struct vm_area_struct *vma);
+ #else
 -static inline pgprot_t vm_get_page_prot(unsigned long vm_flags)
--{
--      return __pgprot(0);
--}
--#endif
--
- #ifdef CONFIG_NUMA_BALANCING
- unsigned long change_prot_numa(struct vm_area_struct *vma,
-                       unsigned long start, unsigned long end);
-@@ -1984,6 +1994,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
++static inline pgprot_t vm_get_page_prot(vm_flags_t vm_flags)
+ {
+       return __pgprot(0);
+ }
+@@ -2038,6 +2059,11 @@ void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
  static inline void vm_stat_account(struct mm_struct *mm,
                        unsigned long flags, struct file *file, long pages)
  {
@@ -80984,7 +82961,7 @@ index d677706..673408c 100644
        mm->total_vm += pages;
  }
  #endif /* CONFIG_PROC_FS */
-@@ -2065,7 +2080,7 @@ extern int unpoison_memory(unsigned long pfn);
+@@ -2126,7 +2152,7 @@ extern int unpoison_memory(unsigned long pfn);
  extern int sysctl_memory_failure_early_kill;
  extern int sysctl_memory_failure_recovery;
  extern void shake_page(struct page *p, int access);
@@ -80993,7 +82970,7 @@ index d677706..673408c 100644
  extern int soft_offline_page(struct page *page, int flags);
  
  #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS)
-@@ -2100,5 +2115,11 @@ void __init setup_nr_node_ids(void);
+@@ -2161,5 +2187,11 @@ void __init setup_nr_node_ids(void);
  static inline void setup_nr_node_ids(void) {}
  #endif
  
@@ -81006,7 +82983,7 @@ index d677706..673408c 100644
  #endif /* __KERNEL__ */
  #endif /* _LINUX_MM_H */
 diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
-index 8967e20..61f7900 100644
+index 6e0b286..90d9c0d 100644
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
 @@ -308,7 +308,9 @@ struct vm_area_struct {
@@ -81070,18 +83047,18 @@ index c5d5278..f0b68c8 100644
  }
  
 diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
-index 835aa3d..676b387 100644
+index ffe66e3..b310722 100644
 --- a/include/linux/mmzone.h
 +++ b/include/linux/mmzone.h
-@@ -406,7 +406,7 @@ struct zone {
-       unsigned long           flags;             /* zone flags, see below */
+@@ -527,7 +527,7 @@ struct zone {
  
+       ZONE_PADDING(_pad3_)
        /* Zone statistics */
 -      atomic_long_t           vm_stat[NR_VM_ZONE_STAT_ITEMS];
 +      atomic_long_unchecked_t         vm_stat[NR_VM_ZONE_STAT_ITEMS];
+ } ____cacheline_internodealigned_in_smp;
  
-       /*
-        * The target ratio of ACTIVE_ANON to INACTIVE_ANON pages on
+ enum zone_flags {
 diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
 index 44eeef0..a92d3f9 100644
 --- a/include/linux/mod_devicetable.h
@@ -81105,7 +83082,7 @@ index 44eeef0..a92d3f9 100644
   * struct dmi_device_id appears during expansion of
   * "MODULE_DEVICE_TABLE(dmi, x)". Compiler doesn't look inside it
 diff --git a/include/linux/module.h b/include/linux/module.h
-index f520a76..5f898ef 100644
+index 71f282a..b2387e2 100644
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
 @@ -17,9 +17,11 @@
@@ -81197,7 +83174,7 @@ index f520a76..5f898ef 100644
  #ifndef MODULE_ARCH_INIT
  #define MODULE_ARCH_INIT {}
  #endif
-@@ -396,16 +400,46 @@ bool is_module_address(unsigned long addr);
+@@ -396,18 +400,48 @@ bool is_module_address(unsigned long addr);
  bool is_module_percpu_address(unsigned long addr);
  bool is_module_text_address(unsigned long addr);
  
@@ -81233,23 +83210,25 @@ index f520a76..5f898ef 100644
 +      return within_module_range(addr, mod->module_init_rw, mod->init_size_rw);
 +}
 +
- static inline int within_module_core(unsigned long addr, const struct module *mod)
+ static inline bool within_module_core(unsigned long addr,
+                                     const struct module *mod)
  {
 -      return (unsigned long)mod->module_core <= addr &&
 -             addr < (unsigned long)mod->module_core + mod->core_size;
 +      return within_module_core_rx(addr, mod) || within_module_core_rw(addr, mod);
  }
  
- static inline int within_module_init(unsigned long addr, const struct module *mod)
+ static inline bool within_module_init(unsigned long addr,
+                                     const struct module *mod)
  {
 -      return (unsigned long)mod->module_init <= addr &&
 -             addr < (unsigned long)mod->module_init + mod->init_size;
 +      return within_module_init_rx(addr, mod) || within_module_init_rw(addr, mod);
  }
  
- /* Search for module by name: must hold module_mutex. */
+ static inline bool within_module(unsigned long addr, const struct module *mod)
 diff --git a/include/linux/moduleloader.h b/include/linux/moduleloader.h
-index 560ca53..ef621ef 100644
+index 7eeb9bb..68f37e0 100644
 --- a/include/linux/moduleloader.h
 +++ b/include/linux/moduleloader.h
 @@ -25,9 +25,21 @@ unsigned int arch_mod_section_prepend(struct module *mod, unsigned int section);
@@ -81274,31 +83253,33 @@ index 560ca53..ef621ef 100644
  /*
   * Apply the given relocation to the (simplified) ELF.  Return -error
   * or 0.
-@@ -45,7 +57,9 @@ static inline int apply_relocate(Elf_Shdr *sechdrs,
+@@ -45,8 +57,10 @@ static inline int apply_relocate(Elf_Shdr *sechdrs,
                                 unsigned int relsec,
                                 struct module *me)
  {
 +#ifdef CONFIG_MODULES
-       printk(KERN_ERR "module %s: REL relocation unsupported\n", me->name);
+       printk(KERN_ERR "module %s: REL relocation unsupported\n",
+              module_name(me));
 +#endif
        return -ENOEXEC;
  }
  #endif
-@@ -67,7 +81,9 @@ static inline int apply_relocate_add(Elf_Shdr *sechdrs,
+@@ -68,8 +82,10 @@ static inline int apply_relocate_add(Elf_Shdr *sechdrs,
                                     unsigned int relsec,
                                     struct module *me)
  {
 +#ifdef CONFIG_MODULES
-       printk(KERN_ERR "module %s: REL relocation unsupported\n", me->name);
+       printk(KERN_ERR "module %s: REL relocation unsupported\n",
+              module_name(me));
 +#endif
        return -ENOEXEC;
  }
  #endif
 diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
-index 204a677..e9b486a 100644
+index 1c9effa..1160bdd 100644
 --- a/include/linux/moduleparam.h
 +++ b/include/linux/moduleparam.h
-@@ -293,7 +293,7 @@ static inline void __kernel_param_unlock(void)
+@@ -323,7 +323,7 @@ static inline void __kernel_param_unlock(void)
   * @len is usually just sizeof(string).
   */
  #define module_param_string(name, string, len, perm)                  \
@@ -81307,7 +83288,7 @@ index 204a677..e9b486a 100644
                = { len, string };                                      \
        __module_param_call(MODULE_PARAM_PREFIX, name,                  \
                            &param_ops_string,                          \
-@@ -432,7 +432,7 @@ extern int param_set_bint(const char *val, const struct kernel_param *kp);
+@@ -467,7 +467,7 @@ extern int param_set_bint(const char *val, const struct kernel_param *kp);
   */
  #define module_param_array_named(name, array, type, nump, perm)               \
        param_check_##type(name, &(array)[0]);                          \
@@ -81317,10 +83298,10 @@ index 204a677..e9b486a 100644
            .ops = &param_ops_##type,                                   \
            .elemsize = sizeof(array[0]), .elem = array };              \
 diff --git a/include/linux/mount.h b/include/linux/mount.h
-index 839bac2..a96b37c 100644
+index c2c561d..a5f2a8c 100644
 --- a/include/linux/mount.h
 +++ b/include/linux/mount.h
-@@ -59,7 +59,7 @@ struct vfsmount {
+@@ -66,7 +66,7 @@ struct vfsmount {
        struct dentry *mnt_root;        /* root of the mounted tree */
        struct super_block *mnt_sb;     /* pointer to superblock */
        int mnt_flags;
@@ -81328,7 +83309,7 @@ index 839bac2..a96b37c 100644
 +} __randomize_layout;
  
  struct file; /* forward dec */
+ struct path;
 diff --git a/include/linux/namei.h b/include/linux/namei.h
 index 492de72..1bddcd4 100644
 --- a/include/linux/namei.h
@@ -81371,37 +83352,36 @@ index 17d8339..81656c0 100644
  struct iovec;
  struct kvec;
 diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
-index b42d07b..7f45ae2 100644
+index 74fd5d3..86a1e4f 100644
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -1146,6 +1146,7 @@ struct net_device_ops {
-                                                       void *priv);
-       int                     (*ndo_get_lock_subclass)(struct net_device *dev);
+@@ -1156,6 +1156,7 @@ struct net_device_ops {
+       bool                    (*ndo_gso_check) (struct sk_buff *skb,
+                                                 struct net_device *dev);
  };
 +typedef struct net_device_ops __no_const net_device_ops_no_const;
  
  /**
   * enum net_device_priv_flags - &struct net_device priv_flags
-@@ -1313,11 +1314,11 @@ struct net_device {
+@@ -1498,10 +1499,10 @@ struct net_device {
        struct net_device_stats stats;
  
-       /* dropped packets by core network, Do not use this in drivers */
 -      atomic_long_t           rx_dropped;
 -      atomic_long_t           tx_dropped;
 +      atomic_long_unchecked_t rx_dropped;
 +      atomic_long_unchecked_t tx_dropped;
  
-       /* Stats to monitor carrier on<->off transitions */
 -      atomic_t                carrier_changes;
 +      atomic_unchecked_t      carrier_changes;
  
  #ifdef CONFIG_WIRELESS_EXT
-       /* List of functions to handle Wireless Extensions (instead of ioctl).
+       const struct iw_handler_def *   wireless_handlers;
 diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
-index 2077489..a15e561 100644
+index 2517ece..0bbfcfb 100644
 --- a/include/linux/netfilter.h
 +++ b/include/linux/netfilter.h
-@@ -84,7 +84,7 @@ struct nf_sockopt_ops {
+@@ -85,7 +85,7 @@ struct nf_sockopt_ops {
  #endif
        /* Use the module struct to lock set/get code in place */
        struct module *owner;
@@ -81439,7 +83419,7 @@ index 0000000..33f4af8
 +
 +#endif
 diff --git a/include/linux/nls.h b/include/linux/nls.h
-index 520681b..1d67ed2 100644
+index 520681b..2b7fabb 100644
 --- a/include/linux/nls.h
 +++ b/include/linux/nls.h
 @@ -31,7 +31,7 @@ struct nls_table {
@@ -81451,6 +83431,15 @@ index 520681b..1d67ed2 100644
  
  /* this value hold the maximum octet of charset */
  #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */
+@@ -46,7 +46,7 @@ enum utf16_endian {
+ /* nls_base.c */
+ extern int __register_nls(struct nls_table *, struct module *);
+ extern int unregister_nls(struct nls_table *);
+-extern struct nls_table *load_nls(char *);
++extern struct nls_table *load_nls(const char *);
+ extern void unload_nls(struct nls_table *);
+ extern struct nls_table *load_nls_default(void);
+ #define register_nls(nls) __register_nls((nls), THIS_MODULE)
 diff --git a/include/linux/notifier.h b/include/linux/notifier.h
 index d14a4c3..a078786 100644
 --- a/include/linux/notifier.h
@@ -81516,7 +83505,7 @@ index d137218..be0c176 100644
  extern void path_get(const struct path *);
  extern void path_put(const struct path *);
 diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h
-index 5f2e559..7d59314 100644
+index 2706ee9..e691f7c 100644
 --- a/include/linux/pci_hotplug.h
 +++ b/include/linux/pci_hotplug.h
 @@ -71,7 +71,8 @@ struct hotplug_slot_ops {
@@ -81530,10 +83519,10 @@ index 5f2e559..7d59314 100644
  /**
   * struct hotplug_slot_info - used to notify the hotplug pci core of the state of the slot
 diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
-index 3ef6ea1..ed1a248 100644
+index 893a0d0..d5f996e 100644
 --- a/include/linux/perf_event.h
 +++ b/include/linux/perf_event.h
-@@ -328,8 +328,8 @@ struct perf_event {
+@@ -341,8 +341,8 @@ struct perf_event {
  
        enum perf_event_active_state    state;
        unsigned int                    attach_state;
@@ -81544,7 +83533,7 @@ index 3ef6ea1..ed1a248 100644
  
        /*
         * These are the total time in nanoseconds that the event
-@@ -380,8 +380,8 @@ struct perf_event {
+@@ -393,8 +393,8 @@ struct perf_event {
         * These accumulate total time (in nanoseconds) that children
         * events have been enabled and running, respectively.
         */
@@ -81555,7 +83544,7 @@ index 3ef6ea1..ed1a248 100644
  
        /*
         * Protect attach/detach and child_list:
-@@ -710,7 +710,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64
+@@ -734,7 +734,7 @@ static inline void perf_callchain_store(struct perf_callchain_entry *entry, u64
                entry->ip[entry->nr++] = ip;
  }
  
@@ -81564,7 +83553,7 @@ index 3ef6ea1..ed1a248 100644
  extern int sysctl_perf_event_mlock;
  extern int sysctl_perf_event_sample_rate;
  extern int sysctl_perf_cpu_time_max_percent;
-@@ -725,19 +725,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write,
+@@ -749,19 +749,24 @@ extern int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write,
                loff_t *ppos);
  
  
@@ -81592,7 +83581,7 @@ index 3ef6ea1..ed1a248 100644
  }
  
  extern void perf_event_init(void);
-@@ -867,7 +872,7 @@ struct perf_pmu_events_attr {
+@@ -892,7 +897,7 @@ struct perf_pmu_events_attr {
        struct device_attribute attr;
        u64 id;
        const char *event_str;
@@ -81602,10 +83591,10 @@ index 3ef6ea1..ed1a248 100644
  #define PMU_EVENT_ATTR(_name, _var, _id, _show)                               \
  static struct perf_pmu_events_attr _var = {                           \
 diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h
-index 7246ef3..1539ea4 100644
+index 1997ffc..4f1f44d 100644
 --- a/include/linux/pid_namespace.h
 +++ b/include/linux/pid_namespace.h
-@@ -43,7 +43,7 @@ struct pid_namespace {
+@@ -44,7 +44,7 @@ struct pid_namespace {
        int hide_pid;
        int reboot;     /* group exit code if this pidns was rebooted */
        unsigned int proc_inum;
@@ -81634,29 +83623,29 @@ index eb8b8ac..62649e1 100644
        unsigned int w_counter;
        struct page *tmp_page;
 diff --git a/include/linux/pm.h b/include/linux/pm.h
-index d915d03..0531037 100644
+index 383fd68..7a11504 100644
 --- a/include/linux/pm.h
 +++ b/include/linux/pm.h
-@@ -600,6 +600,7 @@ extern int dev_pm_put_subsys_data(struct device *dev);
- struct dev_pm_domain {
+@@ -621,6 +621,7 @@ struct dev_pm_domain {
        struct dev_pm_ops       ops;
+       void (*detach)(struct device *dev, bool power_off);
  };
 +typedef struct dev_pm_domain __no_const dev_pm_domain_no_const;
  
  /*
   * The PM_EVENT_ messages are also used by drivers implementing the legacy
 diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
-index 7c1d252..0e7061d 100644
+index 2e0e06d..824cc9b 100644
 --- a/include/linux/pm_domain.h
 +++ b/include/linux/pm_domain.h
-@@ -44,11 +44,11 @@ struct gpd_dev_ops {
-       int (*thaw_early)(struct device *dev);
-       int (*thaw)(struct device *dev);
+@@ -36,11 +36,11 @@ struct gpd_dev_ops {
+       int (*save_state)(struct device *dev);
+       int (*restore_state)(struct device *dev);
        bool (*active_wakeup)(struct device *dev);
 -};
 +} __no_const;
  
- struct gpd_cpu_data {
+ struct gpd_cpuidle_data {
        unsigned int saved_exit_latency;
 -      struct cpuidle_state *idle_state;
 +      cpuidle_state_no_const *idle_state;
@@ -81664,10 +83653,10 @@ index 7c1d252..0e7061d 100644
  
  struct generic_pm_domain {
 diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
-index 2a5897a..4f9af63 100644
+index 367f49b..d2f5a14 100644
 --- a/include/linux/pm_runtime.h
 +++ b/include/linux/pm_runtime.h
-@@ -113,7 +113,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev)
+@@ -125,7 +125,7 @@ static inline bool pm_runtime_callbacks_present(struct device *dev)
  
  static inline void pm_runtime_mark_last_busy(struct device *dev)
  {
@@ -81803,10 +83792,10 @@ index de83b4e..c4b997d 100644
  #define preempt_set_need_resched() \
  do { \
 diff --git a/include/linux/printk.h b/include/linux/printk.h
-index 8752f75..2b80c0f 100644
+index d78125f..7f36596 100644
 --- a/include/linux/printk.h
 +++ b/include/linux/printk.h
-@@ -110,6 +110,8 @@ static inline __printf(1, 2) __cold
+@@ -124,6 +124,8 @@ static inline __printf(1, 2) __cold
  void early_printk(const char *s, ...) { }
  #endif
  
@@ -81815,7 +83804,7 @@ index 8752f75..2b80c0f 100644
  #ifdef CONFIG_PRINTK
  asmlinkage __printf(5, 0)
  int vprintk_emit(int facility, int level,
-@@ -144,7 +146,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
+@@ -158,7 +160,6 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
  
  extern int printk_delay_msec;
  extern int dmesg_restrict;
@@ -81824,7 +83813,7 @@ index 8752f75..2b80c0f 100644
  extern void wake_up_klogd(void);
  
 diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
-index 608e60a..79cfb18 100644
+index b97bf2e..f14c92d4 100644
 --- a/include/linux/proc_fs.h
 +++ b/include/linux/proc_fs.h
 @@ -17,8 +17,11 @@ extern void proc_flush_task(struct task_struct *);
@@ -81859,7 +83848,7 @@ index 608e60a..79cfb18 100644
  extern void proc_set_size(struct proc_dir_entry *, loff_t);
  extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t);
  extern void *PDE_DATA(const struct inode *);
-@@ -52,8 +68,12 @@ static inline struct proc_dir_entry *proc_symlink(const char *name,
+@@ -56,8 +72,12 @@ static inline struct proc_dir_entry *proc_symlink(const char *name,
                struct proc_dir_entry *parent,const char *dest) { return NULL;}
  static inline struct proc_dir_entry *proc_mkdir(const char *name,
        struct proc_dir_entry *parent) {return NULL;}
@@ -81872,7 +83861,7 @@ index 608e60a..79cfb18 100644
  static inline struct proc_dir_entry *proc_mkdir_mode(const char *name,
        umode_t mode, struct proc_dir_entry *parent) { return NULL; }
  #define proc_create(name, mode, parent, proc_fops) ({NULL;})
-@@ -73,7 +93,7 @@ static inline int remove_proc_subtree(const char *name, struct proc_dir_entry *p
+@@ -79,7 +99,7 @@ struct net;
  static inline struct proc_dir_entry *proc_net_mkdir(
        struct net *net, const char *name, struct proc_dir_entry *parent)
  {
@@ -81895,7 +83884,7 @@ index 34a1e10..70f6bde 100644
  struct proc_ns {
        void *ns;
 diff --git a/include/linux/quota.h b/include/linux/quota.h
-index cc7494a..1e27036 100644
+index 80d345a..9e89a9a 100644
 --- a/include/linux/quota.h
 +++ b/include/linux/quota.h
 @@ -70,7 +70,7 @@ struct kqid {                        /* Type in which we store the quota identifier */
@@ -81908,7 +83897,7 @@ index cc7494a..1e27036 100644
  extern bool qid_valid(struct kqid qid);
  
 diff --git a/include/linux/random.h b/include/linux/random.h
-index 57fbbff..2331f3f 100644
+index b05856e..0a9f14e 100644
 --- a/include/linux/random.h
 +++ b/include/linux/random.h
 @@ -9,9 +9,19 @@
@@ -81943,12 +83932,12 @@ index 57fbbff..2331f3f 100644
  
 -u32 prandom_u32(void);
 +u32 prandom_u32(void) __intentional_overflow(-1);
- void prandom_bytes(void *buf, int nbytes);
+ void prandom_bytes(void *buf, size_t nbytes);
  void prandom_seed(u32 seed);
  void prandom_reseed_late(void);
 @@ -37,6 +47,11 @@ struct rnd_state {
  u32 prandom_u32_state(struct rnd_state *state);
- void prandom_bytes_state(struct rnd_state *state, void *buf, int nbytes);
+ void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
  
 +static inline unsigned long __intentional_overflow(-1) pax_get_random_long(void)
 +{
@@ -81958,11 +83947,20 @@ index 57fbbff..2331f3f 100644
  /**
   * prandom_u32_max - returns a pseudo-random number in interval [0, ep_ro)
   * @ep_ro: right open interval endpoint
+@@ -49,7 +64,7 @@ void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
+  *
+  * Returns: pseudo-random number in interval [0, ep_ro)
+  */
+-static inline u32 prandom_u32_max(u32 ep_ro)
++static inline u32 __intentional_overflow(-1) prandom_u32_max(u32 ep_ro)
+ {
+       return (u32)(((u64) prandom_u32() * ep_ro) >> 32);
+ }
 diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h
-index fea49b5..2ac22bb 100644
+index 378c5ee..aa84a47 100644
 --- a/include/linux/rbtree_augmented.h
 +++ b/include/linux/rbtree_augmented.h
-@@ -80,7 +80,9 @@ rbname ## _rotate(struct rb_node *rb_old, struct rb_node *rb_new)    \
+@@ -90,7 +90,9 @@ rbname ## _rotate(struct rb_node *rb_old, struct rb_node *rb_new)    \
        old->rbaugmented = rbcompute(old);                              \
  }                                                                     \
  rbstatic const struct rb_augment_callbacks rbname = {                 \
@@ -81974,7 +83972,7 @@ index fea49b5..2ac22bb 100644
  
  
 diff --git a/include/linux/rculist.h b/include/linux/rculist.h
-index 8183b46..a388711 100644
+index 372ad5e..d4373f8 100644
 --- a/include/linux/rculist.h
 +++ b/include/linux/rculist.h
 @@ -29,8 +29,8 @@
@@ -82032,11 +84030,24 @@ index 8183b46..a388711 100644
  /**
   * hlist_del_init_rcu - deletes entry from hash list with re-initialization
   * @n: the element to delete from the hash list.
+diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
+index 53ff1a7..c40f0ab 100644
+--- a/include/linux/rcupdate.h
++++ b/include/linux/rcupdate.h
+@@ -332,7 +332,7 @@ extern struct srcu_struct tasks_rcu_exit_srcu;
+ #define rcu_note_voluntary_context_switch(t) \
+       do { \
+               if (ACCESS_ONCE((t)->rcu_tasks_holdout)) \
+-                      ACCESS_ONCE((t)->rcu_tasks_holdout) = false; \
++                      ACCESS_ONCE_RW((t)->rcu_tasks_holdout) = false; \
+       } while (0)
+ #else /* #ifdef CONFIG_TASKS_RCU */
+ #define TASKS_RCU(x) do { } while (0)
 diff --git a/include/linux/reboot.h b/include/linux/reboot.h
-index 48bf152..d38b785 100644
+index 67fc8fc..a90f7d8 100644
 --- a/include/linux/reboot.h
 +++ b/include/linux/reboot.h
-@@ -44,9 +44,9 @@ extern int unregister_reboot_notifier(struct notifier_block *);
+@@ -47,9 +47,9 @@ extern void do_kernel_restart(char *cmd);
   */
  
  extern void migrate_to_reboot_cpu(void);
@@ -82049,7 +84060,7 @@ index 48bf152..d38b785 100644
  
  extern void machine_shutdown(void);
  struct pt_regs;
-@@ -57,9 +57,9 @@ extern void machine_crash_shutdown(struct pt_regs *);
+@@ -60,9 +60,9 @@ extern void machine_crash_shutdown(struct pt_regs *);
   */
  
  extern void kernel_restart_prepare(char *cmd);
@@ -82062,7 +84073,7 @@ index 48bf152..d38b785 100644
  
  extern int C_A_D; /* for sysctl */
  void ctrl_alt_del(void);
-@@ -73,7 +73,7 @@ extern int orderly_poweroff(bool force);
+@@ -76,7 +76,7 @@ extern int orderly_poweroff(bool force);
   * Emergency restart, callable from an interrupt handler.
   */
  
@@ -82112,10 +84123,10 @@ index 6bda06f..bf39a9b 100644
  #define RIO_RESOURCE_MEM      0x00000100
  #define RIO_RESOURCE_DOORBELL 0x00000200
 diff --git a/include/linux/rmap.h b/include/linux/rmap.h
-index b66c211..13d2915 100644
+index c0c2bce..4813524 100644
 --- a/include/linux/rmap.h
 +++ b/include/linux/rmap.h
-@@ -145,8 +145,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
+@@ -144,8 +144,8 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
  void anon_vma_init(void);     /* create anon_vma_cachep */
  int  anon_vma_prepare(struct vm_area_struct *);
  void unlink_anon_vmas(struct vm_area_struct *);
@@ -82127,7 +84138,7 @@ index b66c211..13d2915 100644
  static inline void anon_vma_merge(struct vm_area_struct *vma,
                                  struct vm_area_struct *next)
 diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
-index a964f72..b475afb 100644
+index ed8f9e7..999bc96 100644
 --- a/include/linux/scatterlist.h
 +++ b/include/linux/scatterlist.h
 @@ -1,6 +1,7 @@
@@ -82152,10 +84163,10 @@ index a964f72..b475afb 100644
  }
  
 diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 221b2bd..e2e5f82 100644
+index 5e344bb..0743255 100644
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -131,6 +131,7 @@ struct fs_struct;
+@@ -133,6 +133,7 @@ struct fs_struct;
  struct perf_event_context;
  struct blk_plug;
  struct filename;
@@ -82163,7 +84174,7 @@ index 221b2bd..e2e5f82 100644
  
  #define VMACACHE_BITS 2
  #define VMACACHE_SIZE (1U << VMACACHE_BITS)
-@@ -380,7 +381,7 @@ extern char __sched_text_start[], __sched_text_end[];
+@@ -376,7 +377,7 @@ extern char __sched_text_start[], __sched_text_end[];
  extern int in_sched_functions(unsigned long addr);
  
  #define       MAX_SCHEDULE_TIMEOUT    LONG_MAX
@@ -82172,7 +84183,7 @@ index 221b2bd..e2e5f82 100644
  extern signed long schedule_timeout_interruptible(signed long timeout);
  extern signed long schedule_timeout_killable(signed long timeout);
  extern signed long schedule_timeout_uninterruptible(signed long timeout);
-@@ -391,6 +392,19 @@ struct nsproxy;
+@@ -387,6 +388,19 @@ struct nsproxy;
  struct user_namespace;
  
  #ifdef CONFIG_MMU
@@ -82192,7 +84203,7 @@ index 221b2bd..e2e5f82 100644
  extern void arch_pick_mmap_layout(struct mm_struct *mm);
  extern unsigned long
  arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
-@@ -688,6 +702,17 @@ struct signal_struct {
+@@ -685,6 +699,17 @@ struct signal_struct {
  #ifdef CONFIG_TASKSTATS
        struct taskstats *stats;
  #endif
@@ -82210,7 +84221,7 @@ index 221b2bd..e2e5f82 100644
  #ifdef CONFIG_AUDIT
        unsigned audit_tty;
        unsigned audit_tty_log_passwd;
-@@ -714,7 +739,7 @@ struct signal_struct {
+@@ -711,7 +736,7 @@ struct signal_struct {
        struct mutex cred_guard_mutex;  /* guard against foreign influences on
                                         * credential calculations
                                         * (notably. ptrace) */
@@ -82219,7 +84230,7 @@ index 221b2bd..e2e5f82 100644
  
  /*
   * Bits in flags field of signal_struct.
-@@ -768,6 +793,14 @@ struct user_struct {
+@@ -764,6 +789,14 @@ struct user_struct {
        struct key *session_keyring;    /* UID's default session keyring */
  #endif
  
@@ -82234,7 +84245,7 @@ index 221b2bd..e2e5f82 100644
        /* Hash table maintenance information */
        struct hlist_node uidhash_node;
        kuid_t uid;
-@@ -775,7 +808,7 @@ struct user_struct {
+@@ -771,7 +804,7 @@ struct user_struct {
  #ifdef CONFIG_PERF_EVENTS
        atomic_long_t locked_vm;
  #endif
@@ -82243,7 +84254,7 @@ index 221b2bd..e2e5f82 100644
  
  extern int uids_sysfs_init(void);
  
-@@ -1179,6 +1212,9 @@ enum perf_event_task_context {
+@@ -1235,6 +1268,9 @@ enum perf_event_task_context {
  struct task_struct {
        volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */
        void *stack;
@@ -82253,7 +84264,7 @@ index 221b2bd..e2e5f82 100644
        atomic_t usage;
        unsigned int flags;     /* per process flags, defined below */
        unsigned int ptrace;
-@@ -1304,8 +1340,8 @@ struct task_struct {
+@@ -1362,8 +1398,8 @@ struct task_struct {
        struct list_head thread_node;
  
        struct completion *vfork_done;          /* for vfork() */
@@ -82264,7 +84275,7 @@ index 221b2bd..e2e5f82 100644
  
        cputime_t utime, stime, utimescaled, stimescaled;
        cputime_t gtime;
-@@ -1330,11 +1366,6 @@ struct task_struct {
+@@ -1388,11 +1424,6 @@ struct task_struct {
        struct task_cputime cputime_expires;
        struct list_head cpu_timers[3];
  
@@ -82276,7 +84287,7 @@ index 221b2bd..e2e5f82 100644
        char comm[TASK_COMM_LEN]; /* executable name excluding path
                                     - access with [gs]et_task_comm (which lock
                                       it with task_lock())
-@@ -1351,6 +1382,10 @@ struct task_struct {
+@@ -1410,6 +1441,10 @@ struct task_struct {
  #endif
  /* CPU-specific state of this task */
        struct thread_struct thread;
@@ -82287,7 +84298,7 @@ index 221b2bd..e2e5f82 100644
  /* filesystem information */
        struct fs_struct *fs;
  /* open file information */
-@@ -1427,6 +1462,10 @@ struct task_struct {
+@@ -1484,6 +1519,10 @@ struct task_struct {
        gfp_t lockdep_reclaim_gfp;
  #endif
  
@@ -82298,7 +84309,7 @@ index 221b2bd..e2e5f82 100644
  /* journalling filesystem info */
        void *journal_info;
  
-@@ -1465,6 +1504,10 @@ struct task_struct {
+@@ -1522,6 +1561,10 @@ struct task_struct {
        /* cg_list protected by css_set_lock and tsk->alloc_lock */
        struct list_head cg_list;
  #endif
@@ -82309,7 +84320,16 @@ index 221b2bd..e2e5f82 100644
  #ifdef CONFIG_FUTEX
        struct robust_list_head __user *robust_list;
  #ifdef CONFIG_COMPAT
-@@ -1610,7 +1653,78 @@ struct task_struct {
+@@ -1635,7 +1678,7 @@ struct task_struct {
+        * Number of functions that haven't been traced
+        * because of depth overrun.
+        */
+-      atomic_t trace_overrun;
++      atomic_unchecked_t trace_overrun;
+       /* Pause for the tracing */
+       atomic_t tracing_graph_pause;
+ #endif
+@@ -1661,7 +1704,78 @@ struct task_struct {
        unsigned int    sequential_io;
        unsigned int    sequential_io_avg;
  #endif
@@ -82389,7 +84409,7 @@ index 221b2bd..e2e5f82 100644
  
  /* Future-safe accessor for struct task_struct's cpus_allowed. */
  #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
-@@ -1692,7 +1806,7 @@ struct pid_namespace;
+@@ -1743,7 +1857,7 @@ struct pid_namespace;
  pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
                        struct pid_namespace *ns);
  
@@ -82398,7 +84418,7 @@ index 221b2bd..e2e5f82 100644
  {
        return tsk->pid;
  }
-@@ -2039,6 +2153,25 @@ extern u64 sched_clock_cpu(int cpu);
+@@ -2106,6 +2220,25 @@ extern u64 sched_clock_cpu(int cpu);
  
  extern void sched_clock_init(void);
  
@@ -82424,7 +84444,7 @@ index 221b2bd..e2e5f82 100644
  #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
  static inline void sched_clock_tick(void)
  {
-@@ -2172,7 +2305,9 @@ void yield(void);
+@@ -2239,7 +2372,9 @@ void yield(void);
  extern struct exec_domain     default_exec_domain;
  
  union thread_union {
@@ -82434,7 +84454,7 @@ index 221b2bd..e2e5f82 100644
        unsigned long stack[THREAD_SIZE/sizeof(long)];
  };
  
-@@ -2205,6 +2340,7 @@ extern struct pid_namespace init_pid_ns;
+@@ -2272,6 +2407,7 @@ extern struct pid_namespace init_pid_ns;
   */
  
  extern struct task_struct *find_task_by_vpid(pid_t nr);
@@ -82442,18 +84462,18 @@ index 221b2bd..e2e5f82 100644
  extern struct task_struct *find_task_by_pid_ns(pid_t nr,
                struct pid_namespace *ns);
  
-@@ -2367,7 +2503,7 @@ extern void __cleanup_sighand(struct sighand_struct *);
+@@ -2436,7 +2572,7 @@ extern void __cleanup_sighand(struct sighand_struct *);
  extern void exit_itimers(struct signal_struct *);
  extern void flush_itimer_signals(void);
  
 -extern void do_group_exit(int);
 +extern __noreturn void do_group_exit(int);
  
- extern int allow_signal(int);
- extern int disallow_signal(int);
-@@ -2568,9 +2704,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
- #endif
+ extern int do_execve(struct filename *,
+                    const char __user * const __user *,
+@@ -2653,9 +2789,9 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
+ #define task_stack_end_corrupted(task) \
+               (*(end_of_stack(task)) != STACK_END_MAGIC)
  
 -static inline int object_is_on_stack(void *obj)
 +static inline int object_starts_on_stack(const void *obj)
@@ -82464,10 +84484,10 @@ index 221b2bd..e2e5f82 100644
        return (obj >= stack) && (obj < (stack + THREAD_SIZE));
  }
 diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
-index 8045a55..c959cd5 100644
+index 596a0e0..bea77ec 100644
 --- a/include/linux/sched/sysctl.h
 +++ b/include/linux/sched/sysctl.h
-@@ -30,6 +30,7 @@ enum { sysctl_hung_task_timeout_secs = 0 };
+@@ -34,6 +34,7 @@ enum { sysctl_hung_task_timeout_secs = 0 };
  #define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
  
  extern int sysctl_max_map_count;
@@ -82476,7 +84496,7 @@ index 8045a55..c959cd5 100644
  extern unsigned int sysctl_sched_latency;
  extern unsigned int sysctl_sched_min_granularity;
 diff --git a/include/linux/security.h b/include/linux/security.h
-index 6478ce3..5e6ad6e 100644
+index ba96471..74fb3f6 100644
 --- a/include/linux/security.h
 +++ b/include/linux/security.h
 @@ -27,6 +27,7 @@
@@ -82496,7 +84516,7 @@ index 6478ce3..5e6ad6e 100644
  #ifdef CONFIG_MMU
  extern unsigned long mmap_min_addr;
  extern unsigned long dac_mmap_min_addr;
-@@ -1719,7 +1718,7 @@ struct security_operations {
+@@ -1729,7 +1728,7 @@ struct security_operations {
                                 struct audit_context *actx);
        void (*audit_rule_free) (void *lsmrule);
  #endif /* CONFIG_AUDIT */
@@ -82557,25 +84577,38 @@ index 52e0097..383f21d 100644
  int single_release(struct inode *, struct file *);
  void *__seq_open_private(struct file *, const struct seq_operations *, int);
 diff --git a/include/linux/shm.h b/include/linux/shm.h
-index 1e2cd2e..0288750 100644
+index 6fb8016..ab4465e 100644
 --- a/include/linux/shm.h
 +++ b/include/linux/shm.h
-@@ -21,6 +21,10 @@ struct shmid_kernel /* private to the kernel */
+@@ -22,6 +22,10 @@ struct shmid_kernel /* private to the kernel */
        /* The task created the shm object.  NULL if the task is dead. */
        struct task_struct      *shm_creator;
+       struct list_head        shm_clist;      /* list by creator */
 +#ifdef CONFIG_GRKERNSEC
-+      time_t                  shm_createtime;
++      u64                     shm_createtime;
 +      pid_t                   shm_lapid;
 +#endif
  };
  
  /* shm_mode upper byte flags */
+diff --git a/include/linux/signal.h b/include/linux/signal.h
+index ab1e039..ad4229e 100644
+--- a/include/linux/signal.h
++++ b/include/linux/signal.h
+@@ -289,7 +289,7 @@ static inline void allow_signal(int sig)
+        * know it'll be handled, so that they don't get converted to
+        * SIGKILL or just silently dropped.
+        */
+-      kernel_sigaction(sig, (__force __sighandler_t)2);
++      kernel_sigaction(sig, (__force_user __sighandler_t)2);
+ }
+ static inline void disallow_signal(int sig)
 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index 08074a8..e2ae280 100644
+index 6c8b6f6..5a0f4bd 100644
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -717,7 +717,7 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
+@@ -773,7 +773,7 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
  struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags,
                            int node);
  struct sk_buff *build_skb(void *data, unsigned int frag_size);
@@ -82584,7 +84617,7 @@ index 08074a8..e2ae280 100644
                                        gfp_t priority)
  {
        return __alloc_skb(size, priority, 0, NUMA_NO_NODE);
-@@ -1825,7 +1825,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb)
+@@ -1962,7 +1962,7 @@ static inline u32 skb_inner_network_header_len(const struct sk_buff *skb)
        return skb->inner_transport_header - skb->inner_network_header;
  }
  
@@ -82593,7 +84626,7 @@ index 08074a8..e2ae280 100644
  {
        return skb_network_header(skb) - skb->data;
  }
-@@ -1885,7 +1885,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
+@@ -2022,7 +2022,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len)
   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
   */
  #ifndef NET_SKB_PAD
@@ -82602,7 +84635,7 @@ index 08074a8..e2ae280 100644
  #endif
  
  int ___pskb_trim(struct sk_buff *skb, unsigned int len);
-@@ -2484,7 +2484,7 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
+@@ -2629,7 +2629,7 @@ struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
                                  int *err);
  unsigned int datagram_poll(struct file *file, struct socket *sock,
                           struct poll_table_struct *wait);
@@ -82611,7 +84644,7 @@ index 08074a8..e2ae280 100644
                            struct iovec *to, int size);
  int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, int hlen,
                                     struct iovec *iov);
-@@ -2776,6 +2776,9 @@ static inline void nf_reset(struct sk_buff *skb)
+@@ -3091,6 +3091,9 @@ static inline void nf_reset(struct sk_buff *skb)
        nf_bridge_put(skb->nf_bridge);
        skb->nf_bridge = NULL;
  #endif
@@ -82622,7 +84655,7 @@ index 08074a8..e2ae280 100644
  
  static inline void nf_reset_trace(struct sk_buff *skb)
 diff --git a/include/linux/slab.h b/include/linux/slab.h
-index 307bfbe..a999cf3 100644
+index c265bec..4867d28 100644
 --- a/include/linux/slab.h
 +++ b/include/linux/slab.h
 @@ -14,15 +14,29 @@
@@ -82673,7 +84706,7 @@ index 307bfbe..a999cf3 100644
  
  #include <linux/kmemleak.h>
  
-@@ -142,6 +159,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t);
+@@ -144,6 +161,8 @@ void * __must_check krealloc(const void *, size_t, gfp_t);
  void kfree(const void *);
  void kzfree(const void *);
  size_t ksize(const void *);
@@ -82682,16 +84715,7 @@ index 307bfbe..a999cf3 100644
  
  /*
   * Some archs want to perform DMA into kmalloc caches and need a guaranteed
-@@ -174,7 +193,7 @@ struct kmem_cache {
-       unsigned int align;     /* Alignment as calculated */
-       unsigned long flags;    /* Active flags on the slab */
-       const char *name;       /* Slab name for sysfs */
--      int refcount;           /* Use counter */
-+      atomic_t refcount;      /* Use counter */
-       void (*ctor)(void *);   /* Called on object slot creation */
-       struct list_head list;  /* List of all slab caches on the system */
- };
-@@ -259,6 +278,10 @@ extern struct kmem_cache *kmalloc_caches[KMALLOC_SHIFT_HIGH + 1];
+@@ -236,6 +255,10 @@ extern struct kmem_cache *kmalloc_caches[KMALLOC_SHIFT_HIGH + 1];
  extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
  #endif
  
@@ -82702,7 +84726,7 @@ index 307bfbe..a999cf3 100644
  /*
   * Figure out which kmalloc slab an allocation of a certain size
   * belongs to.
-@@ -267,7 +290,7 @@ extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
+@@ -244,7 +267,7 @@ extern struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
   * 2 = 120 .. 192 bytes
   * n = 2^(n-1) .. 2^n -1
   */
@@ -82711,7 +84735,7 @@ index 307bfbe..a999cf3 100644
  {
        if (!size)
                return 0;
-@@ -310,11 +333,11 @@ static __always_inline int kmalloc_index(size_t size)
+@@ -287,11 +310,11 @@ static __always_inline int kmalloc_index(size_t size)
  }
  #endif /* !CONFIG_SLOB */
  
@@ -82726,10 +84750,10 @@ index 307bfbe..a999cf3 100644
  #else
  static __always_inline void *__kmalloc_node(size_t size, gfp_t flags, int node)
 diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
-index 8235dfb..47ce586 100644
+index b869d16..1453c73 100644
 --- a/include/linux/slab_def.h
 +++ b/include/linux/slab_def.h
-@@ -38,7 +38,7 @@ struct kmem_cache {
+@@ -40,7 +40,7 @@ struct kmem_cache {
  /* 4) cache creation/removal */
        const char *name;
        struct list_head list;
@@ -82738,7 +84762,7 @@ index 8235dfb..47ce586 100644
        int object_size;
        int align;
  
-@@ -54,10 +54,14 @@ struct kmem_cache {
+@@ -56,10 +56,14 @@ struct kmem_cache {
        unsigned long node_allocs;
        unsigned long node_frees;
        unsigned long node_overflow;
@@ -82771,10 +84795,10 @@ index d82abd4..408c3a0 100644
        int inuse;              /* Offset to metadata */
        int align;              /* Alignment */
 diff --git a/include/linux/smp.h b/include/linux/smp.h
-index 633f5ed..6c3dc3f 100644
+index 93dff5f..933c561 100644
 --- a/include/linux/smp.h
 +++ b/include/linux/smp.h
-@@ -176,7 +176,9 @@ static inline void kick_all_cpus_sync(void) {  }
+@@ -176,7 +176,9 @@ static inline void wake_up_all_idle_cpus(void) {  }
  #endif
  
  #define get_cpu()             ({ preempt_disable(); smp_processor_id(); })
@@ -82858,10 +84882,10 @@ index 70736b9..37f33db 100644
  #ifdef __KERNEL__
  
 diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
-index 04e7632..2e2a8a3 100644
+index 2167846..0648fc3 100644
 --- a/include/linux/sunrpc/svc.h
 +++ b/include/linux/sunrpc/svc.h
-@@ -412,7 +412,7 @@ struct svc_procedure {
+@@ -416,7 +416,7 @@ struct svc_procedure {
        unsigned int            pc_count;       /* call count */
        unsigned int            pc_cachetype;   /* cache info (NFS) */
        unsigned int            pc_xdrressize;  /* maximum size of XDR reply */
@@ -82871,7 +84895,7 @@ index 04e7632..2e2a8a3 100644
  /*
   * Function prototypes.
 diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h
-index 0b8e3e6..33e0a01 100644
+index 975da75..318c083 100644
 --- a/include/linux/sunrpc/svc_rdma.h
 +++ b/include/linux/sunrpc/svc_rdma.h
 @@ -53,15 +53,15 @@ extern unsigned int svcrdma_ord;
@@ -82913,7 +84937,7 @@ index 8d71d65..f79586e 100644
  #define       SVC_GARBAGE     1
  #define       SVC_SYSERR      2
 diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
-index a5ffd32..0935dea 100644
+index e7a018e..49f8b17 100644
 --- a/include/linux/swiotlb.h
 +++ b/include/linux/swiotlb.h
 @@ -60,7 +60,8 @@ extern void
@@ -82927,10 +84951,10 @@ index a5ffd32..0935dea 100644
  extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
                                   unsigned long offset, size_t size,
 diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
-index a4a0588..752870e 100644
+index bda9b81..629e06e 100644
 --- a/include/linux/syscalls.h
 +++ b/include/linux/syscalls.h
-@@ -98,10 +98,16 @@ struct sigaltstack;
+@@ -99,10 +99,16 @@ union bpf_attr;
  #define __MAP(n,...) __MAP##n(__VA_ARGS__)
  
  #define __SC_DECL(t, a)       t a
@@ -82948,7 +84972,7 @@ index a4a0588..752870e 100644
  #define __SC_CAST(t, a)       (t) a
  #define __SC_ARGS(t, a)       a
  #define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(!__TYPE_IS_LL(t) && sizeof(t) > sizeof(long))
-@@ -379,11 +385,11 @@ asmlinkage long sys_sync(void);
+@@ -384,11 +390,11 @@ asmlinkage long sys_sync(void);
  asmlinkage long sys_fsync(unsigned int fd);
  asmlinkage long sys_fdatasync(unsigned int fd);
  asmlinkage long sys_bdflush(int func, long data);
@@ -82964,7 +84988,7 @@ index a4a0588..752870e 100644
  asmlinkage long sys_truncate(const char __user *path, long length);
  asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length);
  asmlinkage long sys_stat(const char __user *filename,
-@@ -595,7 +601,7 @@ asmlinkage long sys_getsockname(int, struct sockaddr __user *, int __user *);
+@@ -600,7 +606,7 @@ asmlinkage long sys_getsockname(int, struct sockaddr __user *, int __user *);
  asmlinkage long sys_getpeername(int, struct sockaddr __user *, int __user *);
  asmlinkage long sys_send(int, void __user *, size_t, unsigned);
  asmlinkage long sys_sendto(int, void __user *, size_t, unsigned,
@@ -82987,17 +85011,10 @@ index 27b3b0b..e093dd9 100644
  extern void register_syscore_ops(struct syscore_ops *ops);
  extern void unregister_syscore_ops(struct syscore_ops *ops);
 diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
-index 14a8ff2..fa95f3a 100644
+index b7361f8..341a15a 100644
 --- a/include/linux/sysctl.h
 +++ b/include/linux/sysctl.h
-@@ -34,13 +34,13 @@ struct ctl_table_root;
- struct ctl_table_header;
- struct ctl_dir;
--typedef struct ctl_table ctl_table;
--
- typedef int proc_handler (struct ctl_table *ctl, int write,
-                         void __user *buffer, size_t *lenp, loff_t *ppos);
+@@ -39,6 +39,8 @@ typedef int proc_handler (struct ctl_table *ctl, int write,
  
  extern int proc_dostring(struct ctl_table *, int,
                         void __user *, size_t *, loff_t *);
@@ -83006,19 +85023,18 @@ index 14a8ff2..fa95f3a 100644
  extern int proc_dointvec(struct ctl_table *, int,
                         void __user *, size_t *, loff_t *);
  extern int proc_dointvec_minmax(struct ctl_table *, int,
-@@ -115,7 +115,9 @@ struct ctl_table
+@@ -113,7 +115,8 @@ struct ctl_table
        struct ctl_table_poll *poll;
        void *extra1;
        void *extra2;
 -};
 +} __do_const __randomize_layout;
 +typedef struct ctl_table __no_const ctl_table_no_const;
-+typedef struct ctl_table ctl_table;
  
  struct ctl_node {
        struct rb_node node;
 diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
-index 5ffaa34..fe3e31c 100644
+index f97d0db..c1187dc 100644
 --- a/include/linux/sysfs.h
 +++ b/include/linux/sysfs.h
 @@ -34,7 +34,8 @@ struct attribute {
@@ -83073,10 +85089,10 @@ index 387fa7d..3fcde6b 100644
  #ifdef CONFIG_MAGIC_SYSRQ
  
 diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
-index fddbe20..a0e76ab 100644
+index ff307b5..f1a4468 100644
 --- a/include/linux/thread_info.h
 +++ b/include/linux/thread_info.h
-@@ -161,6 +161,13 @@ static inline bool test_and_clear_restore_sigmask(void)
+@@ -145,6 +145,13 @@ static inline bool test_and_clear_restore_sigmask(void)
  #error "no set_restore_sigmask() provided and default one won't work"
  #endif
  
@@ -83091,7 +85107,7 @@ index fddbe20..a0e76ab 100644
  
  #endif /* _LINUX_THREAD_INFO_H */
 diff --git a/include/linux/tty.h b/include/linux/tty.h
-index 1c3316a..ae83b9f 100644
+index 5171ef8..1048d83e 100644
 --- a/include/linux/tty.h
 +++ b/include/linux/tty.h
 @@ -202,7 +202,7 @@ struct tty_port {
@@ -83103,7 +85119,7 @@ index 1c3316a..ae83b9f 100644
        wait_queue_head_t       open_wait;      /* Open waiters */
        wait_queue_head_t       close_wait;     /* Close waiters */
        wait_queue_head_t       delta_msr_wait; /* Modem status change */
-@@ -284,7 +284,7 @@ struct tty_struct {
+@@ -290,7 +290,7 @@ struct tty_struct {
        /* If the tty has a pending do_SAK, queue it here - akpm */
        struct work_struct SAK_work;
        struct tty_port *port;
@@ -83112,7 +85128,7 @@ index 1c3316a..ae83b9f 100644
  
  /* Each of a tty's open files has private_data pointing to tty_file_private */
  struct tty_file_private {
-@@ -550,7 +550,7 @@ extern int tty_port_open(struct tty_port *port,
+@@ -555,7 +555,7 @@ extern int tty_port_open(struct tty_port *port,
                                struct tty_struct *tty, struct file *filp);
  static inline int tty_port_users(struct tty_port *port)
  {
@@ -83122,10 +85138,10 @@ index 1c3316a..ae83b9f 100644
  
  extern int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc);
 diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
-index 756a609..89db85e 100644
+index 92e337c..f46757b 100644
 --- a/include/linux/tty_driver.h
 +++ b/include/linux/tty_driver.h
-@@ -285,7 +285,7 @@ struct tty_operations {
+@@ -291,7 +291,7 @@ struct tty_operations {
        void (*poll_put_char)(struct tty_driver *driver, int line, char ch);
  #endif
        const struct file_operations *proc_fops;
@@ -83134,7 +85150,7 @@ index 756a609..89db85e 100644
  
  struct tty_driver {
        int     magic;          /* magic number for this structure */
-@@ -319,7 +319,7 @@ struct tty_driver {
+@@ -325,7 +325,7 @@ struct tty_driver {
  
        const struct tty_operations *ops;
        struct list_head tty_drivers;
@@ -83144,10 +85160,10 @@ index 756a609..89db85e 100644
  extern struct list_head tty_drivers;
  
 diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
-index add26da..22c00bef 100644
+index 00c9d68..bc0188b 100644
 --- a/include/linux/tty_ldisc.h
 +++ b/include/linux/tty_ldisc.h
-@@ -212,7 +212,7 @@ struct tty_ldisc_ops {
+@@ -215,7 +215,7 @@ struct tty_ldisc_ops {
  
        struct  module *owner;
  
@@ -83157,10 +85173,10 @@ index add26da..22c00bef 100644
  
  struct tty_ldisc {
 diff --git a/include/linux/types.h b/include/linux/types.h
-index 4d118ba..c3ee9bf 100644
+index a0bb704..f511c77 100644
 --- a/include/linux/types.h
 +++ b/include/linux/types.h
-@@ -176,10 +176,26 @@ typedef struct {
+@@ -177,10 +177,26 @@ typedef struct {
        int counter;
  } atomic_t;
  
@@ -83220,6 +85236,19 @@ index 2d1f9b6..d7a9fce 100644
 +#define gr_is_global_nonroot(x) (!uid_eq((x), GLOBAL_ROOT_UID))
 +
  #endif /* _LINUX_UIDGID_H */
+diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
+index baa8171..9ca98ba 100644
+--- a/include/linux/uio_driver.h
++++ b/include/linux/uio_driver.h
+@@ -67,7 +67,7 @@ struct uio_device {
+         struct module           *owner;
+         struct device           *dev;
+         int                     minor;
+-        atomic_t                event;
++        atomic_unchecked_t      event;
+         struct fasync_struct    *async_queue;
+         wait_queue_head_t       wait;
+         struct uio_info         *info;
 diff --git a/include/linux/unaligned/access_ok.h b/include/linux/unaligned/access_ok.h
 index 99c1b4d..562e6f3 100644
 --- a/include/linux/unaligned/access_ok.h
@@ -83272,10 +85301,10 @@ index 99c1b4d..562e6f3 100644
  
  static inline void put_unaligned_le16(u16 val, void *p)
 diff --git a/include/linux/usb.h b/include/linux/usb.h
-index 6b7ec37..4428419 100644
+index 447a7e2..9cea7e9 100644
 --- a/include/linux/usb.h
 +++ b/include/linux/usb.h
-@@ -569,7 +569,7 @@ struct usb_device {
+@@ -571,7 +571,7 @@ struct usb_device {
        int maxchild;
  
        u32 quirks;
@@ -83284,7 +85313,7 @@ index 6b7ec37..4428419 100644
  
        unsigned long active_duration;
  
-@@ -1653,7 +1653,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
+@@ -1655,7 +1655,7 @@ void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
  
  extern int usb_control_msg(struct usb_device *dev, unsigned int pipe,
        __u8 request, __u8 requesttype, __u16 value, __u16 index,
@@ -83294,7 +85323,7 @@ index 6b7ec37..4428419 100644
        void *data, int len, int *actual_length, int timeout);
  extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
 diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
-index e452ba6..78f8e80 100644
+index d5952bb..9a626d4 100644
 --- a/include/linux/usb/renesas_usbhs.h
 +++ b/include/linux/usb/renesas_usbhs.h
 @@ -39,7 +39,7 @@ enum {
@@ -83307,10 +85336,10 @@ index e452ba6..78f8e80 100644
  /*
   * callback functions for platform
 diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
-index 4836ba3..603f6ee 100644
+index 9f3579f..3b2afa5 100644
 --- a/include/linux/user_namespace.h
 +++ b/include/linux/user_namespace.h
-@@ -33,7 +33,7 @@ struct user_namespace {
+@@ -38,7 +38,7 @@ struct user_namespace {
        struct key              *persistent_keyring_register;
        struct rw_semaphore     persistent_keyring_register_sem;
  #endif
@@ -83381,33 +85410,35 @@ index 6f8fbcf..4efc177 100644
 +      MODULE_GRSEC MODULE_RANDSTRUCT_PLUGIN
  
 diff --git a/include/linux/vga_switcheroo.h b/include/linux/vga_switcheroo.h
-index 502073a..a7de024 100644
+index b483abd..af305ad 100644
 --- a/include/linux/vga_switcheroo.h
 +++ b/include/linux/vga_switcheroo.h
-@@ -63,8 +63,8 @@ int vga_switcheroo_get_client_state(struct pci_dev *dev);
+@@ -63,9 +63,9 @@ int vga_switcheroo_get_client_state(struct pci_dev *dev);
  
  void vga_switcheroo_set_dynamic_switch(struct pci_dev *pdev, enum vga_switcheroo_state dynamic);
  
 -int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain);
--int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain);
 +int vga_switcheroo_init_domain_pm_ops(struct device *dev, dev_pm_domain_no_const *domain);
+ void vga_switcheroo_fini_domain_pm_ops(struct device *dev);
+-int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain);
 +int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, dev_pm_domain_no_const *domain);
  #else
  
  static inline void vga_switcheroo_unregister_client(struct pci_dev *dev) {}
-@@ -81,8 +81,8 @@ static inline int vga_switcheroo_get_client_state(struct pci_dev *dev) { return
+@@ -82,9 +82,9 @@ static inline int vga_switcheroo_get_client_state(struct pci_dev *dev) { return
  
  static inline void vga_switcheroo_set_dynamic_switch(struct pci_dev *pdev, enum vga_switcheroo_state dynamic) {}
  
 -static inline int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; }
--static inline int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; }
 +static inline int vga_switcheroo_init_domain_pm_ops(struct device *dev, dev_pm_domain_no_const *domain) { return -EINVAL; }
+ static inline void vga_switcheroo_fini_domain_pm_ops(struct device *dev) {}
+-static inline int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; }
 +static inline int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, dev_pm_domain_no_const *domain) { return -EINVAL; }
  
  #endif
  #endif /* _LINUX_VGA_SWITCHEROO_H_ */
 diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
-index 4b8a891..e9a2863 100644
+index b87696f..1d11de7 100644
 --- a/include/linux/vmalloc.h
 +++ b/include/linux/vmalloc.h
 @@ -16,6 +16,11 @@ struct vm_area_struct;              /* vma defining user mapping in mm_types.h */
@@ -83443,10 +85474,10 @@ index 4b8a891..e9a2863 100644
  /*
   *    Internals.  Dont't use..
 diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
-index 45c9cd1..20bd0bf 100644
+index 82e7db7..f8ce3d0 100644
 --- a/include/linux/vmstat.h
 +++ b/include/linux/vmstat.h
-@@ -102,18 +102,18 @@ static inline void vm_events_fold_cpu(int cpu)
+@@ -108,18 +108,18 @@ static inline void vm_events_fold_cpu(int cpu)
  /*
   * Zone based page accounting with per cpu differentials.
   */
@@ -83470,7 +85501,7 @@ index 45c9cd1..20bd0bf 100644
  #ifdef CONFIG_SMP
        if (x < 0)
                x = 0;
-@@ -121,10 +121,10 @@ static inline unsigned long global_page_state(enum zone_stat_item item)
+@@ -127,10 +127,10 @@ static inline unsigned long global_page_state(enum zone_stat_item item)
        return x;
  }
  
@@ -83483,7 +85514,7 @@ index 45c9cd1..20bd0bf 100644
  #ifdef CONFIG_SMP
        if (x < 0)
                x = 0;
-@@ -141,7 +141,7 @@ static inline unsigned long zone_page_state(struct zone *zone,
+@@ -147,7 +147,7 @@ static inline unsigned long zone_page_state(struct zone *zone,
  static inline unsigned long zone_page_state_snapshot(struct zone *zone,
                                        enum zone_stat_item item)
  {
@@ -83492,7 +85523,7 @@ index 45c9cd1..20bd0bf 100644
  
  #ifdef CONFIG_SMP
        int cpu;
-@@ -228,14 +228,14 @@ static inline void __mod_zone_page_state(struct zone *zone,
+@@ -234,14 +234,14 @@ static inline void __mod_zone_page_state(struct zone *zone,
  
  static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
  {
@@ -83535,7 +85566,7 @@ index 91b0a68..0e9adf6 100644
  ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size);
  int __vfs_setxattr_noperm(struct dentry *, const char *, const void *, size_t, int);
 diff --git a/include/linux/zlib.h b/include/linux/zlib.h
-index 9c5a6b4..09c9438 100644
+index 92dbbd3..13ab0b3 100644
 --- a/include/linux/zlib.h
 +++ b/include/linux/zlib.h
 @@ -31,6 +31,7 @@
@@ -83556,10 +85587,10 @@ index 9c5a6b4..09c9438 100644
     Returns the number of bytes that needs to be allocated for a per-
     stream workspace with the specified parameters.  A pointer to this
 diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
-index eec6e46..82d5641 100644
+index eb76cfd..9fd0e7c 100644
 --- a/include/media/v4l2-dev.h
 +++ b/include/media/v4l2-dev.h
-@@ -77,7 +77,7 @@ struct v4l2_file_operations {
+@@ -75,7 +75,7 @@ struct v4l2_file_operations {
        int (*mmap) (struct file *, struct vm_area_struct *);
        int (*open) (struct file *);
        int (*release) (struct file *);
@@ -83569,7 +85600,7 @@ index eec6e46..82d5641 100644
  /*
   * Newer version of video_device, handled by videodev2.c
 diff --git a/include/media/v4l2-device.h b/include/media/v4l2-device.h
-index c9b1593..a572459 100644
+index ffb69da..040393e 100644
 --- a/include/media/v4l2-device.h
 +++ b/include/media/v4l2-device.h
 @@ -95,7 +95,7 @@ int __must_check v4l2_device_register(struct device *dev, struct v4l2_device *v4
@@ -83582,10 +85613,10 @@ index c9b1593..a572459 100644
  /* Set v4l2_dev->dev to NULL. Call when the USB parent disconnects.
     Since the parent disappears this ensures that v4l2_dev doesn't have an
 diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h
-index d9fa68f..45c88d1 100644
+index 2a25dec..bf6dd8a 100644
 --- a/include/net/9p/transport.h
 +++ b/include/net/9p/transport.h
-@@ -63,7 +63,7 @@ struct p9_trans_module {
+@@ -62,7 +62,7 @@ struct p9_trans_module {
        int (*cancelled)(struct p9_client *, struct p9_req_t *req);
        int (*zc_request)(struct p9_client *, struct p9_req_t *,
                          char *, char *, int , int, int, int);
@@ -83595,7 +85626,7 @@ index d9fa68f..45c88d1 100644
  void v9fs_register_trans(struct p9_trans_module *m);
  void v9fs_unregister_trans(struct p9_trans_module *m);
 diff --git a/include/net/af_unix.h b/include/net/af_unix.h
-index a175ba4..196eb82 100644
+index a175ba4..196eb8242 100644
 --- a/include/net/af_unix.h
 +++ b/include/net/af_unix.h
 @@ -36,7 +36,7 @@ struct unix_skb_parms {
@@ -83608,13 +85639,13 @@ index a175ba4..196eb82 100644
  #define UNIXCB(skb)   (*(struct unix_skb_parms *)&((skb)->cb))
  #define UNIXSID(skb)  (&UNIXCB((skb)).secid)
 diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
-index 4abdcb2..945c5cc 100644
+index ead99f0..6263c4b 100644
 --- a/include/net/bluetooth/l2cap.h
 +++ b/include/net/bluetooth/l2cap.h
-@@ -601,7 +601,7 @@ struct l2cap_ops {
-       long                    (*get_sndtimeo) (struct l2cap_chan *chan);
-       struct sk_buff          *(*alloc_skb) (struct l2cap_chan *chan,
-                                              unsigned long len, int nb);
+@@ -608,7 +608,7 @@ struct l2cap_ops {
+                                                    unsigned char *kdata,
+                                                    struct iovec *iov,
+                                                    int len);
 -};
 +} __do_const;
  
@@ -83657,7 +85688,7 @@ index 8109a15..504466d 100644
  
  #endif
 diff --git a/include/net/genetlink.h b/include/net/genetlink.h
-index 93695f0..766d71c 100644
+index af10c2c..a431cc5 100644
 --- a/include/net/genetlink.h
 +++ b/include/net/genetlink.h
 @@ -120,7 +120,7 @@ struct genl_ops {
@@ -83683,60 +85714,49 @@ index 734d9b5..48a9a4b 100644
                return;
        }
 diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
-index 7a43138..bc76865 100644
+index 848e85c..051c7de 100644
 --- a/include/net/inet_connection_sock.h
 +++ b/include/net/inet_connection_sock.h
-@@ -62,7 +62,7 @@ struct inet_connection_sock_af_ops {
-       void        (*addr2sockaddr)(struct sock *sk, struct sockaddr *);
+@@ -63,7 +63,7 @@ struct inet_connection_sock_af_ops {
        int         (*bind_conflict)(const struct sock *sk,
                                     const struct inet_bind_bucket *tb, bool relax);
+       void        (*mtu_reduced)(struct sock *sk);
 -};
 +} __do_const;
  
  /** inet_connection_sock - INET connection oriented sock
   *
 diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h
-index 058271b..1a44af7 100644
+index 80479ab..0c3f647 100644
 --- a/include/net/inetpeer.h
 +++ b/include/net/inetpeer.h
-@@ -47,8 +47,8 @@ struct inet_peer {
+@@ -47,7 +47,7 @@ struct inet_peer {
         */
        union {
                struct {
 -                      atomic_t                        rid;            /* Frag reception counter */
--                      atomic_t                        ip_id_count;    /* IP ID for the next packet */
 +                      atomic_unchecked_t              rid;            /* Frag reception counter */
-+                      atomic_unchecked_t              ip_id_count;    /* IP ID for the next packet */
                };
                struct rcu_head         rcu;
                struct inet_peer        *gc_next;
-@@ -179,7 +179,7 @@ static inline int inet_getid(struct inet_peer *p, int more)
- {
-       more++;
-       inet_peer_refcheck(p);
--      return atomic_add_return(more, &p->ip_id_count) - more;
-+      return atomic_add_return_unchecked(more, &p->ip_id_count) - more;
- }
- #endif /* _NET_INETPEER_H */
 diff --git a/include/net/ip.h b/include/net/ip.h
-index 3ec2b0f..72435b6 100644
+index 0bb6207..a8878af 100644
 --- a/include/net/ip.h
 +++ b/include/net/ip.h
-@@ -220,7 +220,7 @@ static inline void snmp_mib_free(void __percpu *ptr[SNMP_ARRAY_SZ])
+@@ -316,7 +316,7 @@ static inline unsigned int ip_skb_dst_mtu(const struct sk_buff *skb)
+       }
+ }
  
- void inet_get_local_port_range(struct net *net, int *low, int *high);
+-u32 ip_idents_reserve(u32 hash, int segs);
++u32 ip_idents_reserve(u32 hash, int segs) __intentional_overflow(-1);
+ void __ip_select_ident(struct iphdr *iph, int segs);
  
--extern unsigned long *sysctl_local_reserved_ports;
-+extern unsigned long sysctl_local_reserved_ports[65536 / 8 / sizeof(unsigned long)];
- static inline int inet_is_reserved_local_port(int port)
- {
-       return test_bit(port, sysctl_local_reserved_ports);
+ static inline void ip_select_ident_segs(struct sk_buff *skb, struct sock *sk, int segs)
 diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
-index 9922093..a1755d6 100644
+index dc9d2a2..d985691 100644
 --- a/include/net/ip_fib.h
 +++ b/include/net/ip_fib.h
-@@ -169,7 +169,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh);
+@@ -170,7 +170,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh);
  
  #define FIB_RES_SADDR(net, res)                               \
        ((FIB_RES_NH(res).nh_saddr_genid ==             \
@@ -83746,19 +85766,19 @@ index 9922093..a1755d6 100644
         fib_info_update_nh_saddr((net), &FIB_RES_NH(res)))
  #define FIB_RES_GW(res)                       (FIB_RES_NH(res).nh_gw)
 diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
-index 5679d92..2e7a690 100644
+index 615b20b..fd4cbd8 100644
 --- a/include/net/ip_vs.h
 +++ b/include/net/ip_vs.h
-@@ -558,7 +558,7 @@ struct ip_vs_conn {
+@@ -534,7 +534,7 @@ struct ip_vs_conn {
        struct ip_vs_conn       *control;       /* Master control connection */
        atomic_t                n_control;      /* Number of controlled ones */
        struct ip_vs_dest       *dest;          /* real server */
 -      atomic_t                in_pkts;        /* incoming packet counter */
 +      atomic_unchecked_t      in_pkts;        /* incoming packet counter */
  
-       /* packet transmitter for different forwarding methods.  If it
-          mangles the packet, it must return NF_DROP or better NF_STOLEN,
-@@ -705,7 +705,7 @@ struct ip_vs_dest {
+       /* Packet transmitter for different forwarding methods.  If it
+        * mangles the packet, it must return NF_DROP or better NF_STOLEN,
+@@ -682,7 +682,7 @@ struct ip_vs_dest {
        __be16                  port;           /* port number of the server */
        union nf_inet_addr      addr;           /* IP address of the server */
        volatile unsigned int   flags;          /* dest status flags */
@@ -83767,7 +85787,7 @@ index 5679d92..2e7a690 100644
        atomic_t                weight;         /* server weight */
  
        atomic_t                refcnt;         /* reference counter */
-@@ -960,11 +960,11 @@ struct netns_ipvs {
+@@ -928,11 +928,11 @@ struct netns_ipvs {
        /* ip_vs_lblc */
        int                     sysctl_lblc_expiration;
        struct ctl_table_header *lblc_ctl_header;
@@ -83874,20 +85894,20 @@ index 567c681..cd73ac02 100644
  struct llc_sap_state {
        u8                         curr_state;
 diff --git a/include/net/mac80211.h b/include/net/mac80211.h
-index 8248e39..7610eec 100644
+index 0ad1f47..aaea45b 100644
 --- a/include/net/mac80211.h
 +++ b/include/net/mac80211.h
-@@ -4467,7 +4467,7 @@ struct rate_control_ops {
-       void (*add_sta_debugfs)(void *priv, void *priv_sta,
-                               struct dentry *dir);
+@@ -4648,7 +4648,7 @@ struct rate_control_ops {
        void (*remove_sta_debugfs)(void *priv, void *priv_sta);
+       u32 (*get_expected_throughput)(void *priv_sta);
 -};
 +} __do_const;
  
  static inline int rate_supported(struct ieee80211_sta *sta,
                                 enum ieee80211_band band,
 diff --git a/include/net/neighbour.h b/include/net/neighbour.h
-index 7277caf..fd095bc 100644
+index f60558d..e5ed9bd 100644
 --- a/include/net/neighbour.h
 +++ b/include/net/neighbour.h
 @@ -163,7 +163,7 @@ struct neigh_ops {
@@ -83899,15 +85919,7 @@ index 7277caf..fd095bc 100644
  
  struct pneigh_entry {
        struct pneigh_entry     *next;
-@@ -203,7 +203,6 @@ struct neigh_table {
-       void                    (*proxy_redo)(struct sk_buff *skb);
-       char                    *id;
-       struct neigh_parms      parms;
--      /* HACK. gc_* should follow parms without a gap! */
-       int                     gc_interval;
-       int                     gc_thresh1;
-       int                     gc_thresh2;
-@@ -218,7 +217,7 @@ struct neigh_table {
+@@ -217,7 +217,7 @@ struct neigh_table {
        struct neigh_statistics __percpu *stats;
        struct neigh_hash_table __rcu *nht;
        struct pneigh_entry     **phash_buckets;
@@ -83917,7 +85929,7 @@ index 7277caf..fd095bc 100644
  static inline int neigh_parms_family(struct neigh_parms *p)
  {
 diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
-index 5f9eb26..85699c4 100644
+index e0d6466..e2f3003 100644
 --- a/include/net/net_namespace.h
 +++ b/include/net/net_namespace.h
 @@ -129,8 +129,8 @@ struct net {
@@ -83952,7 +85964,7 @@ index 5f9eb26..85699c4 100644
  
  /*
   * Use these carefully.  If you implement a network device and it
-@@ -344,23 +348,23 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header)
+@@ -344,12 +348,12 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header)
  
  static inline int rt_genid_ipv4(struct net *net)
  {
@@ -83966,21 +85978,8 @@ index 5f9eb26..85699c4 100644
 +      atomic_inc_unchecked(&net->ipv4.rt_genid);
  }
  
- #if IS_ENABLED(CONFIG_IPV6)
- static inline int rt_genid_ipv6(struct net *net)
- {
--      return atomic_read(&net->ipv6.rt_genid);
-+      return atomic_read_unchecked(&net->ipv6.rt_genid);
- }
- static inline void rt_genid_bump_ipv6(struct net *net)
- {
--      atomic_inc(&net->ipv6.rt_genid);
-+      atomic_inc_unchecked(&net->ipv6.rt_genid);
- }
- #else
- static inline int rt_genid_ipv6(struct net *net)
-@@ -382,12 +386,12 @@ static inline void rt_genid_bump_all(struct net *net)
+ extern void (*__fib6_flush_trees)(struct net *net);
+@@ -376,12 +380,12 @@ static inline void rt_genid_bump_all(struct net *net)
  
  static inline int fnhe_genid(struct net *net)
  {
@@ -83995,21 +85994,8 @@ index 5f9eb26..85699c4 100644
  }
  
  #endif /* __NET_NET_NAMESPACE_H */
-diff --git a/include/net/netdma.h b/include/net/netdma.h
-index 8ba8ce2..99b7fff 100644
---- a/include/net/netdma.h
-+++ b/include/net/netdma.h
-@@ -24,7 +24,7 @@
- #include <linux/dmaengine.h>
- #include <linux/skbuff.h>
--int dma_skb_copy_datagram_iovec(struct dma_chan* chan,
-+int __intentional_overflow(3,5) dma_skb_copy_datagram_iovec(struct dma_chan* chan,
-               struct sk_buff *skb, int offset, struct iovec *to,
-               size_t len, struct dma_pinned_list *pinned_list);
 diff --git a/include/net/netlink.h b/include/net/netlink.h
-index 2b47eaa..6d5bcc2 100644
+index 7b903e1..ad9ca4b 100644
 --- a/include/net/netlink.h
 +++ b/include/net/netlink.h
 @@ -521,7 +521,7 @@ static inline void *nlmsg_get_pos(struct sk_buff *skb)
@@ -84022,10 +86008,10 @@ index 2b47eaa..6d5bcc2 100644
  
  /**
 diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h
-index 773cce3..6a11852 100644
+index 29d6a94..235d3d84 100644
 --- a/include/net/netns/conntrack.h
 +++ b/include/net/netns/conntrack.h
-@@ -13,10 +13,10 @@ struct nf_conntrack_ecache;
+@@ -14,10 +14,10 @@ struct nf_conntrack_ecache;
  struct nf_proto_net {
  #ifdef CONFIG_SYSCTL
        struct ctl_table_header *ctl_table_header;
@@ -84038,7 +86024,7 @@ index 773cce3..6a11852 100644
  #endif
  #endif
        unsigned int            users;
-@@ -59,7 +59,7 @@ struct nf_ip_net {
+@@ -60,7 +60,7 @@ struct nf_ip_net {
        struct nf_icmp_net      icmpv6;
  #if defined(CONFIG_SYSCTL) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT)
        struct ctl_table_header *ctl_table_header;
@@ -84048,19 +86034,19 @@ index 773cce3..6a11852 100644
  };
  
 diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
-index b2704fd0..421d717 100644
+index 24945ce..f19e42f 100644
 --- a/include/net/netns/ipv4.h
 +++ b/include/net/netns/ipv4.h
-@@ -79,7 +79,7 @@ struct netns_ipv4 {
+@@ -83,7 +83,7 @@ struct netns_ipv4 {
  
        struct ping_group_range ping_group_range;
  
 -      atomic_t dev_addr_genid;
 +      atomic_unchecked_t dev_addr_genid;
  
- #ifdef CONFIG_IP_MROUTE
- #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
-@@ -89,6 +89,6 @@ struct netns_ipv4 {
+ #ifdef CONFIG_SYSCTL
+       unsigned long *sysctl_local_reserved_ports;
+@@ -97,6 +97,6 @@ struct netns_ipv4 {
        struct fib_rules_ops    *mr_rules_ops;
  #endif
  #endif
@@ -84069,25 +86055,25 @@ index b2704fd0..421d717 100644
  };
  #endif
 diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
-index 21edaf1..4c5faae 100644
+index 69ae41f..4f94868 100644
 --- a/include/net/netns/ipv6.h
 +++ b/include/net/netns/ipv6.h
-@@ -73,8 +73,8 @@ struct netns_ipv6 {
+@@ -75,8 +75,8 @@ struct netns_ipv6 {
        struct fib_rules_ops    *mr6_rules_ops;
  #endif
  #endif
 -      atomic_t                dev_addr_genid;
--      atomic_t                rt_genid;
+-      atomic_t                fib6_sernum;
 +      atomic_unchecked_t      dev_addr_genid;
-+      atomic_unchecked_t      rt_genid;
++      atomic_unchecked_t      fib6_sernum;
  };
  
  #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6)
 diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h
-index 3492434..209f58c 100644
+index 9da7982..099321b9 100644
 --- a/include/net/netns/xfrm.h
 +++ b/include/net/netns/xfrm.h
-@@ -64,7 +64,7 @@ struct netns_xfrm {
+@@ -78,7 +78,7 @@ struct netns_xfrm {
  
        /* flow cache part */
        struct flow_cache       flow_cache_global;
@@ -84110,7 +86096,7 @@ index 026479b..d9b2829 100644
  
  struct pingfakehdr {
 diff --git a/include/net/protocol.h b/include/net/protocol.h
-index a7e986b..dc67bce 100644
+index d6fcc1f..ca277058 100644
 --- a/include/net/protocol.h
 +++ b/include/net/protocol.h
 @@ -49,7 +49,7 @@ struct net_protocol {
@@ -84132,7 +86118,7 @@ index a7e986b..dc67bce 100644
  #define INET6_PROTO_NOPOLICY  0x1
  #define INET6_PROTO_FINAL     0x2
 diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h
-index 72240e5..8c14bef 100644
+index e21b9f9..0191ef0 100644
 --- a/include/net/rtnetlink.h
 +++ b/include/net/rtnetlink.h
 @@ -93,7 +93,7 @@ struct rtnl_link_ops {
@@ -84160,7 +86146,7 @@ index 4a5b9a3..ca27d73 100644
                .combine = sctp_csum_combine,
        };
 diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
-index 7f4eeb3..37e8fe1 100644
+index 72a31db..aaa63d9 100644
 --- a/include/net/sctp/sm.h
 +++ b/include/net/sctp/sm.h
 @@ -80,7 +80,7 @@ typedef void (sctp_timer_event_t) (unsigned long);
@@ -84182,12 +86168,12 @@ index 7f4eeb3..37e8fe1 100644
  
  /* Get the size of a DATA chunk payload. */
 diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
-index 0dfcc92..7967849 100644
+index 4ff3f67..89ae38e 100644
 --- a/include/net/sctp/structs.h
 +++ b/include/net/sctp/structs.h
-@@ -507,7 +507,7 @@ struct sctp_pf {
-                                         struct sctp_association *asoc);
-       void (*addr_v4map) (struct sctp_sock *, union sctp_addr *);
+@@ -509,7 +509,7 @@ struct sctp_pf {
+       void (*to_sk_saddr)(union sctp_addr *, struct sock *sk);
+       void (*to_sk_daddr)(union sctp_addr *, struct sock *sk);
        struct sctp_af *af;
 -};
 +} __do_const;
@@ -84195,10 +86181,10 @@ index 0dfcc92..7967849 100644
  
  /* Structure to track chunk fragments that have been acked, but peer
 diff --git a/include/net/sock.h b/include/net/sock.h
-index 21569cf..dd60300 100644
+index 7db3db1..a915cca 100644
 --- a/include/net/sock.h
 +++ b/include/net/sock.h
-@@ -348,7 +348,7 @@ struct sock {
+@@ -355,7 +355,7 @@ struct sock {
        unsigned int            sk_napi_id;
        unsigned int            sk_ll_usec;
  #endif
@@ -84207,7 +86193,7 @@ index 21569cf..dd60300 100644
        int                     sk_rcvbuf;
  
        struct sk_filter __rcu  *sk_filter;
-@@ -1036,7 +1036,7 @@ struct proto {
+@@ -1048,7 +1048,7 @@ struct proto {
        void                    (*destroy_cgroup)(struct mem_cgroup *memcg);
        struct cg_proto         *(*proto_cgroup)(struct mem_cgroup *memcg);
  #endif
@@ -84216,7 +86202,7 @@ index 21569cf..dd60300 100644
  
  /*
   * Bits in struct cg_proto.flags
-@@ -1223,7 +1223,7 @@ static inline u64 memcg_memory_allocated_read(struct cg_proto *prot)
+@@ -1235,7 +1235,7 @@ static inline u64 memcg_memory_allocated_read(struct cg_proto *prot)
        return ret >> PAGE_SHIFT;
  }
  
@@ -84225,7 +86211,7 @@ index 21569cf..dd60300 100644
  sk_memory_allocated(const struct sock *sk)
  {
        struct proto *prot = sk->sk_prot;
-@@ -1368,7 +1368,7 @@ struct sock_iocb {
+@@ -1380,7 +1380,7 @@ struct sock_iocb {
        struct scm_cookie       *scm;
        struct msghdr           *msg, async_msg;
        struct kiocb            *kiocb;
@@ -84234,18 +86220,7 @@ index 21569cf..dd60300 100644
  
  static inline struct sock_iocb *kiocb_to_siocb(struct kiocb *iocb)
  {
-@@ -1728,8 +1728,8 @@ sk_dst_get(struct sock *sk)
-       rcu_read_lock();
-       dst = rcu_dereference(sk->sk_dst_cache);
--      if (dst)
--              dst_hold(dst);
-+      if (dst && !atomic_inc_not_zero(&dst->__refcnt))
-+              dst = NULL;
-       rcu_read_unlock();
-       return dst;
- }
-@@ -1803,7 +1803,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
+@@ -1820,7 +1820,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
  }
  
  static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff *skb,
@@ -84254,7 +86229,7 @@ index 21569cf..dd60300 100644
                                           int copy, int offset)
  {
        if (skb->ip_summed == CHECKSUM_NONE) {
-@@ -2065,7 +2065,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
+@@ -2092,7 +2092,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk)
        }
  }
  
@@ -84264,40 +86239,40 @@ index 21569cf..dd60300 100644
  /**
   * sk_page_frag - return an appropriate page_frag
 diff --git a/include/net/tcp.h b/include/net/tcp.h
-index 87d8774..cf214f8 100644
+index 4062b4f..9ff45e7 100644
 --- a/include/net/tcp.h
 +++ b/include/net/tcp.h
-@@ -541,7 +541,7 @@ void tcp_retransmit_timer(struct sock *sk);
+@@ -519,7 +519,7 @@ void tcp_retransmit_timer(struct sock *sk);
  void tcp_xmit_retransmit_queue(struct sock *);
  void tcp_simple_retransmit(struct sock *);
  int tcp_trim_head(struct sock *, struct sk_buff *, u32);
--int tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int);
-+int __intentional_overflow(3) tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int);
+-int tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int, gfp_t);
++int __intentional_overflow(3) tcp_fragment(struct sock *, struct sk_buff *, u32, unsigned int, gfp_t);
  
  void tcp_send_probe0(struct sock *);
  void tcp_send_partial(struct sock *);
-@@ -715,8 +715,8 @@ struct tcp_skb_cb {
-               struct inet6_skb_parm   h6;
- #endif
-       } header;       /* For incoming frames          */
+@@ -692,8 +692,8 @@ static inline u32 tcp_skb_timestamp(const struct sk_buff *skb)
+  * If this grows please adjust skbuff.h:skbuff->cb[xxx] size appropriately.
+  */
+ struct tcp_skb_cb {
 -      __u32           seq;            /* Starting sequence number     */
 -      __u32           end_seq;        /* SEQ + FIN + SYN + datalen    */
 +      __u32           seq __intentional_overflow(0);  /* Starting sequence number     */
 +      __u32           end_seq __intentional_overflow(0);      /* SEQ + FIN + SYN + datalen    */
-       __u32           when;           /* used to compute rtt's        */
-       __u8            tcp_flags;      /* TCP header flags. (tcp[13])  */
-@@ -730,7 +730,7 @@ struct tcp_skb_cb {
+       union {
+               /* Note : tcp_tw_isn is used in input path only
+                *        (isn chosen by tcp_timewait_state_process())
+@@ -718,7 +718,7 @@ struct tcp_skb_cb {
  
        __u8            ip_dsfield;     /* IPv4 tos or IPv6 dsfield     */
        /* 1 byte hole */
 -      __u32           ack_seq;        /* Sequence number ACK'd        */
 +      __u32           ack_seq __intentional_overflow(0);      /* Sequence number ACK'd        */
- };
- #define TCP_SKB_CB(__skb)     ((struct tcp_skb_cb *)&((__skb)->cb[0]))
+       union {
+               struct inet_skb_parm    h4;
+ #if IS_ENABLED(CONFIG_IPV6)
 diff --git a/include/net/xfrm.h b/include/net/xfrm.h
-index 116e9c7..3070537 100644
+index dc4865e..152ee4c 100644
 --- a/include/net/xfrm.h
 +++ b/include/net/xfrm.h
 @@ -285,7 +285,6 @@ struct xfrm_dst;
@@ -84344,7 +86319,7 @@ index 116e9c7..3070537 100644
        u32                     priority;
        u32                     index;
        struct xfrm_mark        mark;
-@@ -1180,6 +1179,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk)
+@@ -1167,6 +1166,7 @@ static inline void xfrm_sk_free_policy(struct sock *sk)
  }
  
  void xfrm_garbage_collect(struct net *net);
@@ -84352,7 +86327,7 @@ index 116e9c7..3070537 100644
  
  #else
  
-@@ -1218,6 +1218,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir,
+@@ -1205,6 +1205,9 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir,
  static inline void xfrm_garbage_collect(struct net *net)
  {
  }
@@ -84397,10 +86372,10 @@ index 52beadf..598734c 100644
        u8                             qfull;
        enum fc_lport_state            state;
 diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
-index 27ab310..60dc245 100644
+index 27ecee7..5f42632 100644
 --- a/include/scsi/scsi_device.h
 +++ b/include/scsi/scsi_device.h
-@@ -187,9 +187,9 @@ struct scsi_device {
+@@ -186,9 +186,9 @@ struct scsi_device {
        unsigned int max_device_blocked; /* what device_blocked counts down from  */
  #define SCSI_DEFAULT_DEVICE_BLOCKED   3
  
@@ -84414,10 +86389,10 @@ index 27ab310..60dc245 100644
        struct device           sdev_gendev,
                                sdev_dev;
 diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h
-index 8c79980..723f6f9 100644
+index 007a0bc..7188db8 100644
 --- a/include/scsi/scsi_transport_fc.h
 +++ b/include/scsi/scsi_transport_fc.h
-@@ -752,7 +752,8 @@ struct fc_function_template {
+@@ -756,7 +756,8 @@ struct fc_function_template {
        unsigned long   show_host_system_hostname:1;
  
        unsigned long   disable_target_scan:1;
@@ -84441,32 +86416,32 @@ index ae6c3b8..fd748ac 100644
  /**
   * struct snd_compr: Compressed device
 diff --git a/include/sound/soc.h b/include/sound/soc.h
-index 0b83168..d67280a 100644
+index 7ba7130..d46594d 100644
 --- a/include/sound/soc.h
 +++ b/include/sound/soc.h
-@@ -782,7 +782,7 @@ struct snd_soc_codec_driver {
-       /* probe ordering - for components with runtime dependencies */
-       int probe_order;
-       int remove_order;
+@@ -853,7 +853,7 @@ struct snd_soc_codec_driver {
+                            enum snd_soc_dapm_type, int);
+       bool ignore_pmdown_time;  /* Doesn't benefit from pmdown delay */
 -};
 +} __do_const;
  
  /* SoC platform interface */
  struct snd_soc_platform_driver {
-@@ -828,7 +828,7 @@ struct snd_soc_platform_driver {
-       unsigned int (*read)(struct snd_soc_platform *, unsigned int);
-       int (*write)(struct snd_soc_platform *, unsigned int, unsigned int);
+@@ -882,7 +882,7 @@ struct snd_soc_platform_driver {
+       const struct snd_compr_ops *compr_ops;
        int (*bespoke_trigger)(struct snd_pcm_substream *, int);
 -};
 +} __do_const;
  
- struct snd_soc_platform {
+ struct snd_soc_dai_link_component {
        const char *name;
 diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
-index 9ec9864..e2ee1ee 100644
+index 23c518a..d6ef510 100644
 --- a/include/target/target_core_base.h
 +++ b/include/target/target_core_base.h
-@@ -761,7 +761,7 @@ struct se_device {
+@@ -764,7 +764,7 @@ struct se_device {
        atomic_long_t           write_bytes;
        /* Active commands on this virtual SE device */
        atomic_t                simple_cmds;
@@ -84535,7 +86510,7 @@ index 0000000..fb634b7
 +/* This part must be outside protection */
 +#include <trace/define_trace.h>
 diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
-index 1c09820..7f5ec79 100644
+index 3608beb..df39d8a 100644
 --- a/include/trace/events/irq.h
 +++ b/include/trace/events/irq.h
 @@ -36,7 +36,7 @@ struct softirq_action;
@@ -84669,7 +86644,7 @@ index d876736..ccce5c0 100644
  #define __cpu_to_le64s(x) do { (void)(x); } while (0)
  #define __le64_to_cpus(x) do { (void)(x); } while (0)
 diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h
-index ef6103b..d4e65dd 100644
+index ea9bf25..5140c61 100644
 --- a/include/uapi/linux/elf.h
 +++ b/include/uapi/linux/elf.h
 @@ -37,6 +37,17 @@ typedef __s64       Elf64_Sxword;
@@ -84786,7 +86761,7 @@ index 0e011eb..82681b1 100644
  #ifdef __HAVE_BUILTIN_BSWAP64__
        return __builtin_bswap64(val);
 diff --git a/include/uapi/linux/sysctl.h b/include/uapi/linux/sysctl.h
-index 6d67213..552fdd9 100644
+index 43aaba1..1c30b48 100644
 --- a/include/uapi/linux/sysctl.h
 +++ b/include/uapi/linux/sysctl.h
 @@ -155,8 +155,6 @@ enum
@@ -84798,21 +86773,8 @@ index 6d67213..552fdd9 100644
  /* CTL_VM names: */
  enum
  {
-diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
-index ea468ee..4d367a5 100644
---- a/include/uapi/linux/videodev2.h
-+++ b/include/uapi/linux/videodev2.h
-@@ -1248,7 +1248,7 @@ struct v4l2_ext_control {
-       union {
-               __s32 value;
-               __s64 value64;
--              char *string;
-+              char __user *string;
-       };
- } __attribute__ ((packed));
 diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h
-index c38355c..17a57bc 100644
+index 1590c49..5eab462 100644
 --- a/include/uapi/linux/xattr.h
 +++ b/include/uapi/linux/xattr.h
 @@ -73,5 +73,9 @@
@@ -84857,10 +86819,10 @@ index 30f5362..8ed8ac9 100644
        void *pmi_pal;
        u8 *vbe_state_orig;             /*
 diff --git a/init/Kconfig b/init/Kconfig
-index 9d3585b..ad45d34 100644
+index 2081a4d..98d1149 100644
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1093,6 +1093,7 @@ endif # CGROUPS
+@@ -1150,6 +1150,7 @@ endif # CGROUPS
  
  config CHECKPOINT_RESTORE
        bool "Checkpoint/restore support" if EXPERT
@@ -84868,7 +86830,7 @@ index 9d3585b..ad45d34 100644
        default n
        help
          Enables additional kernel features in a sake of checkpoint/restore.
-@@ -1570,7 +1571,7 @@ config SLUB_DEBUG
+@@ -1659,7 +1660,7 @@ config SLUB_DEBUG
  
  config COMPAT_BRK
        bool "Disable heap randomization"
@@ -84877,7 +86839,7 @@ index 9d3585b..ad45d34 100644
        help
          Randomizing heap placement makes heap exploits harder, but it
          also breaks ancient binaries (including anything libc5 based).
-@@ -1858,7 +1859,7 @@ config INIT_ALL_POSSIBLE
+@@ -1990,7 +1991,7 @@ config INIT_ALL_POSSIBLE
  config STOP_MACHINE
        bool
        default y
@@ -84901,10 +86863,10 @@ index 7bc47ee..6da2dc7 100644
  ifneq ($(CONFIG_BLK_DEV_INITRD),y)
  obj-y                          += noinitramfs.o
 diff --git a/init/do_mounts.c b/init/do_mounts.c
-index 82f2288..ea1430a 100644
+index 9b3565c..3f90cf9 100644
 --- a/init/do_mounts.c
 +++ b/init/do_mounts.c
-@@ -359,11 +359,11 @@ static void __init get_fs_names(char *page)
+@@ -360,11 +360,11 @@ static void __init get_fs_names(char *page)
  static int __init do_mount_root(char *name, char *fs, int flags, void *data)
  {
        struct super_block *s;
@@ -84918,7 +86880,7 @@ index 82f2288..ea1430a 100644
        s = current->fs->pwd.dentry->d_sb;
        ROOT_DEV = s->s_dev;
        printk(KERN_INFO
-@@ -484,18 +484,18 @@ void __init change_floppy(char *fmt, ...)
+@@ -485,18 +485,18 @@ void __init change_floppy(char *fmt, ...)
        va_start(args, fmt);
        vsprintf(buf, fmt, args);
        va_end(args);
@@ -84940,7 +86902,7 @@ index 82f2288..ea1430a 100644
                termios.c_lflag |= ICANON;
                sys_ioctl(fd, TCSETSF, (long)&termios);
                sys_close(fd);
-@@ -589,8 +589,8 @@ void __init prepare_namespace(void)
+@@ -590,8 +590,8 @@ void __init prepare_namespace(void)
        mount_root();
  out:
        devtmpfs_mount("dev");
@@ -85115,10 +87077,19 @@ index ba0a7f36..2bcf1d5 100644
        { INIT_THREAD_INFO(init_task) };
 +#endif
 diff --git a/init/initramfs.c b/init/initramfs.c
-index a8497fa..35b3c90 100644
+index ad1bd77..dca2c1b 100644
 --- a/init/initramfs.c
 +++ b/init/initramfs.c
-@@ -84,7 +84,7 @@ static void __init free_hash(void)
+@@ -25,7 +25,7 @@ static ssize_t __init xwrite(int fd, const char *p, size_t count)
+       /* sys_write only can write MAX_RW_COUNT aka 2G-4K bytes at most */
+       while (count) {
+-              ssize_t rv = sys_write(fd, p, count);
++              ssize_t rv = sys_write(fd, (char __force_user *)p, count);
+               if (rv < 0) {
+                       if (rv == -EINTR || rv == -EAGAIN)
+@@ -107,7 +107,7 @@ static void __init free_hash(void)
        }
  }
  
@@ -85127,7 +87098,7 @@ index a8497fa..35b3c90 100644
  {
        struct timespec t[2];
  
-@@ -119,7 +119,7 @@ static void __init dir_utime(void)
+@@ -142,7 +142,7 @@ static void __init dir_utime(void)
        struct dir_entry *de, *tmp;
        list_for_each_entry_safe(de, tmp, &dir_list, list) {
                list_del(&de->list);
@@ -85136,7 +87107,7 @@ index a8497fa..35b3c90 100644
                kfree(de->name);
                kfree(de);
        }
-@@ -281,7 +281,7 @@ static int __init maybe_link(void)
+@@ -304,7 +304,7 @@ static int __init maybe_link(void)
        if (nlink >= 2) {
                char *old = find_link(major, minor, ino, mode, collected);
                if (old)
@@ -85145,12 +87116,12 @@ index a8497fa..35b3c90 100644
        }
        return 0;
  }
-@@ -290,11 +290,11 @@ static void __init clean_path(char *path, umode_t mode)
+@@ -313,11 +313,11 @@ static void __init clean_path(char *path, umode_t fmode)
  {
        struct stat st;
  
--      if (!sys_newlstat(path, &st) && (st.st_mode^mode) & S_IFMT) {
-+      if (!sys_newlstat((char __force_user *)path, (struct stat __force_user *)&st) && (st.st_mode^mode) & S_IFMT) {
+-      if (!sys_newlstat(path, &st) && (st.st_mode ^ fmode) & S_IFMT) {
++      if (!sys_newlstat((char __force_user *)path, (struct stat __force_user *)&st) && (st.st_mode ^ fmode) & S_IFMT) {
                if (S_ISDIR(st.st_mode))
 -                      sys_rmdir(path);
 +                      sys_rmdir((char __force_user *)path);
@@ -85160,7 +87131,7 @@ index a8497fa..35b3c90 100644
        }
  }
  
-@@ -315,7 +315,7 @@ static int __init do_name(void)
+@@ -338,7 +338,7 @@ static int __init do_name(void)
                        int openflags = O_WRONLY|O_CREAT;
                        if (ml != 1)
                                openflags |= O_TRUNC;
@@ -85169,7 +87140,7 @@ index a8497fa..35b3c90 100644
  
                        if (wfd >= 0) {
                                sys_fchown(wfd, uid, gid);
-@@ -327,17 +327,17 @@ static int __init do_name(void)
+@@ -350,17 +350,17 @@ static int __init do_name(void)
                        }
                }
        } else if (S_ISDIR(mode)) {
@@ -85194,26 +87165,16 @@ index a8497fa..35b3c90 100644
                }
        }
        return 0;
-@@ -346,15 +346,15 @@ static int __init do_name(void)
- static int __init do_copy(void)
- {
-       if (count >= body_len) {
--              sys_write(wfd, victim, body_len);
-+              sys_write(wfd, (char __force_user *)victim, body_len);
+@@ -372,7 +372,7 @@ static int __init do_copy(void)
+               if (xwrite(wfd, victim, body_len) != body_len)
+                       error("write error");
                sys_close(wfd);
 -              do_utime(vcollected, mtime);
 +              do_utime((char __force_user *)vcollected, mtime);
                kfree(vcollected);
                eat(body_len);
                state = SkipIt;
-               return 0;
-       } else {
--              sys_write(wfd, victim, count);
-+              sys_write(wfd, (char __force_user *)victim, count);
-               body_len -= count;
-               eat(count);
-               return 1;
-@@ -365,9 +365,9 @@ static int __init do_symlink(void)
+@@ -390,9 +390,9 @@ static int __init do_symlink(void)
  {
        collected[N_ALIGN(name_len) + body_len] = '\0';
        clean_path(collected, 0);
@@ -85227,10 +87188,10 @@ index a8497fa..35b3c90 100644
        next_state = Reset;
        return 0;
 diff --git a/init/main.c b/init/main.c
-index 48655ce..d0113e4 100644
+index 321d0ce..91b53e5 100644
 --- a/init/main.c
 +++ b/init/main.c
-@@ -97,6 +97,8 @@ extern void radix_tree_init(void);
+@@ -98,6 +98,8 @@ extern void radix_tree_init(void);
  static inline void mark_rodata_ro(void) { }
  #endif
  
@@ -85239,7 +87200,7 @@ index 48655ce..d0113e4 100644
  /*
   * Debug helper: via this flag we know that we are in 'early bootup code'
   * where only the boot processor is running with IRQ disabled.  This means
-@@ -158,6 +160,75 @@ static int __init set_reset_devices(char *str)
+@@ -159,6 +161,75 @@ static int __init set_reset_devices(char *str)
  
  __setup("reset_devices", set_reset_devices);
  
@@ -85312,18 +87273,28 @@ index 48655ce..d0113e4 100644
 +__setup("pax_softmode=", setup_pax_softmode);
 +#endif
 +
- static const char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
- const char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
+ static const char *argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
+ const char *envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
  static const char *panic_later, *panic_param;
-@@ -688,25 +759,24 @@ int __init_or_module do_one_initcall(initcall_t fn)
+@@ -728,7 +799,7 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn)
+       struct blacklist_entry *entry;
+       char *fn_name;
+-      fn_name = kasprintf(GFP_KERNEL, "%pf", fn);
++      fn_name = kasprintf(GFP_KERNEL, "%pX", fn);
+       if (!fn_name)
+               return false;
+@@ -780,7 +851,7 @@ int __init_or_module do_one_initcall(initcall_t fn)
  {
        int count = preempt_count();
        int ret;
 -      char msgbuf[64];
 +      const char *msg1 = "", *msg2 = "";
  
-       if (initcall_debug)
-               ret = do_one_initcall_debug(fn);
+       if (initcall_blacklisted(fn))
+               return -EPERM;
+@@ -790,18 +861,17 @@ int __init_or_module do_one_initcall(initcall_t fn)
        else
                ret = fn();
  
@@ -85346,7 +87317,7 @@ index 48655ce..d0113e4 100644
        return ret;
  }
  
-@@ -813,8 +883,8 @@ static int run_init_process(const char *init_filename)
+@@ -907,8 +977,8 @@ static int run_init_process(const char *init_filename)
  {
        argv_init[0] = init_filename;
        return do_execve(getname_kernel(init_filename),
@@ -85357,7 +87328,7 @@ index 48655ce..d0113e4 100644
  }
  
  static int try_to_run_init_process(const char *init_filename)
-@@ -831,6 +901,10 @@ static int try_to_run_init_process(const char *init_filename)
+@@ -925,6 +995,10 @@ static int try_to_run_init_process(const char *init_filename)
        return ret;
  }
  
@@ -85368,7 +87339,7 @@ index 48655ce..d0113e4 100644
  static noinline void __init kernel_init_freeable(void);
  
  static int __ref kernel_init(void *unused)
-@@ -855,6 +929,11 @@ static int __ref kernel_init(void *unused)
+@@ -949,6 +1023,11 @@ static int __ref kernel_init(void *unused)
                       ramdisk_execute_command, ret);
        }
  
@@ -85380,7 +87351,7 @@ index 48655ce..d0113e4 100644
        /*
         * We try each of these until one succeeds.
         *
-@@ -910,7 +989,7 @@ static noinline void __init kernel_init_freeable(void)
+@@ -1004,7 +1083,7 @@ static noinline void __init kernel_init_freeable(void)
        do_basic_setup();
  
        /* Open the /dev/console on the rootfs, this should never fail */
@@ -85389,7 +87360,7 @@ index 48655ce..d0113e4 100644
                pr_err("Warning: unable to open an initial console.\n");
  
        (void) sys_dup(0);
-@@ -923,11 +1002,13 @@ static noinline void __init kernel_init_freeable(void)
+@@ -1017,11 +1096,13 @@ static noinline void __init kernel_init_freeable(void)
        if (!ramdisk_execute_command)
                ramdisk_execute_command = "/init";
  
@@ -85405,7 +87376,7 @@ index 48655ce..d0113e4 100644
         * Ok, we have completed the initial bootup, and
         * we're essentially up and running. Get rid of the
 diff --git a/ipc/compat.c b/ipc/compat.c
-index 45d035d..e4a7f99 100644
+index 9b3c85f..1c4d897 100644
 --- a/ipc/compat.c
 +++ b/ipc/compat.c
 @@ -396,7 +396,7 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second,
@@ -85418,11 +87389,11 @@ index 45d035d..e4a7f99 100644
        case SHMDT:
                return sys_shmdt(compat_ptr(ptr));
 diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c
-index 998d31b..30c24df 100644
+index e8075b2..76f2c6a 100644
 --- a/ipc/ipc_sysctl.c
 +++ b/ipc/ipc_sysctl.c
-@@ -30,7 +30,7 @@ static void *get_ipc(ctl_table *table)
- static int proc_ipc_dointvec(ctl_table *table, int write,
+@@ -30,7 +30,7 @@ static void *get_ipc(struct ctl_table *table)
+ static int proc_ipc_dointvec(struct ctl_table *table, int write,
        void __user *buffer, size_t *lenp, loff_t *ppos)
  {
 -      struct ctl_table ipc_table;
@@ -85430,8 +87401,8 @@ index 998d31b..30c24df 100644
  
        memcpy(&ipc_table, table, sizeof(ipc_table));
        ipc_table.data = get_ipc(table);
-@@ -41,7 +41,7 @@ static int proc_ipc_dointvec(ctl_table *table, int write,
- static int proc_ipc_dointvec_minmax(ctl_table *table, int write,
+@@ -41,7 +41,7 @@ static int proc_ipc_dointvec(struct ctl_table *table, int write,
+ static int proc_ipc_dointvec_minmax(struct ctl_table *table, int write,
        void __user *buffer, size_t *lenp, loff_t *ppos)
  {
 -      struct ctl_table ipc_table;
@@ -85439,8 +87410,8 @@ index 998d31b..30c24df 100644
  
        memcpy(&ipc_table, table, sizeof(ipc_table));
        ipc_table.data = get_ipc(table);
-@@ -65,7 +65,7 @@ static int proc_ipc_dointvec_minmax_orphans(ctl_table *table, int write,
- static int proc_ipc_callback_dointvec_minmax(ctl_table *table, int write,
+@@ -65,7 +65,7 @@ static int proc_ipc_dointvec_minmax_orphans(struct ctl_table *table, int write,
+ static int proc_ipc_callback_dointvec_minmax(struct ctl_table *table, int write,
        void __user *buffer, size_t *lenp, loff_t *ppos)
  {
 -      struct ctl_table ipc_table;
@@ -85448,8 +87419,8 @@ index 998d31b..30c24df 100644
        size_t lenp_bef = *lenp;
        int rc;
  
-@@ -88,7 +88,7 @@ static int proc_ipc_callback_dointvec_minmax(ctl_table *table, int write,
- static int proc_ipc_doulongvec_minmax(ctl_table *table, int write,
+@@ -88,7 +88,7 @@ static int proc_ipc_callback_dointvec_minmax(struct ctl_table *table, int write,
+ static int proc_ipc_doulongvec_minmax(struct ctl_table *table, int write,
        void __user *buffer, size_t *lenp, loff_t *ppos)
  {
 -      struct ctl_table ipc_table;
@@ -85458,20 +87429,20 @@ index 998d31b..30c24df 100644
        ipc_table.data = get_ipc(table);
  
 @@ -122,7 +122,7 @@ static void ipc_auto_callback(int val)
- static int proc_ipcauto_dointvec_minmax(ctl_table *table, int write,
+ static int proc_ipcauto_dointvec_minmax(struct ctl_table *table, int write,
        void __user *buffer, size_t *lenp, loff_t *ppos)
  {
 -      struct ctl_table ipc_table;
 +      ctl_table_no_const ipc_table;
-       size_t lenp_bef = *lenp;
        int oldval;
        int rc;
 diff --git a/ipc/mq_sysctl.c b/ipc/mq_sysctl.c
-index 5bb8bfe..a38ec05 100644
+index 68d4e95..1477ded 100644
 --- a/ipc/mq_sysctl.c
 +++ b/ipc/mq_sysctl.c
-@@ -25,7 +25,7 @@ static void *get_mq(ctl_table *table)
- static int proc_mq_dointvec(ctl_table *table, int write,
+@@ -25,7 +25,7 @@ static void *get_mq(struct ctl_table *table)
+ static int proc_mq_dointvec(struct ctl_table *table, int write,
                            void __user *buffer, size_t *lenp, loff_t *ppos)
  {
 -      struct ctl_table mq_table;
@@ -85479,8 +87450,8 @@ index 5bb8bfe..a38ec05 100644
        memcpy(&mq_table, table, sizeof(mq_table));
        mq_table.data = get_mq(table);
  
-@@ -35,7 +35,7 @@ static int proc_mq_dointvec(ctl_table *table, int write,
- static int proc_mq_dointvec_minmax(ctl_table *table, int write,
+@@ -35,7 +35,7 @@ static int proc_mq_dointvec(struct ctl_table *table, int write,
+ static int proc_mq_dointvec_minmax(struct ctl_table *table, int write,
        void __user *buffer, size_t *lenp, loff_t *ppos)
  {
 -      struct ctl_table mq_table;
@@ -85500,69 +87471,8 @@ index 4fcf39a..d3cc2ec 100644
                spin_lock(&mq_lock);
                if (u->mq_bytes + mq_bytes < u->mq_bytes ||
                    u->mq_bytes + mq_bytes > rlimit(RLIMIT_MSGQUEUE)) {
-diff --git a/ipc/msg.c b/ipc/msg.c
-index 6498531..b0ff3c8 100644
---- a/ipc/msg.c
-+++ b/ipc/msg.c
-@@ -303,18 +303,19 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
-       return security_msg_queue_associate(msq, msgflg);
- }
-+static struct ipc_ops msg_ops = {
-+      .getnew         = newque,
-+      .associate      = msg_security,
-+      .more_checks    = NULL
-+};
-+
- SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg)
- {
-       struct ipc_namespace *ns;
--      struct ipc_ops msg_ops;
-       struct ipc_params msg_params;
-       ns = current->nsproxy->ipc_ns;
--      msg_ops.getnew = newque;
--      msg_ops.associate = msg_security;
--      msg_ops.more_checks = NULL;
--
-       msg_params.key = key;
-       msg_params.flg = msgflg;
-diff --git a/ipc/sem.c b/ipc/sem.c
-index bee5554..e9af81dd 100644
---- a/ipc/sem.c
-+++ b/ipc/sem.c
-@@ -561,10 +561,15 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
-       return 0;
- }
-+static struct ipc_ops sem_ops = {
-+      .getnew         = newary,
-+      .associate      = sem_security,
-+      .more_checks    = sem_more_checks
-+};
-+
- SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
- {
-       struct ipc_namespace *ns;
--      struct ipc_ops sem_ops;
-       struct ipc_params sem_params;
-       ns = current->nsproxy->ipc_ns;
-@@ -572,10 +577,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
-       if (nsems < 0 || nsems > ns->sc_semmsl)
-               return -EINVAL;
--      sem_ops.getnew = newary;
--      sem_ops.associate = sem_security;
--      sem_ops.more_checks = sem_more_checks;
--
-       sem_params.key = key;
-       sem_params.flg = semflg;
-       sem_params.u.nsems = nsems;
 diff --git a/ipc/shm.c b/ipc/shm.c
-index 7645961..afc7f02 100644
+index 0145479..3d27947 100644
 --- a/ipc/shm.c
 +++ b/ipc/shm.c
 @@ -72,6 +72,14 @@ static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp);
@@ -85571,56 +87481,26 @@ index 7645961..afc7f02 100644
  
 +#ifdef CONFIG_GRKERNSEC
 +extern int gr_handle_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
-+                         const time_t shm_createtime, const kuid_t cuid,
++                         const u64 shm_createtime, const kuid_t cuid,
 +                         const int shmid);
 +extern int gr_chroot_shmat(const pid_t shm_cprid, const pid_t shm_lapid,
-+                         const time_t shm_createtime);
++                         const u64 shm_createtime);
 +#endif
 +
  void shm_init_ns(struct ipc_namespace *ns)
  {
        ns->shm_ctlmax = SHMMAX;
-@@ -553,6 +561,14 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
+@@ -559,6 +567,9 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
        shp->shm_lprid = 0;
        shp->shm_atim = shp->shm_dtim = 0;
        shp->shm_ctim = get_seconds();
 +#ifdef CONFIG_GRKERNSEC
-+      {
-+              struct timespec timeval;
-+              do_posix_clock_monotonic_gettime(&timeval);
-+
-+              shp->shm_createtime = timeval.tv_sec;
-+      }
++      shp->shm_createtime = ktime_get_ns();
 +#endif
        shp->shm_segsz = size;
        shp->shm_nattch = 0;
        shp->shm_file = file;
-@@ -606,18 +622,19 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
-       return 0;
- }
-+static struct ipc_ops shm_ops = {
-+      .getnew         = newseg,
-+      .associate      = shm_security,
-+      .more_checks    = shm_more_checks
-+};
-+
- SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg)
- {
-       struct ipc_namespace *ns;
--      struct ipc_ops shm_ops;
-       struct ipc_params shm_params;
-       ns = current->nsproxy->ipc_ns;
--      shm_ops.getnew = newseg;
--      shm_ops.associate = shm_security;
--      shm_ops.more_checks = shm_more_checks;
--
-       shm_params.key = key;
-       shm_params.flg = shmflg;
-       shm_params.u.size = size;
-@@ -1088,6 +1105,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
+@@ -1095,6 +1106,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
                f_mode = FMODE_READ | FMODE_WRITE;
        }
        if (shmflg & SHM_EXEC) {
@@ -85633,7 +87513,7 @@ index 7645961..afc7f02 100644
                prot |= PROT_EXEC;
                acc_mode |= S_IXUGO;
        }
-@@ -1112,6 +1135,15 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
+@@ -1119,6 +1136,15 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
        if (err)
                goto out_unlock;
  
@@ -85649,7 +87529,7 @@ index 7645961..afc7f02 100644
        ipc_lock_object(&shp->shm_perm);
  
        /* check if shm_destroy() is tearing down shp */
-@@ -1124,6 +1156,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
+@@ -1131,6 +1157,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
        path = shp->shm_file->f_path;
        path_get(&path);
        shp->shm_nattch++;
@@ -85660,7 +87540,7 @@ index 7645961..afc7f02 100644
        ipc_unlock_object(&shp->shm_perm);
        rcu_read_unlock();
 diff --git a/ipc/util.c b/ipc/util.c
-index 2eb0d1e..0308564 100644
+index 88adc32..3867c68 100644
 --- a/ipc/util.c
 +++ b/ipc/util.c
 @@ -71,6 +71,8 @@ struct ipc_proc_iface {
@@ -85681,23 +87561,10 @@ index 2eb0d1e..0308564 100644
 +              return -1;
 +
        /* is there some bit set in requested_mode but not in granted_mode? */
-       if ((requested_mode & ~granted_mode & 0007) && 
+       if ((requested_mode & ~granted_mode & 0007) &&
            !ns_capable(ns->user_ns, CAP_IPC_OWNER))
-diff --git a/kernel/acct.c b/kernel/acct.c
-index 8d6e145..33e0b1e 100644
---- a/kernel/acct.c
-+++ b/kernel/acct.c
-@@ -556,7 +556,7 @@ static void do_acct_process(struct bsd_acct_struct *acct,
-        */
-       flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
-       current->signal->rlim[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY;
--      file->f_op->write(file, (char *)&ac,
-+      file->f_op->write(file, (char __force_user *)&ac,
-                              sizeof(acct_t), &file->f_pos);
-       current->signal->rlim[RLIMIT_FSIZE].rlim_cur = flim;
-       set_fs(fs);
 diff --git a/kernel/audit.c b/kernel/audit.c
-index 47845c5..bd9dd5b 100644
+index c6df990..fde80b4 100644
 --- a/kernel/audit.c
 +++ b/kernel/audit.c
 @@ -122,7 +122,7 @@ u32                audit_sig_sid = 0;
@@ -85727,7 +87594,7 @@ index 47845c5..bd9dd5b 100644
                                audit_rate_limit,
                                audit_backlog_limit);
                audit_panic(message);
-@@ -808,7 +808,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+@@ -840,7 +840,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
                s.pid                   = audit_pid;
                s.rate_limit            = audit_rate_limit;
                s.backlog_limit         = audit_backlog_limit;
@@ -85737,10 +87604,10 @@ index 47845c5..bd9dd5b 100644
                s.version               = AUDIT_VERSION_LATEST;
                s.backlog_wait_time     = audit_backlog_wait_time;
 diff --git a/kernel/auditsc.c b/kernel/auditsc.c
-index 21eae3c..66db239 100644
+index e420a0c..38137fa 100644
 --- a/kernel/auditsc.c
 +++ b/kernel/auditsc.c
-@@ -2023,7 +2023,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
+@@ -2014,7 +2014,7 @@ int auditsc_get_stamp(struct audit_context *ctx,
  }
  
  /* global counter which is incremented every time something logs in */
@@ -85749,7 +87616,7 @@ index 21eae3c..66db239 100644
  
  static int audit_set_loginuid_perm(kuid_t loginuid)
  {
-@@ -2090,7 +2090,7 @@ int audit_set_loginuid(kuid_t loginuid)
+@@ -2081,7 +2081,7 @@ int audit_set_loginuid(kuid_t loginuid)
  
        /* are we setting or clearing? */
        if (uid_valid(loginuid))
@@ -85758,11 +87625,65 @@ index 21eae3c..66db239 100644
  
        task->sessionid = sessionid;
        task->loginuid = loginuid;
+diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c
+index d6594e4..597264b 100644
+--- a/kernel/bpf/core.c
++++ b/kernel/bpf/core.c
+@@ -143,14 +143,17 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr,
+        * random section of illegal instructions.
+        */
+       size = round_up(proglen + sizeof(*hdr) + 128, PAGE_SIZE);
+-      hdr = module_alloc(size);
++      hdr = module_alloc_exec(size);
+       if (hdr == NULL)
+               return NULL;
+       /* Fill space with illegal/arch-dep instructions. */
+       bpf_fill_ill_insns(hdr, size);
++      pax_open_kernel();
+       hdr->pages = size / PAGE_SIZE;
++      pax_close_kernel();
++
+       hole = min_t(unsigned int, size - (proglen + sizeof(*hdr)),
+                    PAGE_SIZE - sizeof(*hdr));
+       start = (prandom_u32() % hole) & ~(alignment - 1);
+@@ -163,7 +166,7 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr,
+ void bpf_jit_binary_free(struct bpf_binary_header *hdr)
+ {
+-      module_free(NULL, hdr);
++      module_free_exec(NULL, hdr);
+ }
+ #endif /* CONFIG_BPF_JIT */
+diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
+index ba61c8c..c60c486 100644
+--- a/kernel/bpf/syscall.c
++++ b/kernel/bpf/syscall.c
+@@ -539,11 +539,15 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz
+       int err;
+       /* the syscall is limited to root temporarily. This restriction will be
+-       * lifted when security audit is clean. Note that eBPF+tracing must have
+-       * this restriction, since it may pass kernel data to user space
++       * lifted by upstream when a half-assed security audit is clean. Note
++       * that eBPF+tracing must have this restriction, since it may pass
++       * kernel data to user space
+        */
+       if (!capable(CAP_SYS_ADMIN))
+               return -EPERM;
++#ifdef CONFIG_GRKERNSEC
++      return -EPERM;
++#endif
+       if (!access_ok(VERIFY_READ, uattr, 1))
+               return -EFAULT;
 diff --git a/kernel/capability.c b/kernel/capability.c
-index 24663b3..b926ae1 100644
+index 989f5bf..d317ca0 100644
 --- a/kernel/capability.c
 +++ b/kernel/capability.c
-@@ -193,6 +193,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
+@@ -192,6 +192,9 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
                 * before modification is attempted and the application
                 * fails.
                 */
@@ -85772,7 +87693,7 @@ index 24663b3..b926ae1 100644
                if (copy_to_user(dataptr, kdata, tocopy
                                 * sizeof(struct __user_cap_data_struct))) {
                        return -EFAULT;
-@@ -294,10 +297,11 @@ bool has_ns_capability(struct task_struct *t,
+@@ -297,10 +300,11 @@ bool has_ns_capability(struct task_struct *t,
        int ret;
  
        rcu_read_lock();
@@ -85786,7 +87707,7 @@ index 24663b3..b926ae1 100644
  }
  
  /**
-@@ -334,10 +338,10 @@ bool has_ns_capability_noaudit(struct task_struct *t,
+@@ -337,10 +341,10 @@ bool has_ns_capability_noaudit(struct task_struct *t,
        int ret;
  
        rcu_read_lock();
@@ -85799,7 +87720,7 @@ index 24663b3..b926ae1 100644
  }
  
  /**
-@@ -375,7 +379,7 @@ bool ns_capable(struct user_namespace *ns, int cap)
+@@ -378,7 +382,7 @@ bool ns_capable(struct user_namespace *ns, int cap)
                BUG();
        }
  
@@ -85808,7 +87729,7 @@ index 24663b3..b926ae1 100644
                current->flags |= PF_SUPERPRIV;
                return true;
        }
-@@ -383,6 +387,21 @@ bool ns_capable(struct user_namespace *ns, int cap)
+@@ -386,6 +390,21 @@ bool ns_capable(struct user_namespace *ns, int cap)
  }
  EXPORT_SYMBOL(ns_capable);
  
@@ -85830,7 +87751,7 @@ index 24663b3..b926ae1 100644
  /**
   * file_ns_capable - Determine if the file's opener had a capability in effect
   * @file:  The file we want to check
-@@ -423,6 +442,12 @@ bool capable(int cap)
+@@ -427,6 +446,12 @@ bool capable(int cap)
  }
  EXPORT_SYMBOL(capable);
  
@@ -85843,7 +87764,7 @@ index 24663b3..b926ae1 100644
  /**
   * capable_wrt_inode_uidgid - Check nsown_capable and uid and gid mapped
   * @inode: The inode in question
-@@ -440,3 +465,12 @@ bool capable_wrt_inode_uidgid(const struct inode *inode, int cap)
+@@ -444,3 +469,12 @@ bool capable_wrt_inode_uidgid(const struct inode *inode, int cap)
                kgid_has_mapping(ns, inode->i_gid);
  }
  EXPORT_SYMBOL(capable_wrt_inode_uidgid);
@@ -85857,10 +87778,20 @@ index 24663b3..b926ae1 100644
 +}
 +EXPORT_SYMBOL(capable_wrt_inode_uidgid_nolog);
 diff --git a/kernel/cgroup.c b/kernel/cgroup.c
-index 073226b..969c746 100644
+index 136ecea..45157a6 100644
 --- a/kernel/cgroup.c
 +++ b/kernel/cgroup.c
-@@ -4808,7 +4808,7 @@ static int cgroup_css_links_read(struct seq_file *seq, void *v)
+@@ -5276,6 +5276,9 @@ static void cgroup_release_agent(struct work_struct *work)
+       if (!pathbuf || !agentbuf)
+               goto out;
++      if (agentbuf[0] == '\0')
++              goto out;
++
+       path = cgroup_path(cgrp, pathbuf, PATH_MAX);
+       if (!path)
+               goto out;
+@@ -5461,7 +5464,7 @@ static int cgroup_css_links_read(struct seq_file *seq, void *v)
                struct task_struct *task;
                int count = 0;
  
@@ -85870,7 +87801,7 @@ index 073226b..969c746 100644
                list_for_each_entry(task, &cset->tasks, cg_list) {
                        if (count++ > MAX_TASKS_SHOWN_PER_CSS)
 diff --git a/kernel/compat.c b/kernel/compat.c
-index e40b043..3da8f51 100644
+index ebb3c36..1df606e 100644
 --- a/kernel/compat.c
 +++ b/kernel/compat.c
 @@ -13,6 +13,7 @@
@@ -85899,7 +87830,7 @@ index e40b043..3da8f51 100644
                                HRTIMER_MODE_REL, CLOCK_MONOTONIC);
        set_fs(oldfs);
  
-@@ -361,7 +362,7 @@ COMPAT_SYSCALL_DEFINE1(sigpending, compat_old_sigset_t __user *, set)
+@@ -379,7 +380,7 @@ COMPAT_SYSCALL_DEFINE1(sigpending, compat_old_sigset_t __user *, set)
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
@@ -85908,7 +87839,7 @@ index e40b043..3da8f51 100644
        set_fs(old_fs);
        if (ret == 0)
                ret = put_user(s, set);
-@@ -451,7 +452,7 @@ COMPAT_SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
+@@ -469,7 +470,7 @@ COMPAT_SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
@@ -85917,7 +87848,7 @@ index e40b043..3da8f51 100644
        set_fs(old_fs);
  
        if (!ret) {
-@@ -533,8 +534,8 @@ COMPAT_SYSCALL_DEFINE4(wait4,
+@@ -551,8 +552,8 @@ COMPAT_SYSCALL_DEFINE4(wait4,
                set_fs (KERNEL_DS);
                ret = sys_wait4(pid,
                                (stat_addr ?
@@ -85928,7 +87859,7 @@ index e40b043..3da8f51 100644
                set_fs (old_fs);
  
                if (ret > 0) {
-@@ -560,8 +561,8 @@ COMPAT_SYSCALL_DEFINE5(waitid,
+@@ -578,8 +579,8 @@ COMPAT_SYSCALL_DEFINE5(waitid,
        memset(&info, 0, sizeof(info));
  
        set_fs(KERNEL_DS);
@@ -85939,7 +87870,7 @@ index e40b043..3da8f51 100644
        set_fs(old_fs);
  
        if ((ret < 0) || (info.si_signo == 0))
-@@ -695,8 +696,8 @@ COMPAT_SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
+@@ -713,8 +714,8 @@ COMPAT_SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_timer_settime(timer_id, flags,
@@ -85950,7 +87881,7 @@ index e40b043..3da8f51 100644
        set_fs(oldfs);
        if (!err && old && put_compat_itimerspec(old, &oldts))
                return -EFAULT;
-@@ -713,7 +714,7 @@ COMPAT_SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
+@@ -731,7 +732,7 @@ COMPAT_SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_timer_gettime(timer_id,
@@ -85959,7 +87890,7 @@ index e40b043..3da8f51 100644
        set_fs(oldfs);
        if (!err && put_compat_itimerspec(setting, &ts))
                return -EFAULT;
-@@ -732,7 +733,7 @@ COMPAT_SYSCALL_DEFINE2(clock_settime, clockid_t, which_clock,
+@@ -750,7 +751,7 @@ COMPAT_SYSCALL_DEFINE2(clock_settime, clockid_t, which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_settime(which_clock,
@@ -85968,7 +87899,7 @@ index e40b043..3da8f51 100644
        set_fs(oldfs);
        return err;
  }
-@@ -747,7 +748,7 @@ COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock,
+@@ -765,7 +766,7 @@ COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_gettime(which_clock,
@@ -85977,7 +87908,7 @@ index e40b043..3da8f51 100644
        set_fs(oldfs);
        if (!err && compat_put_timespec(&ts, tp))
                return -EFAULT;
-@@ -767,7 +768,7 @@ COMPAT_SYSCALL_DEFINE2(clock_adjtime, clockid_t, which_clock,
+@@ -785,7 +786,7 @@ COMPAT_SYSCALL_DEFINE2(clock_adjtime, clockid_t, which_clock,
  
        oldfs = get_fs();
        set_fs(KERNEL_DS);
@@ -85986,7 +87917,7 @@ index e40b043..3da8f51 100644
        set_fs(oldfs);
  
        err = compat_put_timex(utp, &txc);
-@@ -787,7 +788,7 @@ COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock,
+@@ -805,7 +806,7 @@ COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_getres(which_clock,
@@ -85995,7 +87926,7 @@ index e40b043..3da8f51 100644
        set_fs(oldfs);
        if (!err && tp && compat_put_timespec(&ts, tp))
                return -EFAULT;
-@@ -801,7 +802,7 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
+@@ -819,7 +820,7 @@ static long compat_clock_nanosleep_restart(struct restart_block *restart)
        struct timespec tu;
        struct compat_timespec __user *rmtp = restart->nanosleep.compat_rmtp;
  
@@ -86004,7 +87935,7 @@ index e40b043..3da8f51 100644
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = clock_nanosleep_restart(restart);
-@@ -833,8 +834,8 @@ COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags,
+@@ -851,8 +852,8 @@ COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags,
        oldfs = get_fs();
        set_fs(KERNEL_DS);
        err = sys_clock_nanosleep(which_clock, flags,
@@ -86015,7 +87946,7 @@ index e40b043..3da8f51 100644
        set_fs(oldfs);
  
        if ((err == -ERESTART_RESTARTBLOCK) && rmtp &&
-@@ -1128,7 +1129,7 @@ COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval,
+@@ -1146,7 +1147,7 @@ COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval,
        mm_segment_t old_fs = get_fs();
  
        set_fs(KERNEL_DS);
@@ -86194,7 +88125,7 @@ index e0573a4..26c0fd3 100644
  
  /**
 diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
-index 2956c8d..cfe1e2e 100644
+index 1adf62b..7736e06 100644
 --- a/kernel/debug/debug_core.c
 +++ b/kernel/debug/debug_core.c
 @@ -124,7 +124,7 @@ static DEFINE_RAW_SPINLOCK(dbg_slave_lock);
@@ -86258,7 +88189,7 @@ index 2956c8d..cfe1e2e 100644
  }
  EXPORT_SYMBOL_GPL(kgdb_schedule_breakpoint);
 diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
-index 0b097c8..11dd5c5 100644
+index 379650b..30c5180 100644
 --- a/kernel/debug/kdb/kdb_main.c
 +++ b/kernel/debug/kdb/kdb_main.c
 @@ -1977,7 +1977,7 @@ static int kdb_lsmod(int argc, const char **argv)
@@ -86280,10 +88211,10 @@ index 0b097c8..11dd5c5 100644
  #ifdef CONFIG_MODULE_UNLOAD
                {
 diff --git a/kernel/events/core.c b/kernel/events/core.c
-index 440eefc..0909f02 100644
+index 1cd5eef..e8b5af9 100644
 --- a/kernel/events/core.c
 +++ b/kernel/events/core.c
-@@ -158,8 +158,15 @@ static struct srcu_struct pmus_srcu;
+@@ -170,8 +170,15 @@ static struct srcu_struct pmus_srcu;
   *   0 - disallow raw tracepoint access for unpriv
   *   1 - disallow cpu events for unpriv
   *   2 - disallow kernel profiling for unpriv
@@ -86300,7 +88231,7 @@ index 440eefc..0909f02 100644
  
  /* Minimum for 512 kiB + 1 user control page */
  int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */
-@@ -185,7 +192,7 @@ void update_perf_cpu_limits(void)
+@@ -197,7 +204,7 @@ void update_perf_cpu_limits(void)
  
        tmp *= sysctl_perf_cpu_time_max_percent;
        do_div(tmp, 100);
@@ -86309,7 +88240,7 @@ index 440eefc..0909f02 100644
  }
  
  static int perf_rotate_context(struct perf_cpu_context *cpuctx);
-@@ -291,7 +298,7 @@ void perf_sample_event_took(u64 sample_len_ns)
+@@ -303,7 +310,7 @@ void perf_sample_event_took(u64 sample_len_ns)
        }
  }
  
@@ -86318,7 +88249,7 @@ index 440eefc..0909f02 100644
  
  static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
                              enum event_type_t event_type);
-@@ -3002,7 +3009,7 @@ static void __perf_event_read(void *info)
+@@ -3102,7 +3109,7 @@ static void __perf_event_read(void *info)
  
  static inline u64 perf_event_count(struct perf_event *event)
  {
@@ -86327,7 +88258,7 @@ index 440eefc..0909f02 100644
  }
  
  static u64 perf_event_read(struct perf_event *event)
-@@ -3361,9 +3368,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running)
+@@ -3528,9 +3535,9 @@ u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running)
        mutex_lock(&event->child_mutex);
        total += perf_event_read(event);
        *enabled += event->total_time_enabled +
@@ -86339,7 +88270,7 @@ index 440eefc..0909f02 100644
  
        list_for_each_entry(child, &event->child_list, child_list) {
                total += perf_event_read(child);
-@@ -3792,10 +3799,10 @@ void perf_event_update_userpage(struct perf_event *event)
+@@ -3994,10 +4001,10 @@ void perf_event_update_userpage(struct perf_event *event)
                userpg->offset -= local64_read(&event->hw.prev_count);
  
        userpg->time_enabled = enabled +
@@ -86352,7 +88283,7 @@ index 440eefc..0909f02 100644
  
        arch_perf_update_userpage(userpg, now);
  
-@@ -4359,7 +4366,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size,
+@@ -4561,7 +4568,7 @@ perf_output_sample_ustack(struct perf_output_handle *handle, u64 dump_size,
  
                /* Data. */
                sp = perf_user_stack_pointer(regs);
@@ -86361,7 +88292,7 @@ index 440eefc..0909f02 100644
                dyn_size = dump_size - rem;
  
                perf_output_skip(handle, rem);
-@@ -4450,11 +4457,11 @@ static void perf_output_read_one(struct perf_output_handle *handle,
+@@ -4652,11 +4659,11 @@ static void perf_output_read_one(struct perf_output_handle *handle,
        values[n++] = perf_event_count(event);
        if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) {
                values[n++] = enabled +
@@ -86375,7 +88306,7 @@ index 440eefc..0909f02 100644
        }
        if (read_format & PERF_FORMAT_ID)
                values[n++] = primary_event_id(event);
-@@ -6733,7 +6740,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
+@@ -6958,7 +6965,7 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
        event->parent           = parent_event;
  
        event->ns               = get_pid_ns(task_active_pid_ns(current));
@@ -86384,7 +88315,7 @@ index 440eefc..0909f02 100644
  
        event->state            = PERF_EVENT_STATE_INACTIVE;
  
-@@ -7015,6 +7022,11 @@ SYSCALL_DEFINE5(perf_event_open,
+@@ -7237,6 +7244,11 @@ SYSCALL_DEFINE5(perf_event_open,
        if (flags & ~PERF_FLAG_ALL)
                return -EINVAL;
  
@@ -86396,7 +88327,7 @@ index 440eefc..0909f02 100644
        err = perf_copy_attr(attr_uptr, &attr);
        if (err)
                return err;
-@@ -7353,10 +7365,10 @@ static void sync_child_event(struct perf_event *child_event,
+@@ -7592,10 +7604,10 @@ static void sync_child_event(struct perf_event *child_event,
        /*
         * Add back the child's count to the parent's count:
         */
@@ -86455,10 +88386,10 @@ index 569b2187..19940d9 100644
  /* Callchain handling */
  extern struct perf_callchain_entry *
 diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
-index 04709b6..d330828 100644
+index ed8f2cd..fe8030c 100644
 --- a/kernel/events/uprobes.c
 +++ b/kernel/events/uprobes.c
-@@ -1666,7 +1666,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr)
+@@ -1670,7 +1670,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr)
  {
        struct page *page;
        uprobe_opcode_t opcode;
@@ -86468,10 +88399,10 @@ index 04709b6..d330828 100644
        pagefault_disable();
        result = __copy_from_user_inatomic(&opcode, (void __user*)vaddr,
 diff --git a/kernel/exit.c b/kernel/exit.c
-index 6ed6a1d..edecb0e 100644
+index 5d30019..934add5 100644
 --- a/kernel/exit.c
 +++ b/kernel/exit.c
-@@ -173,6 +173,10 @@ void release_task(struct task_struct * p)
+@@ -174,6 +174,10 @@ void release_task(struct task_struct *p)
        struct task_struct *leader;
        int zap_leader;
  repeat:
@@ -86482,25 +88413,16 @@ index 6ed6a1d..edecb0e 100644
        /* don't need to get the RCU readlock here - the process is dead and
         * can't be modifying its own credentials. But shut RCU-lockdep up */
        rcu_read_lock();
-@@ -330,7 +334,7 @@ int allow_signal(int sig)
-        * know it'll be handled, so that they don't get converted to
-        * SIGKILL or just silently dropped.
-        */
--      current->sighand->action[(sig)-1].sa.sa_handler = (void __user *)2;
-+      current->sighand->action[(sig)-1].sa.sa_handler = (__force void __user *)2;
-       recalc_sigpending();
-       spin_unlock_irq(&current->sighand->siglock);
-       return 0;
-@@ -699,6 +703,8 @@ void do_exit(long code)
-       struct task_struct *tsk = current;
+@@ -670,6 +674,8 @@ void do_exit(long code)
        int group_dead;
+       TASKS_RCU(int tasks_rcu_i);
  
 +      set_fs(USER_DS);
 +
        profile_task_exit(tsk);
  
        WARN_ON(blk_needs_flush_plug(tsk));
-@@ -715,7 +721,6 @@ void do_exit(long code)
+@@ -686,7 +692,6 @@ void do_exit(long code)
         * mm_release()->clear_child_tid() from writing to a user-controlled
         * kernel address.
         */
@@ -86508,7 +88430,7 @@ index 6ed6a1d..edecb0e 100644
  
        ptrace_event(PTRACE_EVENT_EXIT, code);
  
-@@ -774,6 +779,9 @@ void do_exit(long code)
+@@ -744,6 +749,9 @@ void do_exit(long code)
        tsk->exit_code = code;
        taskstats_exit(tsk, group_dead);
  
@@ -86518,7 +88440,7 @@ index 6ed6a1d..edecb0e 100644
        exit_mm(tsk);
  
        if (group_dead)
-@@ -893,7 +901,7 @@ SYSCALL_DEFINE1(exit, int, error_code)
+@@ -863,7 +871,7 @@ SYSCALL_DEFINE1(exit, int, error_code)
   * Take down every thread in the group.  This is called by fatal signals
   * as well as by sys_exit_group (below).
   */
@@ -86528,7 +88450,7 @@ index 6ed6a1d..edecb0e 100644
  {
        struct signal_struct *sig = current->signal;
 diff --git a/kernel/fork.c b/kernel/fork.c
-index 68b9226..0700bf6 100644
+index 9b7d746..5b898ab 100644
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
 @@ -183,6 +183,48 @@ void thread_info_cache_init(void)
@@ -86606,15 +88528,15 @@ index 68b9226..0700bf6 100644
        rt_mutex_debug_task_free(tsk);
        ftrace_graph_exit_task(tsk);
        put_seccomp_filter(tsk);
-@@ -299,6 +345,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
+@@ -306,6 +352,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
+ {
        struct task_struct *tsk;
        struct thread_info *ti;
-       unsigned long *stackend;
 +      void *lowmem_stack;
        int node = tsk_fork_get_node(orig);
        int err;
  
-@@ -306,7 +353,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
+@@ -313,7 +360,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
        if (!tsk)
                return NULL;
  
@@ -86623,18 +88545,18 @@ index 68b9226..0700bf6 100644
        if (!ti)
                goto free_tsk;
  
-@@ -315,6 +362,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
+@@ -322,6 +369,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
                goto free_ti;
  
        tsk->stack = ti;
 +#ifdef CONFIG_GRKERNSEC_KSTACKOVERFLOW
 +      tsk->lowmem_stack = lowmem_stack;
 +#endif
-       setup_thread_stack(tsk, orig);
-       clear_user_return_notifier(tsk);
-@@ -323,7 +373,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
-       *stackend = STACK_END_MAGIC;    /* for overflow detection */
+ #ifdef CONFIG_SECCOMP
+       /*
+        * We must handle setting up seccomp filters once we're under
+@@ -338,7 +388,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
+       set_task_stack_end_magic(tsk);
  
  #ifdef CONFIG_CC_STACKPROTECTOR
 -      tsk->stack_canary = get_random_int();
@@ -86642,7 +88564,7 @@ index 68b9226..0700bf6 100644
  #endif
  
        /*
-@@ -337,24 +387,92 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
+@@ -352,24 +402,92 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
        tsk->splice_pipe = NULL;
        tsk->task_frag.page = NULL;
  
@@ -86700,7 +88622,7 @@ index 68b9226..0700bf6 100644
 +                      atomic_dec(&inode->i_writecount);
 +              mutex_lock(&mapping->i_mmap_mutex);
 +              if (tmp->vm_flags & VM_SHARED)
-+                      mapping->i_mmap_writable++;
++                      atomic_inc(&mapping->i_mmap_writable);
 +              flush_dcache_mmap_lock(mapping);
 +              /* insert tmp into the share list, just after mpnt */
 +              if (unlikely(tmp->vm_flags & VM_NONLINEAR))
@@ -86739,7 +88661,7 @@ index 68b9226..0700bf6 100644
  
        uprobe_start_dup_mmap();
        down_write(&oldmm->mmap_sem);
-@@ -383,55 +501,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
+@@ -397,55 +515,15 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
  
        prev = NULL;
        for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) {
@@ -86781,7 +88703,7 @@ index 68b9226..0700bf6 100644
 -                              atomic_dec(&inode->i_writecount);
 -                      mutex_lock(&mapping->i_mmap_mutex);
 -                      if (tmp->vm_flags & VM_SHARED)
--                              mapping->i_mmap_writable++;
+-                              atomic_inc(&mapping->i_mmap_writable);
 -                      flush_dcache_mmap_lock(mapping);
 -                      /* insert tmp into the share list, just after mpnt */
 -                      if (unlikely(tmp->vm_flags & VM_NONLINEAR))
@@ -86799,7 +88721,7 @@ index 68b9226..0700bf6 100644
                }
  
                /*
-@@ -463,6 +541,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
+@@ -477,6 +555,31 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
                if (retval)
                        goto out;
        }
@@ -86831,7 +88753,7 @@ index 68b9226..0700bf6 100644
        /* a new mm has just been created */
        arch_dup_mmap(oldmm, mm);
        retval = 0;
-@@ -472,14 +575,6 @@ out:
+@@ -486,14 +589,6 @@ out:
        up_write(&oldmm->mmap_sem);
        uprobe_end_dup_mmap();
        return retval;
@@ -86846,7 +88768,7 @@ index 68b9226..0700bf6 100644
  }
  
  static inline int mm_alloc_pgd(struct mm_struct *mm)
-@@ -698,8 +793,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
+@@ -734,8 +829,8 @@ struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
                return ERR_PTR(err);
  
        mm = get_task_mm(task);
@@ -86857,7 +88779,7 @@ index 68b9226..0700bf6 100644
                mmput(mm);
                mm = ERR_PTR(-EACCES);
        }
-@@ -918,13 +1013,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
+@@ -938,13 +1033,20 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
                        spin_unlock(&fs->lock);
                        return -EAGAIN;
                }
@@ -86879,7 +88801,7 @@ index 68b9226..0700bf6 100644
        return 0;
  }
  
-@@ -1133,7 +1235,7 @@ init_task_pid(struct task_struct *task, enum pid_type type, struct pid *pid)
+@@ -1179,7 +1281,7 @@ init_task_pid(struct task_struct *task, enum pid_type type, struct pid *pid)
   * parts of the process environment (as per the clone
   * flags). The actual kick-off is left to the caller.
   */
@@ -86888,7 +88810,7 @@ index 68b9226..0700bf6 100644
                                        unsigned long stack_start,
                                        unsigned long stack_size,
                                        int __user *child_tidptr,
-@@ -1205,6 +1307,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
+@@ -1250,6 +1352,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
        DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
  #endif
        retval = -EAGAIN;
@@ -86898,7 +88820,7 @@ index 68b9226..0700bf6 100644
        if (atomic_read(&p->real_cred->user->processes) >=
                        task_rlimit(p, RLIMIT_NPROC)) {
                if (p->real_cred->user != INIT_USER &&
-@@ -1452,6 +1557,11 @@ static struct task_struct *copy_process(unsigned long clone_flags,
+@@ -1499,6 +1604,11 @@ static struct task_struct *copy_process(unsigned long clone_flags,
                goto bad_fork_free_pid;
        }
  
@@ -86910,7 +88832,7 @@ index 68b9226..0700bf6 100644
        if (likely(p->pid)) {
                ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);
  
-@@ -1541,6 +1651,8 @@ bad_fork_cleanup_count:
+@@ -1589,6 +1699,8 @@ bad_fork_cleanup_count:
  bad_fork_free:
        free_task(p);
  fork_out:
@@ -86919,7 +88841,7 @@ index 68b9226..0700bf6 100644
        return ERR_PTR(retval);
  }
  
-@@ -1602,6 +1714,7 @@ long do_fork(unsigned long clone_flags,
+@@ -1650,6 +1762,7 @@ long do_fork(unsigned long clone_flags,
  
        p = copy_process(clone_flags, stack_start, stack_size,
                         child_tidptr, NULL, trace);
@@ -86927,7 +88849,7 @@ index 68b9226..0700bf6 100644
        /*
         * Do this prior waking up the new thread - the thread pointer
         * might get invalid after that point, if the thread exits quickly.
-@@ -1618,6 +1731,8 @@ long do_fork(unsigned long clone_flags,
+@@ -1666,6 +1779,8 @@ long do_fork(unsigned long clone_flags,
                if (clone_flags & CLONE_PARENT_SETTID)
                        put_user(nr, parent_tidptr);
  
@@ -86936,7 +88858,7 @@ index 68b9226..0700bf6 100644
                if (clone_flags & CLONE_VFORK) {
                        p->vfork_done = &vfork;
                        init_completion(&vfork);
-@@ -1736,7 +1851,7 @@ void __init proc_caches_init(void)
+@@ -1784,7 +1899,7 @@ void __init proc_caches_init(void)
        mm_cachep = kmem_cache_create("mm_struct",
                        sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN,
                        SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL);
@@ -86945,7 +88867,7 @@ index 68b9226..0700bf6 100644
        mmap_init();
        nsproxy_cache_init();
  }
-@@ -1776,7 +1891,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp)
+@@ -1824,7 +1939,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp)
                return 0;
  
        /* don't need lock here; in the worst case we'll do useless copy */
@@ -86954,7 +88876,7 @@ index 68b9226..0700bf6 100644
                return 0;
  
        *new_fsp = copy_fs_struct(fs);
-@@ -1883,7 +1998,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
+@@ -1936,7 +2051,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
                        fs = current->fs;
                        spin_lock(&fs->lock);
                        current->fs = new_fs;
@@ -86965,10 +88887,10 @@ index 68b9226..0700bf6 100644
                        else
                                new_fs = fs;
 diff --git a/kernel/futex.c b/kernel/futex.c
-index de938d2..c566038 100644
+index 63678b5..512f9af 100644
 --- a/kernel/futex.c
 +++ b/kernel/futex.c
-@@ -202,7 +202,7 @@ struct futex_pi_state {
+@@ -201,7 +201,7 @@ struct futex_pi_state {
        atomic_t refcount;
  
        union futex_key key;
@@ -86977,7 +88899,7 @@ index de938d2..c566038 100644
  
  /**
   * struct futex_q - The hashed futex queue entry, one per waiting task
-@@ -236,7 +236,7 @@ struct futex_q {
+@@ -235,7 +235,7 @@ struct futex_q {
        struct rt_mutex_waiter *rt_waiter;
        union futex_key *requeue_pi_key;
        u32 bitset;
@@ -86986,7 +88908,7 @@ index de938d2..c566038 100644
  
  static const struct futex_q futex_q_init = {
        /* list gets initialized in queue_me()*/
-@@ -394,6 +394,11 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
+@@ -402,6 +402,11 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
        struct page *page, *page_head;
        int err, ro = 0;
  
@@ -86998,7 +88920,7 @@ index de938d2..c566038 100644
        /*
         * The futex address must be "naturally" aligned.
         */
-@@ -593,7 +598,7 @@ static int cmpxchg_futex_value_locked(u32 *curval, u32 __user *uaddr,
+@@ -601,7 +606,7 @@ static int cmpxchg_futex_value_locked(u32 *curval, u32 __user *uaddr,
  
  static int get_futex_value_locked(u32 *dest, u32 __user *from)
  {
@@ -87007,7 +88929,7 @@ index de938d2..c566038 100644
  
        pagefault_disable();
        ret = __copy_from_user_inatomic(dest, from, sizeof(u32));
-@@ -3033,6 +3038,7 @@ static void __init futex_detect_cmpxchg(void)
+@@ -3006,6 +3011,7 @@ static void __init futex_detect_cmpxchg(void)
  {
  #ifndef CONFIG_HAVE_FUTEX_CMPXCHG
        u32 curval;
@@ -87015,7 +88937,7 @@ index de938d2..c566038 100644
  
        /*
         * This will fail and we want it. Some arch implementations do
-@@ -3044,8 +3050,11 @@ static void __init futex_detect_cmpxchg(void)
+@@ -3017,8 +3023,11 @@ static void __init futex_detect_cmpxchg(void)
         * implementation, the non-functional ones will return
         * -ENOSYS.
         */
@@ -87041,10 +88963,10 @@ index 55c8c93..9ba7ad6 100644
  {
        compat_uptr_t base = ptr_to_compat(entry);
 diff --git a/kernel/gcov/base.c b/kernel/gcov/base.c
-index f45b75b..bfac6d5 100644
+index b358a80..fc25240 100644
 --- a/kernel/gcov/base.c
 +++ b/kernel/gcov/base.c
-@@ -108,11 +108,6 @@ void gcov_enable_events(void)
+@@ -114,11 +114,6 @@ void gcov_enable_events(void)
  }
  
  #ifdef CONFIG_MODULES
@@ -87056,7 +88978,7 @@ index f45b75b..bfac6d5 100644
  /* Update list and generate events when modules are unloaded. */
  static int gcov_module_notifier(struct notifier_block *nb, unsigned long event,
                                void *data)
-@@ -127,7 +122,7 @@ static int gcov_module_notifier(struct notifier_block *nb, unsigned long event,
+@@ -133,7 +128,7 @@ static int gcov_module_notifier(struct notifier_block *nb, unsigned long event,
  
        /* Remove entries located in module from linked list. */
        while ((info = gcov_info_next(info))) {
@@ -87065,40 +88987,6 @@ index f45b75b..bfac6d5 100644
                        gcov_info_unlink(prev, info);
                        if (gcov_events_enabled)
                                gcov_event(GCOV_REMOVE, info);
-diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
-index e0501fe..312edd6 100644
---- a/kernel/hrtimer.c
-+++ b/kernel/hrtimer.c
-@@ -1448,7 +1448,7 @@ void hrtimer_peek_ahead_timers(void)
-       local_irq_restore(flags);
- }
--static void run_hrtimer_softirq(struct softirq_action *h)
-+static __latent_entropy void run_hrtimer_softirq(void)
- {
-       hrtimer_peek_ahead_timers();
- }
-diff --git a/kernel/irq_work.c b/kernel/irq_work.c
-index a82170e..5b01e7f 100644
---- a/kernel/irq_work.c
-+++ b/kernel/irq_work.c
-@@ -191,12 +191,13 @@ static int irq_work_cpu_notify(struct notifier_block *self,
-       return NOTIFY_OK;
- }
--static struct notifier_block cpu_notify;
-+static struct notifier_block cpu_notify = {
-+      .notifier_call = irq_work_cpu_notify,
-+      .priority = 0,
-+};
- static __init int irq_work_init_cpu_notifier(void)
- {
--      cpu_notify.notifier_call = irq_work_cpu_notify;
--      cpu_notify.priority = 0;
-       register_cpu_notifier(&cpu_notify);
-       return 0;
- }
 diff --git a/kernel/jump_label.c b/kernel/jump_label.c
 index 9019f15..9a3c42e 100644
 --- a/kernel/jump_label.c
@@ -87135,7 +89023,7 @@ index 9019f15..9a3c42e 100644
  
  static int
 diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
-index cb0cf37..b69e161 100644
+index 5c5987f..bc502b0 100644
 --- a/kernel/kallsyms.c
 +++ b/kernel/kallsyms.c
 @@ -11,6 +11,9 @@
@@ -87239,20 +89127,11 @@ index cb0cf37..b69e161 100644
                seq_printf(m, "%pK %c %s\t[%s]\n", (void *)iter->value,
                           type, iter->name, iter->module_name);
        } else
-@@ -567,7 +611,7 @@ static int kallsyms_open(struct inode *inode, struct file *file)
-       struct kallsym_iter *iter;
-       int ret;
--      iter = kmalloc(sizeof(*iter), GFP_KERNEL);
-+      iter = kzalloc(sizeof(*iter), GFP_KERNEL);
-       if (!iter)
-               return -ENOMEM;
-       reset_iter(iter, 0);
 diff --git a/kernel/kcmp.c b/kernel/kcmp.c
-index e30ac0f..3528cac 100644
+index 0aa69ea..a7fcafb 100644
 --- a/kernel/kcmp.c
 +++ b/kernel/kcmp.c
-@@ -99,6 +99,10 @@ SYSCALL_DEFINE5(kcmp, pid_t, pid1, pid_t, pid2, int, type,
+@@ -100,6 +100,10 @@ SYSCALL_DEFINE5(kcmp, pid_t, pid1, pid_t, pid2, int, type,
        struct task_struct *task1, *task2;
        int ret;
  
@@ -87264,10 +89143,10 @@ index e30ac0f..3528cac 100644
  
        /*
 diff --git a/kernel/kexec.c b/kernel/kexec.c
-index 28c5706..bfc8388 100644
+index 2abf9f6..c40cf85 100644
 --- a/kernel/kexec.c
 +++ b/kernel/kexec.c
-@@ -1046,7 +1046,8 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry,
+@@ -1349,7 +1349,8 @@ COMPAT_SYSCALL_DEFINE4(kexec_load, compat_ulong_t, entry,
                       compat_ulong_t, flags)
  {
        struct compat_kexec_segment in;
@@ -87278,7 +89157,7 @@ index 28c5706..bfc8388 100644
  
        /* Don't allow clients that don't understand the native
 diff --git a/kernel/kmod.c b/kernel/kmod.c
-index 6b375af..eaff670 100644
+index 80f7a6d..3c476d3 100644
 --- a/kernel/kmod.c
 +++ b/kernel/kmod.c
 @@ -75,7 +75,7 @@ static void free_modprobe_argv(struct subprocess_info *info)
@@ -87352,7 +89231,7 @@ index 6b375af..eaff670 100644
        /* If modprobe needs a service that is in a module, we get a recursive
         * loop.  Limit the number of running kmod threads to max_threads/2 or
         * MAX_KMOD_CONCURRENT, whichever is the smaller.  A cleaner method
-@@ -188,11 +200,52 @@ int __request_module(bool wait, const char *fmt, ...)
+@@ -188,16 +200,61 @@ int __request_module(bool wait, const char *fmt, ...)
  
        trace_module_request(module_name, wait, _RET_IP_);
  
@@ -87406,7 +89285,16 @@ index 6b375af..eaff670 100644
  EXPORT_SYMBOL(__request_module);
  #endif /* CONFIG_MODULES */
  
-@@ -218,6 +271,20 @@ static int ____call_usermodehelper(void *data)
+ static void call_usermodehelper_freeinfo(struct subprocess_info *info)
+ {
++#ifdef CONFIG_GRKERNSEC
++      kfree(info->path);
++      info->path = info->origpath;
++#endif
+       if (info->cleanup)
+               (*info->cleanup)(info);
+       kfree(info);
+@@ -240,6 +297,20 @@ static int ____call_usermodehelper(void *data)
         */
        set_user_nice(current, 0);
  
@@ -87420,14 +89308,14 @@ index 6b375af..eaff670 100644
 +           strcmp(sub_info->path, "/usr/share/apport/apport")) || strstr(sub_info->path, "..")) {
 +              printk(KERN_ALERT "grsec: denied exec of usermode helper binary %.950s located outside of /sbin and system library paths\n", sub_info->path);
 +              retval = -EPERM;
-+              goto fail;
++              goto out;
 +      }
 +#endif
 +
        retval = -ENOMEM;
        new = prepare_kernel_cred(current);
        if (!new)
-@@ -240,8 +307,8 @@ static int ____call_usermodehelper(void *data)
+@@ -262,8 +333,8 @@ static int ____call_usermodehelper(void *data)
        commit_creds(new);
  
        retval = do_execve(getname_kernel(sub_info->path),
@@ -87435,20 +89323,9 @@ index 6b375af..eaff670 100644
 -                         (const char __user *const __user *)sub_info->envp);
 +                         (const char __user *const __force_user *)sub_info->argv,
 +                         (const char __user *const __force_user *)sub_info->envp);
-       if (!retval)
-               return 0;
-@@ -260,6 +327,10 @@ static int call_helper(void *data)
- static void call_usermodehelper_freeinfo(struct subprocess_info *info)
- {
-+#ifdef CONFIG_GRKERNSEC
-+      kfree(info->path);
-+      info->path = info->origpath;
-+#endif
-       if (info->cleanup)
-               (*info->cleanup)(info);
-       kfree(info);
+ out:
+       sub_info->retval = retval;
+       /* wait_for_helper() will call umh_complete if UHM_WAIT_PROC. */
 @@ -303,7 +374,7 @@ static int wait_for_helper(void *data)
                 *
                 * Thus the __user pointer cast is valid here.
@@ -87458,7 +89335,7 @@ index 6b375af..eaff670 100644
  
                /*
                 * If ret is 0, either ____call_usermodehelper failed and the
-@@ -542,7 +613,12 @@ struct subprocess_info *call_usermodehelper_setup(char *path, char **argv,
+@@ -532,7 +603,12 @@ struct subprocess_info *call_usermodehelper_setup(char *path, char **argv,
                goto out;
  
        INIT_WORK(&sub_info->work, __call_usermodehelper);
@@ -87471,7 +89348,7 @@ index 6b375af..eaff670 100644
        sub_info->argv = argv;
        sub_info->envp = envp;
  
-@@ -650,7 +726,7 @@ EXPORT_SYMBOL(call_usermodehelper);
+@@ -645,7 +721,7 @@ EXPORT_SYMBOL(call_usermodehelper);
  static int proc_cap_handler(struct ctl_table *table, int write,
                         void __user *buffer, size_t *lenp, loff_t *ppos)
  {
@@ -87481,7 +89358,7 @@ index 6b375af..eaff670 100644
        kernel_cap_t new_cap;
        int err, i;
 diff --git a/kernel/kprobes.c b/kernel/kprobes.c
-index ceeadfc..11c18b6 100644
+index 3995f54..e247879 100644
 --- a/kernel/kprobes.c
 +++ b/kernel/kprobes.c
 @@ -31,6 +31,9 @@
@@ -87494,7 +89371,7 @@ index ceeadfc..11c18b6 100644
  #include <linux/kprobes.h>
  #include <linux/hash.h>
  #include <linux/init.h>
-@@ -135,12 +138,12 @@ enum kprobe_slot_state {
+@@ -122,12 +125,12 @@ enum kprobe_slot_state {
  
  static void *alloc_insn_page(void)
  {
@@ -87509,7 +89386,7 @@ index ceeadfc..11c18b6 100644
  }
  
  struct kprobe_insn_cache kprobe_insn_slots = {
-@@ -2151,11 +2154,11 @@ static void __kprobes report_probe(struct seq_file *pi, struct kprobe *p,
+@@ -2187,11 +2190,11 @@ static void report_probe(struct seq_file *pi, struct kprobe *p,
                kprobe_type = "k";
  
        if (sym)
@@ -87524,10 +89401,10 @@ index ceeadfc..11c18b6 100644
  
        if (!pp)
 diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
-index 2495a9b..071b906 100644
+index 6683cce..daf8999 100644
 --- a/kernel/ksysfs.c
 +++ b/kernel/ksysfs.c
-@@ -49,6 +49,8 @@ static ssize_t uevent_helper_store(struct kobject *kobj,
+@@ -50,6 +50,8 @@ static ssize_t uevent_helper_store(struct kobject *kobj,
  {
        if (count+1 > UEVENT_HELPER_PATH_LEN)
                return -ENOENT;
@@ -87536,7 +89413,7 @@ index 2495a9b..071b906 100644
        memcpy(uevent_helper, buf, count);
        uevent_helper[count] = '\0';
        if (count && uevent_helper[count-1] == '\n')
-@@ -175,7 +177,7 @@ static ssize_t notes_read(struct file *filp, struct kobject *kobj,
+@@ -176,7 +178,7 @@ static ssize_t notes_read(struct file *filp, struct kobject *kobj,
        return count;
  }
  
@@ -87546,10 +89423,10 @@ index 2495a9b..071b906 100644
                .name = "notes",
                .mode = S_IRUGO,
 diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
-index d24e433..fa04fb8 100644
+index 88d0d44..e9ce0ee 100644
 --- a/kernel/locking/lockdep.c
 +++ b/kernel/locking/lockdep.c
-@@ -597,6 +597,10 @@ static int static_obj(void *obj)
+@@ -599,6 +599,10 @@ static int static_obj(void *obj)
                      end   = (unsigned long) &_end,
                      addr  = (unsigned long) obj;
  
@@ -87560,7 +89437,7 @@ index d24e433..fa04fb8 100644
        /*
         * static variable?
         */
-@@ -738,6 +742,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force)
+@@ -740,6 +744,7 @@ register_lock_class(struct lockdep_map *lock, unsigned int subclass, int force)
        if (!static_obj(lock->key)) {
                debug_locks_off();
                printk("INFO: trying to register non-static key.\n");
@@ -87568,7 +89445,7 @@ index d24e433..fa04fb8 100644
                printk("the code is fine but needs lockdep annotation.\n");
                printk("turning off the locking correctness validator.\n");
                dump_stack();
-@@ -3079,7 +3084,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
+@@ -3081,7 +3086,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
                if (!class)
                        return 0;
        }
@@ -87627,19 +89504,19 @@ index ef43ac4..2720dfa 100644
                seq_printf(m, "%40s %14lu %29s %pS\n",
                           name, stats->contending_point[i],
 diff --git a/kernel/locking/mcs_spinlock.c b/kernel/locking/mcs_spinlock.c
-index 838dc9e..760e158 100644
+index 9887a90..0cd2b1d 100644
 --- a/kernel/locking/mcs_spinlock.c
 +++ b/kernel/locking/mcs_spinlock.c
-@@ -71,7 +71,7 @@ bool osq_lock(struct optimistic_spin_queue **lock)
-       if (likely(prev == NULL))
-               return true;
+@@ -100,7 +100,7 @@ bool osq_lock(struct optimistic_spin_queue *lock)
  
+       prev = decode_cpu(old);
+       node->prev = prev;
 -      ACCESS_ONCE(prev->next) = node;
 +      ACCESS_ONCE_RW(prev->next) = node;
  
        /*
         * Normally @prev is untouchable after the above store; because at that
-@@ -143,8 +143,8 @@ unqueue:
+@@ -172,8 +172,8 @@ unqueue:
         * it will wait in Step-A.
         */
  
@@ -87650,8 +89527,8 @@ index 838dc9e..760e158 100644
  
        return false;
  }
-@@ -165,13 +165,13 @@ void osq_unlock(struct optimistic_spin_queue **lock)
-        */
+@@ -195,13 +195,13 @@ void osq_unlock(struct optimistic_spin_queue *lock)
+       node = this_cpu_ptr(&osq_node);
        next = xchg(&node->next, NULL);
        if (next) {
 -              ACCESS_ONCE(next->locked) = 1;
@@ -87667,10 +89544,10 @@ index 838dc9e..760e158 100644
  
  #endif
 diff --git a/kernel/locking/mcs_spinlock.h b/kernel/locking/mcs_spinlock.h
-index a2dbac4..e02a34a 100644
+index 4d60986..5d351c1 100644
 --- a/kernel/locking/mcs_spinlock.h
 +++ b/kernel/locking/mcs_spinlock.h
-@@ -81,7 +81,7 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
+@@ -78,7 +78,7 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
                 */
                return;
        }
@@ -87728,10 +89605,10 @@ index 0799fd3..d06ae3b 100644
  extern void debug_mutex_init(struct mutex *lock, const char *name,
                             struct lock_class_key *key);
 diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
-index bc73d33..6f308aa 100644
+index dadbf88..4500507 100644
 --- a/kernel/locking/mutex.c
 +++ b/kernel/locking/mutex.c
-@@ -490,7 +490,7 @@ slowpath:
+@@ -518,7 +518,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
                goto skip_wait;
  
        debug_mutex_lock_common(lock, &waiter);
@@ -87740,7 +89617,7 @@ index bc73d33..6f308aa 100644
  
        /* add waiting tasks to the end of the waitqueue (FIFO): */
        list_add_tail(&waiter.list, &lock->wait_list);
-@@ -534,7 +534,7 @@ slowpath:
+@@ -563,7 +563,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
                schedule_preempt_disabled();
                spin_lock_mutex(&lock->wait_lock, flags);
        }
@@ -87749,7 +89626,7 @@ index bc73d33..6f308aa 100644
        /* set it to 0 if there are no waiters left: */
        if (likely(list_empty(&lock->wait_list)))
                atomic_set(&lock->count, 0);
-@@ -571,7 +571,7 @@ skip_wait:
+@@ -600,7 +600,7 @@ skip_wait:
        return 0;
  
  err:
@@ -87853,18 +89730,18 @@ index 1d96dd0..994ff19 100644
  
        default:
 diff --git a/kernel/module.c b/kernel/module.c
-index 079c461..741f79c 100644
+index 88cec1d..d097c28 100644
 --- a/kernel/module.c
 +++ b/kernel/module.c
-@@ -61,6 +61,7 @@
+@@ -60,6 +60,7 @@
+ #include <linux/jump_label.h>
  #include <linux/pfn.h>
  #include <linux/bsearch.h>
- #include <linux/fips.h>
 +#include <linux/grsecurity.h>
  #include <uapi/linux/module.h>
  #include "module-internal.h"
  
-@@ -157,7 +158,8 @@ static BLOCKING_NOTIFIER_HEAD(module_notify_list);
+@@ -156,7 +157,8 @@ static BLOCKING_NOTIFIER_HEAD(module_notify_list);
  
  /* Bounds of module allocation, for speeding __module_address.
   * Protected by module_mutex. */
@@ -87874,7 +89751,7 @@ index 079c461..741f79c 100644
  
  int register_module_notifier(struct notifier_block * nb)
  {
-@@ -324,7 +326,7 @@ bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
+@@ -323,7 +325,7 @@ bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
                return true;
  
        list_for_each_entry_rcu(mod, &modules, list) {
@@ -87883,7 +89760,7 @@ index 079c461..741f79c 100644
                        { mod->syms, mod->syms + mod->num_syms, mod->crcs,
                          NOT_GPL_ONLY, false },
                        { mod->gpl_syms, mod->gpl_syms + mod->num_gpl_syms,
-@@ -349,7 +351,7 @@ bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
+@@ -348,7 +350,7 @@ bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
                if (mod->state == MODULE_STATE_UNFORMED)
                        continue;
  
@@ -87892,7 +89769,7 @@ index 079c461..741f79c 100644
                        return true;
        }
        return false;
-@@ -489,7 +491,7 @@ static int percpu_modalloc(struct module *mod, struct load_info *info)
+@@ -488,7 +490,7 @@ static int percpu_modalloc(struct module *mod, struct load_info *info)
        if (!pcpusec->sh_size)
                return 0;
  
@@ -87901,7 +89778,7 @@ index 079c461..741f79c 100644
                pr_warn("%s: per-cpu alignment %li > %li\n",
                        mod->name, align, PAGE_SIZE);
                align = PAGE_SIZE;
-@@ -1061,7 +1063,7 @@ struct module_attribute module_uevent =
+@@ -1060,7 +1062,7 @@ struct module_attribute module_uevent =
  static ssize_t show_coresize(struct module_attribute *mattr,
                             struct module_kobject *mk, char *buffer)
  {
@@ -87910,7 +89787,7 @@ index 079c461..741f79c 100644
  }
  
  static struct module_attribute modinfo_coresize =
-@@ -1070,7 +1072,7 @@ static struct module_attribute modinfo_coresize =
+@@ -1069,7 +1071,7 @@ static struct module_attribute modinfo_coresize =
  static ssize_t show_initsize(struct module_attribute *mattr,
                             struct module_kobject *mk, char *buffer)
  {
@@ -87919,7 +89796,7 @@ index 079c461..741f79c 100644
  }
  
  static struct module_attribute modinfo_initsize =
-@@ -1162,12 +1164,29 @@ static int check_version(Elf_Shdr *sechdrs,
+@@ -1161,12 +1163,29 @@ static int check_version(Elf_Shdr *sechdrs,
                goto bad_version;
        }
  
@@ -87949,7 +89826,7 @@ index 079c461..741f79c 100644
        return 0;
  }
  
-@@ -1283,7 +1302,7 @@ resolve_symbol_wait(struct module *mod,
+@@ -1282,7 +1301,7 @@ resolve_symbol_wait(struct module *mod,
   */
  #ifdef CONFIG_SYSFS
  
@@ -87958,7 +89835,7 @@ index 079c461..741f79c 100644
  static inline bool sect_empty(const Elf_Shdr *sect)
  {
        return !(sect->sh_flags & SHF_ALLOC) || sect->sh_size == 0;
-@@ -1423,7 +1442,7 @@ static void add_notes_attrs(struct module *mod, const struct load_info *info)
+@@ -1422,7 +1441,7 @@ static void add_notes_attrs(struct module *mod, const struct load_info *info)
  {
        unsigned int notes, loaded, i;
        struct module_notes_attrs *notes_attrs;
@@ -87967,7 +89844,7 @@ index 079c461..741f79c 100644
  
        /* failed to create section attributes, so can't create notes */
        if (!mod->sect_attrs)
-@@ -1535,7 +1554,7 @@ static void del_usage_links(struct module *mod)
+@@ -1534,7 +1553,7 @@ static void del_usage_links(struct module *mod)
  static int module_add_modinfo_attrs(struct module *mod)
  {
        struct module_attribute *attr;
@@ -87976,7 +89853,7 @@ index 079c461..741f79c 100644
        int error = 0;
        int i;
  
-@@ -1756,21 +1775,21 @@ static void set_section_ro_nx(void *base,
+@@ -1755,21 +1774,21 @@ static void set_section_ro_nx(void *base,
  
  static void unset_module_core_ro_nx(struct module *mod)
  {
@@ -88006,7 +89883,7 @@ index 079c461..741f79c 100644
                set_memory_rw);
  }
  
-@@ -1783,14 +1802,14 @@ void set_all_modules_text_rw(void)
+@@ -1782,14 +1801,14 @@ void set_all_modules_text_rw(void)
        list_for_each_entry_rcu(mod, &modules, list) {
                if (mod->state == MODULE_STATE_UNFORMED)
                        continue;
@@ -88027,7 +89904,7 @@ index 079c461..741f79c 100644
                                                set_memory_rw);
                }
        }
-@@ -1806,14 +1825,14 @@ void set_all_modules_text_ro(void)
+@@ -1805,14 +1824,14 @@ void set_all_modules_text_ro(void)
        list_for_each_entry_rcu(mod, &modules, list) {
                if (mod->state == MODULE_STATE_UNFORMED)
                        continue;
@@ -88048,7 +89925,7 @@ index 079c461..741f79c 100644
                                                set_memory_ro);
                }
        }
-@@ -1864,16 +1883,19 @@ static void free_module(struct module *mod)
+@@ -1865,16 +1884,19 @@ static void free_module(struct module *mod)
  
        /* This may be NULL, but that's OK */
        unset_module_init_ro_nx(mod);
@@ -88071,7 +89948,7 @@ index 079c461..741f79c 100644
  
  #ifdef CONFIG_MPU
        update_protections(current->mm);
-@@ -1942,9 +1964,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
+@@ -1943,9 +1965,31 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
        int ret = 0;
        const struct kernel_symbol *ksym;
  
@@ -88103,7 +89980,7 @@ index 079c461..741f79c 100644
                switch (sym[i].st_shndx) {
                case SHN_COMMON:
                        /* Ignore common symbols */
-@@ -1969,7 +2013,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
+@@ -1970,7 +2014,9 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
                        ksym = resolve_symbol_wait(mod, info, name);
                        /* Ok if resolved.  */
                        if (ksym && !IS_ERR(ksym)) {
@@ -88113,7 +89990,7 @@ index 079c461..741f79c 100644
                                break;
                        }
  
-@@ -1988,11 +2034,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
+@@ -1989,11 +2035,20 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
                                secbase = (unsigned long)mod_percpu(mod);
                        else
                                secbase = info->sechdrs[sym[i].st_shndx].sh_addr;
@@ -88134,7 +90011,7 @@ index 079c461..741f79c 100644
        return ret;
  }
  
-@@ -2076,22 +2131,12 @@ static void layout_sections(struct module *mod, struct load_info *info)
+@@ -2077,22 +2132,12 @@ static void layout_sections(struct module *mod, struct load_info *info)
                            || s->sh_entsize != ~0UL
                            || strstarts(sname, ".init"))
                                continue;
@@ -88161,7 +90038,7 @@ index 079c461..741f79c 100644
        }
  
        pr_debug("Init section allocation order:\n");
-@@ -2105,23 +2150,13 @@ static void layout_sections(struct module *mod, struct load_info *info)
+@@ -2106,23 +2151,13 @@ static void layout_sections(struct module *mod, struct load_info *info)
                            || s->sh_entsize != ~0UL
                            || !strstarts(sname, ".init"))
                                continue;
@@ -88190,7 +90067,7 @@ index 079c461..741f79c 100644
        }
  }
  
-@@ -2294,7 +2329,7 @@ static void layout_symtab(struct module *mod, struct load_info *info)
+@@ -2295,7 +2330,7 @@ static void layout_symtab(struct module *mod, struct load_info *info)
  
        /* Put symbol section at end of init part of module. */
        symsect->sh_flags |= SHF_ALLOC;
@@ -88199,7 +90076,7 @@ index 079c461..741f79c 100644
                                         info->index.sym) | INIT_OFFSET_MASK;
        pr_debug("\t%s\n", info->secstrings + symsect->sh_name);
  
-@@ -2311,13 +2346,13 @@ static void layout_symtab(struct module *mod, struct load_info *info)
+@@ -2312,13 +2347,13 @@ static void layout_symtab(struct module *mod, struct load_info *info)
        }
  
        /* Append room for core symbols at end of core part. */
@@ -88217,7 +90094,7 @@ index 079c461..741f79c 100644
                                         info->index.str) | INIT_OFFSET_MASK;
        pr_debug("\t%s\n", info->secstrings + strsect->sh_name);
  }
-@@ -2335,12 +2370,14 @@ static void add_kallsyms(struct module *mod, const struct load_info *info)
+@@ -2336,12 +2371,14 @@ static void add_kallsyms(struct module *mod, const struct load_info *info)
        /* Make sure we get permanent strtab: don't use info->strtab. */
        mod->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
  
@@ -88234,7 +90111,7 @@ index 079c461..741f79c 100644
        src = mod->symtab;
        for (ndst = i = 0; i < mod->num_symtab; i++) {
                if (i == 0 ||
-@@ -2352,6 +2389,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info)
+@@ -2353,6 +2390,8 @@ static void add_kallsyms(struct module *mod, const struct load_info *info)
                }
        }
        mod->core_num_syms = ndst;
@@ -88243,7 +90120,7 @@ index 079c461..741f79c 100644
  }
  #else
  static inline void layout_symtab(struct module *mod, struct load_info *info)
-@@ -2385,17 +2424,33 @@ void * __weak module_alloc(unsigned long size)
+@@ -2386,17 +2425,33 @@ void * __weak module_alloc(unsigned long size)
        return vmalloc_exec(size);
  }
  
@@ -88282,7 +90159,7 @@ index 079c461..741f79c 100644
                mutex_unlock(&module_mutex);
        }
        return ret;
-@@ -2652,7 +2707,15 @@ static struct module *setup_load_info(struct load_info *info, int flags)
+@@ -2650,7 +2705,15 @@ static struct module *setup_load_info(struct load_info *info, int flags)
        mod = (void *)info->sechdrs[info->index.mod].sh_addr;
  
        if (info->index.sym == 0) {
@@ -88298,7 +90175,7 @@ index 079c461..741f79c 100644
                return ERR_PTR(-ENOEXEC);
        }
  
-@@ -2668,8 +2731,14 @@ static struct module *setup_load_info(struct load_info *info, int flags)
+@@ -2666,8 +2729,14 @@ static struct module *setup_load_info(struct load_info *info, int flags)
  static int check_modinfo(struct module *mod, struct load_info *info, int flags)
  {
        const char *modmagic = get_modinfo(info, "vermagic");
@@ -88313,7 +90190,7 @@ index 079c461..741f79c 100644
        if (flags & MODULE_INIT_IGNORE_VERMAGIC)
                modmagic = NULL;
  
-@@ -2694,7 +2763,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags)
+@@ -2692,7 +2761,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags)
        }
  
        /* Set up license info based on the info section */
@@ -88322,7 +90199,7 @@ index 079c461..741f79c 100644
  
        return 0;
  }
-@@ -2788,7 +2857,7 @@ static int move_module(struct module *mod, struct load_info *info)
+@@ -2786,7 +2855,7 @@ static int move_module(struct module *mod, struct load_info *info)
        void *ptr;
  
        /* Do the allocs. */
@@ -88331,7 +90208,7 @@ index 079c461..741f79c 100644
        /*
         * The pointer to this block is stored in the module structure
         * which is inside the block. Just mark it as not being a
-@@ -2798,11 +2867,11 @@ static int move_module(struct module *mod, struct load_info *info)
+@@ -2796,11 +2865,11 @@ static int move_module(struct module *mod, struct load_info *info)
        if (!ptr)
                return -ENOMEM;
  
@@ -88347,7 +90224,7 @@ index 079c461..741f79c 100644
                /*
                 * The pointer to this block is stored in the module structure
                 * which is inside the block. This block doesn't need to be
-@@ -2811,13 +2880,45 @@ static int move_module(struct module *mod, struct load_info *info)
+@@ -2809,13 +2878,45 @@ static int move_module(struct module *mod, struct load_info *info)
                 */
                kmemleak_ignore(ptr);
                if (!ptr) {
@@ -88397,7 +90274,7 @@ index 079c461..741f79c 100644
  
        /* Transfer each section which specifies SHF_ALLOC */
        pr_debug("final section addresses:\n");
-@@ -2828,16 +2929,45 @@ static int move_module(struct module *mod, struct load_info *info)
+@@ -2826,16 +2927,45 @@ static int move_module(struct module *mod, struct load_info *info)
                if (!(shdr->sh_flags & SHF_ALLOC))
                        continue;
  
@@ -88450,7 +90327,7 @@ index 079c461..741f79c 100644
                pr_debug("\t0x%lx %s\n",
                         (long)shdr->sh_addr, info->secstrings + shdr->sh_name);
        }
-@@ -2894,12 +3024,12 @@ static void flush_module_icache(const struct module *mod)
+@@ -2892,12 +3022,12 @@ static void flush_module_icache(const struct module *mod)
         * Do it before processing of module parameters, so the module
         * can provide parameter accessor functions of its own.
         */
@@ -88469,7 +90346,7 @@ index 079c461..741f79c 100644
  
        set_fs(old_fs);
  }
-@@ -2956,8 +3086,10 @@ static struct module *layout_and_allocate(struct load_info *info, int flags)
+@@ -2954,8 +3084,10 @@ static struct module *layout_and_allocate(struct load_info *info, int flags)
  static void module_deallocate(struct module *mod, struct load_info *info)
  {
        percpu_modfree(mod);
@@ -88482,7 +90359,7 @@ index 079c461..741f79c 100644
  }
  
  int __weak module_finalize(const Elf_Ehdr *hdr,
-@@ -2970,7 +3102,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr,
+@@ -2968,7 +3100,9 @@ int __weak module_finalize(const Elf_Ehdr *hdr,
  static int post_relocation(struct module *mod, const struct load_info *info)
  {
        /* Sort exception table now relocations are done. */
@@ -88492,8 +90369,26 @@ index 079c461..741f79c 100644
  
        /* Copy relocated percpu area over. */
        percpu_modcopy(mod, (void *)info->sechdrs[info->index.pcpu].sh_addr,
-@@ -3024,16 +3158,16 @@ static int do_init_module(struct module *mod)
-                       MODULE_STATE_COMING, mod);
+@@ -3077,11 +3211,12 @@ static int do_init_module(struct module *mod)
+       mod->strtab = mod->core_strtab;
+ #endif
+       unset_module_init_ro_nx(mod);
+-      module_free(mod, mod->module_init);
+-      mod->module_init = NULL;
+-      mod->init_size = 0;
+-      mod->init_ro_size = 0;
+-      mod->init_text_size = 0;
++      module_free(mod, mod->module_init_rw);
++      module_free_exec(mod, mod->module_init_rx);
++      mod->module_init_rw = NULL;
++      mod->module_init_rx = NULL;
++      mod->init_size_rw = 0;
++      mod->init_size_rx = 0;
+       mutex_unlock(&module_mutex);
+       wake_up_all(&module_wq);
+@@ -3149,16 +3284,16 @@ static int complete_formation(struct module *mod, struct load_info *info)
+       module_bug_finalize(info->hdr, info->sechdrs, mod);
  
        /* Set RO and NX regions for core */
 -      set_section_ro_nx(mod->module_core,
@@ -88515,27 +90410,9 @@ index 079c461..741f79c 100644
 +                              mod->init_size_rx,
 +                              mod->init_size_rx);
  
-       do_mod_ctors(mod);
-       /* Start the module */
-@@ -3094,11 +3228,12 @@ static int do_init_module(struct module *mod)
-       mod->strtab = mod->core_strtab;
- #endif
-       unset_module_init_ro_nx(mod);
--      module_free(mod, mod->module_init);
--      mod->module_init = NULL;
--      mod->init_size = 0;
--      mod->init_ro_size = 0;
--      mod->init_text_size = 0;
-+      module_free(mod, mod->module_init_rw);
-+      module_free_exec(mod, mod->module_init_rx);
-+      mod->module_init_rw = NULL;
-+      mod->module_init_rx = NULL;
-+      mod->init_size_rw = 0;
-+      mod->init_size_rx = 0;
-       mutex_unlock(&module_mutex);
-       wake_up_all(&module_wq);
-@@ -3241,9 +3376,38 @@ static int load_module(struct load_info *info, const char __user *uargs,
+       /* Mark state as coming so strong_try_module_get() ignores us,
+        * but kallsyms etc. can see us. */
+@@ -3242,9 +3377,38 @@ static int load_module(struct load_info *info, const char __user *uargs,
        if (err)
                goto free_unload;
  
@@ -88574,7 +90451,7 @@ index 079c461..741f79c 100644
        /* Fix up syms, so that st_value is a pointer to location. */
        err = simplify_symbols(mod, info);
        if (err < 0)
-@@ -3259,13 +3423,6 @@ static int load_module(struct load_info *info, const char __user *uargs,
+@@ -3260,13 +3424,6 @@ static int load_module(struct load_info *info, const char __user *uargs,
  
        flush_module_icache(mod);
  
@@ -88588,7 +90465,7 @@ index 079c461..741f79c 100644
        dynamic_debug_setup(info->debug, info->num_debug);
  
        /* Ftrace init must be called in the MODULE_STATE_UNFORMED state */
-@@ -3303,11 +3460,10 @@ static int load_module(struct load_info *info, const char __user *uargs,
+@@ -3314,11 +3471,10 @@ static int load_module(struct load_info *info, const char __user *uargs,
   ddebug_cleanup:
        dynamic_debug_remove(info->debug);
        synchronize_sched();
@@ -88601,7 +90478,7 @@ index 079c461..741f79c 100644
   free_unload:
        module_unload_free(mod);
   unlink_mod:
-@@ -3390,10 +3546,16 @@ static const char *get_ksymbol(struct module *mod,
+@@ -3403,10 +3559,16 @@ static const char *get_ksymbol(struct module *mod,
        unsigned long nextval;
  
        /* At worse, next value is at end of module */
@@ -88621,7 +90498,7 @@ index 079c461..741f79c 100644
  
        /* Scan for closest preceding symbol, and next symbol. (ELF
           starts real symbols at 1). */
-@@ -3644,7 +3806,7 @@ static int m_show(struct seq_file *m, void *p)
+@@ -3654,7 +3816,7 @@ static int m_show(struct seq_file *m, void *p)
                return 0;
  
        seq_printf(m, "%s %u",
@@ -88630,7 +90507,7 @@ index 079c461..741f79c 100644
        print_unload_info(m, mod);
  
        /* Informative for users. */
-@@ -3653,7 +3815,7 @@ static int m_show(struct seq_file *m, void *p)
+@@ -3663,7 +3825,7 @@ static int m_show(struct seq_file *m, void *p)
                   mod->state == MODULE_STATE_COMING ? "Loading":
                   "Live");
        /* Used by oprofile and other similar tools. */
@@ -88639,7 +90516,7 @@ index 079c461..741f79c 100644
  
        /* Taints info */
        if (mod->taints)
-@@ -3689,7 +3851,17 @@ static const struct file_operations proc_modules_operations = {
+@@ -3699,7 +3861,17 @@ static const struct file_operations proc_modules_operations = {
  
  static int __init proc_modules_init(void)
  {
@@ -88657,7 +90534,7 @@ index 079c461..741f79c 100644
        return 0;
  }
  module_init(proc_modules_init);
-@@ -3750,14 +3922,14 @@ struct module *__module_address(unsigned long addr)
+@@ -3760,7 +3932,8 @@ struct module *__module_address(unsigned long addr)
  {
        struct module *mod;
  
@@ -88667,15 +90544,7 @@ index 079c461..741f79c 100644
                return NULL;
  
        list_for_each_entry_rcu(mod, &modules, list) {
-               if (mod->state == MODULE_STATE_UNFORMED)
-                       continue;
--              if (within_module_core(addr, mod)
--                  || within_module_init(addr, mod))
-+              if (within_module_init(addr, mod) || within_module_core(addr, mod))
-                       return mod;
-       }
-       return NULL;
-@@ -3792,11 +3964,20 @@ bool is_module_text_address(unsigned long addr)
+@@ -3801,11 +3974,20 @@ bool is_module_text_address(unsigned long addr)
   */
  struct module *__module_text_address(unsigned long addr)
  {
@@ -88700,7 +90569,7 @@ index 079c461..741f79c 100644
        }
        return mod;
 diff --git a/kernel/notifier.c b/kernel/notifier.c
-index db4c8b0..ad011c5 100644
+index 4803da6..1c5eea6 100644
 --- a/kernel/notifier.c
 +++ b/kernel/notifier.c
 @@ -5,6 +5,7 @@
@@ -88778,10 +90647,10 @@ index 161402f..598814c 100644
        atomic_set(&pd->refcnt, 0);
        pd->pinst = pinst;
 diff --git a/kernel/panic.c b/kernel/panic.c
-index d02fa9f..9faec0a 100644
+index cf80672..f6771b2 100644
 --- a/kernel/panic.c
 +++ b/kernel/panic.c
-@@ -52,7 +52,7 @@ EXPORT_SYMBOL(panic_blink);
+@@ -53,7 +53,7 @@ EXPORT_SYMBOL(panic_blink);
  /*
   * Stop ourself in panic -- architecture code may override this
   */
@@ -88790,7 +90659,7 @@ index d02fa9f..9faec0a 100644
  {
        while (1)
                cpu_relax();
-@@ -408,7 +408,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller,
+@@ -422,7 +422,7 @@ static void warn_slowpath_common(const char *file, int line, void *caller,
        disable_trace_on_warning();
  
        pr_warn("------------[ cut here ]------------\n");
@@ -88799,7 +90668,7 @@ index d02fa9f..9faec0a 100644
                raw_smp_processor_id(), current->pid, file, line, caller);
  
        if (args)
-@@ -462,7 +462,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
+@@ -476,7 +476,8 @@ EXPORT_SYMBOL(warn_slowpath_null);
   */
  __visible void __stack_chk_fail(void)
  {
@@ -88810,7 +90679,7 @@ index d02fa9f..9faec0a 100644
  }
  EXPORT_SYMBOL(__stack_chk_fail);
 diff --git a/kernel/pid.c b/kernel/pid.c
-index 9b9a266..c20ef80 100644
+index 82430c8..53d7793 100644
 --- a/kernel/pid.c
 +++ b/kernel/pid.c
 @@ -33,6 +33,7 @@
@@ -88830,7 +90699,7 @@ index 9b9a266..c20ef80 100644
  
  int pid_max_min = RESERVED_PIDS + 1;
  int pid_max_max = PID_MAX_LIMIT;
-@@ -445,10 +446,18 @@ EXPORT_SYMBOL(pid_task);
+@@ -447,10 +448,18 @@ EXPORT_SYMBOL(pid_task);
   */
  struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns)
  {
@@ -88850,7 +90719,7 @@ index 9b9a266..c20ef80 100644
  }
  
  struct task_struct *find_task_by_vpid(pid_t vnr)
-@@ -456,6 +465,14 @@ struct task_struct *find_task_by_vpid(pid_t vnr)
+@@ -458,6 +467,14 @@ struct task_struct *find_task_by_vpid(pid_t vnr)
        return find_task_by_pid_ns(vnr, task_active_pid_ns(current));
  }
  
@@ -88878,145 +90747,8 @@ index db95d8e..a0ca23f 100644
  
        if (write && !ns_capable(pid_ns->user_ns, CAP_SYS_ADMIN))
                return -EPERM;
-diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
-index 3b89464..5e38379 100644
---- a/kernel/posix-cpu-timers.c
-+++ b/kernel/posix-cpu-timers.c
-@@ -1464,14 +1464,14 @@ struct k_clock clock_posix_cpu = {
- static __init int init_posix_cpu_timers(void)
- {
--      struct k_clock process = {
-+      static struct k_clock process = {
-               .clock_getres   = process_cpu_clock_getres,
-               .clock_get      = process_cpu_clock_get,
-               .timer_create   = process_cpu_timer_create,
-               .nsleep         = process_cpu_nsleep,
-               .nsleep_restart = process_cpu_nsleep_restart,
-       };
--      struct k_clock thread = {
-+      static struct k_clock thread = {
-               .clock_getres   = thread_cpu_clock_getres,
-               .clock_get      = thread_cpu_clock_get,
-               .timer_create   = thread_cpu_timer_create,
-diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
-index 424c2d4..679242f 100644
---- a/kernel/posix-timers.c
-+++ b/kernel/posix-timers.c
-@@ -43,6 +43,7 @@
- #include <linux/hash.h>
- #include <linux/posix-clock.h>
- #include <linux/posix-timers.h>
-+#include <linux/grsecurity.h>
- #include <linux/syscalls.h>
- #include <linux/wait.h>
- #include <linux/workqueue.h>
-@@ -122,7 +123,7 @@ static DEFINE_SPINLOCK(hash_lock);
-  *        which we beg off on and pass to do_sys_settimeofday().
-  */
--static struct k_clock posix_clocks[MAX_CLOCKS];
-+static struct k_clock *posix_clocks[MAX_CLOCKS];
- /*
-  * These ones are defined below.
-@@ -275,7 +276,7 @@ static int posix_get_tai(clockid_t which_clock, struct timespec *tp)
-  */
- static __init int init_posix_timers(void)
- {
--      struct k_clock clock_realtime = {
-+      static struct k_clock clock_realtime = {
-               .clock_getres   = hrtimer_get_res,
-               .clock_get      = posix_clock_realtime_get,
-               .clock_set      = posix_clock_realtime_set,
-@@ -287,7 +288,7 @@ static __init int init_posix_timers(void)
-               .timer_get      = common_timer_get,
-               .timer_del      = common_timer_del,
-       };
--      struct k_clock clock_monotonic = {
-+      static struct k_clock clock_monotonic = {
-               .clock_getres   = hrtimer_get_res,
-               .clock_get      = posix_ktime_get_ts,
-               .nsleep         = common_nsleep,
-@@ -297,19 +298,19 @@ static __init int init_posix_timers(void)
-               .timer_get      = common_timer_get,
-               .timer_del      = common_timer_del,
-       };
--      struct k_clock clock_monotonic_raw = {
-+      static struct k_clock clock_monotonic_raw = {
-               .clock_getres   = hrtimer_get_res,
-               .clock_get      = posix_get_monotonic_raw,
-       };
--      struct k_clock clock_realtime_coarse = {
-+      static struct k_clock clock_realtime_coarse = {
-               .clock_getres   = posix_get_coarse_res,
-               .clock_get      = posix_get_realtime_coarse,
-       };
--      struct k_clock clock_monotonic_coarse = {
-+      static struct k_clock clock_monotonic_coarse = {
-               .clock_getres   = posix_get_coarse_res,
-               .clock_get      = posix_get_monotonic_coarse,
-       };
--      struct k_clock clock_tai = {
-+      static struct k_clock clock_tai = {
-               .clock_getres   = hrtimer_get_res,
-               .clock_get      = posix_get_tai,
-               .nsleep         = common_nsleep,
-@@ -319,7 +320,7 @@ static __init int init_posix_timers(void)
-               .timer_get      = common_timer_get,
-               .timer_del      = common_timer_del,
-       };
--      struct k_clock clock_boottime = {
-+      static struct k_clock clock_boottime = {
-               .clock_getres   = hrtimer_get_res,
-               .clock_get      = posix_get_boottime,
-               .nsleep         = common_nsleep,
-@@ -531,7 +532,7 @@ void posix_timers_register_clock(const clockid_t clock_id,
-               return;
-       }
--      posix_clocks[clock_id] = *new_clock;
-+      posix_clocks[clock_id] = new_clock;
- }
- EXPORT_SYMBOL_GPL(posix_timers_register_clock);
-@@ -577,9 +578,9 @@ static struct k_clock *clockid_to_kclock(const clockid_t id)
-               return (id & CLOCKFD_MASK) == CLOCKFD ?
-                       &clock_posix_dynamic : &clock_posix_cpu;
--      if (id >= MAX_CLOCKS || !posix_clocks[id].clock_getres)
-+      if (id >= MAX_CLOCKS || !posix_clocks[id] || !posix_clocks[id]->clock_getres)
-               return NULL;
--      return &posix_clocks[id];
-+      return posix_clocks[id];
- }
- static int common_timer_create(struct k_itimer *new_timer)
-@@ -597,7 +598,7 @@ SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock,
-       struct k_clock *kc = clockid_to_kclock(which_clock);
-       struct k_itimer *new_timer;
-       int error, new_timer_id;
--      sigevent_t event;
-+      sigevent_t event = { };
-       int it_id_set = IT_ID_NOT_SET;
-       if (!kc)
-@@ -1011,6 +1012,13 @@ SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock,
-       if (copy_from_user(&new_tp, tp, sizeof (*tp)))
-               return -EFAULT;
-+      /* only the CLOCK_REALTIME clock can be set, all other clocks
-+         have their clock_set fptr set to a nosettime dummy function
-+         CLOCK_REALTIME has a NULL clock_set fptr which causes it to
-+         call common_clock_set, which calls do_sys_settimeofday, which
-+         we hook
-+      */
-+
-       return kc->clock_set(which_clock, &new_tp);
- }
 diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
-index 2fac9cc..56fef29 100644
+index bbef57f..5f94462 100644
 --- a/kernel/power/Kconfig
 +++ b/kernel/power/Kconfig
 @@ -24,6 +24,8 @@ config HIBERNATE_CALLBACKS
@@ -89029,10 +90761,10 @@ index 2fac9cc..56fef29 100644
        select LZO_COMPRESS
        select LZO_DECOMPRESS
 diff --git a/kernel/power/process.c b/kernel/power/process.c
-index 06ec886..9dba35e 100644
+index 5a6ec86..3a8c884 100644
 --- a/kernel/power/process.c
 +++ b/kernel/power/process.c
-@@ -34,6 +34,7 @@ static int try_to_freeze_tasks(bool user_only)
+@@ -35,6 +35,7 @@ static int try_to_freeze_tasks(bool user_only)
        unsigned int elapsed_msecs;
        bool wakeup = false;
        int sleep_usecs = USEC_PER_MSEC;
@@ -89040,14 +90772,14 @@ index 06ec886..9dba35e 100644
  
        do_gettimeofday(&start);
  
-@@ -44,13 +45,20 @@ static int try_to_freeze_tasks(bool user_only)
+@@ -45,13 +46,20 @@ static int try_to_freeze_tasks(bool user_only)
  
        while (true) {
                todo = 0;
 +              if (time_after(jiffies, end_time))
 +                      timedout = true;
                read_lock(&tasklist_lock);
-               do_each_thread(g, p) {
+               for_each_process_thread(g, p) {
                        if (p == current || !freeze_task(p))
                                continue;
  
@@ -89059,10 +90791,10 @@ index 06ec886..9dba35e 100644
 +                                      sched_show_task(p);
 +                              }
 +                      }
-               } while_each_thread(g, p);
+               }
                read_unlock(&tasklist_lock);
  
-@@ -59,7 +67,7 @@ static int try_to_freeze_tasks(bool user_only)
+@@ -60,7 +68,7 @@ static int try_to_freeze_tasks(bool user_only)
                        todo += wq_busy;
                }
  
@@ -89072,10 +90804,10 @@ index 06ec886..9dba35e 100644
  
                if (pm_wakeup_pending()) {
 diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
-index 221229c..c76ca0a 100644
+index ced2b84..ffc4791 100644
 --- a/kernel/printk/printk.c
 +++ b/kernel/printk/printk.c
-@@ -385,6 +385,11 @@ static int check_syslog_permissions(int type, bool from_file)
+@@ -489,6 +489,11 @@ static int check_syslog_permissions(int type, bool from_file)
        if (from_file && type != SYSLOG_ACTION_OPEN)
                return 0;
  
@@ -89088,7 +90820,7 @@ index 221229c..c76ca0a 100644
                if (capable(CAP_SYSLOG))
                        return 0;
 diff --git a/kernel/profile.c b/kernel/profile.c
-index cb980f0..ccd8782 100644
+index 54bf5ba..df6e0a2 100644
 --- a/kernel/profile.c
 +++ b/kernel/profile.c
 @@ -37,7 +37,7 @@ struct profile_hit {
@@ -89100,7 +90832,7 @@ index cb980f0..ccd8782 100644
  static unsigned long prof_len, prof_shift;
  
  int prof_on __read_mostly;
-@@ -260,7 +260,7 @@ static void profile_flip_buffers(void)
+@@ -256,7 +256,7 @@ static void profile_flip_buffers(void)
                                        hits[i].pc = 0;
                                continue;
                        }
@@ -89109,7 +90841,7 @@ index cb980f0..ccd8782 100644
                        hits[i].hits = hits[i].pc = 0;
                }
        }
-@@ -321,9 +321,9 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
+@@ -317,9 +317,9 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
         * Add the current hit(s) and flush the write-queue out
         * to the global buffer:
         */
@@ -89121,7 +90853,7 @@ index cb980f0..ccd8782 100644
                hits[i].pc = hits[i].hits = 0;
        }
  out:
-@@ -398,7 +398,7 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
+@@ -394,7 +394,7 @@ static void do_profile_hits(int type, void *__pc, unsigned int nr_hits)
  {
        unsigned long pc;
        pc = ((unsigned long)__pc - (unsigned long)_stext) >> prof_shift;
@@ -89130,7 +90862,7 @@ index cb980f0..ccd8782 100644
  }
  #endif /* !CONFIG_SMP */
  
-@@ -494,7 +494,7 @@ read_profile(struct file *file, char __user *buf, size_t count, loff_t *ppos)
+@@ -490,7 +490,7 @@ read_profile(struct file *file, char __user *buf, size_t count, loff_t *ppos)
                        return -EFAULT;
                buf++; p++; count--; read++;
        }
@@ -89139,7 +90871,7 @@ index cb980f0..ccd8782 100644
        if (copy_to_user(buf, (void *)pnt, count))
                return -EFAULT;
        read += count;
-@@ -525,7 +525,7 @@ static ssize_t write_profile(struct file *file, const char __user *buf,
+@@ -521,7 +521,7 @@ static ssize_t write_profile(struct file *file, const char __user *buf,
        }
  #endif
        profile_discard_flip_buffers();
@@ -89149,10 +90881,10 @@ index cb980f0..ccd8782 100644
  }
  
 diff --git a/kernel/ptrace.c b/kernel/ptrace.c
-index adf9862..9d86345 100644
+index 54e7522..5b82dd6 100644
 --- a/kernel/ptrace.c
 +++ b/kernel/ptrace.c
-@@ -327,7 +327,7 @@ static int ptrace_attach(struct task_struct *task, long request,
+@@ -321,7 +321,7 @@ static int ptrace_attach(struct task_struct *task, long request,
        if (seize)
                flags |= PT_SEIZED;
        rcu_read_lock();
@@ -89161,7 +90893,7 @@ index adf9862..9d86345 100644
                flags |= PT_PTRACE_CAP;
        rcu_read_unlock();
        task->ptrace = flags;
-@@ -538,7 +538,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst
+@@ -532,7 +532,7 @@ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst
                                break;
                        return -EIO;
                }
@@ -89170,7 +90902,7 @@ index adf9862..9d86345 100644
                        return -EFAULT;
                copied += retval;
                src += retval;
-@@ -806,7 +806,7 @@ int ptrace_request(struct task_struct *child, long request,
+@@ -800,7 +800,7 @@ int ptrace_request(struct task_struct *child, long request,
        bool seized = child->ptrace & PT_SEIZED;
        int ret = -EIO;
        siginfo_t siginfo, *si;
@@ -89179,7 +90911,7 @@ index adf9862..9d86345 100644
        unsigned long __user *datalp = datavp;
        unsigned long flags;
  
-@@ -1052,14 +1052,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
+@@ -1046,14 +1046,21 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
                goto out;
        }
  
@@ -89202,7 +90934,7 @@ index adf9862..9d86345 100644
                goto out_put_task_struct;
        }
  
-@@ -1087,7 +1094,7 @@ int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,
+@@ -1081,7 +1088,7 @@ int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,
        copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0);
        if (copied != sizeof(tmp))
                return -EIO;
@@ -89211,7 +90943,7 @@ index adf9862..9d86345 100644
  }
  
  int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
-@@ -1181,7 +1188,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request,
+@@ -1175,7 +1182,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request,
  }
  
  COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid,
@@ -89220,7 +90952,7 @@ index adf9862..9d86345 100644
  {
        struct task_struct *child;
        long ret;
-@@ -1197,14 +1204,21 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid,
+@@ -1191,14 +1198,21 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_long_t, request, compat_long_t, pid,
                goto out;
        }
  
@@ -89244,10 +90976,10 @@ index adf9862..9d86345 100644
        }
  
 diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
-index bd30bc6..dce23da 100644
+index 240fa90..5fa56bd 100644
 --- a/kernel/rcu/rcutorture.c
 +++ b/kernel/rcu/rcutorture.c
-@@ -122,12 +122,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1],
+@@ -134,12 +134,12 @@ static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1],
                      rcu_torture_count) = { 0 };
  static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1],
                      rcu_torture_batch) = { 0 };
@@ -89266,7 +90998,16 @@ index bd30bc6..dce23da 100644
  static long n_rcu_torture_barrier_error;
  static long n_rcu_torture_boost_ktrerror;
  static long n_rcu_torture_boost_rterror;
-@@ -186,11 +186,11 @@ rcu_torture_alloc(void)
+@@ -148,7 +148,7 @@ static long n_rcu_torture_boosts;
+ static long n_rcu_torture_timers;
+ static long n_barrier_attempts;
+ static long n_barrier_successes;
+-static atomic_long_t n_cbfloods;
++static atomic_long_unchecked_t n_cbfloods;
+ static struct list_head rcu_torture_removed;
+ static int rcu_torture_writer_state;
+@@ -211,11 +211,11 @@ rcu_torture_alloc(void)
  
        spin_lock_bh(&rcu_torture_lock);
        if (list_empty(&rcu_torture_freelist)) {
@@ -89280,7 +91021,7 @@ index bd30bc6..dce23da 100644
        p = rcu_torture_freelist.next;
        list_del_init(p);
        spin_unlock_bh(&rcu_torture_lock);
-@@ -203,7 +203,7 @@ rcu_torture_alloc(void)
+@@ -228,7 +228,7 @@ rcu_torture_alloc(void)
  static void
  rcu_torture_free(struct rcu_torture *p)
  {
@@ -89289,7 +91030,7 @@ index bd30bc6..dce23da 100644
        spin_lock_bh(&rcu_torture_lock);
        list_add_tail(&p->rtort_free, &rcu_torture_freelist);
        spin_unlock_bh(&rcu_torture_lock);
-@@ -287,7 +287,7 @@ rcu_torture_cb(struct rcu_head *p)
+@@ -312,7 +312,7 @@ rcu_torture_pipe_update_one(struct rcu_torture *rp)
        i = rp->rtort_pipe_count;
        if (i > RCU_TORTURE_PIPE_LEN)
                i = RCU_TORTURE_PIPE_LEN;
@@ -89297,26 +91038,26 @@ index bd30bc6..dce23da 100644
 +      atomic_inc_unchecked(&rcu_torture_wcount[i]);
        if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
                rp->rtort_mbtest = 0;
-               rcu_torture_free(rp);
-@@ -714,7 +714,7 @@ rcu_torture_writer(void *arg)
+               return true;
+@@ -799,7 +799,7 @@ rcu_torture_cbflood(void *arg)
+       VERBOSE_TOROUT_STRING("rcu_torture_cbflood task started");
+       do {
+               schedule_timeout_interruptible(cbflood_inter_holdoff);
+-              atomic_long_inc(&n_cbfloods);
++              atomic_long_inc_unchecked(&n_cbfloods);
+               WARN_ON(signal_pending(current));
+               for (i = 0; i < cbflood_n_burst; i++) {
+                       for (j = 0; j < cbflood_n_per_burst; j++) {
+@@ -917,7 +917,7 @@ rcu_torture_writer(void *arg)
                        i = old_rp->rtort_pipe_count;
                        if (i > RCU_TORTURE_PIPE_LEN)
                                i = RCU_TORTURE_PIPE_LEN;
 -                      atomic_inc(&rcu_torture_wcount[i]);
 +                      atomic_inc_unchecked(&rcu_torture_wcount[i]);
                        old_rp->rtort_pipe_count++;
-                       if (gp_normal == gp_exp)
-                               exp = !!(torture_random(&rand) & 0x80);
-@@ -732,7 +732,7 @@ rcu_torture_writer(void *arg)
-                                       i = rp->rtort_pipe_count;
-                                       if (i > RCU_TORTURE_PIPE_LEN)
-                                               i = RCU_TORTURE_PIPE_LEN;
--                                      atomic_inc(&rcu_torture_wcount[i]);
-+                                      atomic_inc_unchecked(&rcu_torture_wcount[i]);
-                                       if (++rp->rtort_pipe_count >=
-                                           RCU_TORTURE_PIPE_LEN) {
-                                               rp->rtort_mbtest = 0;
-@@ -825,7 +825,7 @@ static void rcu_torture_timer(unsigned long unused)
+                       switch (synctype[torture_random(&rand) % nsynctypes]) {
+                       case RTWS_DEF_FREE:
+@@ -1035,7 +1035,7 @@ static void rcu_torture_timer(unsigned long unused)
                return;
        }
        if (p->rtort_mbtest == 0)
@@ -89325,7 +91066,7 @@ index bd30bc6..dce23da 100644
        spin_lock(&rand_lock);
        cur_ops->read_delay(&rand);
        n_rcu_torture_timers++;
-@@ -895,7 +895,7 @@ rcu_torture_reader(void *arg)
+@@ -1105,7 +1105,7 @@ rcu_torture_reader(void *arg)
                        continue;
                }
                if (p->rtort_mbtest == 0)
@@ -89334,31 +91075,30 @@ index bd30bc6..dce23da 100644
                cur_ops->read_delay(&rand);
                preempt_disable();
                pipe_count = p->rtort_pipe_count;
-@@ -950,15 +950,15 @@ rcu_torture_printk(char *page)
-       }
-       page += sprintf(page, "%s%s ", torture_type, TORTURE_FLAG);
-       page += sprintf(page,
--                     "rtc: %p ver: %lu tfle: %d rta: %d rtaf: %d rtf: %d ",
-+                     "rtc: %pP ver: %lu tfle: %d rta: %d rtaf: %d rtf: %d ",
-                      rcu_torture_current,
-                      rcu_torture_current_version,
-                      list_empty(&rcu_torture_freelist),
--                     atomic_read(&n_rcu_torture_alloc),
--                     atomic_read(&n_rcu_torture_alloc_fail),
--                     atomic_read(&n_rcu_torture_free));
-+                     atomic_read_unchecked(&n_rcu_torture_alloc),
-+                     atomic_read_unchecked(&n_rcu_torture_alloc_fail),
-+                     atomic_read_unchecked(&n_rcu_torture_free));
-       page += sprintf(page, "rtmbe: %d rtbke: %ld rtbre: %ld ",
--                     atomic_read(&n_rcu_torture_mberror),
-+                     atomic_read_unchecked(&n_rcu_torture_mberror),
-                      n_rcu_torture_boost_ktrerror,
-                      n_rcu_torture_boost_rterror);
-       page += sprintf(page, "rtbf: %ld rtb: %ld nt: %ld ",
-@@ -971,14 +971,14 @@ rcu_torture_printk(char *page)
-                      n_barrier_attempts,
-                      n_rcu_torture_barrier_error);
-       page += sprintf(page, "\n%s%s ", torture_type, TORTURE_FLAG);
+@@ -1172,11 +1172,11 @@ rcu_torture_stats_print(void)
+               rcu_torture_current,
+               rcu_torture_current_version,
+               list_empty(&rcu_torture_freelist),
+-              atomic_read(&n_rcu_torture_alloc),
+-              atomic_read(&n_rcu_torture_alloc_fail),
+-              atomic_read(&n_rcu_torture_free));
++              atomic_read_unchecked(&n_rcu_torture_alloc),
++              atomic_read_unchecked(&n_rcu_torture_alloc_fail),
++              atomic_read_unchecked(&n_rcu_torture_free));
+       pr_cont("rtmbe: %d rtbke: %ld rtbre: %ld ",
+-              atomic_read(&n_rcu_torture_mberror),
++              atomic_read_unchecked(&n_rcu_torture_mberror),
+               n_rcu_torture_boost_ktrerror,
+               n_rcu_torture_boost_rterror);
+       pr_cont("rtbf: %ld rtb: %ld nt: %ld ",
+@@ -1188,17 +1188,17 @@ rcu_torture_stats_print(void)
+               n_barrier_successes,
+               n_barrier_attempts,
+               n_rcu_torture_barrier_error);
+-      pr_cont("cbflood: %ld\n", atomic_long_read(&n_cbfloods));
++      pr_cont("cbflood: %ld\n", atomic_long_read_unchecked(&n_cbfloods));
+       pr_alert("%s%s ", torture_type, TORTURE_FLAG);
 -      if (atomic_read(&n_rcu_torture_mberror) != 0 ||
 +      if (atomic_read_unchecked(&n_rcu_torture_mberror) != 0 ||
            n_rcu_torture_barrier_error != 0 ||
@@ -89366,22 +91106,22 @@ index bd30bc6..dce23da 100644
            n_rcu_torture_boost_rterror != 0 ||
            n_rcu_torture_boost_failure != 0 ||
            i > 1) {
-               page += sprintf(page, "!!! ");
+               pr_cont("%s", "!!! ");
 -              atomic_inc(&n_rcu_torture_error);
 +              atomic_inc_unchecked(&n_rcu_torture_error);
                WARN_ON_ONCE(1);
        }
-       page += sprintf(page, "Reader Pipe: ");
-@@ -992,7 +992,7 @@ rcu_torture_printk(char *page)
-       page += sprintf(page, "Free-Block Circulation: ");
+       pr_cont("Reader Pipe: ");
+@@ -1215,7 +1215,7 @@ rcu_torture_stats_print(void)
+       pr_alert("%s%s ", torture_type, TORTURE_FLAG);
+       pr_cont("Free-Block Circulation: ");
        for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
-               page += sprintf(page, " %d",
--                             atomic_read(&rcu_torture_wcount[i]));
-+                             atomic_read_unchecked(&rcu_torture_wcount[i]));
+-              pr_cont(" %d", atomic_read(&rcu_torture_wcount[i]));
++              pr_cont(" %d", atomic_read_unchecked(&rcu_torture_wcount[i]));
        }
-       page += sprintf(page, "\n");
-       if (cur_ops->stats)
-@@ -1341,7 +1341,7 @@ rcu_torture_cleanup(void)
+       pr_cont("\n");
+@@ -1559,7 +1559,7 @@ rcu_torture_cleanup(void)
  
        rcu_torture_stats_print();  /* -After- the stats thread is stopped! */
  
@@ -89390,7 +91130,7 @@ index bd30bc6..dce23da 100644
                rcu_torture_print_module_parms(cur_ops, "End of test: FAILURE");
        else if (torture_onoff_failures())
                rcu_torture_print_module_parms(cur_ops,
-@@ -1460,18 +1460,18 @@ rcu_torture_init(void)
+@@ -1684,18 +1684,18 @@ rcu_torture_init(void)
  
        rcu_torture_current = NULL;
        rcu_torture_current_version = 0;
@@ -89415,24 +91155,8 @@ index bd30bc6..dce23da 100644
        for_each_possible_cpu(cpu) {
                for (i = 0; i < RCU_TORTURE_PIPE_LEN + 1; i++) {
                        per_cpu(rcu_torture_count, cpu)[i] = 0;
-diff --git a/kernel/rcu/srcu.c b/kernel/rcu/srcu.c
-index c639556..cf0a0d5 100644
---- a/kernel/rcu/srcu.c
-+++ b/kernel/rcu/srcu.c
-@@ -298,9 +298,9 @@ int __srcu_read_lock(struct srcu_struct *sp)
-       idx = ACCESS_ONCE(sp->completed) & 0x1;
-       preempt_disable();
--      ACCESS_ONCE(this_cpu_ptr(sp->per_cpu_ref)->c[idx]) += 1;
-+      ACCESS_ONCE_RW(this_cpu_ptr(sp->per_cpu_ref)->c[idx]) += 1;
-       smp_mb(); /* B */  /* Avoid leaking the critical section. */
--      ACCESS_ONCE(this_cpu_ptr(sp->per_cpu_ref)->seq[idx]) += 1;
-+      ACCESS_ONCE_RW(this_cpu_ptr(sp->per_cpu_ref)->seq[idx]) += 1;
-       preempt_enable();
-       return idx;
- }
 diff --git a/kernel/rcu/tiny.c b/kernel/rcu/tiny.c
-index d9efcc1..ea543e9 100644
+index c0623fc..329c091 100644
 --- a/kernel/rcu/tiny.c
 +++ b/kernel/rcu/tiny.c
 @@ -42,7 +42,7 @@
@@ -89444,7 +91168,7 @@ index d9efcc1..ea543e9 100644
  static void __call_rcu(struct rcu_head *head,
                       void (*func)(struct rcu_head *rcu),
                       struct rcu_ctrlblk *rcp);
-@@ -308,7 +308,7 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp)
+@@ -310,7 +310,7 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp)
                                      false));
  }
  
@@ -89453,36 +91177,70 @@ index d9efcc1..ea543e9 100644
  {
        __rcu_process_callbacks(&rcu_sched_ctrlblk);
        __rcu_process_callbacks(&rcu_bh_ctrlblk);
+diff --git a/kernel/rcu/tiny_plugin.h b/kernel/rcu/tiny_plugin.h
+index 858c565..7efd915 100644
+--- a/kernel/rcu/tiny_plugin.h
++++ b/kernel/rcu/tiny_plugin.h
+@@ -152,17 +152,17 @@ static void check_cpu_stall(struct rcu_ctrlblk *rcp)
+               dump_stack();
+       }
+       if (*rcp->curtail && ULONG_CMP_GE(j, js))
+-              ACCESS_ONCE(rcp->jiffies_stall) = jiffies +
++              ACCESS_ONCE_RW(rcp->jiffies_stall) = jiffies +
+                       3 * rcu_jiffies_till_stall_check() + 3;
+       else if (ULONG_CMP_GE(j, js))
+-              ACCESS_ONCE(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
++              ACCESS_ONCE_RW(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
+ }
+ static void reset_cpu_stall_ticks(struct rcu_ctrlblk *rcp)
+ {
+       rcp->ticks_this_gp = 0;
+       rcp->gp_start = jiffies;
+-      ACCESS_ONCE(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
++      ACCESS_ONCE_RW(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
+ }
+ static void check_cpu_stalls(void)
 diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
-index 0c47e30..a084591 100644
+index 9815447..2cdf92a 100644
 --- a/kernel/rcu/tree.c
 +++ b/kernel/rcu/tree.c
-@@ -388,9 +388,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval,
+@@ -274,7 +274,7 @@ static void rcu_momentary_dyntick_idle(void)
+                */
+               rdtp = this_cpu_ptr(&rcu_dynticks);
+               smp_mb__before_atomic(); /* Earlier stuff before QS. */
+-              atomic_add(2, &rdtp->dynticks);  /* QS. */
++              atomic_add_unchecked(2, &rdtp->dynticks);  /* QS. */
+               smp_mb__after_atomic(); /* Later stuff after QS. */
+               break;
+       }
+@@ -534,9 +534,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval,
        rcu_prepare_for_idle(smp_processor_id());
        /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
-       smp_mb__before_atomic_inc();  /* See above. */
+       smp_mb__before_atomic();  /* See above. */
 -      atomic_inc(&rdtp->dynticks);
 +      atomic_inc_unchecked(&rdtp->dynticks);
-       smp_mb__after_atomic_inc();  /* Force ordering with next sojourn. */
+       smp_mb__after_atomic();  /* Force ordering with next sojourn. */
 -      WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
 +      WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
+       rcu_dynticks_task_enter();
  
        /*
-        * It is illegal to enter an extended quiescent state while
-@@ -508,10 +508,10 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval,
-                              int user)
+@@ -656,10 +656,10 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval,
  {
-       smp_mb__before_atomic_inc();  /* Force ordering w/previous sojourn. */
+       rcu_dynticks_task_exit();
+       smp_mb__before_atomic();  /* Force ordering w/previous sojourn. */
 -      atomic_inc(&rdtp->dynticks);
 +      atomic_inc_unchecked(&rdtp->dynticks);
        /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */
-       smp_mb__after_atomic_inc();  /* See above. */
+       smp_mb__after_atomic();  /* See above. */
 -      WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
 +      WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
        rcu_cleanup_after_idle(smp_processor_id());
        trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting);
        if (!user && !is_idle_task(current)) {
-@@ -632,14 +632,14 @@ void rcu_nmi_enter(void)
+@@ -780,14 +780,14 @@ void rcu_nmi_enter(void)
        struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
  
        if (rdtp->dynticks_nmi_nesting == 0 &&
@@ -89490,29 +91248,29 @@ index 0c47e30..a084591 100644
 +          (atomic_read_unchecked(&rdtp->dynticks) & 0x1))
                return;
        rdtp->dynticks_nmi_nesting++;
-       smp_mb__before_atomic_inc();  /* Force delay from prior write. */
+       smp_mb__before_atomic();  /* Force delay from prior write. */
 -      atomic_inc(&rdtp->dynticks);
 +      atomic_inc_unchecked(&rdtp->dynticks);
        /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */
-       smp_mb__after_atomic_inc();  /* See above. */
+       smp_mb__after_atomic();  /* See above. */
 -      WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
 +      WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks) & 0x1));
  }
  
  /**
-@@ -658,9 +658,9 @@ void rcu_nmi_exit(void)
+@@ -806,9 +806,9 @@ void rcu_nmi_exit(void)
                return;
        /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */
-       smp_mb__before_atomic_inc();  /* See above. */
+       smp_mb__before_atomic();  /* See above. */
 -      atomic_inc(&rdtp->dynticks);
 +      atomic_inc_unchecked(&rdtp->dynticks);
-       smp_mb__after_atomic_inc();  /* Force delay to next write. */
+       smp_mb__after_atomic();  /* Force delay to next write. */
 -      WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1);
 +      WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks) & 0x1);
  }
  
  /**
-@@ -673,7 +673,7 @@ void rcu_nmi_exit(void)
+@@ -821,7 +821,7 @@ void rcu_nmi_exit(void)
   */
  bool notrace __rcu_is_watching(void)
  {
@@ -89521,17 +91279,17 @@ index 0c47e30..a084591 100644
  }
  
  /**
-@@ -756,7 +756,7 @@ static int rcu_is_cpu_rrupt_from_idle(void)
+@@ -904,7 +904,7 @@ static int rcu_is_cpu_rrupt_from_idle(void)
  static int dyntick_save_progress_counter(struct rcu_data *rdp,
                                         bool *isidle, unsigned long *maxj)
  {
 -      rdp->dynticks_snap = atomic_add_return(0, &rdp->dynticks->dynticks);
 +      rdp->dynticks_snap = atomic_add_return_unchecked(0, &rdp->dynticks->dynticks);
        rcu_sysidle_check_cpu(rdp, isidle, maxj);
-       return (rdp->dynticks_snap & 0x1) == 0;
- }
-@@ -779,7 +779,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
-       unsigned int curr;
+       if ((rdp->dynticks_snap & 0x1) == 0) {
+               trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("dti"));
+@@ -933,7 +933,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
+       int *rcrmp;
        unsigned int snap;
  
 -      curr = (unsigned int)atomic_add_return(0, &rdp->dynticks->dynticks);
@@ -89539,7 +91297,65 @@ index 0c47e30..a084591 100644
        snap = (unsigned int)rdp->dynticks_snap;
  
        /*
-@@ -1449,9 +1449,9 @@ static int rcu_gp_init(struct rcu_state *rsp)
+@@ -996,10 +996,10 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp,
+                        rdp->rsp->gp_start + jiffies_till_sched_qs) ||
+           ULONG_CMP_GE(jiffies, rdp->rsp->jiffies_resched)) {
+               if (!(ACCESS_ONCE(*rcrmp) & rdp->rsp->flavor_mask)) {
+-                      ACCESS_ONCE(rdp->cond_resched_completed) =
++                      ACCESS_ONCE_RW(rdp->cond_resched_completed) =
+                               ACCESS_ONCE(rdp->mynode->completed);
+                       smp_mb(); /* ->cond_resched_completed before *rcrmp. */
+-                      ACCESS_ONCE(*rcrmp) =
++                      ACCESS_ONCE_RW(*rcrmp) =
+                               ACCESS_ONCE(*rcrmp) + rdp->rsp->flavor_mask;
+                       resched_cpu(rdp->cpu);  /* Force CPU into scheduler. */
+                       rdp->rsp->jiffies_resched += 5; /* Enable beating. */
+@@ -1021,7 +1021,7 @@ static void record_gp_stall_check_time(struct rcu_state *rsp)
+       rsp->gp_start = j;
+       smp_wmb(); /* Record start time before stall time. */
+       j1 = rcu_jiffies_till_stall_check();
+-      ACCESS_ONCE(rsp->jiffies_stall) = j + j1;
++      ACCESS_ONCE_RW(rsp->jiffies_stall) = j + j1;
+       rsp->jiffies_resched = j + j1 / 2;
+ }
+@@ -1062,7 +1062,7 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
+               raw_spin_unlock_irqrestore(&rnp->lock, flags);
+               return;
+       }
+-      ACCESS_ONCE(rsp->jiffies_stall) = jiffies + 3 * rcu_jiffies_till_stall_check() + 3;
++      ACCESS_ONCE_RW(rsp->jiffies_stall) = jiffies + 3 * rcu_jiffies_till_stall_check() + 3;
+       raw_spin_unlock_irqrestore(&rnp->lock, flags);
+       /*
+@@ -1139,7 +1139,7 @@ static void print_cpu_stall(struct rcu_state *rsp)
+       raw_spin_lock_irqsave(&rnp->lock, flags);
+       if (ULONG_CMP_GE(jiffies, ACCESS_ONCE(rsp->jiffies_stall)))
+-              ACCESS_ONCE(rsp->jiffies_stall) = jiffies +
++              ACCESS_ONCE_RW(rsp->jiffies_stall) = jiffies +
+                                    3 * rcu_jiffies_till_stall_check() + 3;
+       raw_spin_unlock_irqrestore(&rnp->lock, flags);
+@@ -1223,7 +1223,7 @@ void rcu_cpu_stall_reset(void)
+       struct rcu_state *rsp;
+       for_each_rcu_flavor(rsp)
+-              ACCESS_ONCE(rsp->jiffies_stall) = jiffies + ULONG_MAX / 2;
++              ACCESS_ONCE_RW(rsp->jiffies_stall) = jiffies + ULONG_MAX / 2;
+ }
+ /*
+@@ -1609,7 +1609,7 @@ static int rcu_gp_init(struct rcu_state *rsp)
+               raw_spin_unlock_irq(&rnp->lock);
+               return 0;
+       }
+-      ACCESS_ONCE(rsp->gp_flags) = 0; /* Clear all flags: New grace period. */
++      ACCESS_ONCE_RW(rsp->gp_flags) = 0; /* Clear all flags: New grace period. */
+       if (WARN_ON_ONCE(rcu_gp_in_progress(rsp))) {
+               /*
+@@ -1650,9 +1650,9 @@ static int rcu_gp_init(struct rcu_state *rsp)
                rdp = this_cpu_ptr(rsp->rda);
                rcu_preempt_check_blocked_tasks(rnp);
                rnp->qsmask = rnp->qsmaskinit;
@@ -89549,9 +91365,18 @@ index 0c47e30..a084591 100644
 -              ACCESS_ONCE(rnp->completed) = rsp->completed;
 +              ACCESS_ONCE_RW(rnp->completed) = rsp->completed;
                if (rnp == rdp->mynode)
-                       __note_gp_changes(rsp, rnp, rdp);
+                       (void)__note_gp_changes(rsp, rnp, rdp);
                rcu_preempt_boost_start_gp(rnp);
-@@ -1545,7 +1545,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
+@@ -1697,7 +1697,7 @@ static int rcu_gp_fqs(struct rcu_state *rsp, int fqs_state_in)
+       if (ACCESS_ONCE(rsp->gp_flags) & RCU_GP_FLAG_FQS) {
+               raw_spin_lock_irq(&rnp->lock);
+               smp_mb__after_unlock_lock();
+-              ACCESS_ONCE(rsp->gp_flags) =
++              ACCESS_ONCE_RW(rsp->gp_flags) =
+                       ACCESS_ONCE(rsp->gp_flags) & ~RCU_GP_FLAG_FQS;
+               raw_spin_unlock_irq(&rnp->lock);
+       }
+@@ -1743,7 +1743,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
        rcu_for_each_node_breadth_first(rsp, rnp) {
                raw_spin_lock_irq(&rnp->lock);
                smp_mb__after_unlock_lock();
@@ -89559,8 +91384,8 @@ index 0c47e30..a084591 100644
 +              ACCESS_ONCE_RW(rnp->completed) = rsp->gpnum;
                rdp = this_cpu_ptr(rsp->rda);
                if (rnp == rdp->mynode)
-                       __note_gp_changes(rsp, rnp, rdp);
-@@ -1560,7 +1560,7 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
+                       needgp = __note_gp_changes(rsp, rnp, rdp) || needgp;
+@@ -1758,14 +1758,14 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
        rcu_nocb_gp_set(rnp, nocb);
  
        /* Declare grace period done. */
@@ -89569,7 +91394,24 @@ index 0c47e30..a084591 100644
        trace_rcu_grace_period(rsp->name, rsp->completed, TPS("end"));
        rsp->fqs_state = RCU_GP_IDLE;
        rdp = this_cpu_ptr(rsp->rda);
-@@ -1912,7 +1912,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp,
+       /* Advance CBs to reduce false positives below. */
+       needgp = rcu_advance_cbs(rsp, rnp, rdp) || needgp;
+       if (needgp || cpu_needs_another_gp(rsp, rdp)) {
+-              ACCESS_ONCE(rsp->gp_flags) = RCU_GP_FLAG_INIT;
++              ACCESS_ONCE_RW(rsp->gp_flags) = RCU_GP_FLAG_INIT;
+               trace_rcu_grace_period(rsp->name,
+                                      ACCESS_ONCE(rsp->gpnum),
+                                      TPS("newreq"));
+@@ -1890,7 +1890,7 @@ rcu_start_gp_advanced(struct rcu_state *rsp, struct rcu_node *rnp,
+                */
+               return false;
+       }
+-      ACCESS_ONCE(rsp->gp_flags) = RCU_GP_FLAG_INIT;
++      ACCESS_ONCE_RW(rsp->gp_flags) = RCU_GP_FLAG_INIT;
+       trace_rcu_grace_period(rsp->name, ACCESS_ONCE(rsp->gpnum),
+                              TPS("newreq"));
+@@ -2111,7 +2111,7 @@ rcu_send_cbs_to_orphanage(int cpu, struct rcu_state *rsp,
                rsp->qlen += rdp->qlen;
                rdp->n_cbs_orphaned += rdp->qlen;
                rdp->qlen_lazy = 0;
@@ -89578,34 +91420,25 @@ index 0c47e30..a084591 100644
        }
  
        /*
-@@ -2159,7 +2159,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
+@@ -2356,7 +2356,7 @@ static void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp)
        }
        smp_mb(); /* List handling before counting for rcu_barrier(). */
        rdp->qlen_lazy -= count_lazy;
--      ACCESS_ONCE(rdp->qlen) -= count;
-+      ACCESS_ONCE_RW(rdp->qlen) -= count;
+-      ACCESS_ONCE(rdp->qlen) = rdp->qlen - count;
++      ACCESS_ONCE_RW(rdp->qlen) = rdp->qlen - count;
        rdp->n_cbs_invoked += count;
  
        /* Reinstate batch limit if we have worked down the excess. */
-@@ -2304,7 +2304,7 @@ static void force_quiescent_state(struct rcu_state *rsp)
-               if (rnp_old != NULL)
-                       raw_spin_unlock(&rnp_old->fqslock);
-               if (ret) {
--                      ACCESS_ONCE(rsp->n_force_qs_lh)++;
-+                      ACCESS_ONCE_RW(rsp->n_force_qs_lh)++;
-                       return;
-               }
-               rnp_old = rnp;
-@@ -2316,7 +2316,7 @@ static void force_quiescent_state(struct rcu_state *rsp)
-       smp_mb__after_unlock_lock();
-       raw_spin_unlock(&rnp_old->fqslock);
-       if (ACCESS_ONCE(rsp->gp_flags) & RCU_GP_FLAG_FQS) {
--              ACCESS_ONCE(rsp->n_force_qs_lh)++;
-+              ACCESS_ONCE_RW(rsp->n_force_qs_lh)++;
+@@ -2519,7 +2519,7 @@ static void force_quiescent_state(struct rcu_state *rsp)
                raw_spin_unlock_irqrestore(&rnp_old->lock, flags);
                return;  /* Someone beat us to it. */
        }
-@@ -2362,7 +2362,7 @@ __rcu_process_callbacks(struct rcu_state *rsp)
+-      ACCESS_ONCE(rsp->gp_flags) =
++      ACCESS_ONCE_RW(rsp->gp_flags) =
+               ACCESS_ONCE(rsp->gp_flags) | RCU_GP_FLAG_FQS;
+       raw_spin_unlock_irqrestore(&rnp_old->lock, flags);
+       rcu_gp_kthread_wake(rsp);
+@@ -2565,7 +2565,7 @@ __rcu_process_callbacks(struct rcu_state *rsp)
  /*
   * Do RCU core processing for the current CPU.
   */
@@ -89614,8 +91447,8 @@ index 0c47e30..a084591 100644
  {
        struct rcu_state *rsp;
  
-@@ -2470,7 +2470,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
-       WARN_ON_ONCE((unsigned long)head & 0x3); /* Misaligned rcu_head! */
+@@ -2677,7 +2677,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
+       WARN_ON_ONCE((unsigned long)head & 0x1); /* Misaligned rcu_head! */
        if (debug_rcu_head_queue(head)) {
                /* Probable double call_rcu(), so leak the callback. */
 -              ACCESS_ONCE(head->func) = rcu_leak_callback;
@@ -89623,16 +91456,16 @@ index 0c47e30..a084591 100644
                WARN_ONCE(1, "__call_rcu(): Leaked duplicate callback\n");
                return;
        }
-@@ -2498,7 +2498,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
+@@ -2705,7 +2705,7 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
                local_irq_restore(flags);
                return;
        }
--      ACCESS_ONCE(rdp->qlen)++;
-+      ACCESS_ONCE_RW(rdp->qlen)++;
+-      ACCESS_ONCE(rdp->qlen) = rdp->qlen + 1;
++      ACCESS_ONCE_RW(rdp->qlen) = rdp->qlen + 1;
        if (lazy)
                rdp->qlen_lazy++;
        else
-@@ -2759,11 +2759,11 @@ void synchronize_sched_expedited(void)
+@@ -2975,11 +2975,11 @@ void synchronize_sched_expedited(void)
         * counter wrap on a 32-bit system.  Quite a few more CPUs would of
         * course be required on a 64-bit system.
         */
@@ -89646,16 +91479,22 @@ index 0c47e30..a084591 100644
                return;
        }
  
-@@ -2771,7 +2771,7 @@ void synchronize_sched_expedited(void)
+@@ -2987,12 +2987,12 @@ void synchronize_sched_expedited(void)
         * Take a ticket.  Note that atomic_inc_return() implies a
         * full memory barrier.
         */
 -      snap = atomic_long_inc_return(&rsp->expedited_start);
 +      snap = atomic_long_inc_return_unchecked(&rsp->expedited_start);
        firstsnap = snap;
-       get_online_cpus();
+       if (!try_get_online_cpus()) {
+               /* CPU hotplug operation in flight, fall back to normal GP. */
+               wait_rcu_gp(call_rcu_sched);
+-              atomic_long_inc(&rsp->expedited_normal);
++              atomic_long_inc_unchecked(&rsp->expedited_normal);
+               return;
+       }
        WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id()));
-@@ -2784,14 +2784,14 @@ void synchronize_sched_expedited(void)
+@@ -3005,14 +3005,14 @@ void synchronize_sched_expedited(void)
                             synchronize_sched_expedited_cpu_stop,
                             NULL) == -EAGAIN) {
                put_online_cpus();
@@ -89666,13 +91505,13 @@ index 0c47e30..a084591 100644
                s = atomic_long_read(&rsp->expedited_done);
                if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) {
                        /* ensure test happens before caller kfree */
-                       smp_mb__before_atomic_inc(); /* ^^^ */
+                       smp_mb__before_atomic(); /* ^^^ */
 -                      atomic_long_inc(&rsp->expedited_workdone1);
 +                      atomic_long_inc_unchecked(&rsp->expedited_workdone1);
                        return;
                }
  
-@@ -2800,7 +2800,7 @@ void synchronize_sched_expedited(void)
+@@ -3021,7 +3021,7 @@ void synchronize_sched_expedited(void)
                        udelay(trycount * num_online_cpus());
                } else {
                        wait_rcu_gp(call_rcu_sched);
@@ -89681,19 +91520,23 @@ index 0c47e30..a084591 100644
                        return;
                }
  
-@@ -2809,7 +2809,7 @@ void synchronize_sched_expedited(void)
+@@ -3030,7 +3030,7 @@ void synchronize_sched_expedited(void)
                if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) {
                        /* ensure test happens before caller kfree */
-                       smp_mb__before_atomic_inc(); /* ^^^ */
+                       smp_mb__before_atomic(); /* ^^^ */
 -                      atomic_long_inc(&rsp->expedited_workdone2);
 +                      atomic_long_inc_unchecked(&rsp->expedited_workdone2);
                        return;
                }
  
-@@ -2821,10 +2821,10 @@ void synchronize_sched_expedited(void)
-                * period works for us.
-                */
-               get_online_cpus();
+@@ -3044,13 +3044,13 @@ void synchronize_sched_expedited(void)
+               if (!try_get_online_cpus()) {
+                       /* CPU hotplug operation in flight, use normal GP. */
+                       wait_rcu_gp(call_rcu_sched);
+-                      atomic_long_inc(&rsp->expedited_normal);
++                      atomic_long_inc_unchecked(&rsp->expedited_normal);
+                       return;
+               }
 -              snap = atomic_long_read(&rsp->expedited_start);
 +              snap = atomic_long_read_unchecked(&rsp->expedited_start);
                smp_mb(); /* ensure read is before try_stop_cpus(). */
@@ -89703,7 +91546,7 @@ index 0c47e30..a084591 100644
  
        /*
         * Everyone up to our most recent fetch is covered by our grace
-@@ -2833,16 +2833,16 @@ void synchronize_sched_expedited(void)
+@@ -3059,16 +3059,16 @@ void synchronize_sched_expedited(void)
         * than we did already did their update.
         */
        do {
@@ -89712,7 +91555,7 @@ index 0c47e30..a084591 100644
                s = atomic_long_read(&rsp->expedited_done);
                if (ULONG_CMP_GE((ulong)s, (ulong)snap)) {
                        /* ensure test happens before caller kfree */
-                       smp_mb__before_atomic_inc(); /* ^^^ */
+                       smp_mb__before_atomic(); /* ^^^ */
 -                      atomic_long_inc(&rsp->expedited_done_lost);
 +                      atomic_long_inc_unchecked(&rsp->expedited_done_lost);
                        break;
@@ -89723,25 +91566,25 @@ index 0c47e30..a084591 100644
  
        put_online_cpus();
  }
-@@ -3048,7 +3048,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
+@@ -3274,7 +3274,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
         * ACCESS_ONCE() to prevent the compiler from speculating
         * the increment to precede the early-exit check.
         */
--      ACCESS_ONCE(rsp->n_barrier_done)++;
-+      ACCESS_ONCE_RW(rsp->n_barrier_done)++;
+-      ACCESS_ONCE(rsp->n_barrier_done) = rsp->n_barrier_done + 1;
++      ACCESS_ONCE_RW(rsp->n_barrier_done) = rsp->n_barrier_done + 1;
        WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 1);
        _rcu_barrier_trace(rsp, "Inc1", -1, rsp->n_barrier_done);
        smp_mb(); /* Order ->n_barrier_done increment with below mechanism. */
-@@ -3098,7 +3098,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
+@@ -3329,7 +3329,7 @@ static void _rcu_barrier(struct rcu_state *rsp)
  
        /* Increment ->n_barrier_done to prevent duplicate work. */
        smp_mb(); /* Keep increment after above mechanism. */
--      ACCESS_ONCE(rsp->n_barrier_done)++;
-+      ACCESS_ONCE_RW(rsp->n_barrier_done)++;
+-      ACCESS_ONCE(rsp->n_barrier_done) = rsp->n_barrier_done + 1;
++      ACCESS_ONCE_RW(rsp->n_barrier_done) = rsp->n_barrier_done + 1;
        WARN_ON_ONCE((rsp->n_barrier_done & 0x1) != 0);
        _rcu_barrier_trace(rsp, "Inc2", -1, rsp->n_barrier_done);
        smp_mb(); /* Keep increment before caller's subsequent code. */
-@@ -3143,10 +3143,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
+@@ -3374,10 +3374,10 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
        rdp->grpmask = 1UL << (cpu - rdp->mynode->grplo);
        init_callback_list(rdp);
        rdp->qlen_lazy = 0;
@@ -89754,7 +91597,7 @@ index 0c47e30..a084591 100644
        rdp->cpu = cpu;
        rdp->rsp = rsp;
        rcu_boot_init_nocb_percpu_data(rdp);
-@@ -3180,8 +3180,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
+@@ -3410,8 +3410,8 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp)
        init_callback_list(rdp);  /* Re-enable callbacks on this CPU. */
        rdp->dynticks->dynticks_nesting = DYNTICK_TASK_EXIT_IDLE;
        rcu_sysidle_init_percpu_data(rdp->dynticks);
@@ -89766,7 +91609,7 @@ index 0c47e30..a084591 100644
  
        /* Add CPU to rcu_node bitmasks. */
 diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
-index 75dc3c3..b95d624 100644
+index bbdc45d..c882ccb 100644
 --- a/kernel/rcu/tree.h
 +++ b/kernel/rcu/tree.h
 @@ -87,11 +87,11 @@ struct rcu_dynticks {
@@ -89783,7 +91626,7 @@ index 75dc3c3..b95d624 100644
                                    /*  "Idle" excludes userspace execution. */
        unsigned long dynticks_idle_jiffies;
                                    /* End of last non-NMI non-idle period. */
-@@ -431,17 +431,17 @@ struct rcu_state {
+@@ -466,17 +466,17 @@ struct rcu_state {
                                                /*  _rcu_barrier(). */
        /* End of fields guarded by barrier_mutex. */
  
@@ -89813,10 +91656,10 @@ index 75dc3c3..b95d624 100644
        unsigned long jiffies_force_qs;         /* Time at which to invoke */
                                                /*  force_quiescent_state(). */
 diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
-index 962d1d5..c6c62d12d 100644
+index c1d7f27..a64bf49 100644
 --- a/kernel/rcu/tree_plugin.h
 +++ b/kernel/rcu/tree_plugin.h
-@@ -758,7 +758,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp)
+@@ -709,7 +709,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp)
  static int sync_rcu_preempt_exp_done(struct rcu_node *rnp)
  {
        return !rcu_preempted_readers_exp(rnp) &&
@@ -89825,16 +91668,16 @@ index 962d1d5..c6c62d12d 100644
  }
  
  /*
-@@ -920,7 +920,7 @@ void synchronize_rcu_expedited(void)
+@@ -870,7 +870,7 @@ void synchronize_rcu_expedited(void)
  
        /* Clean up and exit. */
        smp_mb(); /* ensure expedited GP seen before counter increment. */
--      ACCESS_ONCE(sync_rcu_preempt_exp_count)++;
-+      ACCESS_ONCE_RW(sync_rcu_preempt_exp_count)++;
+-      ACCESS_ONCE(sync_rcu_preempt_exp_count) =
++      ACCESS_ONCE_RW(sync_rcu_preempt_exp_count) =
+                                       sync_rcu_preempt_exp_count + 1;
  unlock_mb_ret:
        mutex_unlock(&sync_rcu_preempt_exp_mutex);
- mb_ret:
-@@ -1496,7 +1496,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
+@@ -1426,7 +1426,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
        free_cpumask_var(cm);
  }
  
@@ -89843,7 +91686,7 @@ index 962d1d5..c6c62d12d 100644
        .store                  = &rcu_cpu_kthread_task,
        .thread_should_run      = rcu_cpu_kthread_should_run,
        .thread_fn              = rcu_cpu_kthread,
-@@ -1972,7 +1972,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
+@@ -1900,7 +1900,7 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu)
        print_cpu_stall_fast_no_hz(fast_no_hz, cpu);
        pr_err("\t%d: (%lu %s) idle=%03x/%llx/%d softirq=%u/%u %s\n",
               cpu, ticks_value, ticks_title,
@@ -89852,7 +91695,16 @@ index 962d1d5..c6c62d12d 100644
               rdtp->dynticks_nesting, rdtp->dynticks_nmi_nesting,
               rdp->softirq_snap, kstat_softirqs_cpu(RCU_SOFTIRQ, cpu),
               fast_no_hz);
-@@ -2138,7 +2138,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp,
+@@ -2044,7 +2044,7 @@ static void wake_nocb_leader(struct rcu_data *rdp, bool force)
+               return;
+       if (ACCESS_ONCE(rdp_leader->nocb_leader_sleep) || force) {
+               /* Prior smp_mb__after_atomic() orders against prior enqueue. */
+-              ACCESS_ONCE(rdp_leader->nocb_leader_sleep) = false;
++              ACCESS_ONCE_RW(rdp_leader->nocb_leader_sleep) = false;
+               wake_up(&rdp_leader->nocb_wq);
+       }
+ }
+@@ -2096,7 +2096,7 @@ static void __call_rcu_nocb_enqueue(struct rcu_data *rdp,
  
        /* Enqueue the callback on the nocb list and update counts. */
        old_rhpp = xchg(&rdp->nocb_tail, rhtp);
@@ -89860,80 +91712,82 @@ index 962d1d5..c6c62d12d 100644
 +      ACCESS_ONCE_RW(*old_rhpp) = rhp;
        atomic_long_add(rhcount, &rdp->nocb_q_count);
        atomic_long_add(rhcount_lazy, &rdp->nocb_q_count_lazy);
+       smp_mb__after_atomic(); /* Store *old_rhpp before _wake test. */
+@@ -2286,7 +2286,7 @@ wait_again:
+                       continue;  /* No CBs here, try next follower. */
  
-@@ -2311,12 +2311,12 @@ static int rcu_nocb_kthread(void *arg)
-                * Extract queued callbacks, update counts, and wait
-                * for a grace period to elapse.
-                */
+               /* Move callbacks to wait-for-GP list, which is empty. */
 -              ACCESS_ONCE(rdp->nocb_head) = NULL;
 +              ACCESS_ONCE_RW(rdp->nocb_head) = NULL;
-               tail = xchg(&rdp->nocb_tail, &rdp->nocb_head);
-               c = atomic_long_xchg(&rdp->nocb_q_count, 0);
-               cl = atomic_long_xchg(&rdp->nocb_q_count_lazy, 0);
--              ACCESS_ONCE(rdp->nocb_p_count) += c;
--              ACCESS_ONCE(rdp->nocb_p_count_lazy) += cl;
-+              ACCESS_ONCE_RW(rdp->nocb_p_count) += c;
-+              ACCESS_ONCE_RW(rdp->nocb_p_count_lazy) += cl;
-               rcu_nocb_wait_gp(rdp);
-               /* Each pass through the following loop invokes a callback. */
-@@ -2342,8 +2342,8 @@ static int rcu_nocb_kthread(void *arg)
+               rdp->nocb_gp_tail = xchg(&rdp->nocb_tail, &rdp->nocb_head);
+               rdp->nocb_gp_count = atomic_long_xchg(&rdp->nocb_q_count, 0);
+               rdp->nocb_gp_count_lazy =
+@@ -2413,7 +2413,7 @@ static int rcu_nocb_kthread(void *arg)
+               list = ACCESS_ONCE(rdp->nocb_follower_head);
+               BUG_ON(!list);
+               trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, "WokeNonEmpty");
+-              ACCESS_ONCE(rdp->nocb_follower_head) = NULL;
++              ACCESS_ONCE_RW(rdp->nocb_follower_head) = NULL;
+               tail = xchg(&rdp->nocb_follower_tail, &rdp->nocb_follower_head);
+               c = atomic_long_xchg(&rdp->nocb_follower_count, 0);
+               cl = atomic_long_xchg(&rdp->nocb_follower_count_lazy, 0);
+@@ -2443,8 +2443,8 @@ static int rcu_nocb_kthread(void *arg)
                        list = next;
                }
                trace_rcu_batch_end(rdp->rsp->name, c, !!list, 0, 0, 1);
--              ACCESS_ONCE(rdp->nocb_p_count) -= c;
--              ACCESS_ONCE(rdp->nocb_p_count_lazy) -= cl;
-+              ACCESS_ONCE_RW(rdp->nocb_p_count) -= c;
-+              ACCESS_ONCE_RW(rdp->nocb_p_count_lazy) -= cl;
+-              ACCESS_ONCE(rdp->nocb_p_count) = rdp->nocb_p_count - c;
+-              ACCESS_ONCE(rdp->nocb_p_count_lazy) =
++              ACCESS_ONCE_RW(rdp->nocb_p_count) = rdp->nocb_p_count - c;
++              ACCESS_ONCE_RW(rdp->nocb_p_count_lazy) =
+                                               rdp->nocb_p_count_lazy - cl;
                rdp->n_nocbs_invoked += c;
        }
-       return 0;
-@@ -2360,7 +2360,7 @@ static void do_nocb_deferred_wakeup(struct rcu_data *rdp)
- {
+@@ -2465,7 +2465,7 @@ static void do_nocb_deferred_wakeup(struct rcu_data *rdp)
        if (!rcu_nocb_need_deferred_wakeup(rdp))
                return;
--      ACCESS_ONCE(rdp->nocb_defer_wakeup) = false;
-+      ACCESS_ONCE_RW(rdp->nocb_defer_wakeup) = false;
-       wake_up(&rdp->nocb_wq);
-       trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, TPS("DeferredWakeEmpty"));
+       ndw = ACCESS_ONCE(rdp->nocb_defer_wakeup);
+-      ACCESS_ONCE(rdp->nocb_defer_wakeup) = RCU_NOGP_WAKE_NOT;
++      ACCESS_ONCE_RW(rdp->nocb_defer_wakeup) = RCU_NOGP_WAKE_NOT;
+       wake_nocb_leader(rdp, ndw == RCU_NOGP_WAKE_FORCE);
+       trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, TPS("DeferredWake"));
  }
-@@ -2386,7 +2386,7 @@ static void __init rcu_spawn_nocb_kthreads(struct rcu_state *rsp)
-               t = kthread_run(rcu_nocb_kthread, rdp,
-                               "rcuo%c/%d", rsp->abbr, cpu);
-               BUG_ON(IS_ERR(t));
--              ACCESS_ONCE(rdp->nocb_kthread) = t;
-+              ACCESS_ONCE_RW(rdp->nocb_kthread) = t;
-       }
+@@ -2584,7 +2584,7 @@ static void rcu_spawn_one_nocb_kthread(struct rcu_state *rsp, int cpu)
+       t = kthread_run(rcu_nocb_kthread, rdp_spawn,
+                       "rcuo%c/%d", rsp->abbr, cpu);
+       BUG_ON(IS_ERR(t));
+-      ACCESS_ONCE(rdp_spawn->nocb_kthread) = t;
++      ACCESS_ONCE_RW(rdp_spawn->nocb_kthread) = t;
  }
  
-@@ -2522,11 +2522,11 @@ static void rcu_sysidle_enter(struct rcu_dynticks *rdtp, int irq)
+ /*
+@@ -2788,11 +2788,11 @@ static void rcu_sysidle_enter(struct rcu_dynticks *rdtp, int irq)
  
        /* Record start of fully idle period. */
        j = jiffies;
 -      ACCESS_ONCE(rdtp->dynticks_idle_jiffies) = j;
 +      ACCESS_ONCE_RW(rdtp->dynticks_idle_jiffies) = j;
-       smp_mb__before_atomic_inc();
+       smp_mb__before_atomic();
 -      atomic_inc(&rdtp->dynticks_idle);
 +      atomic_inc_unchecked(&rdtp->dynticks_idle);
-       smp_mb__after_atomic_inc();
+       smp_mb__after_atomic();
 -      WARN_ON_ONCE(atomic_read(&rdtp->dynticks_idle) & 0x1);
 +      WARN_ON_ONCE(atomic_read_unchecked(&rdtp->dynticks_idle) & 0x1);
  }
  
  /*
-@@ -2591,9 +2591,9 @@ static void rcu_sysidle_exit(struct rcu_dynticks *rdtp, int irq)
+@@ -2861,9 +2861,9 @@ static void rcu_sysidle_exit(struct rcu_dynticks *rdtp, int irq)
  
        /* Record end of idle period. */
-       smp_mb__before_atomic_inc();
+       smp_mb__before_atomic();
 -      atomic_inc(&rdtp->dynticks_idle);
 +      atomic_inc_unchecked(&rdtp->dynticks_idle);
-       smp_mb__after_atomic_inc();
+       smp_mb__after_atomic();
 -      WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks_idle) & 0x1));
 +      WARN_ON_ONCE(!(atomic_read_unchecked(&rdtp->dynticks_idle) & 0x1));
  
        /*
         * If we are the timekeeping CPU, we are permitted to be non-idle
-@@ -2634,7 +2634,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle,
+@@ -2908,7 +2908,7 @@ static void rcu_sysidle_check_cpu(struct rcu_data *rdp, bool *isidle,
                WARN_ON_ONCE(smp_processor_id() != tick_do_timer_cpu);
  
        /* Pick up current idle and NMI-nesting counter and check. */
@@ -89942,7 +91796,7 @@ index 962d1d5..c6c62d12d 100644
        if (cur & 0x1) {
                *isidle = false; /* We are not idle! */
                return;
-@@ -2697,7 +2697,7 @@ static void rcu_sysidle(unsigned long j)
+@@ -2957,7 +2957,7 @@ static void rcu_sysidle(unsigned long j)
        case RCU_SYSIDLE_NOT:
  
                /* First time all are idle, so note a short idle period. */
@@ -89951,16 +91805,16 @@ index 962d1d5..c6c62d12d 100644
                break;
  
        case RCU_SYSIDLE_SHORT:
-@@ -2734,7 +2734,7 @@ static void rcu_sysidle(unsigned long j)
- static void rcu_sysidle_cancel(void)
+@@ -2995,7 +2995,7 @@ static void rcu_sysidle_cancel(void)
  {
        smp_mb();
--      ACCESS_ONCE(full_sysidle_state) = RCU_SYSIDLE_NOT;
-+      ACCESS_ONCE_RW(full_sysidle_state) = RCU_SYSIDLE_NOT;
+       if (full_sysidle_state > RCU_SYSIDLE_SHORT)
+-              ACCESS_ONCE(full_sysidle_state) = RCU_SYSIDLE_NOT;
++              ACCESS_ONCE_RW(full_sysidle_state) = RCU_SYSIDLE_NOT;
  }
  
  /*
-@@ -2782,7 +2782,7 @@ static void rcu_sysidle_cb(struct rcu_head *rhp)
+@@ -3047,7 +3047,7 @@ static void rcu_sysidle_cb(struct rcu_head *rhp)
        smp_mb();  /* grace period precedes setting inuse. */
  
        rshp = container_of(rhp, struct rcu_sysidle_head, rh);
@@ -89969,6 +91823,23 @@ index 962d1d5..c6c62d12d 100644
  }
  
  /*
+@@ -3200,7 +3200,7 @@ static void rcu_bind_gp_kthread(void)
+ static void rcu_dynticks_task_enter(void)
+ {
+ #if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL)
+-      ACCESS_ONCE(current->rcu_tasks_idle_cpu) = smp_processor_id();
++      ACCESS_ONCE_RW(current->rcu_tasks_idle_cpu) = smp_processor_id();
+ #endif /* #if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL) */
+ }
+@@ -3208,6 +3208,6 @@ static void rcu_dynticks_task_enter(void)
+ static void rcu_dynticks_task_exit(void)
+ {
+ #if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL)
+-      ACCESS_ONCE(current->rcu_tasks_idle_cpu) = -1;
++      ACCESS_ONCE_RW(current->rcu_tasks_idle_cpu) = -1;
+ #endif /* #if defined(CONFIG_TASKS_RCU) && defined(CONFIG_NO_HZ_FULL) */
+ }
 diff --git a/kernel/rcu/tree_trace.c b/kernel/rcu/tree_trace.c
 index 5cdc62e..cc52e88 100644
 --- a/kernel/rcu/tree_trace.c
@@ -90011,10 +91882,10 @@ index 5cdc62e..cc52e88 100644
  }
  
 diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c
-index 4c0a9b0..7e81362 100644
+index 3ef8ba5..8c5ebfb6 100644
 --- a/kernel/rcu/update.c
 +++ b/kernel/rcu/update.c
-@@ -311,10 +311,10 @@ int rcu_jiffies_till_stall_check(void)
+@@ -342,10 +342,10 @@ int rcu_jiffies_till_stall_check(void)
         * for CONFIG_RCU_CPU_STALL_TIMEOUT.
         */
        if (till_stall_check < 3) {
@@ -90027,11 +91898,38 @@ index 4c0a9b0..7e81362 100644
                till_stall_check = 300;
        }
        return till_stall_check * HZ + RCU_STALL_DELAY_DELTA;
+@@ -501,7 +501,7 @@ static void check_holdout_task(struct task_struct *t,
+           !ACCESS_ONCE(t->on_rq) ||
+           (IS_ENABLED(CONFIG_NO_HZ_FULL) &&
+            !is_idle_task(t) && t->rcu_tasks_idle_cpu >= 0)) {
+-              ACCESS_ONCE(t->rcu_tasks_holdout) = false;
++              ACCESS_ONCE_RW(t->rcu_tasks_holdout) = false;
+               list_del_init(&t->rcu_tasks_holdout_list);
+               put_task_struct(t);
+               return;
+@@ -588,7 +588,7 @@ static int __noreturn rcu_tasks_kthread(void *arg)
+                           !is_idle_task(t)) {
+                               get_task_struct(t);
+                               t->rcu_tasks_nvcsw = ACCESS_ONCE(t->nvcsw);
+-                              ACCESS_ONCE(t->rcu_tasks_holdout) = true;
++                              ACCESS_ONCE_RW(t->rcu_tasks_holdout) = true;
+                               list_add(&t->rcu_tasks_holdout_list,
+                                        &rcu_tasks_holdouts);
+                       }
+@@ -685,7 +685,7 @@ static void rcu_spawn_tasks_kthread(void)
+       t = kthread_run(rcu_tasks_kthread, NULL, "rcu_tasks_kthread");
+       BUG_ON(IS_ERR(t));
+       smp_mb(); /* Ensure others see full kthread. */
+-      ACCESS_ONCE(rcu_tasks_kthread_ptr) = t;
++      ACCESS_ONCE_RW(rcu_tasks_kthread_ptr) = t;
+       mutex_unlock(&rcu_tasks_kthread_mutex);
+ }
 diff --git a/kernel/resource.c b/kernel/resource.c
-index 8957d68..770cbe4 100644
+index 0bcebff..e7cd5b2 100644
 --- a/kernel/resource.c
 +++ b/kernel/resource.c
-@@ -152,8 +152,18 @@ static const struct file_operations proc_iomem_operations = {
+@@ -161,8 +161,18 @@ static const struct file_operations proc_iomem_operations = {
  
  static int __init ioresources_init(void)
  {
@@ -90051,7 +91949,7 @@ index 8957d68..770cbe4 100644
  }
  __initcall(ioresources_init);
 diff --git a/kernel/sched/auto_group.c b/kernel/sched/auto_group.c
-index e73efba..c9bfbd4 100644
+index 8a2e230..6020954 100644
 --- a/kernel/sched/auto_group.c
 +++ b/kernel/sched/auto_group.c
 @@ -11,7 +11,7 @@
@@ -90104,10 +92002,10 @@ index a63f4dc..349bbb0 100644
                                     unsigned long timeout)
  {
 diff --git a/kernel/sched/core.c b/kernel/sched/core.c
-index 084d17f..e416b9f 100644
+index 89e7283..072bc26 100644
 --- a/kernel/sched/core.c
 +++ b/kernel/sched/core.c
-@@ -1775,7 +1775,7 @@ void set_numabalancing_state(bool enabled)
+@@ -1885,7 +1885,7 @@ void set_numabalancing_state(bool enabled)
  int sysctl_numa_balancing(struct ctl_table *table, int write,
                         void __user *buffer, size_t *lenp, loff_t *ppos)
  {
@@ -90116,7 +92014,7 @@ index 084d17f..e416b9f 100644
        int err;
        int state = numabalancing_enabled;
  
-@@ -2238,8 +2238,10 @@ context_switch(struct rq *rq, struct task_struct *prev,
+@@ -2348,8 +2348,10 @@ context_switch(struct rq *rq, struct task_struct *prev,
                next->active_mm = oldmm;
                atomic_inc(&oldmm->mm_count);
                enter_lazy_tlb(oldmm, next);
@@ -90128,26 +92026,26 @@ index 084d17f..e416b9f 100644
  
        if (!prev->mm) {
                prev->active_mm = NULL;
-@@ -3004,6 +3006,8 @@ int can_nice(const struct task_struct *p, const int nice)
+@@ -3160,6 +3162,8 @@ int can_nice(const struct task_struct *p, const int nice)
        /* convert nice value [19,-20] to rlimit style value [1,40] */
-       int nice_rlim = 20 - nice;
+       int nice_rlim = nice_to_rlimit(nice);
  
 +      gr_learn_resource(p, RLIMIT_NICE, nice_rlim, 1);
 +
        return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
                capable(CAP_SYS_NICE));
  }
-@@ -3037,7 +3041,8 @@ SYSCALL_DEFINE1(nice, int, increment)
-       if (nice > MAX_NICE)
-               nice = MAX_NICE;
+@@ -3186,7 +3190,8 @@ SYSCALL_DEFINE1(nice, int, increment)
+       nice = task_nice(current) + increment;
  
+       nice = clamp_val(nice, MIN_NICE, MAX_NICE);
 -      if (increment < 0 && !can_nice(current, nice))
 +      if (increment < 0 && (!can_nice(current, nice) ||
 +                            gr_handle_chroot_nice()))
                return -EPERM;
  
        retval = security_task_setnice(current, nice);
-@@ -3310,6 +3315,7 @@ recheck:
+@@ -3465,6 +3470,7 @@ recheck:
                        if (policy != p->policy && !rlim_rtprio)
                                return -EPERM;
  
@@ -90155,7 +92053,7 @@ index 084d17f..e416b9f 100644
                        /* can't increase priority */
                        if (attr->sched_priority > p->rt_priority &&
                            attr->sched_priority > rlim_rtprio)
-@@ -4708,6 +4714,7 @@ void idle_task_exit(void)
+@@ -4885,6 +4891,7 @@ void idle_task_exit(void)
  
        if (mm != &init_mm) {
                switch_mm(mm, &init_mm, current);
@@ -90163,7 +92061,7 @@ index 084d17f..e416b9f 100644
                finish_arch_post_lock_switch();
        }
        mmdrop(mm);
-@@ -4803,7 +4810,7 @@ static void migrate_tasks(unsigned int dead_cpu)
+@@ -4980,7 +4987,7 @@ static void migrate_tasks(unsigned int dead_cpu)
  
  #if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL)
  
@@ -90172,7 +92070,7 @@ index 084d17f..e416b9f 100644
        {
                .procname       = "sched_domain",
                .mode           = 0555,
-@@ -4820,17 +4827,17 @@ static struct ctl_table sd_ctl_root[] = {
+@@ -4997,17 +5004,17 @@ static struct ctl_table sd_ctl_root[] = {
        {}
  };
  
@@ -90194,7 +92092,7 @@ index 084d17f..e416b9f 100644
  
        /*
         * In the intermediate directories, both the child directory and
-@@ -4838,22 +4845,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep)
+@@ -5015,22 +5022,25 @@ static void sd_free_ctl_entry(struct ctl_table **tablep)
         * will always be set. In the lowest directory the names are
         * static strings and all have proc handlers.
         */
@@ -90226,7 +92124,7 @@ index 084d17f..e416b9f 100644
                const char *procname, void *data, int maxlen,
                umode_t mode, proc_handler *proc_handler,
                bool load_idx)
-@@ -4873,7 +4883,7 @@ set_table_entry(struct ctl_table *entry,
+@@ -5050,7 +5060,7 @@ set_table_entry(struct ctl_table *entry,
  static struct ctl_table *
  sd_alloc_ctl_domain_table(struct sched_domain *sd)
  {
@@ -90235,7 +92133,7 @@ index 084d17f..e416b9f 100644
  
        if (table == NULL)
                return NULL;
-@@ -4911,9 +4921,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd)
+@@ -5088,9 +5098,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd)
        return table;
  }
  
@@ -90247,7 +92145,7 @@ index 084d17f..e416b9f 100644
        struct sched_domain *sd;
        int domain_num = 0, i;
        char buf[32];
-@@ -4940,11 +4950,13 @@ static struct ctl_table_header *sd_sysctl_header;
+@@ -5117,11 +5127,13 @@ static struct ctl_table_header *sd_sysctl_header;
  static void register_sched_domain_sysctl(void)
  {
        int i, cpu_num = num_possible_cpus();
@@ -90262,7 +92160,7 @@ index 084d17f..e416b9f 100644
  
        if (entry == NULL)
                return;
-@@ -4967,8 +4979,12 @@ static void unregister_sched_domain_sysctl(void)
+@@ -5144,8 +5156,12 @@ static void unregister_sched_domain_sysctl(void)
        if (sd_sysctl_header)
                unregister_sysctl_table(sd_sysctl_header);
        sd_sysctl_header = NULL;
@@ -90278,10 +92176,10 @@ index 084d17f..e416b9f 100644
  #else
  static void register_sched_domain_sysctl(void)
 diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
-index 8cbe2d2..61f20a1 100644
+index ef2b104..69961f6 100644
 --- a/kernel/sched/fair.c
 +++ b/kernel/sched/fair.c
-@@ -1806,7 +1806,7 @@ void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags)
+@@ -1906,7 +1906,7 @@ void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags)
  
  static void reset_ptenuma_scan(struct task_struct *p)
  {
@@ -90290,7 +92188,7 @@ index 8cbe2d2..61f20a1 100644
        p->mm->numa_scan_offset = 0;
  }
  
-@@ -7181,7 +7181,7 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { }
+@@ -7465,7 +7465,7 @@ static void nohz_idle_balance(struct rq *this_rq, enum cpu_idle_type idle) { }
   * run_rebalance_domains is triggered when needed from the scheduler tick.
   * Also triggered for nohz idle balancing (with nohz_balancing_kick set).
   */
@@ -90300,10 +92198,10 @@ index 8cbe2d2..61f20a1 100644
        struct rq *this_rq = this_rq();
        enum cpu_idle_type idle = this_rq->idle_balance ?
 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
-index 369b4d6..fa4eb3b 100644
+index 2df8ef0..aae070f 100644
 --- a/kernel/sched/sched.h
 +++ b/kernel/sched/sched.h
-@@ -1157,7 +1157,7 @@ struct sched_class {
+@@ -1140,7 +1140,7 @@ struct sched_class {
  #ifdef CONFIG_FAIR_GROUP_SCHED
        void (*task_move_group) (struct task_struct *p, int on_rq);
  #endif
@@ -90313,7 +92211,7 @@ index 369b4d6..fa4eb3b 100644
  static inline void put_prev_task(struct rq *rq, struct task_struct *prev)
  {
 diff --git a/kernel/signal.c b/kernel/signal.c
-index 6ea13c0..31e3b25 100644
+index 8f0876f..1153a5a 100644
 --- a/kernel/signal.c
 +++ b/kernel/signal.c
 @@ -53,12 +53,12 @@ static struct kmem_cache *sigqueue_cachep;
@@ -90340,7 +92238,7 @@ index 6ea13c0..31e3b25 100644
  
        handler = sig_handler(t, sig);
  
-@@ -371,6 +371,9 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
+@@ -372,6 +372,9 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
        atomic_inc(&user->sigpending);
        rcu_read_unlock();
  
@@ -90350,7 +92248,7 @@ index 6ea13c0..31e3b25 100644
        if (override_rlimit ||
            atomic_read(&user->sigpending) <=
                        task_rlimit(t, RLIMIT_SIGPENDING)) {
-@@ -498,7 +501,7 @@ flush_signal_handlers(struct task_struct *t, int force_default)
+@@ -499,7 +502,7 @@ flush_signal_handlers(struct task_struct *t, int force_default)
  
  int unhandled_signal(struct task_struct *tsk, int sig)
  {
@@ -90359,7 +92257,7 @@ index 6ea13c0..31e3b25 100644
        if (is_global_init(tsk))
                return 1;
        if (handler != SIG_IGN && handler != SIG_DFL)
-@@ -818,6 +821,13 @@ static int check_kill_permission(int sig, struct siginfo *info,
+@@ -793,6 +796,13 @@ static int check_kill_permission(int sig, struct siginfo *info,
                }
        }
  
@@ -90373,7 +92271,7 @@ index 6ea13c0..31e3b25 100644
        return security_task_kill(t, info, sig, 0);
  }
  
-@@ -1201,7 +1211,7 @@ __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
+@@ -1176,7 +1186,7 @@ __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
        return send_signal(sig, info, p, 1);
  }
  
@@ -90382,7 +92280,7 @@ index 6ea13c0..31e3b25 100644
  specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
  {
        return send_signal(sig, info, t, 0);
-@@ -1238,6 +1248,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
+@@ -1213,6 +1223,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
        unsigned long int flags;
        int ret, blocked, ignored;
        struct k_sigaction *action;
@@ -90390,7 +92288,7 @@ index 6ea13c0..31e3b25 100644
  
        spin_lock_irqsave(&t->sighand->siglock, flags);
        action = &t->sighand->action[sig-1];
-@@ -1252,9 +1263,18 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
+@@ -1227,9 +1238,18 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
        }
        if (action->sa.sa_handler == SIG_DFL)
                t->signal->flags &= ~SIGNAL_UNKILLABLE;
@@ -90409,7 +92307,7 @@ index 6ea13c0..31e3b25 100644
        return ret;
  }
  
-@@ -1321,8 +1341,11 @@ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
+@@ -1300,8 +1320,11 @@ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p)
        ret = check_kill_permission(sig, info, p);
        rcu_read_unlock();
  
@@ -90422,7 +92320,7 @@ index 6ea13c0..31e3b25 100644
  
        return ret;
  }
-@@ -2928,7 +2951,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
+@@ -2903,7 +2926,15 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)
        int error = -ESRCH;
  
        rcu_read_lock();
@@ -90439,7 +92337,7 @@ index 6ea13c0..31e3b25 100644
        if (p && (tgid <= 0 || task_tgid_vnr(p) == tgid)) {
                error = check_kill_permission(sig, info, p);
                /*
-@@ -3241,8 +3272,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack,
+@@ -3236,8 +3267,8 @@ COMPAT_SYSCALL_DEFINE2(sigaltstack,
        }
        seg = get_fs();
        set_fs(KERNEL_DS);
@@ -90473,7 +92371,7 @@ index eb89e18..a4e6792 100644
        mutex_unlock(&smpboot_threads_lock);
        put_online_cpus();
 diff --git a/kernel/softirq.c b/kernel/softirq.c
-index 92f24f5..db41501 100644
+index 0699add..d365ad8 100644
 --- a/kernel/softirq.c
 +++ b/kernel/softirq.c
 @@ -53,7 +53,7 @@ irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned;
@@ -90485,7 +92383,7 @@ index 92f24f5..db41501 100644
  
  DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
  
-@@ -268,7 +268,7 @@ restart:
+@@ -266,7 +266,7 @@ restart:
                kstat_incr_softirqs_this_cpu(vec_nr);
  
                trace_softirq_entry(vec_nr);
@@ -90494,7 +92392,7 @@ index 92f24f5..db41501 100644
                trace_softirq_exit(vec_nr);
                if (unlikely(prev_count != preempt_count())) {
                        pr_err("huh, entered softirq %u %s %p with preempt_count %08x, exited with %08x?\n",
-@@ -428,7 +428,7 @@ void __raise_softirq_irqoff(unsigned int nr)
+@@ -426,7 +426,7 @@ void __raise_softirq_irqoff(unsigned int nr)
        or_softirq_pending(1UL << nr);
  }
  
@@ -90503,7 +92401,7 @@ index 92f24f5..db41501 100644
  {
        softirq_vec[nr].action = action;
  }
-@@ -480,7 +480,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t)
+@@ -478,7 +478,7 @@ void __tasklet_hi_schedule_first(struct tasklet_struct *t)
  }
  EXPORT_SYMBOL(__tasklet_hi_schedule_first);
  
@@ -90512,7 +92410,7 @@ index 92f24f5..db41501 100644
  {
        struct tasklet_struct *list;
  
-@@ -516,7 +516,7 @@ static void tasklet_action(struct softirq_action *a)
+@@ -514,7 +514,7 @@ static void tasklet_action(struct softirq_action *a)
        }
  }
  
@@ -90521,7 +92419,7 @@ index 92f24f5..db41501 100644
  {
        struct tasklet_struct *list;
  
-@@ -743,7 +743,7 @@ static struct notifier_block cpu_nfb = {
+@@ -741,7 +741,7 @@ static struct notifier_block cpu_nfb = {
        .notifier_call = cpu_callback
  };
  
@@ -90531,7 +92429,7 @@ index 92f24f5..db41501 100644
        .thread_should_run      = ksoftirqd_should_run,
        .thread_fn              = run_ksoftirqd,
 diff --git a/kernel/sys.c b/kernel/sys.c
-index fba0f29..84400e2 100644
+index 1eaa2f0..d80d27c 100644
 --- a/kernel/sys.c
 +++ b/kernel/sys.c
 @@ -148,6 +148,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error)
@@ -90547,17 +92445,28 @@ index fba0f29..84400e2 100644
        no_nice = security_task_setnice(p, niceval);
        if (no_nice) {
                error = no_nice;
-@@ -351,6 +357,9 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
+@@ -353,6 +359,20 @@ SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
                        goto error;
        }
  
 +      if (gr_check_group_change(new->gid, new->egid, INVALID_GID))
 +              goto error;
++
++      if (!gid_eq(new->gid, old->gid)) {
++              /* make sure we generate a learn log for what will
++                 end up being a role transition after a full-learning
++                 policy is generated
++                 CAP_SETGID is required to perform a transition
++                 we may not log a CAP_SETGID check above, e.g.
++                 in the case where new rgid = old egid
++              */
++              gr_learn_cap(current, new, CAP_SETGID);
++      }
 +
        if (rgid != (gid_t) -1 ||
            (egid != (gid_t) -1 && !gid_eq(kegid, old->gid)))
                new->sgid = new->egid;
-@@ -386,6 +395,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
+@@ -388,6 +408,10 @@ SYSCALL_DEFINE1(setgid, gid_t, gid)
        old = current_cred();
  
        retval = -EPERM;
@@ -90568,7 +92477,7 @@ index fba0f29..84400e2 100644
        if (ns_capable(old->user_ns, CAP_SETGID))
                new->gid = new->egid = new->sgid = new->fsgid = kgid;
        else if (gid_eq(kgid, old->gid) || gid_eq(kgid, old->sgid))
-@@ -403,7 +416,7 @@ error:
+@@ -405,7 +429,7 @@ error:
  /*
   * change the user struct in a credentials set to match the new UID
   */
@@ -90577,7 +92486,7 @@ index fba0f29..84400e2 100644
  {
        struct user_struct *new_user;
  
-@@ -483,6 +496,9 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
+@@ -485,7 +509,18 @@ SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
                        goto error;
        }
  
@@ -90585,9 +92494,18 @@ index fba0f29..84400e2 100644
 +              goto error;
 +
        if (!uid_eq(new->uid, old->uid)) {
++              /* make sure we generate a learn log for what will
++                 end up being a role transition after a full-learning
++                 policy is generated
++                 CAP_SETUID is required to perform a transition
++                 we may not log a CAP_SETUID check above, e.g.
++                 in the case where new ruid = old euid
++              */
++              gr_learn_cap(current, new, CAP_SETUID);
                retval = set_user(new);
                if (retval < 0)
-@@ -533,6 +549,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
+                       goto error;
+@@ -535,6 +570,12 @@ SYSCALL_DEFINE1(setuid, uid_t, uid)
        old = current_cred();
  
        retval = -EPERM;
@@ -90600,7 +92518,7 @@ index fba0f29..84400e2 100644
        if (ns_capable(old->user_ns, CAP_SETUID)) {
                new->suid = new->uid = kuid;
                if (!uid_eq(kuid, old->uid)) {
-@@ -602,6 +624,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
+@@ -604,6 +645,9 @@ SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
                        goto error;
        }
  
@@ -90610,7 +92528,7 @@ index fba0f29..84400e2 100644
        if (ruid != (uid_t) -1) {
                new->uid = kruid;
                if (!uid_eq(kruid, old->uid)) {
-@@ -684,6 +709,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
+@@ -688,6 +732,9 @@ SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
                        goto error;
        }
  
@@ -90620,7 +92538,7 @@ index fba0f29..84400e2 100644
        if (rgid != (gid_t) -1)
                new->gid = krgid;
        if (egid != (gid_t) -1)
-@@ -745,12 +773,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
+@@ -752,12 +799,16 @@ SYSCALL_DEFINE1(setfsuid, uid_t, uid)
            uid_eq(kuid, old->suid) || uid_eq(kuid, old->fsuid) ||
            ns_capable(old->user_ns, CAP_SETUID)) {
                if (!uid_eq(kuid, old->fsuid)) {
@@ -90637,7 +92555,7 @@ index fba0f29..84400e2 100644
        abort_creds(new);
        return old_fsuid;
  
-@@ -783,12 +815,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
+@@ -790,12 +841,16 @@ SYSCALL_DEFINE1(setfsgid, gid_t, gid)
        if (gid_eq(kgid, old->gid)  || gid_eq(kgid, old->egid)  ||
            gid_eq(kgid, old->sgid) || gid_eq(kgid, old->fsgid) ||
            ns_capable(old->user_ns, CAP_SETGID)) {
@@ -90654,7 +92572,7 @@ index fba0f29..84400e2 100644
        abort_creds(new);
        return old_fsgid;
  
-@@ -1167,19 +1203,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
+@@ -1172,19 +1227,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
                return -EFAULT;
  
        down_read(&uts_sem);
@@ -90679,7 +92597,7 @@ index fba0f29..84400e2 100644
                                __OLD_UTS_LEN);
        error |= __put_user(0, name->machine + __OLD_UTS_LEN);
        up_read(&uts_sem);
-@@ -1381,6 +1417,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource,
+@@ -1385,6 +1440,13 @@ int do_prlimit(struct task_struct *tsk, unsigned int resource,
                         */
                        new_rlim->rlim_cur = 1;
                }
@@ -90694,7 +92612,7 @@ index fba0f29..84400e2 100644
        if (!retval) {
                if (old_rlim)
 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index 0e0373f..69f5181 100644
+index 15f2511..181b356 100644
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
 @@ -94,7 +94,6 @@
@@ -90735,7 +92653,7 @@ index 0e0373f..69f5181 100644
  #endif
  
  /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */
-@@ -178,10 +178,8 @@ static int proc_taint(struct ctl_table *table, int write,
+@@ -181,10 +181,8 @@ static int proc_taint(struct ctl_table *table, int write,
                               void __user *buffer, size_t *lenp, loff_t *ppos);
  #endif
  
@@ -90746,7 +92664,7 @@ index 0e0373f..69f5181 100644
  
  static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write,
                void __user *buffer, size_t *lenp, loff_t *ppos);
-@@ -212,6 +210,8 @@ static int sysrq_sysctl_handler(ctl_table *table, int write,
+@@ -215,6 +213,8 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write,
  
  #endif
  
@@ -90755,12 +92673,12 @@ index 0e0373f..69f5181 100644
  static struct ctl_table kern_table[];
  static struct ctl_table vm_table[];
  static struct ctl_table fs_table[];
-@@ -226,6 +226,20 @@ extern struct ctl_table epoll_table[];
+@@ -229,6 +229,20 @@ extern struct ctl_table epoll_table[];
  int sysctl_legacy_va_layout;
  #endif
  
 +#ifdef CONFIG_PAX_SOFTMODE
-+static ctl_table pax_table[] = {
++static struct ctl_table pax_table[] = {
 +      {
 +              .procname       = "softmode",
 +              .data           = &pax_softmode,
@@ -90776,7 +92694,7 @@ index 0e0373f..69f5181 100644
  /* The default sysctl tables: */
  
  static struct ctl_table sysctl_base_table[] = {
-@@ -274,6 +288,22 @@ static int max_extfrag_threshold = 1000;
+@@ -277,6 +291,22 @@ static int max_extfrag_threshold = 1000;
  #endif
  
  static struct ctl_table kern_table[] = {
@@ -90799,7 +92717,7 @@ index 0e0373f..69f5181 100644
        {
                .procname       = "sched_child_runs_first",
                .data           = &sysctl_sched_child_runs_first,
-@@ -629,7 +659,7 @@ static struct ctl_table kern_table[] = {
+@@ -642,7 +672,7 @@ static struct ctl_table kern_table[] = {
                .data           = &modprobe_path,
                .maxlen         = KMOD_PATH_LEN,
                .mode           = 0644,
@@ -90808,7 +92726,7 @@ index 0e0373f..69f5181 100644
        },
        {
                .procname       = "modules_disabled",
-@@ -796,16 +826,20 @@ static struct ctl_table kern_table[] = {
+@@ -809,16 +839,20 @@ static struct ctl_table kern_table[] = {
                .extra1         = &zero,
                .extra2         = &one,
        },
@@ -90830,7 +92748,7 @@ index 0e0373f..69f5181 100644
        {
                .procname       = "ngroups_max",
                .data           = &ngroups_max,
-@@ -1050,10 +1084,17 @@ static struct ctl_table kern_table[] = {
+@@ -1065,10 +1099,17 @@ static struct ctl_table kern_table[] = {
         */
        {
                .procname       = "perf_event_paranoid",
@@ -90851,7 +92769,7 @@ index 0e0373f..69f5181 100644
        },
        {
                .procname       = "perf_event_mlock_kb",
-@@ -1315,6 +1356,13 @@ static struct ctl_table vm_table[] = {
+@@ -1327,6 +1368,13 @@ static struct ctl_table vm_table[] = {
                .proc_handler   = proc_dointvec_minmax,
                .extra1         = &zero,
        },
@@ -90865,8 +92783,8 @@ index 0e0373f..69f5181 100644
  #else
        {
                .procname       = "nr_trim_pages",
-@@ -1779,6 +1827,16 @@ int proc_dostring(struct ctl_table *table, int write,
-                              buffer, lenp, ppos);
+@@ -1809,6 +1857,16 @@ int proc_dostring(struct ctl_table *table, int write,
+                              (char __user *)buffer, lenp, ppos);
  }
  
 +int proc_dostring_modpriv(struct ctl_table *table, int write,
@@ -90882,7 +92800,7 @@ index 0e0373f..69f5181 100644
  static size_t proc_skip_spaces(char **buf)
  {
        size_t ret;
-@@ -1884,6 +1942,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val,
+@@ -1914,6 +1972,8 @@ static int proc_put_long(void __user **buf, size_t *size, unsigned long val,
        len = strlen(tmp);
        if (len > *size)
                len = *size;
@@ -90891,7 +92809,7 @@ index 0e0373f..69f5181 100644
        if (copy_to_user(*buf, tmp, len))
                return -EFAULT;
        *size -= len;
-@@ -2048,7 +2108,7 @@ int proc_dointvec(struct ctl_table *table, int write,
+@@ -2091,7 +2151,7 @@ int proc_dointvec(struct ctl_table *table, int write,
  static int proc_taint(struct ctl_table *table, int write,
                               void __user *buffer, size_t *lenp, loff_t *ppos)
  {
@@ -90900,7 +92818,7 @@ index 0e0373f..69f5181 100644
        unsigned long tmptaint = get_taint();
        int err;
  
-@@ -2076,7 +2136,6 @@ static int proc_taint(struct ctl_table *table, int write,
+@@ -2119,7 +2179,6 @@ static int proc_taint(struct ctl_table *table, int write,
        return err;
  }
  
@@ -90908,7 +92826,7 @@ index 0e0373f..69f5181 100644
  static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
                                void __user *buffer, size_t *lenp, loff_t *ppos)
  {
-@@ -2085,7 +2144,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
+@@ -2128,7 +2187,6 @@ static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
  
        return proc_dointvec_minmax(table, write, buffer, lenp, ppos);
  }
@@ -90916,7 +92834,7 @@ index 0e0373f..69f5181 100644
  
  struct do_proc_dointvec_minmax_conv_param {
        int *min;
-@@ -2632,6 +2690,12 @@ int proc_dostring(struct ctl_table *table, int write,
+@@ -2688,6 +2746,12 @@ int proc_dostring(struct ctl_table *table, int write,
        return -ENOSYS;
  }
  
@@ -90929,7 +92847,7 @@ index 0e0373f..69f5181 100644
  int proc_dointvec(struct ctl_table *table, int write,
                  void __user *buffer, size_t *lenp, loff_t *ppos)
  {
-@@ -2688,5 +2752,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
+@@ -2744,5 +2808,6 @@ EXPORT_SYMBOL(proc_dointvec_minmax);
  EXPORT_SYMBOL(proc_dointvec_userhz_jiffies);
  EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
  EXPORT_SYMBOL(proc_dostring);
@@ -90937,7 +92855,7 @@ index 0e0373f..69f5181 100644
  EXPORT_SYMBOL(proc_doulongvec_minmax);
  EXPORT_SYMBOL(proc_doulongvec_ms_jiffies_minmax);
 diff --git a/kernel/taskstats.c b/kernel/taskstats.c
-index 13d2f7c..c93d0b0 100644
+index b312fcc7..753d72d 100644
 --- a/kernel/taskstats.c
 +++ b/kernel/taskstats.c
 @@ -28,9 +28,12 @@
@@ -90963,27 +92881,11 @@ index 13d2f7c..c93d0b0 100644
        if (info->attrs[TASKSTATS_CMD_ATTR_REGISTER_CPUMASK])
                return cmd_attr_register_cpumask(info);
        else if (info->attrs[TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK])
-diff --git a/kernel/time.c b/kernel/time.c
-index 7c7964c..2a0d412 100644
---- a/kernel/time.c
-+++ b/kernel/time.c
-@@ -172,6 +172,11 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
-               return error;
-       if (tz) {
-+              /* we log in do_settimeofday called below, so don't log twice
-+              */
-+              if (!tv)
-+                      gr_log_timechange();
-+
-               sys_tz = *tz;
-               update_vsyscall_tz();
-               if (firsttime) {
 diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
-index 88c9c65..7497ebc 100644
+index a7077d3..dd48a49 100644
 --- a/kernel/time/alarmtimer.c
 +++ b/kernel/time/alarmtimer.c
-@@ -795,7 +795,7 @@ static int __init alarmtimer_init(void)
+@@ -823,7 +823,7 @@ static int __init alarmtimer_init(void)
        struct platform_device *pdev;
        int error = 0;
        int i;
@@ -90992,8 +92894,174 @@ index 88c9c65..7497ebc 100644
                .clock_getres   = alarm_clock_getres,
                .clock_get      = alarm_clock_get,
                .timer_create   = alarm_timer_create,
+diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
+index 37e50aa..57a9501 100644
+--- a/kernel/time/hrtimer.c
++++ b/kernel/time/hrtimer.c
+@@ -1399,7 +1399,7 @@ void hrtimer_peek_ahead_timers(void)
+       local_irq_restore(flags);
+ }
+-static void run_hrtimer_softirq(struct softirq_action *h)
++static __latent_entropy void run_hrtimer_softirq(void)
+ {
+       hrtimer_peek_ahead_timers();
+ }
+diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
+index a16b678..8c5bd9d 100644
+--- a/kernel/time/posix-cpu-timers.c
++++ b/kernel/time/posix-cpu-timers.c
+@@ -1450,14 +1450,14 @@ struct k_clock clock_posix_cpu = {
+ static __init int init_posix_cpu_timers(void)
+ {
+-      struct k_clock process = {
++      static struct k_clock process = {
+               .clock_getres   = process_cpu_clock_getres,
+               .clock_get      = process_cpu_clock_get,
+               .timer_create   = process_cpu_timer_create,
+               .nsleep         = process_cpu_nsleep,
+               .nsleep_restart = process_cpu_nsleep_restart,
+       };
+-      struct k_clock thread = {
++      static struct k_clock thread = {
+               .clock_getres   = thread_cpu_clock_getres,
+               .clock_get      = thread_cpu_clock_get,
+               .timer_create   = thread_cpu_timer_create,
+diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c
+index 31ea01f..7fc61ef 100644
+--- a/kernel/time/posix-timers.c
++++ b/kernel/time/posix-timers.c
+@@ -43,6 +43,7 @@
+ #include <linux/hash.h>
+ #include <linux/posix-clock.h>
+ #include <linux/posix-timers.h>
++#include <linux/grsecurity.h>
+ #include <linux/syscalls.h>
+ #include <linux/wait.h>
+ #include <linux/workqueue.h>
+@@ -124,7 +125,7 @@ static DEFINE_SPINLOCK(hash_lock);
+  *        which we beg off on and pass to do_sys_settimeofday().
+  */
+-static struct k_clock posix_clocks[MAX_CLOCKS];
++static struct k_clock *posix_clocks[MAX_CLOCKS];
+ /*
+  * These ones are defined below.
+@@ -277,7 +278,7 @@ static int posix_get_tai(clockid_t which_clock, struct timespec *tp)
+  */
+ static __init int init_posix_timers(void)
+ {
+-      struct k_clock clock_realtime = {
++      static struct k_clock clock_realtime = {
+               .clock_getres   = hrtimer_get_res,
+               .clock_get      = posix_clock_realtime_get,
+               .clock_set      = posix_clock_realtime_set,
+@@ -289,7 +290,7 @@ static __init int init_posix_timers(void)
+               .timer_get      = common_timer_get,
+               .timer_del      = common_timer_del,
+       };
+-      struct k_clock clock_monotonic = {
++      static struct k_clock clock_monotonic = {
+               .clock_getres   = hrtimer_get_res,
+               .clock_get      = posix_ktime_get_ts,
+               .nsleep         = common_nsleep,
+@@ -299,19 +300,19 @@ static __init int init_posix_timers(void)
+               .timer_get      = common_timer_get,
+               .timer_del      = common_timer_del,
+       };
+-      struct k_clock clock_monotonic_raw = {
++      static struct k_clock clock_monotonic_raw = {
+               .clock_getres   = hrtimer_get_res,
+               .clock_get      = posix_get_monotonic_raw,
+       };
+-      struct k_clock clock_realtime_coarse = {
++      static struct k_clock clock_realtime_coarse = {
+               .clock_getres   = posix_get_coarse_res,
+               .clock_get      = posix_get_realtime_coarse,
+       };
+-      struct k_clock clock_monotonic_coarse = {
++      static struct k_clock clock_monotonic_coarse = {
+               .clock_getres   = posix_get_coarse_res,
+               .clock_get      = posix_get_monotonic_coarse,
+       };
+-      struct k_clock clock_tai = {
++      static struct k_clock clock_tai = {
+               .clock_getres   = hrtimer_get_res,
+               .clock_get      = posix_get_tai,
+               .nsleep         = common_nsleep,
+@@ -321,7 +322,7 @@ static __init int init_posix_timers(void)
+               .timer_get      = common_timer_get,
+               .timer_del      = common_timer_del,
+       };
+-      struct k_clock clock_boottime = {
++      static struct k_clock clock_boottime = {
+               .clock_getres   = hrtimer_get_res,
+               .clock_get      = posix_get_boottime,
+               .nsleep         = common_nsleep,
+@@ -533,7 +534,7 @@ void posix_timers_register_clock(const clockid_t clock_id,
+               return;
+       }
+-      posix_clocks[clock_id] = *new_clock;
++      posix_clocks[clock_id] = new_clock;
+ }
+ EXPORT_SYMBOL_GPL(posix_timers_register_clock);
+@@ -579,9 +580,9 @@ static struct k_clock *clockid_to_kclock(const clockid_t id)
+               return (id & CLOCKFD_MASK) == CLOCKFD ?
+                       &clock_posix_dynamic : &clock_posix_cpu;
+-      if (id >= MAX_CLOCKS || !posix_clocks[id].clock_getres)
++      if (id >= MAX_CLOCKS || !posix_clocks[id] || !posix_clocks[id]->clock_getres)
+               return NULL;
+-      return &posix_clocks[id];
++      return posix_clocks[id];
+ }
+ static int common_timer_create(struct k_itimer *new_timer)
+@@ -599,7 +600,7 @@ SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock,
+       struct k_clock *kc = clockid_to_kclock(which_clock);
+       struct k_itimer *new_timer;
+       int error, new_timer_id;
+-      sigevent_t event;
++      sigevent_t event = { };
+       int it_id_set = IT_ID_NOT_SET;
+       if (!kc)
+@@ -1014,6 +1015,13 @@ SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock,
+       if (copy_from_user(&new_tp, tp, sizeof (*tp)))
+               return -EFAULT;
++      /* only the CLOCK_REALTIME clock can be set, all other clocks
++         have their clock_set fptr set to a nosettime dummy function
++         CLOCK_REALTIME has a NULL clock_set fptr which causes it to
++         call common_clock_set, which calls do_sys_settimeofday, which
++         we hook
++      */
++
+       return kc->clock_set(which_clock, &new_tp);
+ }
+diff --git a/kernel/time/time.c b/kernel/time/time.c
+index a9ae20f..d3fbde7 100644
+--- a/kernel/time/time.c
++++ b/kernel/time/time.c
+@@ -173,6 +173,11 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
+               return error;
+       if (tz) {
++              /* we log in do_settimeofday called below, so don't log twice
++              */
++              if (!tv)
++                      gr_log_timechange();
++
+               sys_tz = *tz;
+               update_vsyscall_tz();
+               if (firsttime) {
 diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
-index f7df8ea..0810193 100644
+index ec1791f..6a086cd 100644
 --- a/kernel/time/timekeeping.c
 +++ b/kernel/time/timekeeping.c
 @@ -15,6 +15,7 @@
@@ -91004,15 +93072,37 @@ index f7df8ea..0810193 100644
  #include <linux/syscore_ops.h>
  #include <linux/clocksource.h>
  #include <linux/jiffies.h>
-@@ -502,6 +503,8 @@ int do_settimeofday(const struct timespec *tv)
+@@ -717,6 +718,8 @@ int do_settimeofday(const struct timespec *tv)
        if (!timespec_valid_strict(tv))
                return -EINVAL;
  
 +      gr_log_timechange();
 +
        raw_spin_lock_irqsave(&timekeeper_lock, flags);
-       write_seqcount_begin(&timekeeper_seq);
+       write_seqcount_begin(&tk_core.seq);
+diff --git a/kernel/time/timer.c b/kernel/time/timer.c
+index 3260ffd..c93cd5e 100644
+--- a/kernel/time/timer.c
++++ b/kernel/time/timer.c
+@@ -1394,7 +1394,7 @@ void update_process_times(int user_tick)
+ /*
+  * This function runs timers and the timer-tq in bottom half context.
+  */
+-static void run_timer_softirq(struct softirq_action *h)
++static __latent_entropy void run_timer_softirq(void)
+ {
+       struct tvec_base *base = __this_cpu_read(tvec_bases);
  
+@@ -1457,7 +1457,7 @@ static void process_timeout(unsigned long __data)
+  *
+  * In all cases the return value is guaranteed to be non-negative.
+  */
+-signed long __sched schedule_timeout(signed long timeout)
++signed long __sched __intentional_overflow(-1) schedule_timeout(signed long timeout)
+ {
+       struct timer_list timer;
+       unsigned long expire;
 diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
 index 61ed862..3b52c65 100644
 --- a/kernel/time/timer_list.c
@@ -91130,33 +93220,11 @@ index 1fb08f2..ca4bb1e 100644
        if (!pe)
                return -ENOMEM;
        return 0;
-diff --git a/kernel/timer.c b/kernel/timer.c
-index 3bb01a3..0e7760e 100644
---- a/kernel/timer.c
-+++ b/kernel/timer.c
-@@ -1393,7 +1393,7 @@ void update_process_times(int user_tick)
- /*
-  * This function runs timers and the timer-tq in bottom half context.
-  */
--static void run_timer_softirq(struct softirq_action *h)
-+static __latent_entropy void run_timer_softirq(void)
- {
-       struct tvec_base *base = __this_cpu_read(tvec_bases);
-@@ -1456,7 +1456,7 @@ static void process_timeout(unsigned long __data)
-  *
-  * In all cases the return value is guaranteed to be non-negative.
-  */
--signed long __sched schedule_timeout(signed long timeout)
-+signed long __sched __intentional_overflow(-1) schedule_timeout(signed long timeout)
- {
-       struct timer_list timer;
-       unsigned long expire;
 diff --git a/kernel/torture.c b/kernel/torture.c
-index acc9afc..4f9eb49 100644
+index dd70993..0bf694b 100644
 --- a/kernel/torture.c
 +++ b/kernel/torture.c
-@@ -489,7 +489,7 @@ static int torture_shutdown_notify(struct notifier_block *unused1,
+@@ -482,7 +482,7 @@ static int torture_shutdown_notify(struct notifier_block *unused1,
        mutex_lock(&fullstop_mutex);
        if (ACCESS_ONCE(fullstop) == FULLSTOP_DONTSTOP) {
                VERBOSE_TOROUT_STRING("Unscheduled system shutdown detected");
@@ -91165,10 +93233,14 @@ index acc9afc..4f9eb49 100644
        } else {
                pr_warn("Concurrent rmmod and shutdown illegal!\n");
        }
-@@ -551,11 +551,11 @@ static int torture_stutter(void *arg)
-       do {
+@@ -549,14 +549,14 @@ static int torture_stutter(void *arg)
                if (!torture_must_stop()) {
-                       schedule_timeout_interruptible(stutter);
+                       if (stutter > 1) {
+                               schedule_timeout_interruptible(stutter - 1);
+-                              ACCESS_ONCE(stutter_pause_test) = 2;
++                              ACCESS_ONCE_RW(stutter_pause_test) = 2;
+                       }
+                       schedule_timeout_interruptible(1);
 -                      ACCESS_ONCE(stutter_pause_test) = 1;
 +                      ACCESS_ONCE_RW(stutter_pause_test) = 1;
                }
@@ -91179,7 +93251,7 @@ index acc9afc..4f9eb49 100644
                torture_shutdown_absorb("torture_stutter");
        } while (!torture_must_stop());
        torture_kthread_stopping("torture_stutter");
-@@ -636,7 +636,7 @@ bool torture_cleanup(void)
+@@ -648,7 +648,7 @@ bool torture_cleanup_begin(void)
                schedule_timeout_uninterruptible(10);
                return true;
        }
@@ -91220,10 +93292,10 @@ index c1bd4ad..4b861dc 100644
  
        ret = -EIO;
 diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
-index 4a54a25..7ca9c89 100644
+index 31c90fe..051ce98 100644
 --- a/kernel/trace/ftrace.c
 +++ b/kernel/trace/ftrace.c
-@@ -1960,12 +1960,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
+@@ -2183,12 +2183,17 @@ ftrace_code_disable(struct module *mod, struct dyn_ftrace *rec)
        if (unlikely(ftrace_disabled))
                return 0;
  
@@ -91243,7 +93315,7 @@ index 4a54a25..7ca9c89 100644
  }
  
  /*
-@@ -4195,8 +4200,10 @@ static int ftrace_process_locs(struct module *mod,
+@@ -4492,8 +4497,10 @@ static int ftrace_process_locs(struct module *mod,
        if (!count)
                return 0;
  
@@ -91254,36 +93326,26 @@ index 4a54a25..7ca9c89 100644
  
        start_pg = ftrace_allocate_pages(count);
        if (!start_pg)
-@@ -4908,8 +4915,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
- #ifdef CONFIG_FUNCTION_GRAPH_TRACER
- static int ftrace_graph_active;
--static struct notifier_block ftrace_suspend_notifier;
--
- int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)
- {
-       return 0;
-@@ -5085,6 +5090,10 @@ static void update_function_graph_func(void)
-               ftrace_graph_entry = ftrace_graph_entry_test;
- }
-+static struct notifier_block ftrace_suspend_notifier = {
-+      .notifier_call = ftrace_suspend_notifier_call
-+};
-+
- int register_ftrace_graph(trace_func_graph_ret_t retfunc,
-                       trace_func_graph_ent_t entryfunc)
- {
-@@ -5098,7 +5107,6 @@ int register_ftrace_graph(trace_func_graph_ret_t retfunc,
-               goto out;
-       }
--      ftrace_suspend_notifier.notifier_call = ftrace_suspend_notifier_call;
-       register_pm_notifier(&ftrace_suspend_notifier);
-       ftrace_graph_active++;
+@@ -5340,7 +5347,7 @@ static int alloc_retstack_tasklist(struct ftrace_ret_stack **ret_stack_list)
+               if (t->ret_stack == NULL) {
+                       atomic_set(&t->tracing_graph_pause, 0);
+-                      atomic_set(&t->trace_overrun, 0);
++                      atomic_set_unchecked(&t->trace_overrun, 0);
+                       t->curr_ret_stack = -1;
+                       /* Make sure the tasks see the -1 first: */
+                       smp_wmb();
+@@ -5553,7 +5560,7 @@ static void
+ graph_init_task(struct task_struct *t, struct ftrace_ret_stack *ret_stack)
+ {
+       atomic_set(&t->tracing_graph_pause, 0);
+-      atomic_set(&t->trace_overrun, 0);
++      atomic_set_unchecked(&t->trace_overrun, 0);
+       t->ftrace_timestamp = 0;
+       /* make curr_ret_stack visible before we add the ret_stack */
+       smp_wmb();
 diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
-index 7c56c3d..9980576 100644
+index a56e07c..d46f0ba 100644
 --- a/kernel/trace/ring_buffer.c
 +++ b/kernel/trace/ring_buffer.c
 @@ -352,9 +352,9 @@ struct buffer_data_page {
@@ -91309,7 +93371,7 @@ index 7c56c3d..9980576 100644
        local_t                         dropped_events;
        local_t                         committing;
        local_t                         commits;
-@@ -995,8 +995,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -1032,8 +1032,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
         *
         * We add a counter to the write field to denote this.
         */
@@ -91320,7 +93382,7 @@ index 7c56c3d..9980576 100644
  
        /*
         * Just make sure we have seen our old_write and synchronize
-@@ -1024,8 +1024,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -1061,8 +1061,8 @@ static int rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
                 * cmpxchg to only update if an interrupt did not already
                 * do it for us. If the cmpxchg fails, we don't care.
                 */
@@ -91331,7 +93393,7 @@ index 7c56c3d..9980576 100644
  
                /*
                 * No need to worry about races with clearing out the commit.
-@@ -1392,12 +1392,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer);
+@@ -1429,12 +1429,12 @@ static void rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer);
  
  static inline unsigned long rb_page_entries(struct buffer_page *bpage)
  {
@@ -91346,7 +93408,7 @@ index 7c56c3d..9980576 100644
  }
  
  static int
-@@ -1492,7 +1492,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages)
+@@ -1529,7 +1529,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned int nr_pages)
                         * bytes consumed in ring buffer from here.
                         * Increment overrun to account for the lost events.
                         */
@@ -91355,7 +93417,7 @@ index 7c56c3d..9980576 100644
                        local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes);
                }
  
-@@ -2070,7 +2070,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2091,7 +2091,7 @@ rb_handle_head_page(struct ring_buffer_per_cpu *cpu_buffer,
                 * it is our responsibility to update
                 * the counters.
                 */
@@ -91364,7 +93426,7 @@ index 7c56c3d..9980576 100644
                local_sub(BUF_PAGE_SIZE, &cpu_buffer->entries_bytes);
  
                /*
-@@ -2220,7 +2220,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2241,7 +2241,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
                if (tail == BUF_PAGE_SIZE)
                        tail_page->real_end = 0;
  
@@ -91373,7 +93435,7 @@ index 7c56c3d..9980576 100644
                return;
        }
  
-@@ -2255,7 +2255,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2276,7 +2276,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
                rb_event_set_padding(event);
  
                /* Set the write back to the previous setting */
@@ -91382,7 +93444,7 @@ index 7c56c3d..9980576 100644
                return;
        }
  
-@@ -2267,7 +2267,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2288,7 +2288,7 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer,
  
        /* Set write to end of buffer */
        length = (tail + length) - BUF_PAGE_SIZE;
@@ -91391,7 +93453,7 @@ index 7c56c3d..9980576 100644
  }
  
  /*
-@@ -2293,7 +2293,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2314,7 +2314,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
         * about it.
         */
        if (unlikely(next_page == commit_page)) {
@@ -91400,7 +93462,7 @@ index 7c56c3d..9980576 100644
                goto out_reset;
        }
  
-@@ -2349,7 +2349,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2370,7 +2370,7 @@ rb_move_tail(struct ring_buffer_per_cpu *cpu_buffer,
                                      cpu_buffer->tail_page) &&
                                     (cpu_buffer->commit_page ==
                                      cpu_buffer->reader_page))) {
@@ -91409,7 +93471,7 @@ index 7c56c3d..9980576 100644
                                goto out_reset;
                        }
                }
-@@ -2397,7 +2397,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2418,7 +2418,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
                length += RB_LEN_TIME_EXTEND;
  
        tail_page = cpu_buffer->tail_page;
@@ -91418,7 +93480,7 @@ index 7c56c3d..9980576 100644
  
        /* set write to only the index of the write */
        write &= RB_WRITE_MASK;
-@@ -2421,7 +2421,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2442,7 +2442,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
        kmemcheck_annotate_bitfield(event, bitfield);
        rb_update_event(cpu_buffer, event, length, add_timestamp, delta);
  
@@ -91427,7 +93489,7 @@ index 7c56c3d..9980576 100644
  
        /*
         * If this is the first commit on the page, then update
-@@ -2454,7 +2454,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2475,7 +2475,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
  
        if (bpage->page == (void *)addr && rb_page_write(bpage) == old_index) {
                unsigned long write_mask =
@@ -91436,7 +93498,7 @@ index 7c56c3d..9980576 100644
                unsigned long event_length = rb_event_length(event);
                /*
                 * This is on the tail page. It is possible that
-@@ -2464,7 +2464,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2485,7 +2485,7 @@ rb_try_to_discard(struct ring_buffer_per_cpu *cpu_buffer,
                 */
                old_index += write_mask;
                new_index += write_mask;
@@ -91445,7 +93507,7 @@ index 7c56c3d..9980576 100644
                if (index == old_index) {
                        /* update counters */
                        local_sub(event_length, &cpu_buffer->entries_bytes);
-@@ -2856,7 +2856,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2877,7 +2877,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
  
        /* Do the likely case first */
        if (likely(bpage->page == (void *)addr)) {
@@ -91454,7 +93516,7 @@ index 7c56c3d..9980576 100644
                return;
        }
  
-@@ -2868,7 +2868,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
+@@ -2889,7 +2889,7 @@ rb_decrement_entry(struct ring_buffer_per_cpu *cpu_buffer,
        start = bpage;
        do {
                if (bpage->page == (void *)addr) {
@@ -91463,7 +93525,7 @@ index 7c56c3d..9980576 100644
                        return;
                }
                rb_inc_page(cpu_buffer, &bpage);
-@@ -3152,7 +3152,7 @@ static inline unsigned long
+@@ -3173,7 +3173,7 @@ static inline unsigned long
  rb_num_of_entries(struct ring_buffer_per_cpu *cpu_buffer)
  {
        return local_read(&cpu_buffer->entries) -
@@ -91472,7 +93534,7 @@ index 7c56c3d..9980576 100644
  }
  
  /**
-@@ -3241,7 +3241,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu)
+@@ -3262,7 +3262,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu)
                return 0;
  
        cpu_buffer = buffer->buffers[cpu];
@@ -91481,7 +93543,7 @@ index 7c56c3d..9980576 100644
  
        return ret;
  }
-@@ -3264,7 +3264,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu)
+@@ -3285,7 +3285,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu)
                return 0;
  
        cpu_buffer = buffer->buffers[cpu];
@@ -91490,7 +93552,7 @@ index 7c56c3d..9980576 100644
  
        return ret;
  }
-@@ -3349,7 +3349,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer)
+@@ -3370,7 +3370,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer)
        /* if you care about this being correct, lock the buffer */
        for_each_buffer_cpu(buffer, cpu) {
                cpu_buffer = buffer->buffers[cpu];
@@ -91499,7 +93561,7 @@ index 7c56c3d..9980576 100644
        }
  
        return overruns;
-@@ -3525,8 +3525,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
+@@ -3541,8 +3541,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
        /*
         * Reset the reader page to size zero.
         */
@@ -91510,7 +93572,7 @@ index 7c56c3d..9980576 100644
        local_set(&cpu_buffer->reader_page->page->commit, 0);
        cpu_buffer->reader_page->real_end = 0;
  
-@@ -3560,7 +3560,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
+@@ -3576,7 +3576,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
         * want to compare with the last_overrun.
         */
        smp_mb();
@@ -91519,7 +93581,7 @@ index 7c56c3d..9980576 100644
  
        /*
         * Here's the tricky part.
-@@ -4130,8 +4130,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
+@@ -4148,8 +4148,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
  
        cpu_buffer->head_page
                = list_entry(cpu_buffer->pages, struct buffer_page, list);
@@ -91530,7 +93592,7 @@ index 7c56c3d..9980576 100644
        local_set(&cpu_buffer->head_page->page->commit, 0);
  
        cpu_buffer->head_page->read = 0;
-@@ -4141,14 +4141,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
+@@ -4159,14 +4159,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
  
        INIT_LIST_HEAD(&cpu_buffer->reader_page->list);
        INIT_LIST_HEAD(&cpu_buffer->new_pages);
@@ -91549,7 +93611,7 @@ index 7c56c3d..9980576 100644
        local_set(&cpu_buffer->dropped_events, 0);
        local_set(&cpu_buffer->entries, 0);
        local_set(&cpu_buffer->committing, 0);
-@@ -4553,8 +4553,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
+@@ -4571,8 +4571,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
                rb_init_page(bpage);
                bpage = reader->page;
                reader->page = *data_page;
@@ -91561,10 +93623,10 @@ index 7c56c3d..9980576 100644
                *data_page = bpage;
  
 diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
-index 39a1226..2dc2b43 100644
+index 426962b..e8e2d9a 100644
 --- a/kernel/trace/trace.c
 +++ b/kernel/trace/trace.c
-@@ -3447,7 +3447,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
+@@ -3488,7 +3488,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set)
        return 0;
  }
  
@@ -91574,10 +93636,10 @@ index 39a1226..2dc2b43 100644
        /* do nothing if flag is already set */
        if (!!(trace_flags & mask) == !!enabled)
 diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
-index 99676cd..670b9e8 100644
+index 385391f..8d2250f 100644
 --- a/kernel/trace/trace.h
 +++ b/kernel/trace/trace.h
-@@ -1264,7 +1264,7 @@ extern const char *__stop___tracepoint_str[];
+@@ -1280,7 +1280,7 @@ extern const char *__stop___tracepoint_str[];
  void trace_printk_init_buffers(void);
  void trace_printk_start_comm(void);
  int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set);
@@ -91587,10 +93649,10 @@ index 99676cd..670b9e8 100644
  /*
   * Normal trace_printk() and friends allocates special buffers
 diff --git a/kernel/trace/trace_clock.c b/kernel/trace/trace_clock.c
-index 26dc348..8708ca7 100644
+index 57b67b1..66082a9 100644
 --- a/kernel/trace/trace_clock.c
 +++ b/kernel/trace/trace_clock.c
-@@ -123,7 +123,7 @@ u64 notrace trace_clock_global(void)
+@@ -124,7 +124,7 @@ u64 notrace trace_clock_global(void)
        return now;
  }
  
@@ -91599,7 +93661,7 @@ index 26dc348..8708ca7 100644
  
  /*
   * trace_clock_counter(): simply an atomic counter.
-@@ -132,5 +132,5 @@ static atomic64_t trace_counter;
+@@ -133,5 +133,5 @@ static atomic64_t trace_counter;
   */
  u64 notrace trace_clock_counter(void)
  {
@@ -91607,10 +93669,10 @@ index 26dc348..8708ca7 100644
 +      return atomic64_inc_return_unchecked(&trace_counter);
  }
 diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
-index 3ddfd8f..41a10fe 100644
+index 1b0df1e..4ebb965 100644
 --- a/kernel/trace/trace_events.c
 +++ b/kernel/trace/trace_events.c
-@@ -1718,7 +1718,6 @@ __trace_early_add_new_event(struct ftrace_event_call *call,
+@@ -1720,7 +1720,6 @@ __trace_early_add_new_event(struct ftrace_event_call *call,
        return 0;
  }
  
@@ -91618,6 +93680,28 @@ index 3ddfd8f..41a10fe 100644
  static void __add_event_to_tracers(struct ftrace_event_call *call);
  
  /* Add an additional event_call dynamically */
+diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
+index f0a0c98..3692dc8 100644
+--- a/kernel/trace/trace_functions_graph.c
++++ b/kernel/trace/trace_functions_graph.c
+@@ -133,7 +133,7 @@ ftrace_push_return_trace(unsigned long ret, unsigned long func, int *depth,
+       /* The return trace stack is full */
+       if (current->curr_ret_stack == FTRACE_RETFUNC_DEPTH - 1) {
+-              atomic_inc(&current->trace_overrun);
++              atomic_inc_unchecked(&current->trace_overrun);
+               return -EBUSY;
+       }
+@@ -230,7 +230,7 @@ ftrace_pop_return_trace(struct ftrace_graph_ret *trace, unsigned long *ret,
+       *ret = current->ret_stack[index].ret;
+       trace->func = current->ret_stack[index].func;
+       trace->calltime = current->ret_stack[index].calltime;
+-      trace->overrun = atomic_read(&current->trace_overrun);
++      trace->overrun = atomic_read_unchecked(&current->trace_overrun);
+       trace->depth = index;
+ }
 diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c
 index 0abd9b8..6a663a2 100644
 --- a/kernel/trace/trace_mmiotrace.c
@@ -91659,19 +93743,10 @@ index 0abd9b8..6a663a2 100644
        }
        entry   = ring_buffer_event_data(event);
 diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
-index a436de1..f64dde2 100644
+index c6977d5..d243785 100644
 --- a/kernel/trace/trace_output.c
 +++ b/kernel/trace/trace_output.c
-@@ -294,7 +294,7 @@ int trace_seq_path(struct trace_seq *s, const struct path *path)
-       p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len);
-       if (!IS_ERR(p)) {
--              p = mangle_path(s->buffer + s->len, p, "\n");
-+              p = mangle_path(s->buffer + s->len, p, "\n\\");
-               if (p) {
-                       s->len = p - s->buffer;
-                       return 1;
-@@ -939,14 +939,16 @@ int register_ftrace_event(struct trace_event *event)
+@@ -712,14 +712,16 @@ int register_ftrace_event(struct trace_event *event)
                        goto out;
        }
  
@@ -91692,11 +93767,24 @@ index a436de1..f64dde2 100644
  
        key = event->type & (EVENT_HASHSIZE - 1);
  
+diff --git a/kernel/trace/trace_seq.c b/kernel/trace/trace_seq.c
+index 1f24ed9..10407ec 100644
+--- a/kernel/trace/trace_seq.c
++++ b/kernel/trace/trace_seq.c
+@@ -367,7 +367,7 @@ int trace_seq_path(struct trace_seq *s, const struct path *path)
+       p = d_path(path, s->buffer + s->len, PAGE_SIZE - s->len);
+       if (!IS_ERR(p)) {
+-              p = mangle_path(s->buffer + s->len, p, "\n");
++              p = mangle_path(s->buffer + s->len, p, "\n\\");
+               if (p) {
+                       s->len = p - s->buffer;
+                       return 1;
 diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
-index 21b320e..40607bc 100644
+index 16eddb3..758b308 100644
 --- a/kernel/trace/trace_stack.c
 +++ b/kernel/trace/trace_stack.c
-@@ -69,7 +69,7 @@ check_stack(unsigned long ip, unsigned long *stack)
+@@ -90,7 +90,7 @@ check_stack(unsigned long ip, unsigned long *stack)
                return;
  
        /* we do not handle interrupt stacks yet */
@@ -91705,11 +93793,51 @@ index 21b320e..40607bc 100644
                return;
  
        local_irq_save(flags);
+diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
+index 29228c4..301bc8c 100644
+--- a/kernel/trace/trace_syscalls.c
++++ b/kernel/trace/trace_syscalls.c
+@@ -602,6 +602,8 @@ static int perf_sysenter_enable(struct ftrace_event_call *call)
+       int num;
+       num = ((struct syscall_metadata *)call->data)->syscall_nr;
++      if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
++              return -EINVAL;
+       mutex_lock(&syscall_trace_lock);
+       if (!sys_perf_refcount_enter)
+@@ -622,6 +624,8 @@ static void perf_sysenter_disable(struct ftrace_event_call *call)
+       int num;
+       num = ((struct syscall_metadata *)call->data)->syscall_nr;
++      if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
++              return;
+       mutex_lock(&syscall_trace_lock);
+       sys_perf_refcount_enter--;
+@@ -674,6 +678,8 @@ static int perf_sysexit_enable(struct ftrace_event_call *call)
+       int num;
+       num = ((struct syscall_metadata *)call->data)->syscall_nr;
++      if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
++              return -EINVAL;
+       mutex_lock(&syscall_trace_lock);
+       if (!sys_perf_refcount_exit)
+@@ -694,6 +700,8 @@ static void perf_sysexit_disable(struct ftrace_event_call *call)
+       int num;
+       num = ((struct syscall_metadata *)call->data)->syscall_nr;
++      if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
++              return;
+       mutex_lock(&syscall_trace_lock);
+       sys_perf_refcount_exit--;
 diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
-index bf71b4b..04dee68 100644
+index a2e37c5..4fa859b 100644
 --- a/kernel/user_namespace.c
 +++ b/kernel/user_namespace.c
-@@ -82,6 +82,21 @@ int create_user_ns(struct cred *new)
+@@ -83,6 +83,21 @@ int create_user_ns(struct cred *new)
            !kgid_has_mapping(parent_ns, group))
                return -EPERM;
  
@@ -91731,7 +93859,7 @@ index bf71b4b..04dee68 100644
        ns = kmem_cache_zalloc(user_ns_cachep, GFP_KERNEL);
        if (!ns)
                return -ENOMEM;
-@@ -865,7 +880,7 @@ static int userns_install(struct nsproxy *nsproxy, void *ns)
+@@ -974,7 +989,7 @@ static int userns_install(struct nsproxy *nsproxy, void *ns)
        if (atomic_read(&current->mm->mm_users) > 1)
                return -EINVAL;
  
@@ -91741,11 +93869,11 @@ index bf71b4b..04dee68 100644
  
        if (!ns_capable(user_ns, CAP_SYS_ADMIN))
 diff --git a/kernel/utsname_sysctl.c b/kernel/utsname_sysctl.c
-index 4f69f9a..7c6f8f8 100644
+index c8eac43..4b5f08f 100644
 --- a/kernel/utsname_sysctl.c
 +++ b/kernel/utsname_sysctl.c
-@@ -47,7 +47,7 @@ static void put_uts(ctl_table *table, int write, void *which)
- static int proc_do_uts_string(ctl_table *table, int write,
+@@ -47,7 +47,7 @@ static void put_uts(struct ctl_table *table, int write, void *which)
+ static int proc_do_uts_string(struct ctl_table *table, int write,
                  void __user *buffer, size_t *lenp, loff_t *ppos)
  {
 -      struct ctl_table uts_table;
@@ -91754,10 +93882,10 @@ index 4f69f9a..7c6f8f8 100644
        memcpy(&uts_table, table, sizeof(uts_table));
        uts_table.data = get_uts(table, write);
 diff --git a/kernel/watchdog.c b/kernel/watchdog.c
-index 30e4822..dd2b854 100644
+index 70bf118..4be3c37 100644
 --- a/kernel/watchdog.c
 +++ b/kernel/watchdog.c
-@@ -479,7 +479,7 @@ static int watchdog_nmi_enable(unsigned int cpu) { return 0; }
+@@ -572,7 +572,7 @@ static int watchdog_nmi_enable(unsigned int cpu) { return 0; }
  static void watchdog_nmi_disable(unsigned int cpu) { return; }
  #endif /* CONFIG_HARDLOCKUP_DETECTOR */
  
@@ -91767,10 +93895,10 @@ index 30e4822..dd2b854 100644
        .thread_should_run      = watchdog_should_run,
        .thread_fn              = watchdog,
 diff --git a/kernel/workqueue.c b/kernel/workqueue.c
-index 7ba5897..c8ed1f2 100644
+index 09b685d..d3565e3 100644
 --- a/kernel/workqueue.c
 +++ b/kernel/workqueue.c
-@@ -4710,7 +4710,7 @@ static void rebind_workers(struct worker_pool *pool)
+@@ -4508,7 +4508,7 @@ static void rebind_workers(struct worker_pool *pool)
                WARN_ON_ONCE(!(worker_flags & WORKER_UNBOUND));
                worker_flags |= WORKER_REBOUND;
                worker_flags &= ~WORKER_UNBOUND;
@@ -91780,10 +93908,10 @@ index 7ba5897..c8ed1f2 100644
  
        spin_unlock_irq(&pool->lock);
 diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
-index 819ac51..1c8a65e 100644
+index 4e35a5d..8a1f3f0 100644
 --- a/lib/Kconfig.debug
 +++ b/lib/Kconfig.debug
-@@ -853,7 +853,7 @@ config DEBUG_MUTEXES
+@@ -894,7 +894,7 @@ config DEBUG_MUTEXES
  
  config DEBUG_WW_MUTEX_SLOWPATH
        bool "Wait/wound mutex debugging: Slowpath testing"
@@ -91792,7 +93920,7 @@ index 819ac51..1c8a65e 100644
        select DEBUG_LOCK_ALLOC
        select DEBUG_SPINLOCK
        select DEBUG_MUTEXES
-@@ -866,7 +866,7 @@ config DEBUG_WW_MUTEX_SLOWPATH
+@@ -911,7 +911,7 @@ config DEBUG_WW_MUTEX_SLOWPATH
  
  config DEBUG_LOCK_ALLOC
        bool "Lock debugging: detect incorrect freeing of live locks"
@@ -91801,7 +93929,7 @@ index 819ac51..1c8a65e 100644
        select DEBUG_SPINLOCK
        select DEBUG_MUTEXES
        select LOCKDEP
-@@ -880,7 +880,7 @@ config DEBUG_LOCK_ALLOC
+@@ -925,7 +925,7 @@ config DEBUG_LOCK_ALLOC
  
  config PROVE_LOCKING
        bool "Lock debugging: prove locking correctness"
@@ -91810,7 +93938,7 @@ index 819ac51..1c8a65e 100644
        select LOCKDEP
        select DEBUG_SPINLOCK
        select DEBUG_MUTEXES
-@@ -931,7 +931,7 @@ config LOCKDEP
+@@ -976,7 +976,7 @@ config LOCKDEP
  
  config LOCK_STAT
        bool "Lock usage statistics"
@@ -91819,7 +93947,7 @@ index 819ac51..1c8a65e 100644
        select LOCKDEP
        select DEBUG_SPINLOCK
        select DEBUG_MUTEXES
-@@ -1403,6 +1403,7 @@ config LATENCYTOP
+@@ -1449,6 +1449,7 @@ config LATENCYTOP
        depends on DEBUG_KERNEL
        depends on STACKTRACE_SUPPORT
        depends on PROC_FS
@@ -91827,7 +93955,7 @@ index 819ac51..1c8a65e 100644
        select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC
        select KALLSYMS
        select KALLSYMS_ALL
-@@ -1419,7 +1420,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
+@@ -1465,7 +1466,7 @@ config ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
  config DEBUG_STRICT_USER_COPY_CHECKS
        bool "Strict user copy size checks"
        depends on ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
@@ -91836,7 +93964,7 @@ index 819ac51..1c8a65e 100644
        help
          Enabling this option turns a certain set of sanity checks for user
          copy operations into compile time failures.
-@@ -1538,7 +1539,7 @@ endmenu # runtime tests
+@@ -1593,7 +1594,7 @@ endmenu # runtime tests
  
  config PROVIDE_OHCI1394_DMA_INIT
        bool "Remote debugging over FireWire early on boot"
@@ -91846,11 +93974,11 @@ index 819ac51..1c8a65e 100644
          If you want to debug problems which hang or crash the kernel early
          on boot and the crashing machine has a FireWire port, you can use
 diff --git a/lib/Makefile b/lib/Makefile
-index 0cd7b68..e149e37 100644
+index 0211d2b..93f5cc3 100644
 --- a/lib/Makefile
 +++ b/lib/Makefile
-@@ -52,7 +52,7 @@ obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
- obj-$(CONFIG_BTREE) += btree.o
+@@ -55,7 +55,7 @@ obj-$(CONFIG_BTREE) += btree.o
+ obj-$(CONFIG_INTERVAL_TREE) += interval_tree.o
  obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o
  obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
 -obj-$(CONFIG_DEBUG_LIST) += list_debug.o
@@ -91872,10 +94000,10 @@ index 114d1be..ab0350c 100644
                        (val << avg->factor)) >> avg->weight :
                (val << avg->factor);
 diff --git a/lib/bitmap.c b/lib/bitmap.c
-index 06f7e4f..f3cf2b0 100644
+index b499ab6..fbdb76c 100644
 --- a/lib/bitmap.c
 +++ b/lib/bitmap.c
-@@ -422,7 +422,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen,
+@@ -433,7 +433,7 @@ int __bitmap_parse(const char *buf, unsigned int buflen,
  {
        int c, old_c, totaldigits, ndigits, nchunks, nbits;
        u32 chunk;
@@ -91884,7 +94012,7 @@ index 06f7e4f..f3cf2b0 100644
  
        bitmap_zero(maskp, nmaskbits);
  
-@@ -507,7 +507,7 @@ int bitmap_parse_user(const char __user *ubuf,
+@@ -518,7 +518,7 @@ int bitmap_parse_user(const char __user *ubuf,
  {
        if (!access_ok(VERIFY_READ, ubuf, ulen))
                return -EFAULT;
@@ -91893,7 +94021,7 @@ index 06f7e4f..f3cf2b0 100644
                                ulen, 1, maskp, nmaskbits);
  
  }
-@@ -598,7 +598,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen,
+@@ -609,7 +609,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen,
  {
        unsigned a, b;
        int c, old_c, totaldigits;
@@ -91902,7 +94030,7 @@ index 06f7e4f..f3cf2b0 100644
        int exp_digit, in_range;
  
        totaldigits = c = 0;
-@@ -698,7 +698,7 @@ int bitmap_parselist_user(const char __user *ubuf,
+@@ -704,7 +704,7 @@ int bitmap_parselist_user(const char __user *ubuf,
  {
        if (!access_ok(VERIFY_READ, ubuf, ulen))
                return -EFAULT;
@@ -91912,10 +94040,10 @@ index 06f7e4f..f3cf2b0 100644
  }
  EXPORT_SYMBOL(bitmap_parselist_user);
 diff --git a/lib/bug.c b/lib/bug.c
-index 1686034..a9c00c8 100644
+index d1d7c78..b354235 100644
 --- a/lib/bug.c
 +++ b/lib/bug.c
-@@ -134,6 +134,8 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs)
+@@ -137,6 +137,8 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs)
                return BUG_TRAP_TYPE_NONE;
  
        bug = find_bug(bugaddr);
@@ -91925,10 +94053,10 @@ index 1686034..a9c00c8 100644
        file = NULL;
        line = 0;
 diff --git a/lib/debugobjects.c b/lib/debugobjects.c
-index e0731c3..ad66444 100644
+index 547f7f9..a6d4ba0 100644
 --- a/lib/debugobjects.c
 +++ b/lib/debugobjects.c
-@@ -286,7 +286,7 @@ static void debug_object_is_on_stack(void *addr, int onstack)
+@@ -289,7 +289,7 @@ static void debug_object_is_on_stack(void *addr, int onstack)
        if (limit > 4)
                return;
  
@@ -91960,7 +94088,7 @@ index 4382ad7..08aa558 100644
        u32 high = divisor >> 32;
        u64 quot;
 diff --git a/lib/dma-debug.c b/lib/dma-debug.c
-index 98f2d7e..899da5c 100644
+index add80cc..0d27550 100644
 --- a/lib/dma-debug.c
 +++ b/lib/dma-debug.c
 @@ -971,7 +971,7 @@ static int dma_debug_device_change(struct notifier_block *nb, unsigned long acti
@@ -91978,7 +94106,7 @@ index 98f2d7e..899da5c 100644
  {
 -      if (object_is_on_stack(addr))
 +      if (object_starts_on_stack(addr))
-               err_printk(dev, NULL, "DMA-API: device driver maps memory from"
+               err_printk(dev, NULL, "DMA-API: device driver maps memory from "
                                "stack [addr=%p]\n", addr);
  }
 diff --git a/lib/hash.c b/lib/hash.c
@@ -92280,24 +94408,116 @@ index c24c2f7..f0296f4 100644
 +      pax_close_kernel();
 +}
 +EXPORT_SYMBOL(pax_list_del_rcu);
+diff --git a/lib/lockref.c b/lib/lockref.c
+index d2233de..fa1a2f6 100644
+--- a/lib/lockref.c
++++ b/lib/lockref.c
+@@ -48,13 +48,13 @@
+ void lockref_get(struct lockref *lockref)
+ {
+       CMPXCHG_LOOP(
+-              new.count++;
++              __lockref_inc(&new);
+       ,
+               return;
+       );
+       spin_lock(&lockref->lock);
+-      lockref->count++;
++      __lockref_inc(lockref);
+       spin_unlock(&lockref->lock);
+ }
+ EXPORT_SYMBOL(lockref_get);
+@@ -69,7 +69,7 @@ int lockref_get_not_zero(struct lockref *lockref)
+       int retval;
+       CMPXCHG_LOOP(
+-              new.count++;
++              __lockref_inc(&new);
+               if (!old.count)
+                       return 0;
+       ,
+@@ -79,7 +79,7 @@ int lockref_get_not_zero(struct lockref *lockref)
+       spin_lock(&lockref->lock);
+       retval = 0;
+       if (lockref->count) {
+-              lockref->count++;
++              __lockref_inc(lockref);
+               retval = 1;
+       }
+       spin_unlock(&lockref->lock);
+@@ -96,7 +96,7 @@ EXPORT_SYMBOL(lockref_get_not_zero);
+ int lockref_get_or_lock(struct lockref *lockref)
+ {
+       CMPXCHG_LOOP(
+-              new.count++;
++              __lockref_inc(&new);
+               if (!old.count)
+                       break;
+       ,
+@@ -106,7 +106,7 @@ int lockref_get_or_lock(struct lockref *lockref)
+       spin_lock(&lockref->lock);
+       if (!lockref->count)
+               return 0;
+-      lockref->count++;
++      __lockref_inc(lockref);
+       spin_unlock(&lockref->lock);
+       return 1;
+ }
+@@ -120,7 +120,7 @@ EXPORT_SYMBOL(lockref_get_or_lock);
+ int lockref_put_or_lock(struct lockref *lockref)
+ {
+       CMPXCHG_LOOP(
+-              new.count--;
++              __lockref_dec(&new);
+               if (old.count <= 1)
+                       break;
+       ,
+@@ -130,7 +130,7 @@ int lockref_put_or_lock(struct lockref *lockref)
+       spin_lock(&lockref->lock);
+       if (lockref->count <= 1)
+               return 0;
+-      lockref->count--;
++      __lockref_dec(lockref);
+       spin_unlock(&lockref->lock);
+       return 1;
+ }
+@@ -157,7 +157,7 @@ int lockref_get_not_dead(struct lockref *lockref)
+       int retval;
+       CMPXCHG_LOOP(
+-              new.count++;
++              __lockref_inc(&new);
+               if ((int)old.count < 0)
+                       return 0;
+       ,
+@@ -167,7 +167,7 @@ int lockref_get_not_dead(struct lockref *lockref)
+       spin_lock(&lockref->lock);
+       retval = 0;
+       if ((int) lockref->count >= 0) {
+-              lockref->count++;
++              __lockref_inc(lockref);
+               retval = 1;
+       }
+       spin_unlock(&lockref->lock);
 diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c
-index 963b703..438bc51 100644
+index 6111bcb..02e816b 100644
 --- a/lib/percpu-refcount.c
 +++ b/lib/percpu-refcount.c
-@@ -29,7 +29,7 @@
-  * can't hit 0 before we've added up all the percpu refs.
+@@ -31,7 +31,7 @@
+  * atomic_long_t can't hit 0 before we've added up all the percpu refs.
   */
  
--#define PCPU_COUNT_BIAS               (1U << 31)
-+#define PCPU_COUNT_BIAS               (1U << 30)
+-#define PERCPU_COUNT_BIAS     (1LU << (BITS_PER_LONG - 1))
++#define PERCPU_COUNT_BIAS     (1LU << (BITS_PER_LONG - 2))
+ static DECLARE_WAIT_QUEUE_HEAD(percpu_ref_switch_waitq);
  
- /**
-  * percpu_ref_init - initialize a percpu refcount
 diff --git a/lib/radix-tree.c b/lib/radix-tree.c
-index 9599aa7..9cf6c72 100644
+index 3291a8e..346a91e 100644
 --- a/lib/radix-tree.c
 +++ b/lib/radix-tree.c
-@@ -66,7 +66,7 @@ struct radix_tree_preload {
+@@ -67,7 +67,7 @@ struct radix_tree_preload {
        int nr;
        struct radix_tree_node *nodes[RADIX_TREE_PRELOAD_SIZE];
  };
@@ -92307,11 +94527,11 @@ index 9599aa7..9cf6c72 100644
  static inline void *ptr_to_indirect(void *ptr)
  {
 diff --git a/lib/random32.c b/lib/random32.c
-index fa5da61..35fe9af 100644
+index 0bee183..526f12f 100644
 --- a/lib/random32.c
 +++ b/lib/random32.c
-@@ -42,7 +42,7 @@
- static void __init prandom_state_selftest(void);
+@@ -47,7 +47,7 @@ static inline void prandom_state_selftest(void)
+ }
  #endif
  
 -static DEFINE_PER_CPU(struct rnd_state, net_rand_state);
@@ -92320,7 +94540,7 @@ index fa5da61..35fe9af 100644
  /**
   *    prandom_u32_state - seeded pseudo-random number generator.
 diff --git a/lib/rbtree.c b/lib/rbtree.c
-index 65f4eff..2cfa167 100644
+index c16c81a..4dcbda1 100644
 --- a/lib/rbtree.c
 +++ b/lib/rbtree.c
 @@ -380,7 +380,9 @@ static inline void dummy_copy(struct rb_node *old, struct rb_node *new) {}
@@ -92335,7 +94555,7 @@ index 65f4eff..2cfa167 100644
  
  void rb_insert_color(struct rb_node *node, struct rb_root *root)
 diff --git a/lib/show_mem.c b/lib/show_mem.c
-index 0922579..9d7adb9 100644
+index 5e25627..3ed9d7f 100644
 --- a/lib/show_mem.c
 +++ b/lib/show_mem.c
 @@ -44,6 +44,6 @@ void show_mem(unsigned int filter)
@@ -92373,10 +94593,10 @@ index a28df52..3d55877 100644
        unsigned long c;
  
 diff --git a/lib/swiotlb.c b/lib/swiotlb.c
-index b604b83..c0547f6 100644
+index 4abda07..b9d3765 100644
 --- a/lib/swiotlb.c
 +++ b/lib/swiotlb.c
-@@ -674,7 +674,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent);
+@@ -682,7 +682,7 @@ EXPORT_SYMBOL(swiotlb_alloc_coherent);
  
  void
  swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
@@ -92400,7 +94620,7 @@ index 4f5b1dd..7cab418 100644
 +}
 +EXPORT_SYMBOL(copy_to_user_overflow);
 diff --git a/lib/vsprintf.c b/lib/vsprintf.c
-index 0648291..42bf42b 100644
+index ec337f6..8484eb2 100644
 --- a/lib/vsprintf.c
 +++ b/lib/vsprintf.c
 @@ -16,6 +16,9 @@
@@ -92413,7 +94633,16 @@ index 0648291..42bf42b 100644
  #include <stdarg.h>
  #include <linux/module.h>     /* for KSYM_SYMBOL_LEN */
  #include <linux/types.h>
-@@ -1183,7 +1186,11 @@ char *address_val(char *buf, char *end, const void *addr,
+@@ -625,7 +628,7 @@ char *symbol_string(char *buf, char *end, void *ptr,
+ #ifdef CONFIG_KALLSYMS
+       if (*fmt == 'B')
+               sprint_backtrace(sym, value);
+-      else if (*fmt != 'f' && *fmt != 's')
++      else if (*fmt != 'f' && *fmt != 's' && *fmt != 'X')
+               sprint_symbol(sym, value);
+       else
+               sprint_symbol_no_offset(sym, value);
+@@ -1240,7 +1243,11 @@ char *address_val(char *buf, char *end, const void *addr,
        return number(buf, end, num, spec);
  }
  
@@ -92425,15 +94654,18 @@ index 0648291..42bf42b 100644
  
  /*
   * Show a '%p' thing.  A kernel extension is that the '%p' is followed
-@@ -1196,6 +1203,7 @@ int kptr_restrict __read_mostly;
+@@ -1251,8 +1258,10 @@ int kptr_restrict __read_mostly;
+  *
+  * - 'F' For symbolic function descriptor pointers with offset
   * - 'f' For simple symbolic function names without offset
++ * - 'X' For simple symbolic function names without offset approved for use with GRKERNSEC_HIDESYM
   * - 'S' For symbolic direct pointers with offset
   * - 's' For symbolic direct pointers without offset
 + * - 'A' For symbolic direct pointers with offset approved for use with GRKERNSEC_HIDESYM
   * - '[FfSs]R' as above with __builtin_extract_return_addr() translation
   * - 'B' For backtraced symbolic direct pointers with offset
   * - 'R' For decoded struct resource, e.g., [mem 0x0-0x1f 64bit pref]
-@@ -1263,12 +1271,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -1331,12 +1340,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
  
        if (!ptr && *fmt != 'K') {
                /*
@@ -92448,7 +94680,7 @@ index 0648291..42bf42b 100644
        }
  
        switch (*fmt) {
-@@ -1278,6 +1286,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -1346,6 +1355,14 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
                /* Fallthrough */
        case 'S':
        case 's':
@@ -92457,11 +94689,13 @@ index 0648291..42bf42b 100644
 +#else
 +              return symbol_string(buf, end, ptr, spec, fmt);
 +#endif
++      case 'X':
++              ptr = dereference_function_descriptor(ptr);
 +      case 'A':
        case 'B':
                return symbol_string(buf, end, ptr, spec, fmt);
        case 'R':
-@@ -1333,6 +1347,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -1403,6 +1420,8 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
                        va_end(va);
                        return buf;
                }
@@ -92470,7 +94704,7 @@ index 0648291..42bf42b 100644
        case 'K':
                /*
                 * %pK cannot be used in IRQ context because its test
-@@ -1390,6 +1406,21 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
+@@ -1460,6 +1479,22 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,
                                   ((const struct file *)ptr)->f_path.dentry,
                                   spec, fmt);
        }
@@ -92479,10 +94713,11 @@ index 0648291..42bf42b 100644
 +      /* 'P' = approved pointers to copy to userland,
 +         as in the /proc/kallsyms case, as we make it display nothing
 +         for non-root users, and the real contents for root users
++         'X' = approved simple symbols
 +         Also ignore 'K' pointers, since we force their NULLing for non-root users
 +         above
 +      */
-+      if ((unsigned long)ptr > TASK_SIZE && *fmt != 'P' && *fmt != 'K' && is_usercopy_object(buf)) {
++      if ((unsigned long)ptr > TASK_SIZE && *fmt != 'P' && *fmt != 'X' && *fmt != 'K' && is_usercopy_object(buf)) {
 +              printk(KERN_ALERT "grsec: kernel infoleak detected!  Please report this log to spender@grsecurity.net.\n");
 +              dump_stack();
 +              ptr = NULL;
@@ -92492,7 +94727,7 @@ index 0648291..42bf42b 100644
        spec.flags |= SMALL;
        if (spec.field_width == -1) {
                spec.field_width = default_width;
-@@ -2089,11 +2120,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
+@@ -2160,11 +2195,11 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
        typeof(type) value;                                             \
        if (sizeof(type) == 8) {                                        \
                args = PTR_ALIGN(args, sizeof(u32));                    \
@@ -92507,7 +94742,7 @@ index 0648291..42bf42b 100644
        }                                                               \
        args += sizeof(type);                                           \
        value;                                                          \
-@@ -2156,7 +2187,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
+@@ -2227,7 +2262,7 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
                case FORMAT_TYPE_STR: {
                        const char *str_arg = args;
                        args += strlen(str_arg) + 1;
@@ -92524,10 +94759,10 @@ index 0000000..7cd6065
 @@ -0,0 +1 @@
 +-grsec
 diff --git a/mm/Kconfig b/mm/Kconfig
-index 2f42b9c..6095e14 100644
+index 1d1ae6b..0f05885 100644
 --- a/mm/Kconfig
 +++ b/mm/Kconfig
-@@ -330,10 +330,11 @@ config KSM
+@@ -341,10 +341,11 @@ config KSM
          root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
  
  config DEFAULT_MMAP_MIN_ADDR
@@ -92542,7 +94777,7 @@ index 2f42b9c..6095e14 100644
          This is the portion of low virtual memory which should be protected
          from userspace allocation.  Keeping a user from writing to low pages
          can help reduce the impact of kernel NULL pointer bugs.
-@@ -364,7 +365,7 @@ config MEMORY_FAILURE
+@@ -375,7 +376,7 @@ config MEMORY_FAILURE
  
  config HWPOISON_INJECT
        tristate "HWPoison pages injector"
@@ -92552,7 +94787,7 @@ index 2f42b9c..6095e14 100644
  
  config NOMMU_INITIAL_TRIM_EXCESS
 diff --git a/mm/backing-dev.c b/mm/backing-dev.c
-index 09d9591..165bb75 100644
+index 0ae0df5..82ac56b 100644
 --- a/mm/backing-dev.c
 +++ b/mm/backing-dev.c
 @@ -12,7 +12,7 @@
@@ -92564,7 +94799,7 @@ index 09d9591..165bb75 100644
  
  struct backing_dev_info default_backing_dev_info = {
        .name           = "default",
-@@ -533,7 +533,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name,
+@@ -525,7 +525,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name,
                return err;
  
        err = bdi_register(bdi, NULL, "%.28s-%ld", name,
@@ -92574,10 +94809,10 @@ index 09d9591..165bb75 100644
                bdi_destroy(bdi);
                return err;
 diff --git a/mm/filemap.c b/mm/filemap.c
-index 088358c..bb415bf 100644
+index 14b4642..d71ba82 100644
 --- a/mm/filemap.c
 +++ b/mm/filemap.c
-@@ -2125,7 +2125,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
+@@ -2101,7 +2101,7 @@ int generic_file_mmap(struct file * file, struct vm_area_struct * vma)
        struct address_space *mapping = file->f_mapping;
  
        if (!mapping->a_ops->readpage)
@@ -92586,7 +94821,7 @@ index 088358c..bb415bf 100644
        file_accessed(file);
        vma->vm_ops = &generic_file_vm_ops;
        return 0;
-@@ -2303,6 +2303,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
+@@ -2279,6 +2279,7 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i
                          *pos = i_size_read(inode);
  
                if (limit != RLIM_INFINITY) {
@@ -92595,10 +94830,10 @@ index 088358c..bb415bf 100644
                                send_sig(SIGXFSZ, current, 0);
                                return -EFBIG;
 diff --git a/mm/fremap.c b/mm/fremap.c
-index 34feba6..315fe78 100644
+index 72b8fa3..c5b39f1 100644
 --- a/mm/fremap.c
 +++ b/mm/fremap.c
-@@ -179,6 +179,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -180,6 +180,11 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
   retry:
        vma = find_vma(mm, start);
  
@@ -92610,11 +94845,62 @@ index 34feba6..315fe78 100644
        /*
         * Make sure the vma is shared, that it supports prefaulting,
         * and that the remapped range is valid and fully within
+diff --git a/mm/gup.c b/mm/gup.c
+index cd62c8c..3bb2053 100644
+--- a/mm/gup.c
++++ b/mm/gup.c
+@@ -274,11 +274,6 @@ static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma,
+       unsigned int fault_flags = 0;
+       int ret;
+-      /* For mlock, just skip the stack guard page. */
+-      if ((*flags & FOLL_MLOCK) &&
+-                      (stack_guard_page_start(vma, address) ||
+-                       stack_guard_page_end(vma, address + PAGE_SIZE)))
+-              return -ENOENT;
+       if (*flags & FOLL_WRITE)
+               fault_flags |= FAULT_FLAG_WRITE;
+       if (nonblocking)
+@@ -444,14 +439,14 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
+       if (!(gup_flags & FOLL_FORCE))
+               gup_flags |= FOLL_NUMA;
+-      do {
++      while (nr_pages) {
+               struct page *page;
+               unsigned int foll_flags = gup_flags;
+               unsigned int page_increm;
+               /* first iteration or cross vma bound */
+               if (!vma || start >= vma->vm_end) {
+-                      vma = find_extend_vma(mm, start);
++                      vma = find_vma(mm, start);
+                       if (!vma && in_gate_area(mm, start)) {
+                               int ret;
+                               ret = get_gate_page(mm, start & PAGE_MASK,
+@@ -463,7 +458,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
+                               goto next_page;
+                       }
+-                      if (!vma || check_vma_flags(vma, gup_flags))
++                      if (!vma || start < vma->vm_start || check_vma_flags(vma, gup_flags))
+                               return i ? : -EFAULT;
+                       if (is_vm_hugetlb_page(vma)) {
+                               i = follow_hugetlb_page(mm, vma, pages, vmas,
+@@ -518,7 +513,7 @@ next_page:
+               i += page_increm;
+               start += page_increm * PAGE_SIZE;
+               nr_pages -= page_increm;
+-      } while (nr_pages);
++      }
+       return i;
+ }
+ EXPORT_SYMBOL(__get_user_pages);
 diff --git a/mm/highmem.c b/mm/highmem.c
-index b32b70c..e512eb0 100644
+index 123bcd3..0de52ba 100644
 --- a/mm/highmem.c
 +++ b/mm/highmem.c
-@@ -138,8 +138,9 @@ static void flush_all_zero_pkmaps(void)
+@@ -195,8 +195,9 @@ static void flush_all_zero_pkmaps(void)
                 * So no dangers, even with speculative execution.
                 */
                page = pte_page(pkmap_page_table[i]);
@@ -92625,7 +94911,7 @@ index b32b70c..e512eb0 100644
                set_page_address(page, NULL);
                need_flush = 1;
        }
-@@ -198,9 +199,11 @@ start:
+@@ -259,9 +260,11 @@ start:
                }
        }
        vaddr = PKMAP_ADDR(last_pkmap_nr);
@@ -92639,32 +94925,32 @@ index b32b70c..e512eb0 100644
        set_page_address(page, (void *)vaddr);
  
 diff --git a/mm/hugetlb.c b/mm/hugetlb.c
-index a646f15..f55da4c 100644
+index 9fd7227..5628939 100644
 --- a/mm/hugetlb.c
 +++ b/mm/hugetlb.c
-@@ -2107,6 +2107,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
+@@ -2258,6 +2258,7 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
+                        struct ctl_table *table, int write,
+                        void __user *buffer, size_t *length, loff_t *ppos)
+ {
++      ctl_table_no_const t;
        struct hstate *h = &default_hstate;
-       unsigned long tmp;
+       unsigned long tmp = h->max_huge_pages;
        int ret;
-+      ctl_table_no_const hugetlb_table;
+@@ -2265,9 +2266,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
        if (!hugepages_supported())
                return -ENOTSUPP;
-@@ -2116,9 +2117,10 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
-       if (write && h->order >= MAX_ORDER)
-               return -EINVAL;
  
 -      table->data = &tmp;
 -      table->maxlen = sizeof(unsigned long);
 -      ret = proc_doulongvec_minmax(table, write, buffer, length, ppos);
-+      hugetlb_table = *table;
-+      hugetlb_table.data = &tmp;
-+      hugetlb_table.maxlen = sizeof(unsigned long);
-+      ret = proc_doulongvec_minmax(&hugetlb_table, write, buffer, length, ppos);
++      t = *table;
++      t.data = &tmp;
++      t.maxlen = sizeof(unsigned long);
++      ret = proc_doulongvec_minmax(&t, write, buffer, length, ppos);
        if (ret)
                goto out;
  
-@@ -2163,6 +2165,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
+@@ -2302,6 +2304,7 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
        struct hstate *h = &default_hstate;
        unsigned long tmp;
        int ret;
@@ -92672,8 +94958,8 @@ index a646f15..f55da4c 100644
  
        if (!hugepages_supported())
                return -ENOTSUPP;
-@@ -2172,9 +2175,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
-       if (write && h->order >= MAX_ORDER)
+@@ -2311,9 +2314,10 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
+       if (write && hstate_is_gigantic(h))
                return -EINVAL;
  
 -      table->data = &tmp;
@@ -92686,8 +94972,8 @@ index a646f15..f55da4c 100644
        if (ret)
                goto out;
  
-@@ -2654,6 +2658,27 @@ static int unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
-       return 1;
+@@ -2792,6 +2796,27 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
+       mutex_unlock(&mapping->i_mmap_mutex);
  }
  
 +#ifdef CONFIG_PAX_SEGMEXEC
@@ -92714,7 +95000,7 @@ index a646f15..f55da4c 100644
  /*
   * Hugetlb_cow() should be called with page lock of the original hugepage held.
   * Called with hugetlb_instantiation_mutex held and pte_page locked so we
-@@ -2771,6 +2796,11 @@ retry_avoidcopy:
+@@ -2903,6 +2928,11 @@ retry_avoidcopy:
                                make_huge_pte(vma, new_page, 1));
                page_remove_rmap(old_page);
                hugepage_add_new_anon_rmap(new_page, vma, address);
@@ -92726,7 +95012,7 @@ index a646f15..f55da4c 100644
                /* Make the old page be freed below */
                new_page = old_page;
        }
-@@ -2930,6 +2960,10 @@ retry:
+@@ -3063,6 +3093,10 @@ retry:
                                && (vma->vm_flags & VM_SHARED)));
        set_huge_pte_at(mm, address, ptep, new_pte);
  
@@ -92737,7 +95023,7 @@ index a646f15..f55da4c 100644
        if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
                /* Optimization, do the COW without a second fault */
                ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page, ptl);
-@@ -2996,6 +3030,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -3129,6 +3163,10 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
        struct hstate *h = hstate_vma(vma);
        struct address_space *mapping;
  
@@ -92748,7 +95034,7 @@ index a646f15..f55da4c 100644
        address &= huge_page_mask(h);
  
        ptep = huge_pte_offset(mm, address);
-@@ -3009,6 +3047,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -3142,6 +3180,26 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
                                VM_FAULT_SET_HINDEX(hstate_index(h));
        }
  
@@ -92776,18 +95062,18 @@ index a646f15..f55da4c 100644
        if (!ptep)
                return VM_FAULT_OOM;
 diff --git a/mm/internal.h b/mm/internal.h
-index 07b6736..ae8da20 100644
+index a4f90ba..fbdc32b 100644
 --- a/mm/internal.h
 +++ b/mm/internal.h
-@@ -109,6 +109,7 @@ extern pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address);
-  * in mm/page_alloc.c
-  */
+@@ -134,6 +134,7 @@ __find_buddy_index(unsigned long page_idx, unsigned int order)
+ extern int __isolate_free_page(struct page *page, unsigned int order);
  extern void __free_pages_bootmem(struct page *page, unsigned int order);
 +extern void free_compound_page(struct page *page);
  extern void prep_compound_page(struct page *page, unsigned long order);
  #ifdef CONFIG_MEMORY_FAILURE
  extern bool is_free_buddy_page(struct page *page);
-@@ -367,7 +368,7 @@ extern u32 hwpoison_filter_enable;
+@@ -390,7 +391,7 @@ extern u32 hwpoison_filter_enable;
  
  extern unsigned long vm_mmap_pgoff(struct file *, unsigned long,
          unsigned long, unsigned long,
@@ -92797,10 +95083,10 @@ index 07b6736..ae8da20 100644
  extern void set_pageblock_order(void);
  unsigned long reclaim_clean_pages_from_list(struct zone *zone,
 diff --git a/mm/iov_iter.c b/mm/iov_iter.c
-index 10e46cd..e3052f6 100644
+index e34a3cb..a810efe 100644
 --- a/mm/iov_iter.c
 +++ b/mm/iov_iter.c
-@@ -87,7 +87,7 @@ static size_t __iovec_copy_from_user_inatomic(char *vaddr,
+@@ -307,7 +307,7 @@ static size_t __iovec_copy_from_user_inatomic(char *vaddr,
  
        while (bytes) {
                char __user *buf = iov->iov_base + base;
@@ -92809,7 +95095,7 @@ index 10e46cd..e3052f6 100644
  
                base = 0;
                left = __copy_from_user_inatomic(vaddr, buf, copy);
-@@ -115,7 +115,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page,
+@@ -335,7 +335,7 @@ static size_t copy_from_user_atomic_iovec(struct page *page,
  
        kaddr = kmap_atomic(page);
        if (likely(i->nr_segs == 1)) {
@@ -92818,16 +95104,7 @@ index 10e46cd..e3052f6 100644
                char __user *buf = i->iov->iov_base + i->iov_offset;
                left = __copy_from_user_inatomic(kaddr + offset, buf, bytes);
                copied = bytes - left;
-@@ -143,7 +143,7 @@ size_t iov_iter_copy_from_user(struct page *page,
-       kaddr = kmap(page);
-       if (likely(i->nr_segs == 1)) {
--              int left;
-+              size_t left;
-               char __user *buf = i->iov->iov_base + i->iov_offset;
-               left = __copy_from_user(kaddr + offset, buf, bytes);
-               copied = bytes - left;
-@@ -173,7 +173,7 @@ void iov_iter_advance(struct iov_iter *i, size_t bytes)
+@@ -365,7 +365,7 @@ static void advance_iovec(struct iov_iter *i, size_t bytes)
                 * zero-length segments (without overruning the iovec).
                 */
                while (bytes || unlikely(i->count && !iov->iov_len)) {
@@ -92837,7 +95114,7 @@ index 10e46cd..e3052f6 100644
                        copy = min(bytes, iov->iov_len - base);
                        BUG_ON(!i->count || i->count < copy);
 diff --git a/mm/kmemleak.c b/mm/kmemleak.c
-index 8d2fcdf..6dd9f1a 100644
+index 3cda50c..032ba634 100644
 --- a/mm/kmemleak.c
 +++ b/mm/kmemleak.c
 @@ -364,7 +364,7 @@ static void print_unreferenced(struct seq_file *seq,
@@ -92849,7 +95126,7 @@ index 8d2fcdf..6dd9f1a 100644
        }
  }
  
-@@ -1871,7 +1871,7 @@ static int __init kmemleak_late_init(void)
+@@ -1905,7 +1905,7 @@ static int __init kmemleak_late_init(void)
                return -ENOMEM;
        }
  
@@ -92881,7 +95158,7 @@ index d53adf9..03a24bf 100644
        set_fs(old_fs);
  
 diff --git a/mm/madvise.c b/mm/madvise.c
-index a402f8f..f5e5daa 100644
+index 0938b30..199abe8 100644
 --- a/mm/madvise.c
 +++ b/mm/madvise.c
 @@ -51,6 +51,10 @@ static long madvise_behavior(struct vm_area_struct *vma,
@@ -92943,7 +95220,7 @@ index a402f8f..f5e5daa 100644
        return 0;
  }
  
-@@ -491,6 +522,16 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
+@@ -488,6 +519,16 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
        if (end < start)
                return error;
  
@@ -92961,7 +95238,7 @@ index a402f8f..f5e5daa 100644
        if (end == start)
                return error;
 diff --git a/mm/memory-failure.c b/mm/memory-failure.c
-index eb8fb72..ae36cf3 100644
+index 8639f6b..b623882a 100644
 --- a/mm/memory-failure.c
 +++ b/mm/memory-failure.c
 @@ -61,7 +61,7 @@ int sysctl_memory_failure_early_kill __read_mostly = 0;
@@ -92991,7 +95268,7 @@ index eb8fb72..ae36cf3 100644
        { reserved,     reserved,       "reserved kernel",      me_kernel },
        /*
         * free pages are specially detected outside this table:
-@@ -1091,7 +1091,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
+@@ -1099,7 +1099,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
                nr_pages = 1 << compound_order(hpage);
        else /* normal page or thp */
                nr_pages = 1;
@@ -93000,7 +95277,7 @@ index eb8fb72..ae36cf3 100644
  
        /*
         * We need/can do nothing about count=0 pages.
-@@ -1120,7 +1120,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
+@@ -1128,7 +1128,7 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
                        if (PageHWPoison(hpage)) {
                                if ((hwpoison_filter(p) && TestClearPageHWPoison(p))
                                    || (p != hpage && TestSetPageHWPoison(hpage))) {
@@ -93009,7 +95286,7 @@ index eb8fb72..ae36cf3 100644
                                        unlock_page(hpage);
                                        return 0;
                                }
-@@ -1186,14 +1186,14 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
+@@ -1196,14 +1196,14 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
         */
        if (!PageHWPoison(p)) {
                printk(KERN_ERR "MCE %#lx: just unpoisoned\n", pfn);
@@ -93026,7 +95303,7 @@ index eb8fb72..ae36cf3 100644
                unlock_page(hpage);
                put_page(hpage);
                return 0;
-@@ -1415,7 +1415,7 @@ int unpoison_memory(unsigned long pfn)
+@@ -1433,7 +1433,7 @@ int unpoison_memory(unsigned long pfn)
                        return 0;
                }
                if (TestClearPageHWPoison(p))
@@ -93035,7 +95312,7 @@ index eb8fb72..ae36cf3 100644
                pr_info("MCE: Software-unpoisoned free page %#lx\n", pfn);
                return 0;
        }
-@@ -1429,7 +1429,7 @@ int unpoison_memory(unsigned long pfn)
+@@ -1447,7 +1447,7 @@ int unpoison_memory(unsigned long pfn)
         */
        if (TestClearPageHWPoison(page)) {
                pr_info("MCE: Software-unpoisoned page %#lx\n", pfn);
@@ -93044,7 +95321,7 @@ index eb8fb72..ae36cf3 100644
                freeit = 1;
                if (PageHuge(page))
                        clear_page_hwpoison_huge_page(page);
-@@ -1554,11 +1554,11 @@ static int soft_offline_huge_page(struct page *page, int flags)
+@@ -1572,11 +1572,11 @@ static int soft_offline_huge_page(struct page *page, int flags)
                if (PageHuge(page)) {
                        set_page_hwpoison_huge_page(hpage);
                        dequeue_hwpoisoned_huge_page(hpage);
@@ -93058,7 +95335,7 @@ index eb8fb72..ae36cf3 100644
                }
        }
        return ret;
-@@ -1597,7 +1597,7 @@ static int __soft_offline_page(struct page *page, int flags)
+@@ -1615,7 +1615,7 @@ static int __soft_offline_page(struct page *page, int flags)
                put_page(page);
                pr_info("soft_offline: %#lx: invalidated\n", pfn);
                SetPageHWPoison(page);
@@ -93067,7 +95344,7 @@ index eb8fb72..ae36cf3 100644
                return 0;
        }
  
-@@ -1648,7 +1648,7 @@ static int __soft_offline_page(struct page *page, int flags)
+@@ -1666,7 +1666,7 @@ static int __soft_offline_page(struct page *page, int flags)
                        if (!is_free_buddy_page(page))
                                pr_info("soft offline: %#lx: page leaked\n",
                                        pfn);
@@ -93076,7 +95353,7 @@ index eb8fb72..ae36cf3 100644
                }
        } else {
                pr_info("soft offline: %#lx: isolation failed: %d, page count %d, type %lx\n",
-@@ -1722,11 +1722,11 @@ int soft_offline_page(struct page *page, int flags)
+@@ -1736,11 +1736,11 @@ int soft_offline_page(struct page *page, int flags)
                if (PageHuge(page)) {
                        set_page_hwpoison_huge_page(hpage);
                        dequeue_hwpoisoned_huge_page(hpage);
@@ -93091,10 +95368,10 @@ index eb8fb72..ae36cf3 100644
        }
        unset_migratetype_isolate(page, MIGRATE_MOVABLE);
 diff --git a/mm/memory.c b/mm/memory.c
-index e302ae1..779c7ce 100644
+index d5f2ae9..4d678b2 100644
 --- a/mm/memory.c
 +++ b/mm/memory.c
-@@ -413,6 +413,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
+@@ -415,6 +415,7 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
                free_pte_range(tlb, pmd, addr);
        } while (pmd++, addr = next, addr != end);
  
@@ -93102,7 +95379,7 @@ index e302ae1..779c7ce 100644
        start &= PUD_MASK;
        if (start < floor)
                return;
-@@ -427,6 +428,8 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
+@@ -429,6 +430,8 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
        pmd = pmd_offset(pud, start);
        pud_clear(pud);
        pmd_free_tlb(tlb, pmd, start);
@@ -93111,7 +95388,7 @@ index e302ae1..779c7ce 100644
  }
  
  static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
-@@ -446,6 +449,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
+@@ -448,6 +451,7 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
                free_pmd_range(tlb, pud, addr, next, floor, ceiling);
        } while (pud++, addr = next, addr != end);
  
@@ -93119,7 +95396,7 @@ index e302ae1..779c7ce 100644
        start &= PGDIR_MASK;
        if (start < floor)
                return;
-@@ -460,6 +464,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
+@@ -462,6 +466,8 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
        pud = pud_offset(pgd, start);
        pgd_clear(pgd);
        pud_free_tlb(tlb, pud, start);
@@ -93128,63 +95405,20 @@ index e302ae1..779c7ce 100644
  }
  
  /*
-@@ -1652,12 +1658,6 @@ no_page_table:
-       return page;
- }
--static inline int stack_guard_page(struct vm_area_struct *vma, unsigned long addr)
--{
--      return stack_guard_page_start(vma, addr) ||
--             stack_guard_page_end(vma, addr+PAGE_SIZE);
--}
--
- /**
-  * __get_user_pages() - pin user pages in memory
-  * @tsk:      task_struct of target task
-@@ -1735,10 +1735,10 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
-       i = 0;
--      do {
-+      while (nr_pages) {
-               struct vm_area_struct *vma;
--              vma = find_extend_vma(mm, start);
-+              vma = find_vma(mm, start);
-               if (!vma && in_gate_area(mm, start)) {
-                       unsigned long pg = start & PAGE_MASK;
-                       pgd_t *pgd;
-@@ -1787,7 +1787,7 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
-                       goto next_page;
-               }
--              if (!vma)
-+              if (!vma || start < vma->vm_start)
-                       goto efault;
-               vm_flags = vma->vm_flags;
-               if (vm_flags & (VM_IO | VM_PFNMAP))
-@@ -1848,11 +1848,6 @@ long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
-                               int ret;
-                               unsigned int fault_flags = 0;
--                              /* For mlock, just skip the stack guard page. */
--                              if (foll_flags & FOLL_MLOCK) {
--                                      if (stack_guard_page(vma, start))
--                                              goto next_page;
--                              }
-                               if (foll_flags & FOLL_WRITE)
-                                       fault_flags |= FAULT_FLAG_WRITE;
-                               if (nonblocking)
-@@ -1932,7 +1927,7 @@ next_page:
-                       start += page_increm * PAGE_SIZE;
-                       nr_pages -= page_increm;
-               } while (nr_pages && start < vma->vm_end);
--      } while (nr_pages);
-+      }
-       return i;
- efault:
-       return i ? : -EFAULT;
-@@ -2145,6 +2140,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
+@@ -691,10 +697,10 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr,
+        * Choose text because data symbols depend on CONFIG_KALLSYMS_ALL=y
+        */
+       if (vma->vm_ops)
+-              printk(KERN_ALERT "vma->vm_ops->fault: %pSR\n",
++              printk(KERN_ALERT "vma->vm_ops->fault: %pAR\n",
+                      vma->vm_ops->fault);
+       if (vma->vm_file)
+-              printk(KERN_ALERT "vma->vm_file->f_op->mmap: %pSR\n",
++              printk(KERN_ALERT "vma->vm_file->f_op->mmap: %pAR\n",
+                      vma->vm_file->f_op->mmap);
+       dump_stack();
+       add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
+@@ -1501,6 +1507,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
        page_add_file_rmap(page);
        set_pte_at(mm, addr, pte, mk_pte(page, prot));
  
@@ -93195,7 +95429,7 @@ index e302ae1..779c7ce 100644
        retval = 0;
        pte_unmap_unlock(pte, ptl);
        return retval;
-@@ -2189,9 +2188,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
+@@ -1545,9 +1555,21 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
        if (!page_count(page))
                return -EINVAL;
        if (!(vma->vm_flags & VM_MIXEDMAP)) {
@@ -93217,7 +95451,7 @@ index e302ae1..779c7ce 100644
        }
        return insert_page(vma, addr, page, vma->vm_page_prot);
  }
-@@ -2274,6 +2285,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
+@@ -1630,6 +1652,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
                        unsigned long pfn)
  {
        BUG_ON(!(vma->vm_flags & VM_MIXEDMAP));
@@ -93225,7 +95459,7 @@ index e302ae1..779c7ce 100644
  
        if (addr < vma->vm_start || addr >= vma->vm_end)
                return -EFAULT;
-@@ -2521,7 +2533,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud,
+@@ -1877,7 +1900,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud,
  
        BUG_ON(pud_huge(*pud));
  
@@ -93236,7 +95470,7 @@ index e302ae1..779c7ce 100644
        if (!pmd)
                return -ENOMEM;
        do {
-@@ -2541,7 +2555,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd,
+@@ -1897,7 +1922,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd,
        unsigned long next;
        int err;
  
@@ -93247,7 +95481,7 @@ index e302ae1..779c7ce 100644
        if (!pud)
                return -ENOMEM;
        do {
-@@ -2663,6 +2679,186 @@ static int do_page_mkwrite(struct vm_area_struct *vma, struct page *page,
+@@ -2019,6 +2046,186 @@ static int do_page_mkwrite(struct vm_area_struct *vma, struct page *page,
        return ret;
  }
  
@@ -93434,7 +95668,7 @@ index e302ae1..779c7ce 100644
  /*
   * This routine handles present pages, when users try to write
   * to a shared page. It is done by copying the page to a new address
-@@ -2860,6 +3056,12 @@ gotten:
+@@ -2218,6 +2425,12 @@ gotten:
         */
        page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
        if (likely(pte_same(*page_table, orig_pte))) {
@@ -93447,7 +95681,7 @@ index e302ae1..779c7ce 100644
                if (old_page) {
                        if (!PageAnon(old_page)) {
                                dec_mm_counter_fast(mm, MM_FILEPAGES);
-@@ -2911,6 +3113,10 @@ gotten:
+@@ -2271,6 +2484,10 @@ gotten:
                        page_remove_rmap(old_page);
                }
  
@@ -93458,7 +95692,7 @@ index e302ae1..779c7ce 100644
                /* Free the old page.. */
                new_page = old_page;
                ret |= VM_FAULT_WRITE;
-@@ -3184,6 +3390,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2545,6 +2762,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
        swap_free(entry);
        if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
                try_to_free_swap(page);
@@ -93470,7 +95704,7 @@ index e302ae1..779c7ce 100644
        unlock_page(page);
        if (page != swapcache) {
                /*
-@@ -3207,6 +3418,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2568,6 +2790,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
  
        /* No need to invalidate - it was non-present before */
        update_mmu_cache(vma, address, page_table);
@@ -93482,7 +95716,7 @@ index e302ae1..779c7ce 100644
  unlock:
        pte_unmap_unlock(page_table, ptl);
  out:
-@@ -3226,40 +3442,6 @@ out_release:
+@@ -2587,40 +2814,6 @@ out_release:
  }
  
  /*
@@ -93523,10 +95757,10 @@ index e302ae1..779c7ce 100644
   * We enter with non-exclusive mmap_sem (to exclude vma changes,
   * but allow concurrent faults), and pte mapped but not yet locked.
   * We return with mmap_sem still held, but pte unmapped and unlocked.
-@@ -3268,27 +3450,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
-               unsigned long address, pte_t *page_table, pmd_t *pmd,
+@@ -2630,27 +2823,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
                unsigned int flags)
  {
+       struct mem_cgroup *memcg;
 -      struct page *page;
 +      struct page *page = NULL;
        spinlock_t *ptl;
@@ -93556,7 +95790,7 @@ index e302ae1..779c7ce 100644
        if (unlikely(anon_vma_prepare(vma)))
                goto oom;
        page = alloc_zeroed_user_highpage_movable(vma, address);
-@@ -3312,6 +3490,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2674,6 +2863,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
        if (!pte_none(*page_table))
                goto release;
  
@@ -93567,8 +95801,8 @@ index e302ae1..779c7ce 100644
 +
        inc_mm_counter_fast(mm, MM_ANONPAGES);
        page_add_new_anon_rmap(page, vma, address);
- setpte:
-@@ -3319,6 +3502,12 @@ setpte:
+       mem_cgroup_commit_charge(page, memcg, false);
+@@ -2683,6 +2877,12 @@ setpte:
  
        /* No need to invalidate - it was non-present before */
        update_mmu_cache(vma, address, page_table);
@@ -93581,17 +95815,7 @@ index e302ae1..779c7ce 100644
  unlock:
        pte_unmap_unlock(page_table, ptl);
        return 0;
-@@ -3515,7 +3704,8 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma,
-        * if page by the offset is not ready to be mapped (cold cache or
-        * something).
-        */
--      if (vma->vm_ops->map_pages) {
-+      if (vma->vm_ops->map_pages && !(flags & FAULT_FLAG_NONLINEAR) &&
-+          fault_around_pages() > 1) {
-               pte = pte_offset_map_lock(mm, pmd, address, &ptl);
-               do_fault_around(vma, address, pte, pgoff, flags);
-               if (!pte_same(*pte, orig_pte))
-@@ -3535,6 +3725,11 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2913,6 +3113,11 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma,
                return ret;
        }
        do_set_pte(vma, address, fault_page, pte, false, false);
@@ -93603,7 +95827,7 @@ index e302ae1..779c7ce 100644
        unlock_page(fault_page);
  unlock_out:
        pte_unmap_unlock(pte, ptl);
-@@ -3576,7 +3771,18 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2955,7 +3160,18 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma,
                page_cache_release(fault_page);
                goto uncharge_out;
        }
@@ -93619,10 +95843,10 @@ index e302ae1..779c7ce 100644
 +      pax_mirror_anon_pte(vma, address, new_page, ptl);
 +#endif
 +
+       mem_cgroup_commit_charge(new_page, memcg, false);
+       lru_cache_add_active_or_unevictable(new_page, vma);
        pte_unmap_unlock(pte, ptl);
-       unlock_page(fault_page);
-       page_cache_release(fault_page);
-@@ -3624,6 +3830,11 @@ static int do_shared_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -3005,6 +3221,11 @@ static int do_shared_fault(struct mm_struct *mm, struct vm_area_struct *vma,
                return ret;
        }
        do_set_pte(vma, address, fault_page, pte, true, false);
@@ -93634,7 +95858,7 @@ index e302ae1..779c7ce 100644
        pte_unmap_unlock(pte, ptl);
  
        if (set_page_dirty(fault_page))
-@@ -3854,6 +4065,12 @@ static int handle_pte_fault(struct mm_struct *mm,
+@@ -3246,6 +3467,12 @@ static int handle_pte_fault(struct mm_struct *mm,
                if (flags & FAULT_FLAG_WRITE)
                        flush_tlb_fix_spurious_fault(vma, address);
        }
@@ -93647,7 +95871,7 @@ index e302ae1..779c7ce 100644
  unlock:
        pte_unmap_unlock(pte, ptl);
        return 0;
-@@ -3870,9 +4087,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -3265,9 +3492,41 @@ static int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
        pmd_t *pmd;
        pte_t *pte;
  
@@ -93689,7 +95913,7 @@ index e302ae1..779c7ce 100644
        pgd = pgd_offset(mm, address);
        pud = pud_alloc(mm, pgd, address);
        if (!pud)
-@@ -4000,6 +4249,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
+@@ -3401,6 +3660,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
        spin_unlock(&mm->page_table_lock);
        return 0;
  }
@@ -93713,7 +95937,7 @@ index e302ae1..779c7ce 100644
  #endif /* __PAGETABLE_PUD_FOLDED */
  
  #ifndef __PAGETABLE_PMD_FOLDED
-@@ -4030,6 +4296,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
+@@ -3431,6 +3707,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
        spin_unlock(&mm->page_table_lock);
        return 0;
  }
@@ -93743,17 +95967,8 @@ index e302ae1..779c7ce 100644
 +}
  #endif /* __PAGETABLE_PMD_FOLDED */
  
- #if !defined(__HAVE_ARCH_GATE_AREA)
-@@ -4043,7 +4333,7 @@ static int __init gate_vma_init(void)
-       gate_vma.vm_start = FIXADDR_USER_START;
-       gate_vma.vm_end = FIXADDR_USER_END;
-       gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
--      gate_vma.vm_page_prot = __P101;
-+      gate_vma.vm_page_prot = vm_get_page_prot(gate_vma.vm_flags);
-       return 0;
- }
-@@ -4177,8 +4467,8 @@ out:
+ static int __follow_pte(struct mm_struct *mm, unsigned long address,
+@@ -3540,8 +3840,8 @@ out:
        return ret;
  }
  
@@ -93764,7 +95979,7 @@ index e302ae1..779c7ce 100644
  {
        resource_size_t phys_addr;
        unsigned long prot = 0;
-@@ -4204,8 +4494,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys);
+@@ -3567,8 +3867,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys);
   * Access another process' address space as given in mm.  If non-NULL, use the
   * given task for page fault accounting.
   */
@@ -93775,7 +95990,7 @@ index e302ae1..779c7ce 100644
  {
        struct vm_area_struct *vma;
        void *old_buf = buf;
-@@ -4213,7 +4503,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
+@@ -3576,7 +3876,7 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
        down_read(&mm->mmap_sem);
        /* ignore errors, just check how much was successfully transferred */
        while (len) {
@@ -93784,7 +95999,7 @@ index e302ae1..779c7ce 100644
                void *maddr;
                struct page *page = NULL;
  
-@@ -4272,8 +4562,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
+@@ -3637,8 +3937,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
   *
   * The caller must hold a reference on @mm.
   */
@@ -93795,7 +96010,7 @@ index e302ae1..779c7ce 100644
  {
        return __access_remote_vm(NULL, mm, addr, buf, len, write);
  }
-@@ -4283,11 +4573,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
+@@ -3648,11 +3948,11 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
   * Source/target buffer must be kernel space,
   * Do not walk the page table directly, use get_user_pages
   */
@@ -93811,10 +96026,10 @@ index e302ae1..779c7ce 100644
        mm = get_task_mm(tsk);
        if (!mm)
 diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index 6b65d10..e6f415a 100644
+index e58725a..e0be017 100644
 --- a/mm/mempolicy.c
 +++ b/mm/mempolicy.c
-@@ -747,6 +747,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
+@@ -750,6 +750,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
        unsigned long vmstart;
        unsigned long vmend;
  
@@ -93825,7 +96040,7 @@ index 6b65d10..e6f415a 100644
        vma = find_vma(mm, start);
        if (!vma || vma->vm_start > start)
                return -EFAULT;
-@@ -790,6 +794,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
+@@ -793,6 +797,16 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
                err = vma_replace_policy(vma, new_pol);
                if (err)
                        goto out;
@@ -93842,7 +96057,7 @@ index 6b65d10..e6f415a 100644
        }
  
   out:
-@@ -1222,6 +1236,17 @@ static long do_mbind(unsigned long start, unsigned long len,
+@@ -1212,6 +1226,17 @@ static long do_mbind(unsigned long start, unsigned long len,
  
        if (end < start)
                return -EINVAL;
@@ -93860,7 +96075,7 @@ index 6b65d10..e6f415a 100644
        if (end == start)
                return 0;
  
-@@ -1447,8 +1472,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
+@@ -1437,8 +1462,7 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
         */
        tcred = __task_cred(task);
        if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
@@ -93870,7 +96085,7 @@ index 6b65d10..e6f415a 100644
                rcu_read_unlock();
                err = -EPERM;
                goto out_put;
-@@ -1479,6 +1503,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
+@@ -1469,6 +1493,15 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
                goto out;
        }
  
@@ -93887,10 +96102,10 @@ index 6b65d10..e6f415a 100644
                capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
  
 diff --git a/mm/migrate.c b/mm/migrate.c
-index bed4880..a493f67 100644
+index 0143995..b294728 100644
 --- a/mm/migrate.c
 +++ b/mm/migrate.c
-@@ -1485,8 +1485,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
+@@ -1495,8 +1495,7 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
         */
        tcred = __task_cred(task);
        if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
@@ -93901,7 +96116,7 @@ index bed4880..a493f67 100644
                err = -EPERM;
                goto out;
 diff --git a/mm/mlock.c b/mm/mlock.c
-index b1eb536..091d154 100644
+index 73cf098..ab547c7 100644
 --- a/mm/mlock.c
 +++ b/mm/mlock.c
 @@ -14,6 +14,7 @@
@@ -93912,7 +96127,7 @@ index b1eb536..091d154 100644
  #include <linux/sched.h>
  #include <linux/export.h>
  #include <linux/rmap.h>
-@@ -606,7 +607,7 @@ static int do_mlock(unsigned long start, size_t len, int on)
+@@ -613,7 +614,7 @@ static int do_mlock(unsigned long start, size_t len, int on)
  {
        unsigned long nstart, end, tmp;
        struct vm_area_struct * vma, * prev;
@@ -93921,7 +96136,7 @@ index b1eb536..091d154 100644
  
        VM_BUG_ON(start & ~PAGE_MASK);
        VM_BUG_ON(len != PAGE_ALIGN(len));
-@@ -615,6 +616,9 @@ static int do_mlock(unsigned long start, size_t len, int on)
+@@ -622,6 +623,9 @@ static int do_mlock(unsigned long start, size_t len, int on)
                return -EINVAL;
        if (end == start)
                return 0;
@@ -93931,7 +96146,7 @@ index b1eb536..091d154 100644
        vma = find_vma(current->mm, start);
        if (!vma || vma->vm_start > start)
                return -ENOMEM;
-@@ -626,6 +630,11 @@ static int do_mlock(unsigned long start, size_t len, int on)
+@@ -633,6 +637,11 @@ static int do_mlock(unsigned long start, size_t len, int on)
        for (nstart = start ; ; ) {
                vm_flags_t newflags;
  
@@ -93943,7 +96158,7 @@ index b1eb536..091d154 100644
                /* Here we know that  vma->vm_start <= nstart < vma->vm_end. */
  
                newflags = vma->vm_flags & ~VM_LOCKED;
-@@ -739,6 +748,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
+@@ -746,6 +755,7 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
        locked += current->mm->locked_vm;
  
        /* check against resource limits */
@@ -93951,7 +96166,7 @@ index b1eb536..091d154 100644
        if ((locked <= lock_limit) || capable(CAP_IPC_LOCK))
                error = do_mlock(start, len, 1);
  
-@@ -776,6 +786,11 @@ static int do_mlockall(int flags)
+@@ -783,6 +793,11 @@ static int do_mlockall(int flags)
        for (vma = current->mm->mmap; vma ; vma = prev->vm_next) {
                vm_flags_t newflags;
  
@@ -93963,7 +96178,7 @@ index b1eb536..091d154 100644
                newflags = vma->vm_flags & ~VM_LOCKED;
                if (flags & MCL_CURRENT)
                        newflags |= VM_LOCKED;
-@@ -807,8 +822,10 @@ SYSCALL_DEFINE1(mlockall, int, flags)
+@@ -814,8 +829,10 @@ SYSCALL_DEFINE1(mlockall, int, flags)
        lock_limit >>= PAGE_SHIFT;
  
        ret = -ENOMEM;
@@ -93976,18 +96191,18 @@ index b1eb536..091d154 100644
            capable(CAP_IPC_LOCK))
                ret = do_mlockall(flags);
 diff --git a/mm/mmap.c b/mm/mmap.c
-index b1202cf..ee487f8 100644
+index ae91989..d8308c7 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
-@@ -37,6 +37,7 @@
- #include <linux/sched/sysctl.h>
+@@ -41,6 +41,7 @@
  #include <linux/notifier.h>
  #include <linux/memory.h>
+ #include <linux/printk.h>
 +#include <linux/random.h>
  
  #include <asm/uaccess.h>
  #include <asm/cacheflush.h>
-@@ -53,6 +54,16 @@
+@@ -57,6 +58,16 @@
  #define arch_rebalance_pgtables(addr, len)            (addr)
  #endif
  
@@ -94004,7 +96219,7 @@ index b1202cf..ee487f8 100644
  static void unmap_region(struct mm_struct *mm,
                struct vm_area_struct *vma, struct vm_area_struct *prev,
                unsigned long start, unsigned long end);
-@@ -72,16 +83,25 @@ static void unmap_region(struct mm_struct *mm,
+@@ -76,16 +87,25 @@ static void unmap_region(struct mm_struct *mm,
   *            x: (no) no      x: (no) yes     x: (no) yes     x: (yes) yes
   *
   */
@@ -94033,7 +96248,7 @@ index b1202cf..ee487f8 100644
  }
  EXPORT_SYMBOL(vm_get_page_prot);
  
-@@ -91,6 +111,7 @@ unsigned long sysctl_overcommit_kbytes __read_mostly;
+@@ -114,6 +134,7 @@ unsigned long sysctl_overcommit_kbytes __read_mostly;
  int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
  unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
  unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
@@ -94041,7 +96256,7 @@ index b1202cf..ee487f8 100644
  /*
   * Make sure vm_committed_as in one cacheline and not cacheline shared with
   * other variables. It can be updated by several CPUs frequently.
-@@ -247,6 +268,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
+@@ -274,6 +295,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
        struct vm_area_struct *next = vma->vm_next;
  
        might_sleep();
@@ -94049,15 +96264,30 @@ index b1202cf..ee487f8 100644
        if (vma->vm_ops && vma->vm_ops->close)
                vma->vm_ops->close(vma);
        if (vma->vm_file)
-@@ -291,6 +313,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
+@@ -287,6 +309,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len);
+ SYSCALL_DEFINE1(brk, unsigned long, brk)
+ {
++      unsigned long rlim;
+       unsigned long retval;
+       unsigned long newbrk, oldbrk;
+       struct mm_struct *mm = current->mm;
+@@ -317,7 +340,13 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
+        * segment grow beyond its set limit the in case where the limit is
         * not page aligned -Ram Gupta
         */
-       rlim = rlimit(RLIMIT_DATA);
-+      gr_learn_resource(current, RLIMIT_DATA, (brk - mm->start_brk) + (mm->end_data - mm->start_data), 1);
-       if (rlim < RLIM_INFINITY && (brk - mm->start_brk) +
-                       (mm->end_data - mm->start_data) > rlim)
+-      if (check_data_rlimit(rlimit(RLIMIT_DATA), brk, mm->start_brk,
++      rlim = rlimit(RLIMIT_DATA);
++#ifdef CONFIG_GRKERNSEC_PROC_MEMMAP
++      /* force a minimum 16MB brk heap on setuid/setgid binaries */
++      if (rlim < PAGE_SIZE && (get_dumpable(mm) != SUID_DUMP_USER) && gr_is_global_nonroot(current_uid()))
++              rlim = 4096 * PAGE_SIZE;
++#endif
++      if (check_data_rlimit(rlim, brk, mm->start_brk,
+                             mm->end_data, mm->start_data))
                goto out;
-@@ -942,6 +965,12 @@ static int
+@@ -976,6 +1005,12 @@ static int
  can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags,
        struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
  {
@@ -94070,7 +96300,7 @@ index b1202cf..ee487f8 100644
        if (is_mergeable_vma(vma, file, vm_flags) &&
            is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
                if (vma->vm_pgoff == vm_pgoff)
-@@ -961,6 +990,12 @@ static int
+@@ -995,6 +1030,12 @@ static int
  can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
        struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff)
  {
@@ -94083,15 +96313,7 @@ index b1202cf..ee487f8 100644
        if (is_mergeable_vma(vma, file, vm_flags) &&
            is_mergeable_anon_vma(anon_vma, vma->anon_vma, vma)) {
                pgoff_t vm_pglen;
-@@ -1003,13 +1038,20 @@ can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
- struct vm_area_struct *vma_merge(struct mm_struct *mm,
-                       struct vm_area_struct *prev, unsigned long addr,
-                       unsigned long end, unsigned long vm_flags,
--                      struct anon_vma *anon_vma, struct file *file,
-+                      struct anon_vma *anon_vma, struct file *file,
-                       pgoff_t pgoff, struct mempolicy *policy)
- {
-       pgoff_t pglen = (end - addr) >> PAGE_SHIFT;
+@@ -1044,6 +1085,13 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
        struct vm_area_struct *area, *next;
        int err;
  
@@ -94105,7 +96327,7 @@ index b1202cf..ee487f8 100644
        /*
         * We later require that vma->vm_flags == vm_flags,
         * so this tests vma->vm_flags & VM_SPECIAL, too.
-@@ -1025,6 +1067,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
+@@ -1059,6 +1107,15 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
        if (next && next->vm_end == end)                /* cases 6, 7, 8 */
                next = next->vm_next;
  
@@ -94121,7 +96343,7 @@ index b1202cf..ee487f8 100644
        /*
         * Can it merge with the predecessor?
         */
-@@ -1044,9 +1095,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
+@@ -1078,9 +1135,24 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
                                                        /* cases 1, 6 */
                        err = vma_adjust(prev, prev->vm_start,
                                next->vm_end, prev->vm_pgoff, NULL);
@@ -94146,9 +96368,9 @@ index b1202cf..ee487f8 100644
 +              }
                if (err)
                        return NULL;
-               khugepaged_enter_vma_merge(prev);
-@@ -1060,12 +1126,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
-                       mpol_equal(policy, vma_policy(next)) &&
+               khugepaged_enter_vma_merge(prev, vm_flags);
+@@ -1094,12 +1166,27 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
+                       mpol_equal(policy, vma_policy(next)) &&
                        can_vma_merge_before(next, vm_flags,
                                        anon_vma, file, pgoff+pglen)) {
 -              if (prev && addr < prev->vm_end)        /* case 4 */
@@ -94176,8 +96398,8 @@ index b1202cf..ee487f8 100644
 +              }
                if (err)
                        return NULL;
-               khugepaged_enter_vma_merge(area);
-@@ -1174,8 +1255,10 @@ none:
+               khugepaged_enter_vma_merge(area, vm_flags);
+@@ -1208,8 +1295,10 @@ none:
  void vm_stat_account(struct mm_struct *mm, unsigned long flags,
                                                struct file *file, long pages)
  {
@@ -94190,7 +96412,7 @@ index b1202cf..ee487f8 100644
  
        mm->total_vm += pages;
  
-@@ -1183,7 +1266,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags,
+@@ -1217,7 +1306,7 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags,
                mm->shared_vm += pages;
                if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC)
                        mm->exec_vm += pages;
@@ -94199,7 +96421,7 @@ index b1202cf..ee487f8 100644
                mm->stack_vm += pages;
  }
  #endif /* CONFIG_PROC_FS */
-@@ -1213,6 +1296,7 @@ static inline int mlock_future_check(struct mm_struct *mm,
+@@ -1247,6 +1336,7 @@ static inline int mlock_future_check(struct mm_struct *mm,
                locked += mm->locked_vm;
                lock_limit = rlimit(RLIMIT_MEMLOCK);
                lock_limit >>= PAGE_SHIFT;
@@ -94207,7 +96429,7 @@ index b1202cf..ee487f8 100644
                if (locked > lock_limit && !capable(CAP_IPC_LOCK))
                        return -EAGAIN;
        }
-@@ -1239,7 +1323,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
+@@ -1273,7 +1363,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
         * (the exception is when the underlying filesystem is noexec
         *  mounted, in which case we dont add PROT_EXEC.)
         */
@@ -94216,7 +96438,7 @@ index b1202cf..ee487f8 100644
                if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
                        prot |= PROT_EXEC;
  
-@@ -1265,7 +1349,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
+@@ -1299,7 +1389,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
        /* Obtain the address to map to. we verify (or select) it and ensure
         * that it represents a valid section of the address space.
         */
@@ -94225,7 +96447,7 @@ index b1202cf..ee487f8 100644
        if (addr & ~PAGE_MASK)
                return addr;
  
-@@ -1276,6 +1360,43 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
+@@ -1310,6 +1400,43 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
        vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) |
                        mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
  
@@ -94269,7 +96491,7 @@ index b1202cf..ee487f8 100644
        if (flags & MAP_LOCKED)
                if (!can_do_mlock())
                        return -EPERM;
-@@ -1363,6 +1484,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
+@@ -1397,6 +1524,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
                        vm_flags |= VM_NORESERVE;
        }
  
@@ -94279,7 +96501,7 @@ index b1202cf..ee487f8 100644
        addr = mmap_region(file, addr, len, vm_flags, pgoff);
        if (!IS_ERR_VALUE(addr) &&
            ((vm_flags & VM_LOCKED) ||
-@@ -1456,7 +1580,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
+@@ -1490,7 +1620,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)
        vm_flags_t vm_flags = vma->vm_flags;
  
        /* If it was private or non-writable, the write bit is already clear */
@@ -94288,7 +96510,7 @@ index b1202cf..ee487f8 100644
                return 0;
  
        /* The backer wishes to know when pages are first written to? */
-@@ -1502,7 +1626,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -1541,7 +1671,22 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
        struct rb_node **rb_link, *rb_parent;
        unsigned long charged = 0;
  
@@ -94311,7 +96533,7 @@ index b1202cf..ee487f8 100644
        if (!may_expand_vm(mm, len >> PAGE_SHIFT)) {
                unsigned long nr_pages;
  
-@@ -1521,11 +1660,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -1560,11 +1705,10 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
  
        /* Clear old maps */
        error = -ENOMEM;
@@ -94324,7 +96546,7 @@ index b1202cf..ee487f8 100644
        }
  
        /*
-@@ -1556,6 +1694,16 @@ munmap_back:
+@@ -1595,6 +1739,16 @@ munmap_back:
                goto unacct_error;
        }
  
@@ -94341,7 +96563,7 @@ index b1202cf..ee487f8 100644
        vma->vm_mm = mm;
        vma->vm_start = addr;
        vma->vm_end = addr + len;
-@@ -1575,6 +1723,13 @@ munmap_back:
+@@ -1625,6 +1779,13 @@ munmap_back:
                if (error)
                        goto unmap_and_free_vma;
  
@@ -94355,7 +96577,7 @@ index b1202cf..ee487f8 100644
                /* Can addr have changed??
                 *
                 * Answer: Yes, several device drivers can do it in their
-@@ -1608,6 +1763,12 @@ munmap_back:
+@@ -1643,6 +1804,12 @@ munmap_back:
        }
  
        vma_link(mm, vma, prev, rb_link, rb_parent);
@@ -94366,9 +96588,9 @@ index b1202cf..ee487f8 100644
 +#endif
 +
        /* Once vma denies write, undo our temporary denial count */
-       if (vm_flags & VM_DENYWRITE)
-               allow_write_access(file);
-@@ -1616,6 +1777,7 @@ out:
+       if (file) {
+               if (vm_flags & VM_SHARED)
+@@ -1655,6 +1822,7 @@ out:
        perf_event_mmap(vma);
  
        vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT);
@@ -94376,9 +96598,9 @@ index b1202cf..ee487f8 100644
        if (vm_flags & VM_LOCKED) {
                if (!((vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) ||
                                        vma == get_gate_vma(current->mm)))
-@@ -1648,6 +1810,12 @@ unmap_and_free_vma:
-       unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
-       charged = 0;
+@@ -1692,6 +1860,12 @@ allow_write_and_free_vma:
+       if (vm_flags & VM_DENYWRITE)
+               allow_write_access(file);
  free_vma:
 +
 +#ifdef CONFIG_PAX_SEGMEXEC
@@ -94389,7 +96611,7 @@ index b1202cf..ee487f8 100644
        kmem_cache_free(vm_area_cachep, vma);
  unacct_error:
        if (charged)
-@@ -1655,7 +1823,63 @@ unacct_error:
+@@ -1699,7 +1873,63 @@ unacct_error:
        return error;
  }
  
@@ -94454,7 +96676,7 @@ index b1202cf..ee487f8 100644
  {
        /*
         * We implement the search by looking for an rbtree node that
-@@ -1703,11 +1927,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
+@@ -1747,11 +1977,29 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
                        }
                }
  
@@ -94485,7 +96707,7 @@ index b1202cf..ee487f8 100644
                if (gap_end >= low_limit && gap_end - gap_start >= length)
                        goto found;
  
-@@ -1757,7 +1999,7 @@ found:
+@@ -1801,7 +2049,7 @@ found:
        return gap_start;
  }
  
@@ -94494,7 +96716,7 @@ index b1202cf..ee487f8 100644
  {
        struct mm_struct *mm = current->mm;
        struct vm_area_struct *vma;
-@@ -1811,6 +2053,24 @@ check_current:
+@@ -1855,6 +2103,24 @@ check_current:
                gap_end = vma->vm_start;
                if (gap_end < low_limit)
                        return -ENOMEM;
@@ -94519,7 +96741,7 @@ index b1202cf..ee487f8 100644
                if (gap_start <= high_limit && gap_end - gap_start >= length)
                        goto found;
  
-@@ -1874,6 +2134,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -1918,6 +2184,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
        struct mm_struct *mm = current->mm;
        struct vm_area_struct *vma;
        struct vm_unmapped_area_info info;
@@ -94527,7 +96749,7 @@ index b1202cf..ee487f8 100644
  
        if (len > TASK_SIZE - mmap_min_addr)
                return -ENOMEM;
-@@ -1881,11 +2142,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -1925,11 +2192,15 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
        if (flags & MAP_FIXED)
                return addr;
  
@@ -94544,15 +96766,15 @@ index b1202cf..ee487f8 100644
                        return addr;
        }
  
-@@ -1894,6 +2159,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
+@@ -1938,6 +2209,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
        info.low_limit = mm->mmap_base;
        info.high_limit = TASK_SIZE;
        info.align_mask = 0;
 +      info.threadstack_offset = offset;
        return vm_unmapped_area(&info);
  }
- #endif        
-@@ -1912,6 +2178,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+ #endif
+@@ -1956,6 +2228,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        struct mm_struct *mm = current->mm;
        unsigned long addr = addr0;
        struct vm_unmapped_area_info info;
@@ -94560,7 +96782,7 @@ index b1202cf..ee487f8 100644
  
        /* requested length too big for entire address space */
        if (len > TASK_SIZE - mmap_min_addr)
-@@ -1920,12 +2187,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1964,12 +2237,16 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        if (flags & MAP_FIXED)
                return addr;
  
@@ -94578,7 +96800,7 @@ index b1202cf..ee487f8 100644
                        return addr;
        }
  
-@@ -1934,6 +2205,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1978,6 +2255,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
        info.low_limit = max(PAGE_SIZE, mmap_min_addr);
        info.high_limit = mm->mmap_base;
        info.align_mask = 0;
@@ -94586,7 +96808,7 @@ index b1202cf..ee487f8 100644
        addr = vm_unmapped_area(&info);
  
        /*
-@@ -1946,6 +2218,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
+@@ -1990,6 +2268,12 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
                VM_BUG_ON(addr != -ENOMEM);
                info.flags = 0;
                info.low_limit = TASK_UNMAPPED_BASE;
@@ -94599,7 +96821,7 @@ index b1202cf..ee487f8 100644
                info.high_limit = TASK_SIZE;
                addr = vm_unmapped_area(&info);
        }
-@@ -2046,6 +2324,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
+@@ -2090,6 +2374,28 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr,
        return vma;
  }
  
@@ -94628,7 +96850,7 @@ index b1202cf..ee487f8 100644
  /*
   * Verify that the stack growth is acceptable and
   * update accounting. This is shared with both the
-@@ -2062,6 +2362,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -2106,6 +2412,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
                return -ENOMEM;
  
        /* Stack limit test */
@@ -94636,7 +96858,7 @@ index b1202cf..ee487f8 100644
        if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
                return -ENOMEM;
  
-@@ -2072,6 +2373,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -2116,6 +2423,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
                locked = mm->locked_vm + grow;
                limit = ACCESS_ONCE(rlim[RLIMIT_MEMLOCK].rlim_cur);
                limit >>= PAGE_SHIFT;
@@ -94644,7 +96866,7 @@ index b1202cf..ee487f8 100644
                if (locked > limit && !capable(CAP_IPC_LOCK))
                        return -ENOMEM;
        }
-@@ -2101,37 +2403,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -2145,37 +2453,48 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
   * PA-RISC uses this for its stack; IA64 for its Register Backing Store.
   * vma is the last one with address > vma->vm_end.  Have to extend vma.
   */
@@ -94702,16 +96924,16 @@ index b1202cf..ee487f8 100644
                unsigned long size, grow;
  
                size = address - vma->vm_start;
-@@ -2166,6 +2479,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
+@@ -2210,6 +2529,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
                        }
                }
        }
 +      if (locknext)
 +              vma_unlock_anon_vma(vma->vm_next);
        vma_unlock_anon_vma(vma);
-       khugepaged_enter_vma_merge(vma);
+       khugepaged_enter_vma_merge(vma, vma->vm_flags);
        validate_mm(vma->vm_mm);
-@@ -2180,6 +2495,8 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -2224,6 +2545,8 @@ int expand_downwards(struct vm_area_struct *vma,
                                   unsigned long address)
  {
        int error;
@@ -94720,7 +96942,7 @@ index b1202cf..ee487f8 100644
  
        /*
         * We must make sure the anon_vma is allocated
-@@ -2193,6 +2510,15 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -2237,6 +2560,15 @@ int expand_downwards(struct vm_area_struct *vma,
        if (error)
                return error;
  
@@ -94736,7 +96958,7 @@ index b1202cf..ee487f8 100644
        vma_lock_anon_vma(vma);
  
        /*
-@@ -2202,9 +2528,17 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -2246,9 +2578,17 @@ int expand_downwards(struct vm_area_struct *vma,
         */
  
        /* Somebody else might have raced and expanded it already */
@@ -94755,7 +96977,7 @@ index b1202cf..ee487f8 100644
                size = vma->vm_end - address;
                grow = (vma->vm_start - address) >> PAGE_SHIFT;
  
-@@ -2229,13 +2563,27 @@ int expand_downwards(struct vm_area_struct *vma,
+@@ -2273,13 +2613,27 @@ int expand_downwards(struct vm_area_struct *vma,
                                vma->vm_pgoff -= grow;
                                anon_vma_interval_tree_post_update_vma(vma);
                                vma_gap_update(vma);
@@ -94780,10 +97002,10 @@ index b1202cf..ee487f8 100644
        vma_unlock_anon_vma(vma);
 +      if (lockprev)
 +              vma_unlock_anon_vma(prev);
-       khugepaged_enter_vma_merge(vma);
+       khugepaged_enter_vma_merge(vma, vma->vm_flags);
        validate_mm(vma->vm_mm);
        return error;
-@@ -2333,6 +2681,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -2377,6 +2731,13 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
        do {
                long nrpages = vma_pages(vma);
  
@@ -94797,7 +97019,7 @@ index b1202cf..ee487f8 100644
                if (vma->vm_flags & VM_ACCOUNT)
                        nr_accounted += nrpages;
                vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages);
-@@ -2377,6 +2732,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2421,6 +2782,16 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
        insertion_point = (prev ? &prev->vm_next : &mm->mmap);
        vma->vm_prev = NULL;
        do {
@@ -94814,7 +97036,7 @@ index b1202cf..ee487f8 100644
                vma_rb_erase(vma, &mm->mm_rb);
                mm->map_count--;
                tail_vma = vma;
-@@ -2404,14 +2769,33 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2448,14 +2819,33 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
        struct vm_area_struct *new;
        int err = -ENOMEM;
  
@@ -94848,7 +97070,7 @@ index b1202cf..ee487f8 100644
        /* most fields are the same, copy all, and then fixup */
        *new = *vma;
  
-@@ -2424,6 +2808,22 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2468,6 +2858,22 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
                new->vm_pgoff += ((addr - vma->vm_start) >> PAGE_SHIFT);
        }
  
@@ -94871,7 +97093,7 @@ index b1202cf..ee487f8 100644
        err = vma_dup_policy(vma, new);
        if (err)
                goto out_free_vma;
-@@ -2443,6 +2843,38 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2488,6 +2894,38 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
        else
                err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
  
@@ -94910,7 +97132,7 @@ index b1202cf..ee487f8 100644
        /* Success. */
        if (!err)
                return 0;
-@@ -2452,10 +2884,18 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2497,10 +2935,18 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
                new->vm_ops->close(new);
        if (new->vm_file)
                fput(new->vm_file);
@@ -94930,7 +97152,7 @@ index b1202cf..ee487f8 100644
        kmem_cache_free(vm_area_cachep, new);
   out_err:
        return err;
-@@ -2468,6 +2908,15 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -2513,6 +2959,15 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
  int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
              unsigned long addr, int new_below)
  {
@@ -94946,7 +97168,7 @@ index b1202cf..ee487f8 100644
        if (mm->map_count >= sysctl_max_map_count)
                return -ENOMEM;
  
-@@ -2479,11 +2928,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2524,11 +2979,30 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
   * work.  This now handles partial unmappings.
   * Jeremy Fitzhardinge <jeremy@goop.org>
   */
@@ -94977,7 +97199,7 @@ index b1202cf..ee487f8 100644
        if ((start & ~PAGE_MASK) || start > TASK_SIZE || len > TASK_SIZE-start)
                return -EINVAL;
  
-@@ -2558,6 +3026,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
+@@ -2604,6 +3078,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
        /* Fix up all other VM information */
        remove_vma_list(mm, vma);
  
@@ -94986,7 +97208,7 @@ index b1202cf..ee487f8 100644
        return 0;
  }
  
-@@ -2566,6 +3036,13 @@ int vm_munmap(unsigned long start, size_t len)
+@@ -2612,6 +3088,13 @@ int vm_munmap(unsigned long start, size_t len)
        int ret;
        struct mm_struct *mm = current->mm;
  
@@ -95000,7 +97222,7 @@ index b1202cf..ee487f8 100644
        down_write(&mm->mmap_sem);
        ret = do_munmap(mm, start, len);
        up_write(&mm->mmap_sem);
-@@ -2579,16 +3056,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
+@@ -2625,16 +3108,6 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
        return vm_munmap(addr, len);
  }
  
@@ -95017,15 +97239,15 @@ index b1202cf..ee487f8 100644
  /*
   *  this is really a simplified "do_mmap".  it only handles
   *  anonymous maps.  eventually we may be able to do some
-@@ -2602,6 +3069,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
-       struct rb_node ** rb_link, * rb_parent;
+@@ -2648,6 +3121,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+       struct rb_node **rb_link, *rb_parent;
        pgoff_t pgoff = addr >> PAGE_SHIFT;
        int error;
 +      unsigned long charged;
  
        len = PAGE_ALIGN(len);
        if (!len)
-@@ -2609,10 +3077,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2655,10 +3129,24 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
  
        flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
  
@@ -95050,7 +97272,7 @@ index b1202cf..ee487f8 100644
        error = mlock_future_check(mm, mm->def_flags, len);
        if (error)
                return error;
-@@ -2626,21 +3108,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2672,21 +3160,20 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
        /*
         * Clear old maps.  this also does some error checking for us
         */
@@ -95075,7 +97297,7 @@ index b1202cf..ee487f8 100644
                return -ENOMEM;
  
        /* Can we just expand an old private anonymous mapping? */
-@@ -2654,7 +3135,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2700,7 +3187,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
         */
        vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
        if (!vma) {
@@ -95084,7 +97306,7 @@ index b1202cf..ee487f8 100644
                return -ENOMEM;
        }
  
-@@ -2668,10 +3149,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
+@@ -2714,10 +3201,11 @@ static unsigned long do_brk(unsigned long addr, unsigned long len)
        vma_link(mm, vma, prev, rb_link, rb_parent);
  out:
        perf_event_mmap(vma);
@@ -95098,7 +97320,7 @@ index b1202cf..ee487f8 100644
        return addr;
  }
  
-@@ -2733,6 +3215,7 @@ void exit_mmap(struct mm_struct *mm)
+@@ -2779,6 +3267,7 @@ void exit_mmap(struct mm_struct *mm)
        while (vma) {
                if (vma->vm_flags & VM_ACCOUNT)
                        nr_accounted += vma_pages(vma);
@@ -95106,7 +97328,7 @@ index b1202cf..ee487f8 100644
                vma = remove_vma(vma);
        }
        vm_unacct_memory(nr_accounted);
-@@ -2750,6 +3233,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -2796,6 +3285,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
        struct vm_area_struct *prev;
        struct rb_node **rb_link, *rb_parent;
  
@@ -95120,7 +97342,7 @@ index b1202cf..ee487f8 100644
        /*
         * The vm_pgoff of a purely anonymous vma should be irrelevant
         * until its first write fault, when page's anon_vma and index
-@@ -2773,7 +3263,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -2819,7 +3315,21 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
             security_vm_enough_memory_mm(mm, vma_pages(vma)))
                return -ENOMEM;
  
@@ -95142,7 +97364,7 @@ index b1202cf..ee487f8 100644
        return 0;
  }
  
-@@ -2792,6 +3296,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2838,6 +3348,8 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
        struct rb_node **rb_link, *rb_parent;
        bool faulted_in_anon_vma = true;
  
@@ -95151,7 +97373,7 @@ index b1202cf..ee487f8 100644
        /*
         * If anonymous vma has not yet been faulted, update new pgoff
         * to match new location, to increase its chance of merging.
-@@ -2856,6 +3362,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2902,6 +3414,39 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
        return NULL;
  }
  
@@ -95191,7 +97413,7 @@ index b1202cf..ee487f8 100644
  /*
   * Return true if the calling process may expand its vm space by the passed
   * number of pages
-@@ -2867,6 +3406,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
+@@ -2913,6 +3458,7 @@ int may_expand_vm(struct mm_struct *mm, unsigned long npages)
  
        lim = rlimit(RLIMIT_AS) >> PAGE_SHIFT;
  
@@ -95199,7 +97421,7 @@ index b1202cf..ee487f8 100644
        if (cur + npages > lim)
                return 0;
        return 1;
-@@ -2937,6 +3477,22 @@ struct vm_area_struct *_install_special_mapping(struct mm_struct *mm,
+@@ -2995,6 +3541,22 @@ static struct vm_area_struct *__install_special_mapping(
        vma->vm_start = addr;
        vma->vm_end = addr + len;
  
@@ -95223,7 +97445,7 @@ index b1202cf..ee487f8 100644
        vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
  
 diff --git a/mm/mprotect.c b/mm/mprotect.c
-index c43d557..0b7ccd2 100644
+index ace9345..63320dc 100644
 --- a/mm/mprotect.c
 +++ b/mm/mprotect.c
 @@ -24,10 +24,18 @@
@@ -95243,9 +97465,9 @@ index c43d557..0b7ccd2 100644
  #include <asm/tlbflush.h>
 +#include <asm/mmu_context.h>
  
- #ifndef pgprot_modify
- static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
-@@ -256,6 +264,48 @@ unsigned long change_protection(struct vm_area_struct *vma, unsigned long start,
+ /*
+  * For a prot_numa update we only hold mmap_sem for read so there is a
+@@ -251,6 +259,48 @@ unsigned long change_protection(struct vm_area_struct *vma, unsigned long start,
        return pages;
  }
  
@@ -95294,7 +97516,7 @@ index c43d557..0b7ccd2 100644
  int
  mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
        unsigned long start, unsigned long end, unsigned long newflags)
-@@ -268,11 +318,29 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
+@@ -263,11 +313,29 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
        int error;
        int dirty_accountable = 0;
  
@@ -95324,7 +97546,7 @@ index c43d557..0b7ccd2 100644
        /*
         * If we make a private mapping writable we increase our commit;
         * but (without finer accounting) cannot reduce our commit if we
-@@ -289,6 +357,42 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
+@@ -284,6 +352,42 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
                }
        }
  
@@ -95367,7 +97589,7 @@ index c43d557..0b7ccd2 100644
        /*
         * First try to merge with previous and/or next vma.
         */
-@@ -319,9 +423,21 @@ success:
+@@ -314,7 +418,19 @@ success:
         * vm_flags and vm_page_prot are protected by the mmap_sem
         * held in write mode.
         */
@@ -95384,13 +97606,10 @@ index c43d557..0b7ccd2 100644
 +              mm->binfmt->handle_mprotect(vma, newflags);
 +#endif
 +
-       vma->vm_page_prot = pgprot_modify(vma->vm_page_prot,
--                                        vm_get_page_prot(newflags));
-+                                        vm_get_page_prot(vma->vm_flags));
+       dirty_accountable = vma_wants_writenotify(vma);
+       vma_set_page_prot(vma);
  
-       if (vma_wants_writenotify(vma)) {
-               vma->vm_page_prot = vm_get_page_prot(newflags & ~VM_SHARED);
-@@ -360,6 +476,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -350,6 +466,17 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
        end = start + len;
        if (end <= start)
                return -ENOMEM;
@@ -95408,7 +97627,7 @@ index c43d557..0b7ccd2 100644
        if (!arch_validate_prot(prot))
                return -EINVAL;
  
-@@ -367,7 +494,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -357,7 +484,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
        /*
         * Does the application expect PROT_READ to imply PROT_EXEC:
         */
@@ -95417,7 +97636,7 @@ index c43d557..0b7ccd2 100644
                prot |= PROT_EXEC;
  
        vm_flags = calc_vm_prot_bits(prot);
-@@ -399,6 +526,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -389,6 +516,11 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
        if (start > vma->vm_start)
                prev = vma;
  
@@ -95429,7 +97648,7 @@ index c43d557..0b7ccd2 100644
        for (nstart = start ; ; ) {
                unsigned long newflags;
  
-@@ -409,6 +541,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -399,6 +531,14 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
  
                /* newflags >> 4 shift VM_MAY% in place of VM_% */
                if ((newflags & ~(newflags >> 4)) & (VM_READ | VM_WRITE | VM_EXEC)) {
@@ -95444,7 +97663,7 @@ index c43d557..0b7ccd2 100644
                        error = -EACCES;
                        goto out;
                }
-@@ -423,6 +563,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
+@@ -413,6 +553,9 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
                error = mprotect_fixup(vma, &prev, nstart, tmp, newflags);
                if (error)
                        goto out;
@@ -95455,7 +97674,7 @@ index c43d557..0b7ccd2 100644
  
                if (nstart < prev->vm_end)
 diff --git a/mm/mremap.c b/mm/mremap.c
-index 05f1180..c3cde48 100644
+index b147f66..98a695a 100644
 --- a/mm/mremap.c
 +++ b/mm/mremap.c
 @@ -144,6 +144,12 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd,
@@ -95471,7 +97690,7 @@ index 05f1180..c3cde48 100644
                pte = move_soft_dirty_pte(pte);
                set_pte_at(mm, new_addr, new_pte, pte);
        }
-@@ -344,6 +350,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr,
+@@ -345,6 +351,11 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr,
        if (is_vm_hugetlb_page(vma))
                goto Einval;
  
@@ -95483,7 +97702,7 @@ index 05f1180..c3cde48 100644
        /* We can't remap across vm area boundaries */
        if (old_len > vma->vm_end - addr)
                goto Efault;
-@@ -399,20 +410,25 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len,
+@@ -400,20 +411,25 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len,
        unsigned long ret = -EINVAL;
        unsigned long charged = 0;
        unsigned long map_flags;
@@ -95514,7 +97733,7 @@ index 05f1180..c3cde48 100644
                goto out;
  
        ret = do_munmap(mm, new_addr, new_len);
-@@ -481,6 +497,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
+@@ -482,6 +498,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
        unsigned long ret = -EINVAL;
        unsigned long charged = 0;
        bool locked = false;
@@ -95522,7 +97741,7 @@ index 05f1180..c3cde48 100644
  
        if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE))
                return ret;
-@@ -502,6 +519,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
+@@ -503,6 +520,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
        if (!new_len)
                return ret;
  
@@ -95540,7 +97759,7 @@ index 05f1180..c3cde48 100644
        down_write(&current->mm->mmap_sem);
  
        if (flags & MREMAP_FIXED) {
-@@ -552,6 +580,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
+@@ -553,6 +581,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
                                new_addr = addr;
                        }
                        ret = addr;
@@ -95548,7 +97767,7 @@ index 05f1180..c3cde48 100644
                        goto out;
                }
        }
-@@ -575,7 +604,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
+@@ -576,7 +605,12 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
                        goto out;
                }
  
@@ -95562,10 +97781,10 @@ index 05f1180..c3cde48 100644
  out:
        if (ret & ~PAGE_MASK)
 diff --git a/mm/nommu.c b/mm/nommu.c
-index 431fd7c..8674512 100644
+index bd1808e..b63d87c 100644
 --- a/mm/nommu.c
 +++ b/mm/nommu.c
-@@ -67,7 +67,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
+@@ -70,7 +70,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
  int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
  unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
  unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
@@ -95573,7 +97792,7 @@ index 431fd7c..8674512 100644
  
  atomic_long_t mmap_pages_allocated;
  
-@@ -854,15 +853,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
+@@ -857,15 +856,6 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
  EXPORT_SYMBOL(find_vma);
  
  /*
@@ -95589,7 +97808,7 @@ index 431fd7c..8674512 100644
   * expand a stack to a given address
   * - not supported under NOMMU conditions
   */
-@@ -1569,6 +1559,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -1572,6 +1562,7 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
  
        /* most fields are the same, copy all, and then fixup */
        *new = *vma;
@@ -95597,7 +97816,7 @@ index 431fd7c..8674512 100644
        *region = *vma->vm_region;
        new->vm_region = region;
  
-@@ -2004,8 +1995,8 @@ int generic_file_remap_pages(struct vm_area_struct *vma, unsigned long addr,
+@@ -2002,8 +1993,8 @@ int generic_file_remap_pages(struct vm_area_struct *vma, unsigned long addr,
  }
  EXPORT_SYMBOL(generic_file_remap_pages);
  
@@ -95608,7 +97827,7 @@ index 431fd7c..8674512 100644
  {
        struct vm_area_struct *vma;
  
-@@ -2046,8 +2037,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
+@@ -2044,8 +2035,8 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
   *
   * The caller must hold a reference on @mm.
   */
@@ -95619,7 +97838,7 @@ index 431fd7c..8674512 100644
  {
        return __access_remote_vm(NULL, mm, addr, buf, len, write);
  }
-@@ -2056,7 +2047,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
+@@ -2054,7 +2045,7 @@ int access_remote_vm(struct mm_struct *mm, unsigned long addr,
   * Access another process' address space.
   * - source/target buffer must be kernel space
   */
@@ -95629,10 +97848,10 @@ index 431fd7c..8674512 100644
        struct mm_struct *mm;
  
 diff --git a/mm/page-writeback.c b/mm/page-writeback.c
-index 154af21..86e447f 100644
+index 19ceae8..70848ee 100644
 --- a/mm/page-writeback.c
 +++ b/mm/page-writeback.c
-@@ -685,7 +685,7 @@ static long long pos_ratio_polynom(unsigned long setpoint,
+@@ -664,7 +664,7 @@ static long long pos_ratio_polynom(unsigned long setpoint,
   *   card's bdi_dirty may rush to many times higher than bdi_setpoint.
   * - the bdi dirty thresh drops quickly due to change of JBOD workload
   */
@@ -95642,10 +97861,10 @@ index 154af21..86e447f 100644
                                        unsigned long bg_thresh,
                                        unsigned long dirty,
 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index d64f5f9..9005ab5 100644
+index 616a2c9..0e755f6 100644
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -61,6 +61,7 @@
+@@ -59,6 +59,7 @@
  #include <linux/page-debug-flags.h>
  #include <linux/hugetlb.h>
  #include <linux/sched/rt.h>
@@ -95662,7 +97881,7 @@ index d64f5f9..9005ab5 100644
  {
        __free_pages_ok(page, compound_order(page));
  }
-@@ -730,6 +731,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
+@@ -741,6 +742,10 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
        int i;
        int bad = 0;
  
@@ -95673,7 +97892,7 @@ index d64f5f9..9005ab5 100644
        trace_mm_page_free(page, order);
        kmemcheck_free_shadow(page, order);
  
-@@ -746,6 +751,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
+@@ -757,6 +762,12 @@ static bool free_pages_prepare(struct page *page, unsigned int order)
                debug_check_no_obj_freed(page_address(page),
                                           PAGE_SIZE << order);
        }
@@ -95686,7 +97905,7 @@ index d64f5f9..9005ab5 100644
        arch_free_page(page, order);
        kernel_map_pages(page, 1 << order, 0);
  
-@@ -768,6 +779,20 @@ static void __free_pages_ok(struct page *page, unsigned int order)
+@@ -780,6 +791,20 @@ static void __free_pages_ok(struct page *page, unsigned int order)
        local_irq_restore(flags);
  }
  
@@ -95707,7 +97926,7 @@ index d64f5f9..9005ab5 100644
  void __init __free_pages_bootmem(struct page *page, unsigned int order)
  {
        unsigned int nr_pages = 1 << order;
-@@ -783,6 +808,19 @@ void __init __free_pages_bootmem(struct page *page, unsigned int order)
+@@ -795,6 +820,19 @@ void __init __free_pages_bootmem(struct page *page, unsigned int order)
        __ClearPageReserved(p);
        set_page_count(p, 0);
  
@@ -95727,7 +97946,7 @@ index d64f5f9..9005ab5 100644
        page_zone(page)->managed_pages += nr_pages;
        set_page_refcounted(page);
        __free_pages(page, order);
-@@ -911,8 +949,10 @@ static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
+@@ -923,8 +961,10 @@ static int prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags)
        arch_alloc_page(page, order);
        kernel_map_pages(page, 1 << order, 1);
  
@@ -95738,33 +97957,38 @@ index d64f5f9..9005ab5 100644
  
        if (order && (gfp_flags & __GFP_COMP))
                prep_compound_page(page, order);
-@@ -2415,7 +2455,7 @@ static void reset_alloc_batches(struct zonelist *zonelist,
-                       continue;
+@@ -1602,7 +1642,7 @@ again:
+       }
+       __mod_zone_page_state(zone, NR_ALLOC_BATCH, -(1 << order));
+-      if (atomic_long_read(&zone->vm_stat[NR_ALLOC_BATCH]) <= 0 &&
++      if (atomic_long_read_unchecked(&zone->vm_stat[NR_ALLOC_BATCH]) <= 0 &&
+           !test_bit(ZONE_FAIR_DEPLETED, &zone->flags))
+               set_bit(ZONE_FAIR_DEPLETED, &zone->flags);
+@@ -1923,7 +1963,7 @@ static void reset_alloc_batches(struct zone *preferred_zone)
+       do {
                mod_zone_page_state(zone, NR_ALLOC_BATCH,
                        high_wmark_pages(zone) - low_wmark_pages(zone) -
 -                      atomic_long_read(&zone->vm_stat[NR_ALLOC_BATCH]));
 +                      atomic_long_read_unchecked(&zone->vm_stat[NR_ALLOC_BATCH]));
-       }
+               clear_bit(ZONE_FAIR_DEPLETED, &zone->flags);
+       } while (zone++ != preferred_zone);
  }
+@@ -5698,7 +5738,7 @@ static void __setup_per_zone_wmarks(void)
  
-diff --git a/mm/page_io.c b/mm/page_io.c
-index 7c59ef6..1358905 100644
---- a/mm/page_io.c
-+++ b/mm/page_io.c
-@@ -260,7 +260,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc,
-               struct file *swap_file = sis->swap_file;
-               struct address_space *mapping = swap_file->f_mapping;
-               struct iovec iov = {
--                      .iov_base = kmap(page),
-+                      .iov_base = (void __force_user *)kmap(page),
-                       .iov_len  = PAGE_SIZE,
-               };
+               __mod_zone_page_state(zone, NR_ALLOC_BATCH,
+                       high_wmark_pages(zone) - low_wmark_pages(zone) -
+-                      atomic_long_read(&zone->vm_stat[NR_ALLOC_BATCH]));
++                      atomic_long_read_unchecked(&zone->vm_stat[NR_ALLOC_BATCH]));
  
+               setup_zone_migrate_reserve(zone);
+               spin_unlock_irqrestore(&zone->lock, flags);
 diff --git a/mm/percpu.c b/mm/percpu.c
-index 2ddf9a9..f8fc075 100644
+index 014bab6..db5a76f 100644
 --- a/mm/percpu.c
 +++ b/mm/percpu.c
-@@ -123,7 +123,7 @@ static unsigned int pcpu_low_unit_cpu __read_mostly;
+@@ -131,7 +131,7 @@ static unsigned int pcpu_low_unit_cpu __read_mostly;
  static unsigned int pcpu_high_unit_cpu __read_mostly;
  
  /* the address of the first chunk which starts with the kernel static area */
@@ -95774,7 +97998,7 @@ index 2ddf9a9..f8fc075 100644
  
  static const int *pcpu_unit_map __read_mostly;                /* cpu -> unit */
 diff --git a/mm/process_vm_access.c b/mm/process_vm_access.c
-index 8505c92..946bfc9 100644
+index 5077afc..846c9ef 100644
 --- a/mm/process_vm_access.c
 +++ b/mm/process_vm_access.c
 @@ -13,6 +13,7 @@
@@ -95785,7 +98009,7 @@ index 8505c92..946bfc9 100644
  #include <linux/ptrace.h>
  #include <linux/slab.h>
  #include <linux/syscalls.h>
-@@ -161,19 +162,19 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
+@@ -157,19 +158,19 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
        ssize_t iov_len;
        size_t total_len = iov_iter_count(iter);
  
@@ -95812,7 +98036,7 @@ index 8505c92..946bfc9 100644
        }
  
        if (nr_pages == 0)
-@@ -201,6 +202,11 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
+@@ -197,6 +198,11 @@ static ssize_t process_vm_rw_core(pid_t pid, struct iov_iter *iter,
                goto free_proc_pages;
        }
  
@@ -95825,7 +98049,7 @@ index 8505c92..946bfc9 100644
        if (!mm || IS_ERR(mm)) {
                rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH;
 diff --git a/mm/rmap.c b/mm/rmap.c
-index 14d1e28..3777962 100644
+index 3e4c721..a5e3e39 100644
 --- a/mm/rmap.c
 +++ b/mm/rmap.c
 @@ -164,6 +164,10 @@ int anon_vma_prepare(struct vm_area_struct *vma)
@@ -95914,7 +98138,7 @@ index 14d1e28..3777962 100644
  {
        struct anon_vma_chain *avc;
        struct anon_vma *anon_vma;
-@@ -374,8 +408,10 @@ static void anon_vma_ctor(void *data)
+@@ -376,8 +410,10 @@ static void anon_vma_ctor(void *data)
  void __init anon_vma_init(void)
  {
        anon_vma_cachep = kmem_cache_create("anon_vma", sizeof(struct anon_vma),
@@ -95928,7 +98152,7 @@ index 14d1e28..3777962 100644
  
  /*
 diff --git a/mm/shmem.c b/mm/shmem.c
-index a2801ba..1e82984 100644
+index 185836b..d7255a1 100644
 --- a/mm/shmem.c
 +++ b/mm/shmem.c
 @@ -33,7 +33,7 @@
@@ -95940,7 +98164,7 @@ index a2801ba..1e82984 100644
  
  #ifdef CONFIG_SHMEM
  /*
-@@ -77,14 +77,15 @@ static struct vfsmount *shm_mnt;
+@@ -80,7 +80,7 @@ static struct vfsmount *shm_mnt;
  #define BOGO_DIRENT_SIZE 20
  
  /* Symlink up to this size is kmalloc'ed instead of using a swappable page */
@@ -95948,181 +98172,8 @@ index a2801ba..1e82984 100644
 +#define SHORT_SYMLINK_LEN 64
  
  /*
-- * shmem_fallocate and shmem_writepage communicate via inode->i_private
-- * (with i_mutex making sure that it has only one user at a time):
-- * we would prefer not to enlarge the shmem inode just for that.
-+ * shmem_fallocate communicates with shmem_fault or shmem_writepage via
-+ * inode->i_private (with i_mutex making sure that it has only one user at
-+ * a time): we would prefer not to enlarge the shmem inode just for that.
-  */
- struct shmem_falloc {
-+      wait_queue_head_t *waitq; /* faults into hole wait for punch to end */
-       pgoff_t start;          /* start of range currently being fallocated */
-       pgoff_t next;           /* the next page offset to be fallocated */
-       pgoff_t nr_falloced;    /* how many new pages have been fallocated */
-@@ -467,23 +468,20 @@ static void shmem_undo_range(struct inode *inode, loff_t lstart, loff_t lend,
-               return;
-       index = start;
--      for ( ; ; ) {
-+      while (index < end) {
-               cond_resched();
-               pvec.nr = find_get_entries(mapping, index,
-                               min(end - index, (pgoff_t)PAGEVEC_SIZE),
-                               pvec.pages, indices);
-               if (!pvec.nr) {
--                      if (index == start || unfalloc)
-+                      /* If all gone or hole-punch or unfalloc, we're done */
-+                      if (index == start || end != -1)
-                               break;
-+                      /* But if truncating, restart to make sure all gone */
-                       index = start;
-                       continue;
-               }
--              if ((index == start || unfalloc) && indices[0] >= end) {
--                      pagevec_remove_exceptionals(&pvec);
--                      pagevec_release(&pvec);
--                      break;
--              }
-               mem_cgroup_uncharge_start();
-               for (i = 0; i < pagevec_count(&pvec); i++) {
-                       struct page *page = pvec.pages[i];
-@@ -495,8 +493,12 @@ static void shmem_undo_range(struct inode *inode, loff_t lstart, loff_t lend,
-                       if (radix_tree_exceptional_entry(page)) {
-                               if (unfalloc)
-                                       continue;
--                              nr_swaps_freed += !shmem_free_swap(mapping,
--                                                              index, page);
-+                              if (shmem_free_swap(mapping, index, page)) {
-+                                      /* Swap was replaced by page: retry */
-+                                      index--;
-+                                      break;
-+                              }
-+                              nr_swaps_freed++;
-                               continue;
-                       }
-@@ -505,6 +507,11 @@ static void shmem_undo_range(struct inode *inode, loff_t lstart, loff_t lend,
-                               if (page->mapping == mapping) {
-                                       VM_BUG_ON_PAGE(PageWriteback(page), page);
-                                       truncate_inode_page(mapping, page);
-+                              } else {
-+                                      /* Page was replaced by swap: retry */
-+                                      unlock_page(page);
-+                                      index--;
-+                                      break;
-                               }
-                       }
-                       unlock_page(page);
-@@ -759,6 +766,7 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc)
-                       spin_lock(&inode->i_lock);
-                       shmem_falloc = inode->i_private;
-                       if (shmem_falloc &&
-+                          !shmem_falloc->waitq &&
-                           index >= shmem_falloc->start &&
-                           index < shmem_falloc->next)
-                               shmem_falloc->nr_unswapped++;
-@@ -1233,6 +1241,64 @@ static int shmem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
-       int error;
-       int ret = VM_FAULT_LOCKED;
-+      /*
-+       * Trinity finds that probing a hole which tmpfs is punching can
-+       * prevent the hole-punch from ever completing: which in turn
-+       * locks writers out with its hold on i_mutex.  So refrain from
-+       * faulting pages into the hole while it's being punched.  Although
-+       * shmem_undo_range() does remove the additions, it may be unable to
-+       * keep up, as each new page needs its own unmap_mapping_range() call,
-+       * and the i_mmap tree grows ever slower to scan if new vmas are added.
-+       *
-+       * It does not matter if we sometimes reach this check just before the
-+       * hole-punch begins, so that one fault then races with the punch:
-+       * we just need to make racing faults a rare case.
-+       *
-+       * The implementation below would be much simpler if we just used a
-+       * standard mutex or completion: but we cannot take i_mutex in fault,
-+       * and bloating every shmem inode for this unlikely case would be sad.
-+       */
-+      if (unlikely(inode->i_private)) {
-+              struct shmem_falloc *shmem_falloc;
-+
-+              spin_lock(&inode->i_lock);
-+              shmem_falloc = inode->i_private;
-+              if (shmem_falloc &&
-+                  shmem_falloc->waitq &&
-+                  vmf->pgoff >= shmem_falloc->start &&
-+                  vmf->pgoff < shmem_falloc->next) {
-+                      wait_queue_head_t *shmem_falloc_waitq;
-+                      DEFINE_WAIT(shmem_fault_wait);
-+
-+                      ret = VM_FAULT_NOPAGE;
-+                      if ((vmf->flags & FAULT_FLAG_ALLOW_RETRY) &&
-+                         !(vmf->flags & FAULT_FLAG_RETRY_NOWAIT)) {
-+                              /* It's polite to up mmap_sem if we can */
-+                              up_read(&vma->vm_mm->mmap_sem);
-+                              ret = VM_FAULT_RETRY;
-+                      }
-+
-+                      shmem_falloc_waitq = shmem_falloc->waitq;
-+                      prepare_to_wait(shmem_falloc_waitq, &shmem_fault_wait,
-+                                      TASK_UNINTERRUPTIBLE);
-+                      spin_unlock(&inode->i_lock);
-+                      schedule();
-+
-+                      /*
-+                       * shmem_falloc_waitq points into the shmem_fallocate()
-+                       * stack of the hole-punching task: shmem_falloc_waitq
-+                       * is usually invalid by the time we reach here, but
-+                       * finish_wait() does not dereference it in that case;
-+                       * though i_lock needed lest racing with wake_up_all().
-+                       */
-+                      spin_lock(&inode->i_lock);
-+                      finish_wait(shmem_falloc_waitq, &shmem_fault_wait);
-+                      spin_unlock(&inode->i_lock);
-+                      return ret;
-+              }
-+              spin_unlock(&inode->i_lock);
-+      }
-+
-       error = shmem_getpage(inode, vmf->pgoff, &vmf->page, SGP_CACHE, &ret);
-       if (error)
-               return ((error == -ENOMEM) ? VM_FAULT_OOM : VM_FAULT_SIGBUS);
-@@ -1737,12 +1803,25 @@ static long shmem_fallocate(struct file *file, int mode, loff_t offset,
-               struct address_space *mapping = file->f_mapping;
-               loff_t unmap_start = round_up(offset, PAGE_SIZE);
-               loff_t unmap_end = round_down(offset + len, PAGE_SIZE) - 1;
-+              DECLARE_WAIT_QUEUE_HEAD_ONSTACK(shmem_falloc_waitq);
-+
-+              shmem_falloc.waitq = &shmem_falloc_waitq;
-+              shmem_falloc.start = unmap_start >> PAGE_SHIFT;
-+              shmem_falloc.next = (unmap_end + 1) >> PAGE_SHIFT;
-+              spin_lock(&inode->i_lock);
-+              inode->i_private = &shmem_falloc;
-+              spin_unlock(&inode->i_lock);
-               if ((u64)unmap_end > (u64)unmap_start)
-                       unmap_mapping_range(mapping, unmap_start,
-                                           1 + unmap_end - unmap_start, 0);
-               shmem_truncate_range(inode, offset, offset + len - 1);
-               /* No need to unmap again: hole-punching leaves COWed pages */
-+
-+              spin_lock(&inode->i_lock);
-+              inode->i_private = NULL;
-+              wake_up_all(&shmem_falloc_waitq);
-+              spin_unlock(&inode->i_lock);
-               error = 0;
-               goto out;
-       }
-@@ -1760,6 +1839,7 @@ static long shmem_fallocate(struct file *file, int mode, loff_t offset,
-               goto out;
-       }
-+      shmem_falloc.waitq = NULL;
-       shmem_falloc.start = start;
-       shmem_falloc.next  = start;
-       shmem_falloc.nr_falloced = 0;
-@@ -2138,6 +2218,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = {
+  * shmem_fallocate communicates with shmem_fault or shmem_writepage via
+@@ -2558,6 +2558,11 @@ static const struct xattr_handler *shmem_xattr_handlers[] = {
  static int shmem_xattr_validate(const char *name)
  {
        struct { const char *prefix; size_t len; } arr[] = {
@@ -96134,7 +98185,7 @@ index a2801ba..1e82984 100644
                { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN },
                { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN }
        };
-@@ -2193,6 +2278,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name,
+@@ -2613,6 +2618,15 @@ static int shmem_setxattr(struct dentry *dentry, const char *name,
        if (err)
                return err;
  
@@ -96150,7 +98201,7 @@ index a2801ba..1e82984 100644
        return simple_xattr_set(&info->xattrs, name, value, size, flags);
  }
  
-@@ -2505,8 +2599,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
+@@ -2996,8 +3010,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent)
        int err = -ENOMEM;
  
        /* Round up to L1_CACHE_BYTES to resist false sharing */
@@ -96161,10 +98212,10 @@ index a2801ba..1e82984 100644
                return -ENOMEM;
  
 diff --git a/mm/slab.c b/mm/slab.c
-index 9432556..e0dc685 100644
+index f34e053..78a3839 100644
 --- a/mm/slab.c
 +++ b/mm/slab.c
-@@ -311,10 +311,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
+@@ -314,10 +314,12 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
                if ((x)->max_freeable < i)                              \
                        (x)->max_freeable = i;                          \
        } while (0)
@@ -96181,7 +98232,7 @@ index 9432556..e0dc685 100644
  #else
  #define       STATS_INC_ACTIVE(x)     do { } while (0)
  #define       STATS_DEC_ACTIVE(x)     do { } while (0)
-@@ -331,6 +333,8 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
+@@ -334,6 +336,8 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent)
  #define STATS_INC_ALLOCMISS(x)        do { } while (0)
  #define STATS_INC_FREEHIT(x)  do { } while (0)
  #define STATS_INC_FREEMISS(x) do { } while (0)
@@ -96190,7 +98241,7 @@ index 9432556..e0dc685 100644
  #endif
  
  #if DEBUG
-@@ -447,7 +451,7 @@ static inline void *index_to_obj(struct kmem_cache *cache, struct page *page,
+@@ -450,7 +454,7 @@ static inline void *index_to_obj(struct kmem_cache *cache, struct page *page,
   *   reciprocal_divide(offset, cache->reciprocal_buffer_size)
   */
  static inline unsigned int obj_to_index(const struct kmem_cache *cache,
@@ -96199,44 +98250,46 @@ index 9432556..e0dc685 100644
  {
        u32 offset = (obj - page->s_mem);
        return reciprocal_divide(offset, cache->reciprocal_buffer_size);
-@@ -1558,12 +1562,12 @@ void __init kmem_cache_init(void)
+@@ -1438,7 +1442,7 @@ void __init kmem_cache_init(void)
+        * structures first.  Without this, further allocations will bug.
         */
-       kmalloc_caches[INDEX_AC] = create_kmalloc_cache("kmalloc-ac",
--                                      kmalloc_size(INDEX_AC), ARCH_KMALLOC_FLAGS);
-+                                      kmalloc_size(INDEX_AC), SLAB_USERCOPY | ARCH_KMALLOC_FLAGS);
-       if (INDEX_AC != INDEX_NODE)
-               kmalloc_caches[INDEX_NODE] =
-                       create_kmalloc_cache("kmalloc-node",
+       kmalloc_caches[INDEX_NODE] = create_kmalloc_cache("kmalloc-node",
 -                              kmalloc_size(INDEX_NODE), ARCH_KMALLOC_FLAGS);
 +                              kmalloc_size(INDEX_NODE), SLAB_USERCOPY | ARCH_KMALLOC_FLAGS);
+       slab_state = PARTIAL_NODE;
  
        slab_early_init = 0;
+@@ -2059,7 +2063,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
+       cachep = find_mergeable(size, align, flags, name, ctor);
+       if (cachep) {
+-              cachep->refcount++;
++              atomic_inc(&cachep->refcount);
  
-@@ -3525,6 +3529,21 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp,
+               /*
+                * Adjust the object sizes so that we clear
+@@ -3352,6 +3356,20 @@ static inline void __cache_free(struct kmem_cache *cachep, void *objp,
        struct array_cache *ac = cpu_cache_get(cachep);
  
        check_irq_off();
 +
 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
-+      if (pax_sanitize_slab) {
-+              if (!(cachep->flags & (SLAB_POISON | SLAB_NO_SANITIZE))) {
-+                      memset(objp, PAX_MEMORY_SANITIZE_VALUE, cachep->object_size);
++      if (cachep->flags & (SLAB_POISON | SLAB_NO_SANITIZE))
++              STATS_INC_NOT_SANITIZED(cachep);
++      else {
++              memset(objp, PAX_MEMORY_SANITIZE_VALUE, cachep->object_size);
 +
-+                      if (cachep->ctor)
-+                              cachep->ctor(objp);
++              if (cachep->ctor)
++                      cachep->ctor(objp);
 +
-+                      STATS_INC_SANITIZED(cachep);
-+              } else
-+                      STATS_INC_NOT_SANITIZED(cachep);
++              STATS_INC_SANITIZED(cachep);
 +      }
 +#endif
 +
        kmemleak_free_recursive(objp, cachep->flags);
        objp = cache_free_debugcheck(cachep, objp, caller);
  
-@@ -3748,6 +3767,7 @@ void kfree(const void *objp)
+@@ -3557,6 +3575,7 @@ void kfree(const void *objp)
  
        if (unlikely(ZERO_OR_NULL_PTR(objp)))
                return;
@@ -96244,7 +98297,7 @@ index 9432556..e0dc685 100644
        local_irq_save(flags);
        kfree_debugcheck(objp);
        c = virt_to_cache(objp);
-@@ -4189,14 +4209,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep)
+@@ -3979,14 +3998,22 @@ void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep)
        }
        /* cpu stats */
        {
@@ -96271,7 +98324,7 @@ index 9432556..e0dc685 100644
  #endif
  }
  
-@@ -4417,13 +4445,69 @@ static const struct file_operations proc_slabstats_operations = {
+@@ -4200,13 +4227,69 @@ static const struct file_operations proc_slabstats_operations = {
  static int __init slab_proc_init(void)
  {
  #ifdef CONFIG_DEBUG_SLAB_LEAK
@@ -96343,10 +98396,19 @@ index 9432556..e0dc685 100644
   * ksize - get the actual amount of memory allocated for a given object
   * @objp: Pointer to the object
 diff --git a/mm/slab.h b/mm/slab.h
-index 6bd4c35..97565a1 100644
+index ab019e6..fbcac34 100644
 --- a/mm/slab.h
 +++ b/mm/slab.h
-@@ -32,6 +32,15 @@ extern struct list_head slab_caches;
+@@ -22,7 +22,7 @@ struct kmem_cache {
+       unsigned int align;     /* Alignment as calculated */
+       unsigned long flags;    /* Active flags on the slab */
+       const char *name;       /* Slab name for sysfs */
+-      int refcount;           /* Use counter */
++      atomic_t refcount;      /* Use counter */
+       void (*ctor)(void *);   /* Called on object slot creation */
+       struct list_head list;  /* List of all slab caches on the system */
+ };
+@@ -66,6 +66,20 @@ extern struct list_head slab_caches;
  /* The slab cache that manages slab cache information */
  extern struct kmem_cache *kmem_cache;
  
@@ -96356,13 +98418,18 @@ index 6bd4c35..97565a1 100644
 +#else
 +#define PAX_MEMORY_SANITIZE_VALUE     '\xff'
 +#endif
-+extern bool pax_sanitize_slab;
++enum pax_sanitize_mode {
++      PAX_SANITIZE_SLAB_OFF = 0,
++      PAX_SANITIZE_SLAB_FAST,
++      PAX_SANITIZE_SLAB_FULL,
++};
++extern enum pax_sanitize_mode pax_sanitize_slab;
 +#endif
 +
  unsigned long calculate_alignment(unsigned long flags,
                unsigned long align, unsigned long size);
  
-@@ -67,7 +76,8 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
+@@ -116,7 +130,8 @@ static inline unsigned long kmem_cache_flags(unsigned long object_size,
  
  /* Legal flag mask for kmem_cache_create(), for various configurations */
  #define SLAB_CORE_FLAGS (SLAB_HWCACHE_ALIGN | SLAB_CACHE_DMA | SLAB_PANIC | \
@@ -96372,7 +98439,7 @@ index 6bd4c35..97565a1 100644
  
  #if defined(CONFIG_DEBUG_SLAB)
  #define SLAB_DEBUG_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER)
-@@ -245,6 +255,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x)
+@@ -300,6 +315,9 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x)
                return s;
  
        page = virt_to_head_page(x);
@@ -96383,10 +98450,10 @@ index 6bd4c35..97565a1 100644
        if (slab_equal_or_root(cachep, s))
                return cachep;
 diff --git a/mm/slab_common.c b/mm/slab_common.c
-index 102cc6f..c7aab3d 100644
+index dcdab81..3576646 100644
 --- a/mm/slab_common.c
 +++ b/mm/slab_common.c
-@@ -23,11 +23,22 @@
+@@ -25,11 +25,35 @@
  
  #include "slab.h"
  
@@ -96397,30 +98464,75 @@ index 102cc6f..c7aab3d 100644
  struct kmem_cache *kmem_cache;
  
 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
-+bool pax_sanitize_slab __read_only = true;
++enum pax_sanitize_mode pax_sanitize_slab __read_only = PAX_SANITIZE_SLAB_FAST;
 +static int __init pax_sanitize_slab_setup(char *str)
 +{
-+      pax_sanitize_slab = !!simple_strtol(str, NULL, 0);
-+      printk("%sabled PaX slab sanitization\n", pax_sanitize_slab ? "En" : "Dis");
-+      return 1;
++      if (!str)
++              return 0;
++
++      if (!strcmp(str, "0") || !strcmp(str, "off")) {
++              pr_info("PaX slab sanitization: %s\n", "disabled");
++              pax_sanitize_slab = PAX_SANITIZE_SLAB_OFF;
++      } else if (!strcmp(str, "1") || !strcmp(str, "fast")) {
++              pr_info("PaX slab sanitization: %s\n", "fast");
++              pax_sanitize_slab = PAX_SANITIZE_SLAB_FAST;
++      } else if (!strcmp(str, "full")) {
++              pr_info("PaX slab sanitization: %s\n", "full");
++              pax_sanitize_slab = PAX_SANITIZE_SLAB_FULL;
++      } else
++              pr_err("PaX slab sanitization: unsupported option '%s'\n", str);
++
++      return 0;
 +}
-+__setup("pax_sanitize_slab=", pax_sanitize_slab_setup);
++early_param("pax_sanitize_slab", pax_sanitize_slab_setup);
 +#endif
 +
- #ifdef CONFIG_DEBUG_VM
- static int kmem_cache_sanity_check(const char *name, size_t size)
+ /*
+  * Set of flags that will prevent slab merging
+  */
+@@ -44,7 +68,7 @@ struct kmem_cache *kmem_cache;
+  * Merge control. If this is set then no merging of slab caches will occur.
+  * (Could be removed. This was introduced to pacify the merge skeptics.)
+  */
+-static int slab_nomerge;
++static int slab_nomerge = 1;
+ static int __init setup_slab_nomerge(char *str)
  {
-@@ -158,7 +169,7 @@ do_kmem_cache_create(char *name, size_t object_size, size_t size, size_t align,
+@@ -218,7 +242,7 @@ int slab_unmergeable(struct kmem_cache *s)
+       /*
+        * We may have set a slab to be unmergeable during bootstrap.
+        */
+-      if (s->refcount < 0)
++      if (atomic_read(&s->refcount) < 0)
+               return 1;
+       return 0;
+@@ -322,7 +346,7 @@ do_kmem_cache_create(char *name, size_t object_size, size_t size, size_t align,
        if (err)
                goto out_free_cache;
  
 -      s->refcount = 1;
 +      atomic_set(&s->refcount, 1);
        list_add(&s->list, &slab_caches);
-       memcg_register_cache(s);
  out:
-@@ -334,8 +345,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
-       get_online_cpus();
+       if (err)
+@@ -386,6 +410,13 @@ kmem_cache_create(const char *name, size_t size, size_t align,
+        */
+       flags &= CACHE_CREATE_MASK;
++#ifdef CONFIG_PAX_MEMORY_SANITIZE
++      if (pax_sanitize_slab == PAX_SANITIZE_SLAB_OFF || (flags & SLAB_DESTROY_BY_RCU))
++              flags |= SLAB_NO_SANITIZE;
++      else if (pax_sanitize_slab == PAX_SANITIZE_SLAB_FULL)
++              flags &= ~SLAB_NO_SANITIZE;
++#endif
++
+       s = __kmem_cache_alias(name, size, align, flags, ctor);
+       if (s)
+               goto out_unlock;
+@@ -505,8 +536,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
        mutex_lock(&slab_mutex);
  
 -      s->refcount--;
@@ -96428,8 +98540,8 @@ index 102cc6f..c7aab3d 100644
 +      if (!atomic_dec_and_test(&s->refcount))
                goto out_unlock;
  
-       if (kmem_cache_destroy_memcg_children(s) != 0)
-@@ -358,7 +368,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
+       if (memcg_cleanup_cache_params(s) != 0)
+@@ -526,7 +556,7 @@ void kmem_cache_destroy(struct kmem_cache *s)
                rcu_barrier();
  
        memcg_free_cache_params(s);
@@ -96438,7 +98550,7 @@ index 102cc6f..c7aab3d 100644
        sysfs_slab_remove(s);
  #else
        slab_kmem_cache_release(s);
-@@ -393,7 +403,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz
+@@ -582,7 +612,7 @@ void __init create_boot_cache(struct kmem_cache *s, const char *name, size_t siz
                panic("Creation of kmalloc slab %s size=%zu failed. Reason %d\n",
                                        name, size, err);
  
@@ -96447,7 +98559,7 @@ index 102cc6f..c7aab3d 100644
  }
  
  struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
-@@ -406,7 +416,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
+@@ -595,7 +625,7 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name, size_t size,
  
        create_boot_cache(s, name, size, flags);
        list_add(&s->list, &slab_caches);
@@ -96456,7 +98568,7 @@ index 102cc6f..c7aab3d 100644
        return s;
  }
  
-@@ -418,6 +428,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
+@@ -607,6 +637,11 @@ struct kmem_cache *kmalloc_dma_caches[KMALLOC_SHIFT_HIGH + 1];
  EXPORT_SYMBOL(kmalloc_dma_caches);
  #endif
  
@@ -96468,7 +98580,7 @@ index 102cc6f..c7aab3d 100644
  /*
   * Conversion table for small slabs sizes / 8 to the index in the
   * kmalloc array. This is necessary for slabs < 192 since we have non power
-@@ -482,6 +497,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags)
+@@ -671,6 +706,13 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags)
                return kmalloc_dma_caches[index];
  
  #endif
@@ -96482,7 +98594,7 @@ index 102cc6f..c7aab3d 100644
        return kmalloc_caches[index];
  }
  
-@@ -538,7 +560,7 @@ void __init create_kmalloc_caches(unsigned long flags)
+@@ -727,7 +769,7 @@ void __init create_kmalloc_caches(unsigned long flags)
        for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) {
                if (!kmalloc_caches[i]) {
                        kmalloc_caches[i] = create_kmalloc_cache(NULL,
@@ -96491,7 +98603,7 @@ index 102cc6f..c7aab3d 100644
                }
  
                /*
-@@ -547,10 +569,10 @@ void __init create_kmalloc_caches(unsigned long flags)
+@@ -736,10 +778,10 @@ void __init create_kmalloc_caches(unsigned long flags)
                 * earlier power of two caches
                 */
                if (KMALLOC_MIN_SIZE <= 32 && !kmalloc_caches[1] && i == 6)
@@ -96504,7 +98616,7 @@ index 102cc6f..c7aab3d 100644
        }
  
        /* Kmalloc array is now usable */
-@@ -583,6 +605,23 @@ void __init create_kmalloc_caches(unsigned long flags)
+@@ -772,6 +814,23 @@ void __init create_kmalloc_caches(unsigned long flags)
                }
        }
  #endif
@@ -96528,7 +98640,7 @@ index 102cc6f..c7aab3d 100644
  }
  #endif /* !CONFIG_SLOB */
  
-@@ -623,6 +662,9 @@ void print_slabinfo_header(struct seq_file *m)
+@@ -830,6 +889,9 @@ void print_slabinfo_header(struct seq_file *m)
        seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> "
                 "<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>");
        seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>");
@@ -96539,7 +98651,7 @@ index 102cc6f..c7aab3d 100644
        seq_putc(m, '\n');
  }
 diff --git a/mm/slob.c b/mm/slob.c
-index 730cad4..8cfd442 100644
+index 96a8620..3e7e663 100644
 --- a/mm/slob.c
 +++ b/mm/slob.c
 @@ -157,7 +157,7 @@ static void set_slob(slob_t *s, slobidx_t size, slob_t *next)
@@ -96620,6 +98732,15 @@ index 730cad4..8cfd442 100644
                INIT_LIST_HEAD(&sp->lru);
                set_slob(b, SLOB_UNITS(PAGE_SIZE), b + SLOB_UNITS(PAGE_SIZE));
                set_slob_page_free(sp, slob_list);
+@@ -337,7 +341,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node)
+ /*
+  * slob_free: entry point into the slob allocator.
+  */
+-static void slob_free(void *block, int size)
++static void slob_free(struct kmem_cache *c, void *block, int size)
+ {
+       struct page *sp;
+       slob_t *prev, *next, *b = (slob_t *)block;
 @@ -359,12 +363,15 @@ static void slob_free(void *block, int size)
                if (slob_page_free(sp))
                        clear_slob_page_free(sp);
@@ -96632,7 +98753,7 @@ index 730cad4..8cfd442 100644
        }
  
 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
-+      if (pax_sanitize_slab)
++      if (pax_sanitize_slab && !(c && (c->flags & SLAB_NO_SANITIZE)))
 +              memset(block, PAX_MEMORY_SANITIZE_VALUE, size);
 +#endif
 +
@@ -96699,7 +98820,7 @@ index 730cad4..8cfd442 100644
        return ret;
  }
  
-@@ -493,34 +517,112 @@ void kfree(const void *block)
+@@ -491,34 +515,112 @@ void kfree(const void *block)
                return;
        kmemleak_free(block);
  
@@ -96713,7 +98834,7 @@ index 730cad4..8cfd442 100644
 -              slob_free(m, *m + align);
 -      } else
 +              slob_t *m = (slob_t *)(block - align);
-+              slob_free(m, m[0].units + align);
++              slob_free(NULL, m, m[0].units + align);
 +      } else {
 +              __ClearPageSlab(sp);
 +              page_mapcount_reset(sp);
@@ -96821,7 +98942,7 @@ index 730cad4..8cfd442 100644
  }
  EXPORT_SYMBOL(ksize);
  
-@@ -536,23 +638,33 @@ int __kmem_cache_create(struct kmem_cache *c, unsigned long flags)
+@@ -534,23 +636,33 @@ int __kmem_cache_create(struct kmem_cache *c, unsigned long flags)
  
  void *slob_alloc_node(struct kmem_cache *c, gfp_t flags, int node)
  {
@@ -96857,24 +98978,34 @@ index 730cad4..8cfd442 100644
  
        if (b && c->ctor)
                c->ctor(b);
-@@ -584,10 +696,14 @@ EXPORT_SYMBOL(kmem_cache_alloc_node);
+@@ -580,12 +692,16 @@ void *kmem_cache_alloc_node(struct kmem_cache *cachep, gfp_t gfp, int node)
+ EXPORT_SYMBOL(kmem_cache_alloc_node);
+ #endif
  
- static void __kmem_cache_free(void *b, int size)
+-static void __kmem_cache_free(void *b, int size)
++static void __kmem_cache_free(struct kmem_cache *c, void *b, int size)
  {
 -      if (size < PAGE_SIZE)
+-              slob_free(b, size);
 +      struct page *sp;
 +
 +      sp = virt_to_page(b);
 +      BUG_ON(!PageSlab(sp));
 +      if (!sp->private)
-               slob_free(b, size);
++              slob_free(c, b, size);
        else
 -              slob_free_pages(b, get_order(size));
 +              slob_free_pages(sp, get_order(size));
  }
  
  static void kmem_rcu_free(struct rcu_head *head)
-@@ -600,17 +716,31 @@ static void kmem_rcu_free(struct rcu_head *head)
+@@ -593,22 +709,36 @@ static void kmem_rcu_free(struct rcu_head *head)
+       struct slob_rcu *slob_rcu = (struct slob_rcu *)head;
+       void *b = (void *)slob_rcu - (slob_rcu->size - sizeof(struct slob_rcu));
+-      __kmem_cache_free(b, slob_rcu->size);
++      __kmem_cache_free(NULL, b, slob_rcu->size);
+ }
  
  void kmem_cache_free(struct kmem_cache *c, void *b)
  {
@@ -96897,7 +99028,7 @@ index 730cad4..8cfd442 100644
                call_rcu(&slob_rcu->head, kmem_rcu_free);
        } else {
 -              __kmem_cache_free(b, c->size);
-+              __kmem_cache_free(b, size);
++              __kmem_cache_free(c, b, size);
        }
  
 +#ifdef CONFIG_PAX_USERCOPY_SLABS
@@ -96910,10 +99041,10 @@ index 730cad4..8cfd442 100644
  EXPORT_SYMBOL(kmem_cache_free);
  
 diff --git a/mm/slub.c b/mm/slub.c
-index 2b1ce69..4a2193f 100644
+index ae7b9f1..7b3fdbe 100644
 --- a/mm/slub.c
 +++ b/mm/slub.c
-@@ -207,7 +207,7 @@ struct track {
+@@ -197,7 +197,7 @@ struct track {
  
  enum track_item { TRACK_ALLOC, TRACK_FREE };
  
@@ -96922,21 +99053,21 @@ index 2b1ce69..4a2193f 100644
  static int sysfs_slab_add(struct kmem_cache *);
  static int sysfs_slab_alias(struct kmem_cache *, const char *);
  static void memcg_propagate_slab_attrs(struct kmem_cache *s);
-@@ -546,7 +546,7 @@ static void print_track(const char *s, struct track *t)
+@@ -535,7 +535,7 @@ static void print_track(const char *s, struct track *t)
        if (!t->addr)
                return;
  
--      printk(KERN_ERR "INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
-+      printk(KERN_ERR "INFO: %s in %pA age=%lu cpu=%u pid=%d\n",
-               s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
+-      pr_err("INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
++      pr_err("INFO: %s in %pA age=%lu cpu=%u pid=%d\n",
+              s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
  #ifdef CONFIG_STACKTRACE
        {
-@@ -2666,6 +2666,14 @@ static __always_inline void slab_free(struct kmem_cache *s,
+@@ -2645,6 +2645,14 @@ static __always_inline void slab_free(struct kmem_cache *s,
  
        slab_free_hook(s, x);
  
 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
-+      if (pax_sanitize_slab && !(s->flags & SLAB_NO_SANITIZE)) {
++      if (!(s->flags & SLAB_NO_SANITIZE)) {
 +              memset(x, PAX_MEMORY_SANITIZE_VALUE, s->object_size);
 +              if (s->ctor)
 +                      s->ctor(x);
@@ -96946,26 +99077,17 @@ index 2b1ce69..4a2193f 100644
  redo:
        /*
         * Determine the currently cpus per cpu slab.
-@@ -2733,7 +2741,7 @@ static int slub_min_objects;
-  * Merge control. If this is set then no merging of slab caches will occur.
-  * (Could be removed. This was introduced to pacify the merge skeptics.)
-  */
--static int slub_nomerge;
-+static int slub_nomerge = 1;
- /*
-  * Calculate the order of allocation given an slab object size.
-@@ -3014,6 +3022,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order)
+@@ -2982,6 +2990,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order)
        s->inuse = size;
  
        if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) ||
 +#ifdef CONFIG_PAX_MEMORY_SANITIZE
-+              (pax_sanitize_slab && !(flags & SLAB_NO_SANITIZE)) ||
++              (!(flags & SLAB_NO_SANITIZE)) ||
 +#endif
                s->ctor)) {
                /*
                 * Relocate free pointer after the object if it is not
-@@ -3343,6 +3354,59 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)
+@@ -3301,6 +3312,59 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node)
  EXPORT_SYMBOL(__kmalloc_node);
  #endif
  
@@ -97025,7 +99147,7 @@ index 2b1ce69..4a2193f 100644
  size_t ksize(const void *object)
  {
        struct page *page;
-@@ -3371,6 +3435,7 @@ void kfree(const void *x)
+@@ -3329,6 +3393,7 @@ void kfree(const void *x)
        if (unlikely(ZERO_OR_NULL_PTR(x)))
                return;
  
@@ -97033,16 +99155,7 @@ index 2b1ce69..4a2193f 100644
        page = virt_to_head_page(x);
        if (unlikely(!PageSlab(page))) {
                BUG_ON(!PageCompound(page));
-@@ -3679,7 +3744,7 @@ static int slab_unmergeable(struct kmem_cache *s)
-       /*
-        * We may have set a slab to be unmergeable during bootstrap.
-        */
--      if (s->refcount < 0)
-+      if (atomic_read(&s->refcount) < 0)
-               return 1;
-       return 0;
-@@ -3736,7 +3801,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
+@@ -3624,7 +3689,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
                int i;
                struct kmem_cache *c;
  
@@ -97051,7 +99164,7 @@ index 2b1ce69..4a2193f 100644
  
                /*
                 * Adjust the object sizes so that we clear
-@@ -3755,7 +3820,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
+@@ -3643,7 +3708,7 @@ __kmem_cache_alias(const char *name, size_t size, size_t align,
                }
  
                if (sysfs_slab_alias(s, name)) {
@@ -97060,7 +99173,7 @@ index 2b1ce69..4a2193f 100644
                        s = NULL;
                }
        }
-@@ -3872,7 +3937,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
+@@ -3760,7 +3825,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
  }
  #endif
  
@@ -97069,7 +99182,7 @@ index 2b1ce69..4a2193f 100644
  static int count_inuse(struct page *page)
  {
        return page->inuse;
-@@ -4156,7 +4221,11 @@ static int list_locations(struct kmem_cache *s, char *buf,
+@@ -4041,7 +4106,11 @@ static int list_locations(struct kmem_cache *s, char *buf,
                len += sprintf(buf + len, "%7ld ", l->count);
  
                if (l->addr)
@@ -97081,7 +99194,7 @@ index 2b1ce69..4a2193f 100644
                else
                        len += sprintf(buf + len, "<not-available>");
  
-@@ -4261,12 +4330,12 @@ static void resiliency_test(void)
+@@ -4143,12 +4212,12 @@ static void __init resiliency_test(void)
        validate_slab_cache(kmalloc_caches[9]);
  }
  #else
@@ -97096,7 +99209,7 @@ index 2b1ce69..4a2193f 100644
  enum slab_stat_type {
        SL_ALL,                 /* All slabs */
        SL_PARTIAL,             /* Only partially allocated slabs */
-@@ -4506,13 +4575,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf)
+@@ -4385,13 +4454,17 @@ static ssize_t ctor_show(struct kmem_cache *s, char *buf)
  {
        if (!s->ctor)
                return 0;
@@ -97110,12 +99223,12 @@ index 2b1ce69..4a2193f 100644
  
  static ssize_t aliases_show(struct kmem_cache *s, char *buf)
  {
--      return sprintf(buf, "%d\n", s->refcount - 1);
-+      return sprintf(buf, "%d\n", atomic_read(&s->refcount) - 1);
+-      return sprintf(buf, "%d\n", s->refcount < 0 ? 0 : s->refcount - 1);
++      return sprintf(buf, "%d\n", atomic_read(&s->refcount) < 0 ? 0 : atomic_read(&s->refcount) - 1);
  }
  SLAB_ATTR_RO(aliases);
  
-@@ -4600,6 +4673,14 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf)
+@@ -4479,6 +4552,22 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf)
  SLAB_ATTR_RO(cache_dma);
  #endif
  
@@ -97126,21 +99239,50 @@ index 2b1ce69..4a2193f 100644
 +}
 +SLAB_ATTR_RO(usercopy);
 +#endif
++
++#ifdef CONFIG_PAX_MEMORY_SANITIZE
++static ssize_t sanitize_show(struct kmem_cache *s, char *buf)
++{
++      return sprintf(buf, "%d\n", !(s->flags & SLAB_NO_SANITIZE));
++}
++SLAB_ATTR_RO(sanitize);
++#endif
 +
  static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf)
  {
        return sprintf(buf, "%d\n", !!(s->flags & SLAB_DESTROY_BY_RCU));
-@@ -4934,6 +5015,9 @@ static struct attribute *slab_attrs[] = {
+@@ -4534,7 +4623,7 @@ static ssize_t trace_store(struct kmem_cache *s, const char *buf,
+        * as well as cause other issues like converting a mergeable
+        * cache into an umergeable one.
+        */
+-      if (s->refcount > 1)
++      if (atomic_read(&s->refcount) > 1)
+               return -EINVAL;
+       s->flags &= ~SLAB_TRACE;
+@@ -4654,7 +4743,7 @@ static ssize_t failslab_show(struct kmem_cache *s, char *buf)
+ static ssize_t failslab_store(struct kmem_cache *s, const char *buf,
+                                                       size_t length)
+ {
+-      if (s->refcount > 1)
++      if (atomic_read(&s->refcount) > 1)
+               return -EINVAL;
+       s->flags &= ~SLAB_FAILSLAB;
+@@ -4824,6 +4913,12 @@ static struct attribute *slab_attrs[] = {
  #ifdef CONFIG_ZONE_DMA
        &cache_dma_attr.attr,
  #endif
 +#ifdef CONFIG_PAX_USERCOPY_SLABS
 +      &usercopy_attr.attr,
++#endif
++#ifdef CONFIG_PAX_MEMORY_SANITIZE
++      &sanitize_attr.attr,
 +#endif
  #ifdef CONFIG_NUMA
        &remote_node_defrag_ratio_attr.attr,
  #endif
-@@ -5184,6 +5268,7 @@ static char *create_unique_id(struct kmem_cache *s)
+@@ -5068,6 +5163,7 @@ static char *create_unique_id(struct kmem_cache *s)
        return name;
  }
  
@@ -97148,7 +99290,7 @@ index 2b1ce69..4a2193f 100644
  static int sysfs_slab_add(struct kmem_cache *s)
  {
        int err;
-@@ -5257,6 +5342,7 @@ void sysfs_slab_remove(struct kmem_cache *s)
+@@ -5141,6 +5237,7 @@ void sysfs_slab_remove(struct kmem_cache *s)
        kobject_del(&s->kobj);
        kobject_put(&s->kobj);
  }
@@ -97156,7 +99298,7 @@ index 2b1ce69..4a2193f 100644
  
  /*
   * Need to buffer aliases during bootup until sysfs becomes
-@@ -5270,6 +5356,7 @@ struct saved_alias {
+@@ -5154,6 +5251,7 @@ struct saved_alias {
  
  static struct saved_alias *alias_list;
  
@@ -97164,7 +99306,7 @@ index 2b1ce69..4a2193f 100644
  static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
  {
        struct saved_alias *al;
-@@ -5292,6 +5379,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
+@@ -5176,6 +5274,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
        alias_list = al;
        return 0;
  }
@@ -97208,7 +99350,7 @@ index d1b48b6..6e8590e 100644
                }
        }
 diff --git a/mm/swap.c b/mm/swap.c
-index 9ce43ba..43bdc4c 100644
+index 8a12b33..7068e78 100644
 --- a/mm/swap.c
 +++ b/mm/swap.c
 @@ -31,6 +31,7 @@
@@ -97219,7 +99361,7 @@ index 9ce43ba..43bdc4c 100644
  
  #include "internal.h"
  
-@@ -76,6 +77,8 @@ static void __put_compound_page(struct page *page)
+@@ -77,6 +78,8 @@ static void __put_compound_page(struct page *page)
  
        __page_cache_release(page);
        dtor = get_compound_page_dtor(page);
@@ -97229,10 +99371,10 @@ index 9ce43ba..43bdc4c 100644
  }
  
 diff --git a/mm/swapfile.c b/mm/swapfile.c
-index 4a7f7e6..22cddf5 100644
+index 8798b2e..348f9dd 100644
 --- a/mm/swapfile.c
 +++ b/mm/swapfile.c
-@@ -66,7 +66,7 @@ static DEFINE_MUTEX(swapon_mutex);
+@@ -84,7 +84,7 @@ static DEFINE_MUTEX(swapon_mutex);
  
  static DECLARE_WAIT_QUEUE_HEAD(proc_poll_wait);
  /* Activity counter to indicate that a swapon or swapoff has occurred */
@@ -97241,7 +99383,7 @@ index 4a7f7e6..22cddf5 100644
  
  static inline unsigned char swap_count(unsigned char ent)
  {
-@@ -1959,7 +1959,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
+@@ -1944,7 +1944,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
        spin_unlock(&swap_lock);
  
        err = 0;
@@ -97250,7 +99392,7 @@ index 4a7f7e6..22cddf5 100644
        wake_up_interruptible(&proc_poll_wait);
  
  out_dput:
-@@ -1976,8 +1976,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait)
+@@ -1961,8 +1961,8 @@ static unsigned swaps_poll(struct file *file, poll_table *wait)
  
        poll_wait(file, &proc_poll_wait, wait);
  
@@ -97261,7 +99403,7 @@ index 4a7f7e6..22cddf5 100644
                return POLLIN | POLLRDNORM | POLLERR | POLLPRI;
        }
  
-@@ -2075,7 +2075,7 @@ static int swaps_open(struct inode *inode, struct file *file)
+@@ -2060,7 +2060,7 @@ static int swaps_open(struct inode *inode, struct file *file)
                return ret;
  
        seq = file->private_data;
@@ -97270,7 +99412,7 @@ index 4a7f7e6..22cddf5 100644
        return 0;
  }
  
-@@ -2534,7 +2534,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
+@@ -2520,7 +2520,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
                (frontswap_map) ? "FS" : "");
  
        mutex_unlock(&swapon_mutex);
@@ -97280,10 +99422,10 @@ index 4a7f7e6..22cddf5 100644
  
        if (S_ISREG(inode->i_mode))
 diff --git a/mm/util.c b/mm/util.c
-index d5ea733..e8953f9 100644
+index fec39d4..3e60325 100644
 --- a/mm/util.c
 +++ b/mm/util.c
-@@ -299,6 +299,12 @@ done:
+@@ -195,6 +195,12 @@ struct task_struct *task_of_stack(struct task_struct *task,
  void arch_pick_mmap_layout(struct mm_struct *mm)
  {
        mm->mmap_base = TASK_UNMAPPED_BASE;
@@ -97296,7 +99438,7 @@ index d5ea733..e8953f9 100644
        mm->get_unmapped_area = arch_get_unmapped_area;
  }
  #endif
-@@ -475,6 +481,9 @@ int get_cmdline(struct task_struct *task, char *buffer, int buflen)
+@@ -371,6 +377,9 @@ int get_cmdline(struct task_struct *task, char *buffer, int buflen)
        if (!mm->arg_end)
                goto out_mm;    /* Shh! No looking before we're done */
  
@@ -97307,7 +99449,7 @@ index d5ea733..e8953f9 100644
  
        if (len > buflen)
 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
-index bf233b2..1dfa1bc 100644
+index 90520af..24231aa 100644
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
 @@ -40,6 +40,21 @@ struct vfree_deferred {
@@ -97357,7 +99499,7 @@ index bf233b2..1dfa1bc 100644
 +              void *lowmem_stack = ACCESS_ONCE(x->lowmem_stack);
 +              llnode = llist_next(llnode);
 +              __vunmap(stack, 0);
-+              free_memcg_kmem_pages((unsigned long)lowmem_stack, THREAD_SIZE_ORDER);
++              free_kmem_pages((unsigned long)lowmem_stack, THREAD_SIZE_ORDER);
 +      }
 +}
 +#endif
@@ -97489,7 +99631,7 @@ index bf233b2..1dfa1bc 100644
        }
  
        /* Import existing vmlist entries. */
-@@ -1317,6 +1396,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size,
+@@ -1314,6 +1393,16 @@ static struct vm_struct *__get_vm_area_node(unsigned long size,
        struct vm_struct *area;
  
        BUG_ON(in_interrupt());
@@ -97506,7 +99648,7 @@ index bf233b2..1dfa1bc 100644
        if (flags & VM_IOREMAP)
                align = 1ul << clamp(fls(size), PAGE_SHIFT, IOREMAP_MAX_ORDER);
  
-@@ -1522,6 +1611,23 @@ void vunmap(const void *addr)
+@@ -1519,6 +1608,23 @@ void vunmap(const void *addr)
  }
  EXPORT_SYMBOL(vunmap);
  
@@ -97522,7 +99664,7 @@ index bf233b2..1dfa1bc 100644
 +                      schedule_work(&p->wq);
 +      } else {
 +              __vunmap(task->stack, 0);
-+              free_memcg_kmem_pages((unsigned long)task->lowmem_stack, THREAD_SIZE_ORDER);
++              free_kmem_pages((unsigned long)task->lowmem_stack, THREAD_SIZE_ORDER);
 +      }
 +}
 +#endif
@@ -97530,7 +99672,7 @@ index bf233b2..1dfa1bc 100644
  /**
   *    vmap  -  map an array of pages into virtually contiguous space
   *    @pages:         array of page pointers
-@@ -1542,6 +1648,11 @@ void *vmap(struct page **pages, unsigned int count,
+@@ -1539,6 +1645,11 @@ void *vmap(struct page **pages, unsigned int count,
        if (count > totalram_pages)
                return NULL;
  
@@ -97542,7 +99684,7 @@ index bf233b2..1dfa1bc 100644
        area = get_vm_area_caller((count << PAGE_SHIFT), flags,
                                        __builtin_return_address(0));
        if (!area)
-@@ -1642,6 +1753,13 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
+@@ -1641,6 +1752,13 @@ void *__vmalloc_node_range(unsigned long size, unsigned long align,
        if (!size || (size >> PAGE_SHIFT) > totalram_pages)
                goto fail;
  
@@ -97556,7 +99698,7 @@ index bf233b2..1dfa1bc 100644
        area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED,
                                  start, end, node, gfp_mask, caller);
        if (!area)
-@@ -1818,10 +1936,9 @@ EXPORT_SYMBOL(vzalloc_node);
+@@ -1817,10 +1935,9 @@ EXPORT_SYMBOL(vzalloc_node);
   *    For tight control over page level allocator and protection flags
   *    use __vmalloc() instead.
   */
@@ -97568,7 +99710,7 @@ index bf233b2..1dfa1bc 100644
                              NUMA_NO_NODE, __builtin_return_address(0));
  }
  
-@@ -2128,6 +2245,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
+@@ -2127,6 +2244,8 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
  {
        struct vm_struct *area;
  
@@ -97577,7 +99719,7 @@ index bf233b2..1dfa1bc 100644
        size = PAGE_ALIGN(size);
  
        if (!PAGE_ALIGNED(uaddr) || !PAGE_ALIGNED(kaddr))
-@@ -2610,7 +2729,11 @@ static int s_show(struct seq_file *m, void *p)
+@@ -2609,7 +2728,11 @@ static int s_show(struct seq_file *m, void *p)
                v->addr, v->addr + v->size, v->size);
  
        if (v->caller)
@@ -97590,10 +99732,10 @@ index bf233b2..1dfa1bc 100644
        if (v->nr_pages)
                seq_printf(m, " pages=%d", v->nr_pages);
 diff --git a/mm/vmstat.c b/mm/vmstat.c
-index 302dd07..3841f1c 100644
+index 1b12d39..57b29b2 100644
 --- a/mm/vmstat.c
 +++ b/mm/vmstat.c
-@@ -20,6 +20,7 @@
+@@ -22,6 +22,7 @@
  #include <linux/writeback.h>
  #include <linux/compaction.h>
  #include <linux/mm_inline.h>
@@ -97601,7 +99743,7 @@ index 302dd07..3841f1c 100644
  
  #include "internal.h"
  
-@@ -79,7 +80,7 @@ void vm_events_fold_cpu(int cpu)
+@@ -81,7 +82,7 @@ void vm_events_fold_cpu(int cpu)
   *
   * vm_stat contains the global counters
   */
@@ -97610,16 +99752,16 @@ index 302dd07..3841f1c 100644
  EXPORT_SYMBOL(vm_stat);
  
  #ifdef CONFIG_SMP
-@@ -423,7 +424,7 @@ static inline void fold_diff(int *diff)
+@@ -433,7 +434,7 @@ static int fold_diff(int *diff)
  
        for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
-               if (diff[i])
+               if (diff[i]) {
 -                      atomic_long_add(diff[i], &vm_stat[i]);
 +                      atomic_long_add_unchecked(diff[i], &vm_stat[i]);
- }
- /*
-@@ -455,7 +456,7 @@ static void refresh_cpu_vm_stats(void)
+                       changes++;
+       }
+       return changes;
+@@ -471,7 +472,7 @@ static int refresh_cpu_vm_stats(void)
                        v = this_cpu_xchg(p->vm_stat_diff[i], 0);
                        if (v) {
  
@@ -97628,7 +99770,7 @@ index 302dd07..3841f1c 100644
                                global_diff[i] += v;
  #ifdef CONFIG_NUMA
                                /* 3 seconds idle till flush */
-@@ -517,7 +518,7 @@ void cpu_vm_stats_fold(int cpu)
+@@ -535,7 +536,7 @@ void cpu_vm_stats_fold(int cpu)
  
                                v = p->vm_stat_diff[i];
                                p->vm_stat_diff[i] = 0;
@@ -97637,7 +99779,7 @@ index 302dd07..3841f1c 100644
                                global_diff[i] += v;
                        }
        }
-@@ -537,8 +538,8 @@ void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset)
+@@ -555,8 +556,8 @@ void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset)
                if (pset->vm_stat_diff[i]) {
                        int v = pset->vm_stat_diff[i];
                        pset->vm_stat_diff[i] = 0;
@@ -97648,7 +99790,7 @@ index 302dd07..3841f1c 100644
                }
  }
  #endif
-@@ -1156,10 +1157,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
+@@ -1189,10 +1190,22 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
        stat_items_size += sizeof(struct vm_event_state);
  #endif
  
@@ -97672,7 +99814,7 @@ index 302dd07..3841f1c 100644
        for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++)
                v[i] = global_page_state(i);
        v += NR_VM_ZONE_STAT_ITEMS;
-@@ -1308,10 +1321,16 @@ static int __init setup_vmstat(void)
+@@ -1424,10 +1437,16 @@ static int __init setup_vmstat(void)
        cpu_notifier_register_done();
  #endif
  #ifdef CONFIG_PROC_FS
@@ -97694,10 +99836,10 @@ index 302dd07..3841f1c 100644
        return 0;
  }
 diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
-index 44ebd5c..1f732bae 100644
+index 64c6bed..b79a5de 100644
 --- a/net/8021q/vlan.c
 +++ b/net/8021q/vlan.c
-@@ -475,7 +475,7 @@ out:
+@@ -481,7 +481,7 @@ out:
        return NOTIFY_DONE;
  }
  
@@ -97706,7 +99848,7 @@ index 44ebd5c..1f732bae 100644
        .notifier_call = vlan_device_event,
  };
  
-@@ -550,8 +550,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg)
+@@ -556,8 +556,7 @@ static int vlan_ioctl_handler(struct net *net, void __user *arg)
                err = -EPERM;
                if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
                        break;
@@ -97716,8 +99858,21 @@ index 44ebd5c..1f732bae 100644
                        struct vlan_net *vn;
  
                        vn = net_generic(net, vlan_net_id);
+diff --git a/net/8021q/vlan_netlink.c b/net/8021q/vlan_netlink.c
+index 8ac8a5c..991defc 100644
+--- a/net/8021q/vlan_netlink.c
++++ b/net/8021q/vlan_netlink.c
+@@ -238,7 +238,7 @@ nla_put_failure:
+       return -EMSGSIZE;
+ }
+-struct rtnl_link_ops vlan_link_ops __read_mostly = {
++struct rtnl_link_ops vlan_link_ops = {
+       .kind           = "vlan",
+       .maxtype        = IFLA_VLAN_MAX,
+       .policy         = vlan_policy,
 diff --git a/net/9p/client.c b/net/9p/client.c
-index 0004cba..feba240 100644
+index e86a9bea..e91f70e 100644
 --- a/net/9p/client.c
 +++ b/net/9p/client.c
 @@ -596,7 +596,7 @@ static int p9_check_zc_errors(struct p9_client *c, struct p9_req_t *req,
@@ -97729,7 +99884,7 @@ index 0004cba..feba240 100644
                                if (err) {
                                        err = -EFAULT;
                                        goto out_err;
-@@ -1571,7 +1571,7 @@ p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset,
+@@ -1570,7 +1570,7 @@ p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset,
                        kernel_buf = 1;
                        indata = data;
                } else
@@ -97738,7 +99893,7 @@ index 0004cba..feba240 100644
                /*
                 * response header len is 11
                 * PDU Header(7) + IO Size (4)
-@@ -1646,7 +1646,7 @@ p9_client_write(struct p9_fid *fid, char *data, const char __user *udata,
+@@ -1645,7 +1645,7 @@ p9_client_write(struct p9_fid *fid, char *data, const char __user *udata,
                        kernel_buf = 1;
                        odata = data;
                } else
@@ -97836,7 +99991,7 @@ index 876fbe8..8bbea9f 100644
  #undef __HANDLE_ITEM
  }
 diff --git a/net/atm/lec.c b/net/atm/lec.c
-index 4c5b8ba..95f7005 100644
+index 4b98f89..5a2f6cb 100644
 --- a/net/atm/lec.c
 +++ b/net/atm/lec.c
 @@ -111,9 +111,9 @@ static inline void lec_arp_put(struct lec_arp_table *entry)
@@ -97974,10 +100129,10 @@ index 919a5ce..cc6b444 100644
        table = kmemdup(ax25_param_table, sizeof(ax25_param_table), GFP_KERNEL);
        if (!table)
 diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
-index f04224c..f326579 100644
+index 1e80539..676c37a 100644
 --- a/net/batman-adv/bat_iv_ogm.c
 +++ b/net/batman-adv/bat_iv_ogm.c
-@@ -312,7 +312,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface)
+@@ -313,7 +313,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface)
  
        /* randomize initial seqno to avoid collision */
        get_random_bytes(&random_seqno, sizeof(random_seqno));
@@ -97986,7 +100141,7 @@ index f04224c..f326579 100644
  
        hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN;
        ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC);
-@@ -917,9 +917,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface)
+@@ -918,9 +918,9 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface)
        batadv_ogm_packet->tvlv_len = htons(tvlv_len);
  
        /* change sequence number to network order */
@@ -97998,7 +100153,7 @@ index f04224c..f326579 100644
  
        batadv_iv_ogm_slide_own_bcast_window(hard_iface);
  
-@@ -1596,7 +1596,7 @@ static void batadv_iv_ogm_process(const struct sk_buff *skb, int ogm_offset,
+@@ -1597,7 +1597,7 @@ static void batadv_iv_ogm_process(const struct sk_buff *skb, int ogm_offset,
                return;
  
        /* could be changed by schedule_own_packet() */
@@ -98008,10 +100163,19 @@ index f04224c..f326579 100644
        if (ogm_packet->flags & BATADV_DIRECTLINK)
                has_directlink_flag = true;
 diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
-index f14e54a..66f3e2e 100644
+index fc1835c..42f2c2f 100644
 --- a/net/batman-adv/fragmentation.c
 +++ b/net/batman-adv/fragmentation.c
-@@ -446,7 +446,7 @@ bool batadv_frag_send_packet(struct sk_buff *skb,
+@@ -251,7 +251,7 @@ batadv_frag_merge_packets(struct hlist_head *chain, struct sk_buff *skb)
+       kfree(entry);
+       /* Make room for the rest of the fragments. */
+-      if (pskb_expand_head(skb_out, 0, size - skb->len, GFP_ATOMIC) < 0) {
++      if (pskb_expand_head(skb_out, 0, size - skb_out->len, GFP_ATOMIC) < 0) {
+               kfree_skb(skb_out);
+               skb_out = NULL;
+               goto free;
+@@ -450,7 +450,7 @@ bool batadv_frag_send_packet(struct sk_buff *skb,
        frag_header.packet_type = BATADV_UNICAST_FRAG;
        frag_header.version = BATADV_COMPAT_VERSION;
        frag_header.ttl = BATADV_TTL;
@@ -98021,7 +100185,7 @@ index f14e54a..66f3e2e 100644
        frag_header.no = 0;
        frag_header.total_size = htons(skb->len);
 diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
-index 744a59b..8fd037c 100644
+index 5467955..75ad4e3 100644
 --- a/net/batman-adv/soft-interface.c
 +++ b/net/batman-adv/soft-interface.c
 @@ -296,7 +296,7 @@ send:
@@ -98033,7 +100197,7 @@ index 744a59b..8fd037c 100644
                bcast_packet->seqno = htonl(seqno);
  
                batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay);
-@@ -729,7 +729,7 @@ static int batadv_softif_init_late(struct net_device *dev)
+@@ -761,7 +761,7 @@ static int batadv_softif_init_late(struct net_device *dev)
        atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN);
  
        atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE);
@@ -98042,7 +100206,7 @@ index 744a59b..8fd037c 100644
        atomic_set(&bat_priv->tt.vn, 0);
        atomic_set(&bat_priv->tt.local_changes, 0);
        atomic_set(&bat_priv->tt.ogm_append_cnt, 0);
-@@ -743,7 +743,7 @@ static int batadv_softif_init_late(struct net_device *dev)
+@@ -775,7 +775,7 @@ static int batadv_softif_init_late(struct net_device *dev)
  
        /* randomize initial seqno to avoid collision */
        get_random_bytes(&random_seqno, sizeof(random_seqno));
@@ -98051,8 +100215,17 @@ index 744a59b..8fd037c 100644
  
        bat_priv->primary_if = NULL;
        bat_priv->num_ifaces = 0;
+@@ -983,7 +983,7 @@ int batadv_softif_is_valid(const struct net_device *net_dev)
+       return 0;
+ }
+-struct rtnl_link_ops batadv_link_ops __read_mostly = {
++struct rtnl_link_ops batadv_link_ops = {
+       .kind           = "batadv",
+       .priv_size      = sizeof(struct batadv_priv),
+       .setup          = batadv_softif_init_early,
 diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
-index 34891a5..3cfece0 100644
+index 8854c05..ee5d5497 100644
 --- a/net/batman-adv/types.h
 +++ b/net/batman-adv/types.h
 @@ -67,7 +67,7 @@ enum batadv_dhcp_recipient {
@@ -98064,7 +100237,7 @@ index 34891a5..3cfece0 100644
  };
  
  /**
-@@ -766,7 +766,7 @@ struct batadv_priv {
+@@ -768,7 +768,7 @@ struct batadv_priv {
        atomic_t bonding;
        atomic_t fragmentation;
        atomic_t packet_size_max;
@@ -98073,7 +100246,7 @@ index 34891a5..3cfece0 100644
  #ifdef CONFIG_BATMAN_ADV_BLA
        atomic_t bridge_loop_avoidance;
  #endif
-@@ -785,7 +785,7 @@ struct batadv_priv {
+@@ -787,7 +787,7 @@ struct batadv_priv {
  #endif
        uint32_t isolation_mark;
        uint32_t isolation_mark_mask;
@@ -98082,11 +100255,51 @@ index 34891a5..3cfece0 100644
        atomic_t bcast_queue_left;
        atomic_t batman_queue_left;
        char num_ifaces;
+diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
+index c2e0d14..bfa852b 100644
+--- a/net/bluetooth/6lowpan.c
++++ b/net/bluetooth/6lowpan.c
+@@ -367,7 +367,6 @@ static int recv_pkt(struct sk_buff *skb, struct net_device *dev,
+ drop:
+       dev->stats.rx_dropped++;
+-      kfree_skb(skb);
+       return NET_RX_DROP;
+ }
+diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c
+index 85bcc21..ce82722d 100644
+--- a/net/bluetooth/bnep/core.c
++++ b/net/bluetooth/bnep/core.c
+@@ -533,6 +533,9 @@ int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
+       BT_DBG("");
++      if (!l2cap_is_socket(sock))
++              return -EBADFD;
++
+       baswap((void *) dst, &l2cap_pi(sock->sk)->chan->dst);
+       baswap((void *) src, &l2cap_pi(sock->sk)->chan->src);
+diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
+index 67fe5e8..278a194 100644
+--- a/net/bluetooth/cmtp/core.c
++++ b/net/bluetooth/cmtp/core.c
+@@ -334,6 +334,9 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
+       BT_DBG("");
++      if (!l2cap_is_socket(sock))
++              return -EBADFD;
++
+       session = kzalloc(sizeof(struct cmtp_session), GFP_KERNEL);
+       if (!session)
+               return -ENOMEM;
 diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
-index b9a418e..2af862a 100644
+index 115f149..f0ba286 100644
 --- a/net/bluetooth/hci_sock.c
 +++ b/net/bluetooth/hci_sock.c
-@@ -1053,7 +1053,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
+@@ -1067,7 +1067,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
                        uf.event_mask[1] = *((u32 *) f->event_mask + 1);
                }
  
@@ -98095,11 +100308,31 @@ index b9a418e..2af862a 100644
                if (copy_from_user(&uf, optval, len)) {
                        err = -EFAULT;
                        break;
+diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
+index 1b7d605..02ebd10 100644
+--- a/net/bluetooth/hidp/core.c
++++ b/net/bluetooth/hidp/core.c
+@@ -1318,13 +1318,14 @@ int hidp_connection_add(struct hidp_connadd_req *req,
+ {
+       struct hidp_session *session;
+       struct l2cap_conn *conn;
+-      struct l2cap_chan *chan = l2cap_pi(ctrl_sock->sk)->chan;
++      struct l2cap_chan *chan;
+       int ret;
+       ret = hidp_verify_sockets(ctrl_sock, intr_sock);
+       if (ret)
+               return ret;
++      chan = l2cap_pi(ctrl_sock->sk)->chan;
+       conn = NULL;
+       l2cap_chan_lock(chan);
+       if (chan->conn)
 diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
-index 1c97b7a..9171d69 100644
+index b6f9777..36d3039 100644
 --- a/net/bluetooth/l2cap_core.c
 +++ b/net/bluetooth/l2cap_core.c
-@@ -3542,8 +3542,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len,
+@@ -3512,8 +3512,10 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len,
                        break;
  
                case L2CAP_CONF_RFC:
@@ -98113,7 +100346,7 @@ index 1c97b7a..9171d69 100644
                        if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) &&
                            rfc.mode != chan->mode)
 diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
-index e137869..33f3ebd 100644
+index 31f106e..323f606 100644
 --- a/net/bluetooth/l2cap_sock.c
 +++ b/net/bluetooth/l2cap_sock.c
 @@ -628,7 +628,8 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
@@ -98154,7 +100387,7 @@ index e137869..33f3ebd 100644
                if (copy_from_user((char *) &sec, optval, len)) {
                        err = -EFAULT;
                        break;
-@@ -861,7 +863,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
+@@ -862,7 +864,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
  
                pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
  
@@ -98164,7 +100397,7 @@ index e137869..33f3ebd 100644
                        err = -EFAULT;
                        break;
 diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
-index c603a5e..7f08991 100644
+index 8bbbb5e..6fc0950 100644
 --- a/net/bluetooth/rfcomm/sock.c
 +++ b/net/bluetooth/rfcomm/sock.c
 @@ -687,7 +687,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c
@@ -98186,7 +100419,7 @@ index c603a5e..7f08991 100644
                        err = -EFAULT;
                        break;
 diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
-index 403ec09..a21a003 100644
+index 8e385a0..a5bdd8e 100644
 --- a/net/bluetooth/rfcomm/tty.c
 +++ b/net/bluetooth/rfcomm/tty.c
 @@ -752,7 +752,7 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
@@ -98207,11 +100440,24 @@ index 403ec09..a21a003 100644
  
        tty_port_close(&dev->port, tty, filp);
  }
+diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
+index e5ec470..cbfabd1 100644
+--- a/net/bridge/br_netlink.c
++++ b/net/bridge/br_netlink.c
+@@ -564,7 +564,7 @@ static struct rtnl_af_ops br_af_ops = {
+       .get_link_af_size       = br_get_link_af_size,
+ };
+-struct rtnl_link_ops br_link_ops __read_mostly = {
++struct rtnl_link_ops br_link_ops = {
+       .kind                   = "bridge",
+       .priv_size              = sizeof(struct net_bridge),
+       .setup                  = br_dev_setup,
 diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
-index 1059ed3..d70846a 100644
+index d9a8c05..8dadc6c6 100644
 --- a/net/bridge/netfilter/ebtables.c
 +++ b/net/bridge/netfilter/ebtables.c
-@@ -1524,7 +1524,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
+@@ -1533,7 +1533,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
                        tmp.valid_hooks = t->table->valid_hooks;
                }
                mutex_unlock(&ebt_mutex);
@@ -98220,7 +100466,7 @@ index 1059ed3..d70846a 100644
                        BUGPRINT("c2u Didn't work\n");
                        ret = -EFAULT;
                        break;
-@@ -2330,7 +2330,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
+@@ -2339,7 +2339,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
                        goto out;
                tmp.valid_hooks = t->valid_hooks;
  
@@ -98229,7 +100475,7 @@ index 1059ed3..d70846a 100644
                        ret = -EFAULT;
                        break;
                }
-@@ -2341,7 +2341,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
+@@ -2350,7 +2350,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
                tmp.entries_size = t->table->entries_size;
                tmp.valid_hooks = t->table->valid_hooks;
  
@@ -98239,7 +100485,7 @@ index 1059ed3..d70846a 100644
                        break;
                }
 diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c
-index 0f45522..dab651f 100644
+index f5afda1..dcf770a 100644
 --- a/net/caif/cfctrl.c
 +++ b/net/caif/cfctrl.c
 @@ -10,6 +10,7 @@
@@ -98281,11 +100527,24 @@ index 0f45522..dab651f 100644
                                         p->sequence_no);
                        list_del(&p->list);
                        goto out;
+diff --git a/net/caif/chnl_net.c b/net/caif/chnl_net.c
+index 4589ff67..46d6b8f 100644
+--- a/net/caif/chnl_net.c
++++ b/net/caif/chnl_net.c
+@@ -516,7 +516,7 @@ static const struct nla_policy ipcaif_policy[IFLA_CAIF_MAX + 1] = {
+ };
+-static struct rtnl_link_ops ipcaif_link_ops __read_mostly = {
++static struct rtnl_link_ops ipcaif_link_ops = {
+       .kind           = "caif",
+       .priv_size      = sizeof(struct chnl_net),
+       .setup          = ipcaif_net_setup,
 diff --git a/net/can/af_can.c b/net/can/af_can.c
-index a27f8aa..67174a3 100644
+index ce82337..5d17b4d 100644
 --- a/net/can/af_can.c
 +++ b/net/can/af_can.c
-@@ -863,7 +863,7 @@ static const struct net_proto_family can_family_ops = {
+@@ -884,7 +884,7 @@ static const struct net_proto_family can_family_ops = {
  };
  
  /* notifier block for netdevice event */
@@ -98339,10 +100598,10 @@ index 050a211..bb9fe33 100644
  
        if (__rtnl_register(PF_CAN, RTM_GETROUTE, NULL, cgw_dump_jobs, NULL)) {
 diff --git a/net/can/proc.c b/net/can/proc.c
-index b543470..d2ddae2 100644
+index 1a19b98..df2b4ec 100644
 --- a/net/can/proc.c
 +++ b/net/can/proc.c
-@@ -468,7 +468,7 @@ static void can_remove_proc_readentry(const char *name)
+@@ -514,7 +514,7 @@ static void can_remove_proc_readentry(const char *name)
  void can_init_proc(void)
  {
        /* create /proc/net/can directory */
@@ -98352,10 +100611,10 @@ index b543470..d2ddae2 100644
        if (!can_dir) {
                printk(KERN_INFO "can: failed to create /proc/net/can . "
 diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
-index 1948d59..9e854d5 100644
+index 8d1653c..77ad145 100644
 --- a/net/ceph/messenger.c
 +++ b/net/ceph/messenger.c
-@@ -187,7 +187,7 @@ static void con_fault(struct ceph_connection *con);
+@@ -188,7 +188,7 @@ static void con_fault(struct ceph_connection *con);
  #define MAX_ADDR_STR_LEN      64      /* 54 is enough */
  
  static char addr_str[ADDR_STR_COUNT][MAX_ADDR_STR_LEN];
@@ -98364,7 +100623,7 @@ index 1948d59..9e854d5 100644
  
  static struct page *zero_page;                /* used in certain error cases */
  
-@@ -198,7 +198,7 @@ const char *ceph_pr_addr(const struct sockaddr_storage *ss)
+@@ -199,7 +199,7 @@ const char *ceph_pr_addr(const struct sockaddr_storage *ss)
        struct sockaddr_in *in4 = (struct sockaddr_in *) ss;
        struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) ss;
  
@@ -98374,7 +100633,7 @@ index 1948d59..9e854d5 100644
  
        switch (ss->ss_family) {
 diff --git a/net/compat.c b/net/compat.c
-index 9a76eaf..5b8ccfd 100644
+index bc8aeef..f9c070c 100644
 --- a/net/compat.c
 +++ b/net/compat.c
 @@ -73,9 +73,9 @@ int get_compat_msghdr(struct msghdr *kmsg, struct compat_msghdr __user *umsg)
@@ -98392,15 +100651,15 @@ index 9a76eaf..5b8ccfd 100644
  
 @@ -87,7 +87,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
  
-       if (kern_msg->msg_namelen) {
+       if (kern_msg->msg_name && kern_msg->msg_namelen) {
                if (mode == VERIFY_READ) {
 -                      int err = move_addr_to_kernel(kern_msg->msg_name,
 +                      int err = move_addr_to_kernel((void __force_user *)kern_msg->msg_name,
                                                      kern_msg->msg_namelen,
                                                      kern_address);
                        if (err < 0)
-@@ -99,7 +99,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
-               kern_msg->msg_name = NULL;
+@@ -100,7 +100,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
+       }
  
        tot_len = iov_from_user_compat_to_kern(kern_iov,
 -                                        (struct compat_iovec __user *)kern_msg->msg_iov,
@@ -98408,7 +100667,7 @@ index 9a76eaf..5b8ccfd 100644
                                          kern_msg->msg_iovlen);
        if (tot_len >= 0)
                kern_msg->msg_iov = kern_iov;
-@@ -119,20 +119,20 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
+@@ -120,20 +120,20 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
  
  #define CMSG_COMPAT_FIRSTHDR(msg)                     \
        (((msg)->msg_controllen) >= sizeof(struct compat_cmsghdr) ?     \
@@ -98432,7 +100691,7 @@ index 9a76eaf..5b8ccfd 100644
                        msg->msg_controllen)
                return NULL;
        return (struct compat_cmsghdr __user *)ptr;
-@@ -222,7 +222,7 @@ Efault:
+@@ -223,7 +223,7 @@ Efault:
  
  int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *data)
  {
@@ -98441,7 +100700,7 @@ index 9a76eaf..5b8ccfd 100644
        struct compat_cmsghdr cmhdr;
        struct compat_timeval ctv;
        struct compat_timespec cts[3];
-@@ -278,7 +278,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
+@@ -279,7 +279,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
  
  void scm_detach_fds_compat(struct msghdr *kmsg, struct scm_cookie *scm)
  {
@@ -98450,7 +100709,7 @@ index 9a76eaf..5b8ccfd 100644
        int fdmax = (kmsg->msg_controllen - sizeof(struct compat_cmsghdr)) / sizeof(int);
        int fdnum = scm->fp->count;
        struct file **fp = scm->fp->fp;
-@@ -366,7 +366,7 @@ static int do_set_sock_timeout(struct socket *sock, int level,
+@@ -367,7 +367,7 @@ static int do_set_sock_timeout(struct socket *sock, int level,
                return -EFAULT;
        old_fs = get_fs();
        set_fs(KERNEL_DS);
@@ -98459,7 +100718,7 @@ index 9a76eaf..5b8ccfd 100644
        set_fs(old_fs);
  
        return err;
-@@ -427,7 +427,7 @@ static int do_get_sock_timeout(struct socket *sock, int level, int optname,
+@@ -428,7 +428,7 @@ static int do_get_sock_timeout(struct socket *sock, int level, int optname,
        len = sizeof(ktime);
        old_fs = get_fs();
        set_fs(KERNEL_DS);
@@ -98468,7 +100727,7 @@ index 9a76eaf..5b8ccfd 100644
        set_fs(old_fs);
  
        if (!err) {
-@@ -570,7 +570,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
+@@ -571,7 +571,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
        case MCAST_JOIN_GROUP:
        case MCAST_LEAVE_GROUP:
        {
@@ -98477,7 +100736,7 @@ index 9a76eaf..5b8ccfd 100644
                struct group_req __user *kgr =
                        compat_alloc_user_space(sizeof(struct group_req));
                u32 interface;
-@@ -591,7 +591,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
+@@ -592,7 +592,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
        case MCAST_BLOCK_SOURCE:
        case MCAST_UNBLOCK_SOURCE:
        {
@@ -98486,7 +100745,7 @@ index 9a76eaf..5b8ccfd 100644
                struct group_source_req __user *kgsr = compat_alloc_user_space(
                        sizeof(struct group_source_req));
                u32 interface;
-@@ -612,7 +612,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
+@@ -613,7 +613,7 @@ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
        }
        case MCAST_MSFILTER:
        {
@@ -98495,7 +100754,7 @@ index 9a76eaf..5b8ccfd 100644
                struct group_filter __user *kgf;
                u32 interface, fmode, numsrc;
  
-@@ -650,7 +650,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
+@@ -651,7 +651,7 @@ int compat_mc_getsockopt(struct sock *sock, int level, int optname,
        char __user *optval, int __user *optlen,
        int (*getsockopt)(struct sock *, int, int, char __user *, int __user *))
  {
@@ -98504,7 +100763,7 @@ index 9a76eaf..5b8ccfd 100644
        struct group_filter __user *kgf;
        int __user      *koptlen;
        u32 interface, fmode, numsrc;
-@@ -803,7 +803,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args)
+@@ -804,7 +804,7 @@ COMPAT_SYSCALL_DEFINE2(socketcall, int, call, u32 __user *, args)
  
        if (call < SYS_SOCKET || call > SYS_SENDMMSG)
                return -EINVAL;
@@ -98514,7 +100773,7 @@ index 9a76eaf..5b8ccfd 100644
        a0 = a[0];
        a1 = a[1];
 diff --git a/net/core/datagram.c b/net/core/datagram.c
-index a16ed7b..eb44d17 100644
+index fdbc9a8..cd6972c 100644
 --- a/net/core/datagram.c
 +++ b/net/core/datagram.c
 @@ -301,7 +301,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)
@@ -98527,10 +100786,10 @@ index a16ed7b..eb44d17 100644
  
        return err;
 diff --git a/net/core/dev.c b/net/core/dev.c
-index a30bef1..51d3e33 100644
+index 945bbd0..8b1a370 100644
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -1683,14 +1683,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
+@@ -1683,14 +1683,14 @@ int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
  {
        if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) {
                if (skb_copy_ubufs(skb, GFP_ATOMIC)) {
@@ -98547,25 +100806,16 @@ index a30bef1..51d3e33 100644
                kfree_skb(skb);
                return NET_RX_DROP;
        }
-@@ -2463,7 +2463,7 @@ static int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
- struct dev_gso_cb {
-       void (*destructor)(struct sk_buff *skb);
--};
-+} __no_const;
- #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
-@@ -2893,7 +2893,7 @@ recursion_alert:
-       rc = -ENETDOWN;
+@@ -2985,7 +2985,7 @@ recursion_alert:
+ drop:
        rcu_read_unlock_bh();
  
 -      atomic_long_inc(&dev->tx_dropped);
 +      atomic_long_inc_unchecked(&dev->tx_dropped);
-       kfree_skb(skb);
+       kfree_skb_list(skb);
        return rc;
  out:
-@@ -3237,7 +3237,7 @@ enqueue:
+@@ -3328,7 +3328,7 @@ enqueue:
  
        local_irq_restore(flags);
  
@@ -98574,16 +100824,16 @@ index a30bef1..51d3e33 100644
        kfree_skb(skb);
        return NET_RX_DROP;
  }
-@@ -3314,7 +3314,7 @@ int netif_rx_ni(struct sk_buff *skb)
+@@ -3405,7 +3405,7 @@ int netif_rx_ni(struct sk_buff *skb)
  }
  EXPORT_SYMBOL(netif_rx_ni);
  
 -static void net_tx_action(struct softirq_action *h)
 +static __latent_entropy void net_tx_action(void)
  {
-       struct softnet_data *sd = &__get_cpu_var(softnet_data);
+       struct softnet_data *sd = this_cpu_ptr(&softnet_data);
  
-@@ -3647,7 +3647,7 @@ ncls:
+@@ -3738,7 +3738,7 @@ ncls:
                        ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
        } else {
  drop:
@@ -98592,16 +100842,16 @@ index a30bef1..51d3e33 100644
                kfree_skb(skb);
                /* Jamal, now you will not able to escape explaining
                 * me how you were going to use this. :-)
-@@ -4366,7 +4366,7 @@ void netif_napi_del(struct napi_struct *napi)
+@@ -4502,7 +4502,7 @@ void netif_napi_del(struct napi_struct *napi)
  }
  EXPORT_SYMBOL(netif_napi_del);
  
 -static void net_rx_action(struct softirq_action *h)
 +static __latent_entropy void net_rx_action(void)
  {
-       struct softnet_data *sd = &__get_cpu_var(softnet_data);
+       struct softnet_data *sd = this_cpu_ptr(&softnet_data);
        unsigned long time_limit = jiffies + 2;
-@@ -6366,8 +6366,8 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
+@@ -6548,8 +6548,8 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
        } else {
                netdev_stats_to_stats64(storage, &dev->stats);
        }
@@ -98613,64 +100863,31 @@ index a30bef1..51d3e33 100644
  }
  EXPORT_SYMBOL(dev_get_stats);
 diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
-index cf999e0..c59a975 100644
+index 72e899a..79a9409 100644
 --- a/net/core/dev_ioctl.c
 +++ b/net/core/dev_ioctl.c
-@@ -366,9 +366,13 @@ void dev_load(struct net *net, const char *name)
+@@ -365,8 +365,13 @@ void dev_load(struct net *net, const char *name)
+       no_module = !dev;
        if (no_module && capable(CAP_NET_ADMIN))
                no_module = request_module("netdev-%s", name);
-       if (no_module && capable(CAP_SYS_MODULE)) {
+-      if (no_module && capable(CAP_SYS_MODULE))
++      if (no_module && capable(CAP_SYS_MODULE)) {
 +#ifdef CONFIG_GRKERNSEC_MODHARDEN
 +              ___request_module(true, "grsec_modharden_netdev", "%s", name);
 +#else
-               if (!request_module("%s", name))
-                       pr_warn("Loading kernel module for a network device with CAP_SYS_MODULE (deprecated).  Use CAP_NET_ADMIN and alias netdev-%s instead.\n",
-                               name);
+               request_module("%s", name);
 +#endif
-       }
++      }
  }
  EXPORT_SYMBOL(dev_load);
-diff --git a/net/core/dst.c b/net/core/dst.c
-index 80d6286..a028409 100644
---- a/net/core/dst.c
-+++ b/net/core/dst.c
-@@ -269,6 +269,15 @@ again:
- }
- EXPORT_SYMBOL(dst_destroy);
  
-+static void dst_destroy_rcu(struct rcu_head *head)
-+{
-+      struct dst_entry *dst = container_of(head, struct dst_entry, rcu_head);
-+
-+      dst = dst_destroy(dst);
-+      if (dst)
-+              __dst_free(dst);
-+}
-+
- void dst_release(struct dst_entry *dst)
- {
-       if (dst) {
-@@ -276,11 +285,8 @@ void dst_release(struct dst_entry *dst)
-               newrefcnt = atomic_dec_return(&dst->__refcnt);
-               WARN_ON(newrefcnt < 0);
--              if (unlikely(dst->flags & DST_NOCACHE) && !newrefcnt) {
--                      dst = dst_destroy(dst);
--                      if (dst)
--                              __dst_free(dst);
--              }
-+              if (unlikely(dst->flags & DST_NOCACHE) && !newrefcnt)
-+                      call_rcu(&dst->rcu_head, dst_destroy_rcu);
-       }
- }
- EXPORT_SYMBOL(dst_release);
 diff --git a/net/core/filter.c b/net/core/filter.c
-index 4aec7b9..5cf605c 100644
+index 647b122..18a7ff6 100644
 --- a/net/core/filter.c
 +++ b/net/core/filter.c
-@@ -1121,7 +1121,11 @@ do_pass:
-                       break;
+@@ -532,7 +532,11 @@ do_pass:
  
+               /* Unkown instruction. */
                default:
 -                      goto err;
 +                      WARN(1, KERN_ALERT "Unknown sock filter code:%u jt:%u tf:%u k:%u\n",
@@ -98681,24 +100898,24 @@ index 4aec7b9..5cf605c 100644
                }
  
                insn++;
-@@ -1170,7 +1174,7 @@ static int check_load_and_stores(struct sock_filter *filter, int flen)
-       u16 *masks, memvalid = 0; /* one bit per cell, 16 cells */
+@@ -576,7 +580,7 @@ static int check_load_and_stores(const struct sock_filter *filter, int flen)
+       u16 *masks, memvalid = 0; /* One bit per cell, 16 cells */
        int pc, ret = 0;
  
 -      BUILD_BUG_ON(BPF_MEMWORDS > 16);
 +      BUILD_BUG_ON(BPF_MEMWORDS != 16);
-       masks = kmalloc(flen * sizeof(*masks), GFP_KERNEL);
+       masks = kmalloc_array(flen, sizeof(*masks), GFP_KERNEL);
        if (!masks)
-               return -ENOMEM;
-@@ -1605,7 +1609,7 @@ int sk_unattached_filter_create(struct sk_filter **pfp,
+@@ -987,7 +991,7 @@ int bpf_prog_create(struct bpf_prog **pfp, struct sock_fprog_kern *fprog)
        if (!fp)
                return -ENOMEM;
  
 -      memcpy(fp->insns, fprog->filter, fsize);
 +      memcpy(fp->insns, (void __force_kernel *)fprog->filter, fsize);
  
-       atomic_set(&fp->refcnt, 1);
        fp->len = fprog->len;
+       /* Since unattached filters are not copied back to user
 diff --git a/net/core/flow.c b/net/core/flow.c
 index a0348fd..6951c76 100644
 --- a/net/core/flow.c
@@ -98731,11 +100948,11 @@ index a0348fd..6951c76 100644
                        fle->object = flo;
                else
 diff --git a/net/core/iovec.c b/net/core/iovec.c
-index b618694..192bbba 100644
+index e1ec45a..e5c6f16 100644
 --- a/net/core/iovec.c
 +++ b/net/core/iovec.c
 @@ -42,7 +42,7 @@ int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr_storage *a
-       if (m->msg_namelen) {
+       if (m->msg_name && m->msg_namelen) {
                if (mode == VERIFY_READ) {
                        void __user *namep;
 -                      namep = (void __user __force *) m->msg_name;
@@ -98753,7 +100970,7 @@ index b618694..192bbba 100644
  
        m->msg_iov = iov;
 diff --git a/net/core/neighbour.c b/net/core/neighbour.c
-index 32d872e..487e769 100644
+index ef31fef..8be66d9 100644
 --- a/net/core/neighbour.c
 +++ b/net/core/neighbour.c
 @@ -2825,7 +2825,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write,
@@ -98774,23 +100991,6 @@ index 32d872e..487e769 100644
        int ret;
  
        tmp.extra1 = &zero;
-@@ -3059,11 +3059,12 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
-               memset(&t->neigh_vars[NEIGH_VAR_GC_INTERVAL], 0,
-                      sizeof(t->neigh_vars[NEIGH_VAR_GC_INTERVAL]));
-       } else {
-+              struct neigh_table *ntable = container_of(p, struct neigh_table, parms);
-               dev_name_source = "default";
--              t->neigh_vars[NEIGH_VAR_GC_INTERVAL].data = (int *)(p + 1);
--              t->neigh_vars[NEIGH_VAR_GC_THRESH1].data = (int *)(p + 1) + 1;
--              t->neigh_vars[NEIGH_VAR_GC_THRESH2].data = (int *)(p + 1) + 2;
--              t->neigh_vars[NEIGH_VAR_GC_THRESH3].data = (int *)(p + 1) + 3;
-+              t->neigh_vars[NEIGH_VAR_GC_INTERVAL].data = &ntable->gc_interval;
-+              t->neigh_vars[NEIGH_VAR_GC_THRESH1].data = &ntable->gc_thresh1;
-+              t->neigh_vars[NEIGH_VAR_GC_THRESH2].data = &ntable->gc_thresh2;
-+              t->neigh_vars[NEIGH_VAR_GC_THRESH3].data = &ntable->gc_thresh3;
-       }
-       if (handler) {
 diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c
 index 2bf8329..2eb1423 100644
 --- a/net/core/net-procfs.c
@@ -98843,10 +101043,10 @@ index 2bf8329..2eb1423 100644
  
        return 0;
 diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
-index 1cac29e..fb482f3 100644
+index 9dd0669..c52fb1b 100644
 --- a/net/core/net-sysfs.c
 +++ b/net/core/net-sysfs.c
-@@ -259,7 +259,7 @@ static ssize_t carrier_changes_show(struct device *dev,
+@@ -278,7 +278,7 @@ static ssize_t carrier_changes_show(struct device *dev,
  {
        struct net_device *netdev = to_net_dev(dev);
        return sprintf(buf, fmt_dec,
@@ -98856,10 +101056,10 @@ index 1cac29e..fb482f3 100644
  static DEVICE_ATTR_RO(carrier_changes);
  
 diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
-index 7c8ffd9..0cb3687 100644
+index 7f15517..f7d65c0 100644
 --- a/net/core/net_namespace.c
 +++ b/net/core/net_namespace.c
-@@ -443,7 +443,7 @@ static int __register_pernet_operations(struct list_head *list,
+@@ -445,7 +445,7 @@ static int __register_pernet_operations(struct list_head *list,
        int error;
        LIST_HEAD(net_exit_list);
  
@@ -98868,7 +101068,7 @@ index 7c8ffd9..0cb3687 100644
        if (ops->init || (ops->id && ops->size)) {
                for_each_net(net) {
                        error = ops_init(ops, net);
-@@ -456,7 +456,7 @@ static int __register_pernet_operations(struct list_head *list,
+@@ -458,7 +458,7 @@ static int __register_pernet_operations(struct list_head *list,
  
  out_undo:
        /* If I have an error cleanup all namespaces I initialized */
@@ -98877,7 +101077,7 @@ index 7c8ffd9..0cb3687 100644
        ops_exit_list(ops, &net_exit_list);
        ops_free_list(ops, &net_exit_list);
        return error;
-@@ -467,7 +467,7 @@ static void __unregister_pernet_operations(struct pernet_operations *ops)
+@@ -469,7 +469,7 @@ static void __unregister_pernet_operations(struct pernet_operations *ops)
        struct net *net;
        LIST_HEAD(net_exit_list);
  
@@ -98886,7 +101086,7 @@ index 7c8ffd9..0cb3687 100644
        for_each_net(net)
                list_add_tail(&net->exit_list, &net_exit_list);
        ops_exit_list(ops, &net_exit_list);
-@@ -601,7 +601,7 @@ int register_pernet_device(struct pernet_operations *ops)
+@@ -603,7 +603,7 @@ int register_pernet_device(struct pernet_operations *ops)
        mutex_lock(&net_mutex);
        error = register_pernet_operations(&pernet_list, ops);
        if (!error && (first_device == &pernet_list))
@@ -98896,10 +101096,10 @@ index 7c8ffd9..0cb3687 100644
        return error;
  }
 diff --git a/net/core/netpoll.c b/net/core/netpoll.c
-index e33937f..b2b4981 100644
+index e6645b4..43e1af9 100644
 --- a/net/core/netpoll.c
 +++ b/net/core/netpoll.c
-@@ -382,7 +382,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
+@@ -379,7 +379,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
        struct udphdr *udph;
        struct iphdr *iph;
        struct ethhdr *eth;
@@ -98908,7 +101108,7 @@ index e33937f..b2b4981 100644
        struct ipv6hdr *ip6h;
  
        udp_len = len + sizeof(*udph);
-@@ -453,7 +453,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
+@@ -450,7 +450,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
                put_unaligned(0x45, (unsigned char *)iph);
                iph->tos      = 0;
                put_unaligned(htons(ip_len), &(iph->tot_len));
@@ -98918,10 +101118,10 @@ index e33937f..b2b4981 100644
                iph->ttl      = 64;
                iph->protocol = IPPROTO_UDP;
 diff --git a/net/core/pktgen.c b/net/core/pktgen.c
-index 0304f98..ddfead6 100644
+index 443256b..bbff424 100644
 --- a/net/core/pktgen.c
 +++ b/net/core/pktgen.c
-@@ -3725,7 +3725,7 @@ static int __net_init pg_net_init(struct net *net)
+@@ -3753,7 +3753,7 @@ static int __net_init pg_net_init(struct net *net)
        pn->net = net;
        INIT_LIST_HEAD(&pn->pktgen_threads);
        pn->pktgen_exiting = false;
@@ -98931,7 +101131,7 @@ index 0304f98..ddfead6 100644
                pr_warn("cannot create /proc/net/%s\n", PG_PROC_DIR);
                return -ENODEV;
 diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
-index 1999ed8..1e6e58a 100644
+index 76321ea..3129bd6 100644
 --- a/net/core/rtnetlink.c
 +++ b/net/core/rtnetlink.c
 @@ -58,7 +58,7 @@ struct rtnl_link {
@@ -98943,13 +101143,13 @@ index 1999ed8..1e6e58a 100644
  
  static DEFINE_MUTEX(rtnl_mutex);
  
-@@ -299,10 +299,13 @@ int __rtnl_link_register(struct rtnl_link_ops *ops)
-       if (rtnl_link_ops_get(ops->kind))
-               return -EEXIST;
--      if (!ops->dellink)
+@@ -304,10 +304,13 @@ int __rtnl_link_register(struct rtnl_link_ops *ops)
+        * to use the ops for creating device. So do not
+        * fill up dellink as well. That disables rtnl_dellink.
+        */
+-      if (ops->setup && !ops->dellink)
 -              ops->dellink = unregister_netdevice_queue;
-+      if (!ops->dellink) {
++      if (ops->setup && !ops->dellink) {
 +              pax_open_kernel();
 +              *(void **)&ops->dellink = unregister_netdevice_queue;
 +              pax_close_kernel();
@@ -98960,7 +101160,7 @@ index 1999ed8..1e6e58a 100644
        return 0;
  }
  EXPORT_SYMBOL_GPL(__rtnl_link_register);
-@@ -349,7 +352,7 @@ void __rtnl_link_unregister(struct rtnl_link_ops *ops)
+@@ -354,7 +357,7 @@ void __rtnl_link_unregister(struct rtnl_link_ops *ops)
        for_each_net(net) {
                __rtnl_kill_links(net, ops);
        }
@@ -98969,7 +101169,7 @@ index 1999ed8..1e6e58a 100644
  }
  EXPORT_SYMBOL_GPL(__rtnl_link_unregister);
  
-@@ -1008,7 +1011,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
+@@ -1014,7 +1017,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
            (dev->ifalias &&
             nla_put_string(skb, IFLA_IFALIAS, dev->ifalias)) ||
            nla_put_u32(skb, IFLA_CARRIER_CHANGES,
@@ -99019,10 +101219,10 @@ index b442e7e..6f5b5a2 100644
        {
                struct socket *sock;
 diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index 8383b2b..6397efb 100644
+index 32e31c2..e981248 100644
 --- a/net/core/skbuff.c
 +++ b/net/core/skbuff.c
-@@ -2003,7 +2003,7 @@ EXPORT_SYMBOL(__skb_checksum);
+@@ -2025,7 +2025,7 @@ EXPORT_SYMBOL(__skb_checksum);
  __wsum skb_checksum(const struct sk_buff *skb, int offset,
                    int len, __wsum csum)
  {
@@ -99031,7 +101231,7 @@ index 8383b2b..6397efb 100644
                .update  = csum_partial_ext,
                .combine = csum_block_add_ext,
        };
-@@ -3220,13 +3220,15 @@ void __init skb_init(void)
+@@ -3255,12 +3255,14 @@ void __init skb_init(void)
        skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
                                              sizeof(struct sk_buff),
                                              0,
@@ -99040,8 +101240,7 @@ index 8383b2b..6397efb 100644
 +                                            SLAB_NO_SANITIZE,
                                              NULL);
        skbuff_fclone_cache = kmem_cache_create("skbuff_fclone_cache",
-                                               (2*sizeof(struct sk_buff)) +
-                                               sizeof(atomic_t),
+                                               sizeof(struct sk_buff_fclones),
                                                0,
 -                                              SLAB_HWCACHE_ALIGN|SLAB_PANIC,
 +                                              SLAB_HWCACHE_ALIGN|SLAB_PANIC|
@@ -99050,10 +101249,10 @@ index 8383b2b..6397efb 100644
  }
  
 diff --git a/net/core/sock.c b/net/core/sock.c
-index 664ee42..aaf9e6e 100644
+index 15e0c67..0310f4a 100644
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -442,7 +442,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
+@@ -441,7 +441,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
        struct sk_buff_head *list = &sk->sk_receive_queue;
  
        if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) {
@@ -99062,7 +101261,7 @@ index 664ee42..aaf9e6e 100644
                trace_sock_rcvqueue_full(sk, skb);
                return -ENOMEM;
        }
-@@ -452,7 +452,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
+@@ -451,7 +451,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
                return err;
  
        if (!sk_rmem_schedule(sk, skb, skb->truesize)) {
@@ -99071,7 +101270,7 @@ index 664ee42..aaf9e6e 100644
                return -ENOBUFS;
        }
  
-@@ -472,7 +472,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
+@@ -464,7 +464,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
        skb_dst_force(skb);
  
        spin_lock_irqsave(&list->lock, flags);
@@ -99080,16 +101279,16 @@ index 664ee42..aaf9e6e 100644
        __skb_queue_tail(list, skb);
        spin_unlock_irqrestore(&list->lock, flags);
  
-@@ -492,7 +492,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
+@@ -484,7 +484,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
        skb->dev = NULL;
  
-       if (sk_rcvqueues_full(sk, skb, sk->sk_rcvbuf)) {
+       if (sk_rcvqueues_full(sk, sk->sk_rcvbuf)) {
 -              atomic_inc(&sk->sk_drops);
 +              atomic_inc_unchecked(&sk->sk_drops);
                goto discard_and_relse;
        }
        if (nested)
-@@ -510,7 +510,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
+@@ -502,7 +502,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
                mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
        } else if (sk_add_backlog(sk, skb, sk->sk_rcvbuf)) {
                bh_unlock_sock(sk);
@@ -99098,7 +101297,7 @@ index 664ee42..aaf9e6e 100644
                goto discard_and_relse;
        }
  
-@@ -998,12 +998,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
+@@ -991,12 +991,12 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
                struct timeval tm;
        } v;
  
@@ -99114,7 +101313,7 @@ index 664ee42..aaf9e6e 100644
                return -EINVAL;
  
        memset(&v, 0, sizeof(v));
-@@ -1155,11 +1155,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
+@@ -1134,11 +1134,11 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
  
        case SO_PEERNAME:
        {
@@ -99128,7 +101327,7 @@ index 664ee42..aaf9e6e 100644
                        return -EINVAL;
                if (copy_to_user(optval, address, len))
                        return -EFAULT;
-@@ -1240,7 +1240,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
+@@ -1219,7 +1219,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
  
        if (len > lv)
                len = lv;
@@ -99137,7 +101336,7 @@ index 664ee42..aaf9e6e 100644
                return -EFAULT;
  lenout:
        if (put_user(len, optlen))
-@@ -2375,7 +2375,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
+@@ -2315,7 +2315,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
         */
        smp_wmb();
        atomic_set(&sk->sk_refcnt, 1);
@@ -99146,15 +101345,15 @@ index 664ee42..aaf9e6e 100644
  }
  EXPORT_SYMBOL(sock_init_data);
  
-@@ -2503,6 +2503,7 @@ void sock_enable_timestamp(struct sock *sk, int flag)
+@@ -2443,6 +2443,7 @@ void sock_enable_timestamp(struct sock *sk, int flag)
  int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len,
                       int level, int type)
  {
 +      struct sock_extended_err ee;
        struct sock_exterr_skb *serr;
-       struct sk_buff *skb, *skb2;
+       struct sk_buff *skb;
        int copied, err;
-@@ -2524,7 +2525,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len,
+@@ -2464,7 +2465,8 @@ int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len,
        sock_recv_timestamp(msg, sk, skb);
  
        serr = SKB_EXT_ERR(skb);
@@ -99165,7 +101364,7 @@ index 664ee42..aaf9e6e 100644
        msg->msg_flags |= MSG_ERRQUEUE;
        err = copied;
 diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c
-index a4216a4..1c07687 100644
+index ad704c7..ca48aff 100644
 --- a/net/core/sock_diag.c
 +++ b/net/core/sock_diag.c
 @@ -9,26 +9,33 @@
@@ -99227,7 +101426,7 @@ index a4216a4..1c07687 100644
  }
  EXPORT_SYMBOL_GPL(sock_diag_unregister);
 diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
-index cf9cd13..8b56af3 100644
+index cf9cd13..50683950 100644
 --- a/net/core/sysctl_net_core.c
 +++ b/net/core/sysctl_net_core.c
 @@ -32,7 +32,7 @@ static int rps_sock_flow_sysctl(struct ctl_table *table, int write,
@@ -99248,6 +101447,15 @@ index cf9cd13..8b56af3 100644
                .data = id,
                .maxlen = IFNAMSIZ,
        };
+@@ -263,7 +263,7 @@ static struct ctl_table net_core_table[] = {
+               .mode           = 0644,
+               .proc_handler   = proc_dointvec
+       },
+-#ifdef CONFIG_BPF_JIT
++#if defined(CONFIG_BPF_JIT) && !defined(CONFIG_GRKERNSEC_BPF_HARDEN)
+       {
+               .procname       = "bpf_jit_enable",
+               .data           = &bpf_jit_enable,
 @@ -379,13 +379,12 @@ static struct ctl_table netns_core_table[] = {
  
  static __net_init int sysctl_core_net_init(struct net *net)
@@ -99296,10 +101504,10 @@ index cf9cd13..8b56af3 100644
        .exit = sysctl_core_net_exit,
  };
 diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
-index 4c04848..f575934 100644
+index 25733d5..b9360f0 100644
 --- a/net/decnet/af_decnet.c
 +++ b/net/decnet/af_decnet.c
-@@ -465,6 +465,7 @@ static struct proto dn_proto = {
+@@ -466,6 +466,7 @@ static struct proto dn_proto = {
        .sysctl_rmem            = sysctl_decnet_rmem,
        .max_header             = DN_MAX_NSP_DATA_HEADER + 64,
        .obj_size               = sizeof(struct dn_sock),
@@ -99308,10 +101516,10 @@ index 4c04848..f575934 100644
  
  static struct sock *dn_alloc_sock(struct net *net, struct socket *sock, gfp_t gfp)
 diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c
-index 3b726f3..1af6368 100644
+index 4400da7..3429972 100644
 --- a/net/decnet/dn_dev.c
 +++ b/net/decnet/dn_dev.c
-@@ -200,7 +200,7 @@ static struct dn_dev_sysctl_table {
+@@ -201,7 +201,7 @@ static struct dn_dev_sysctl_table {
                .extra1 = &min_t3,
                .extra2 = &max_t3
        },
@@ -99342,32 +101550,45 @@ index 5325b54..a0d4d69 100644
                return -EFAULT;
  
        *lenp = len;
-diff --git a/net/dns_resolver/dns_query.c b/net/dns_resolver/dns_query.c
-index e7b6d53..f005cc7 100644
---- a/net/dns_resolver/dns_query.c
-+++ b/net/dns_resolver/dns_query.c
-@@ -149,7 +149,9 @@ int dns_query(const char *type, const char *name, size_t namelen,
-       if (!*_result)
-               goto put;
--      memcpy(*_result, upayload->data, len + 1);
-+      memcpy(*_result, upayload->data, len);
-+      (*_result)[len] = '\0';
-+
-       if (_expiry)
-               *_expiry = rkey->expiry;
+diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c
+index a2c7e4c..3dc9f67 100644
+--- a/net/hsr/hsr_netlink.c
++++ b/net/hsr/hsr_netlink.c
+@@ -102,7 +102,7 @@ nla_put_failure:
+       return -EMSGSIZE;
+ }
  
+-static struct rtnl_link_ops hsr_link_ops __read_mostly = {
++static struct rtnl_link_ops hsr_link_ops = {
+       .kind           = "hsr",
+       .maxtype        = IFLA_HSR_MAX,
+       .policy         = hsr_policy,
+diff --git a/net/ieee802154/6lowpan_rtnl.c b/net/ieee802154/6lowpan_rtnl.c
+index 4413629..dea596a 100644
+--- a/net/ieee802154/6lowpan_rtnl.c
++++ b/net/ieee802154/6lowpan_rtnl.c
+@@ -635,7 +635,7 @@ static void lowpan_dellink(struct net_device *dev, struct list_head *head)
+       dev_put(real_dev);
+ }
+-static struct rtnl_link_ops lowpan_link_ops __read_mostly = {
++static struct rtnl_link_ops lowpan_link_ops = {
+       .kind           = "lowpan",
+       .priv_size      = sizeof(struct lowpan_dev_info),
+       .setup          = lowpan_setup,
 diff --git a/net/ieee802154/reassembly.c b/net/ieee802154/reassembly.c
-index ef2d543..5b9b73f 100644
+index 7cfcd68..84ca5b7 100644
 --- a/net/ieee802154/reassembly.c
 +++ b/net/ieee802154/reassembly.c
-@@ -434,12 +434,11 @@ static struct ctl_table lowpan_frags_ctl_table[] = {
+@@ -433,14 +433,13 @@ static struct ctl_table lowpan_frags_ctl_table[] = {
  
  static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
  {
 -      struct ctl_table *table;
 +      ctl_table_no_const *table = NULL;
        struct ctl_table_header *hdr;
+       struct netns_ieee802154_lowpan *ieee802154_lowpan =
+               net_ieee802154_lowpan(net);
  
 -      table = lowpan_frags_ns_ctl_table;
        if (!net_eq(net, &init_net)) {
@@ -99376,7 +101597,7 @@ index ef2d543..5b9b73f 100644
                                GFP_KERNEL);
                if (table == NULL)
                        goto err_alloc;
-@@ -452,9 +451,9 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
+@@ -455,9 +454,9 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
                /* Don't export sysctls to unprivileged users */
                if (net->user_ns != &init_user_ns)
                        table[0].procname = NULL;
@@ -99389,7 +101610,7 @@ index ef2d543..5b9b73f 100644
        if (hdr == NULL)
                goto err_reg;
  
-@@ -462,8 +461,7 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
+@@ -465,8 +464,7 @@ static int __net_init lowpan_frags_ns_sysctl_register(struct net *net)
        return 0;
  
  err_reg:
@@ -99400,38 +101621,43 @@ index ef2d543..5b9b73f 100644
        return -ENOMEM;
  }
 diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
-index 6d6dd34..e5c9bec 100644
+index e67da4e..da217942 100644
 --- a/net/ipv4/af_inet.c
 +++ b/net/ipv4/af_inet.c
-@@ -1736,13 +1736,9 @@ static int __init inet_init(void)
-       BUILD_BUG_ON(sizeof(struct inet_skb_parm) > FIELD_SIZEOF(struct sk_buff, cb));
--      sysctl_local_reserved_ports = kzalloc(65536 / 8, GFP_KERNEL);
--      if (!sysctl_local_reserved_ports)
--              goto out;
--
-       rc = proto_register(&tcp_prot, 1);
-       if (rc)
--              goto out_free_reserved_ports;
-+              goto out;
-       rc = proto_register(&udp_prot, 1);
-       if (rc)
-@@ -1852,8 +1848,6 @@ out_unregister_udp_proto:
-       proto_unregister(&udp_prot);
- out_unregister_tcp_proto:
-       proto_unregister(&tcp_prot);
--out_free_reserved_ports:
--      kfree(sysctl_local_reserved_ports);
-       goto out;
+@@ -1392,7 +1392,7 @@ int inet_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
+               return ip_recv_error(sk, msg, len, addr_len);
+ #if IS_ENABLED(CONFIG_IPV6)
+       if (sk->sk_family == AF_INET6)
+-              return pingv6_ops.ipv6_recv_error(sk, msg, len, addr_len);
++              return pingv6_ops->ipv6_recv_error(sk, msg, len, addr_len);
+ #endif
+       return -EINVAL;
  }
 diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
-index bdbf68b..deb4759 100644
+index 214882e..ec032f6 100644
 --- a/net/ipv4/devinet.c
 +++ b/net/ipv4/devinet.c
-@@ -1543,7 +1543,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
+@@ -69,7 +69,8 @@
+ static struct ipv4_devconf ipv4_devconf = {
+       .data = {
+-              [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 1,
++              [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 0,
++              [IPV4_DEVCONF_RP_FILTER - 1] = 1,
+               [IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1,
+               [IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1,
+               [IPV4_DEVCONF_SHARED_MEDIA - 1] = 1,
+@@ -80,7 +81,8 @@ static struct ipv4_devconf ipv4_devconf = {
+ static struct ipv4_devconf ipv4_devconf_dflt = {
+       .data = {
+-              [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 1,
++              [IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 0,
++              [IPV4_DEVCONF_RP_FILTER - 1] = 1,
+               [IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1,
+               [IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1,
+               [IPV4_DEVCONF_SHARED_MEDIA - 1] = 1,
+@@ -1548,7 +1550,7 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
                idx = 0;
                head = &net->dev_index_head[h];
                rcu_read_lock();
@@ -99440,7 +101666,7 @@ index bdbf68b..deb4759 100644
                          net->dev_base_seq;
                hlist_for_each_entry_rcu(dev, head, index_hlist) {
                        if (idx < s_idx)
-@@ -1861,7 +1861,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb,
+@@ -1866,7 +1868,7 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb,
                idx = 0;
                head = &net->dev_index_head[h];
                rcu_read_lock();
@@ -99449,7 +101675,7 @@ index bdbf68b..deb4759 100644
                          net->dev_base_seq;
                hlist_for_each_entry_rcu(dev, head, index_hlist) {
                        if (idx < s_idx)
-@@ -2096,7 +2096,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write,
+@@ -2101,7 +2103,7 @@ static int ipv4_doint_and_flush(struct ctl_table *ctl, int write,
  #define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \
        DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush)
  
@@ -99458,7 +101684,7 @@ index bdbf68b..deb4759 100644
        struct ctl_table_header *sysctl_header;
        struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX];
  } devinet_sysctl = {
-@@ -2218,7 +2218,7 @@ static __net_init int devinet_init_net(struct net *net)
+@@ -2233,7 +2235,7 @@ static __net_init int devinet_init_net(struct net *net)
        int err;
        struct ipv4_devconf *all, *dflt;
  #ifdef CONFIG_SYSCTL
@@ -99467,7 +101693,7 @@ index bdbf68b..deb4759 100644
        struct ctl_table_header *forw_hdr;
  #endif
  
-@@ -2236,7 +2236,7 @@ static __net_init int devinet_init_net(struct net *net)
+@@ -2251,7 +2253,7 @@ static __net_init int devinet_init_net(struct net *net)
                        goto err_alloc_dflt;
  
  #ifdef CONFIG_SYSCTL
@@ -99476,7 +101702,7 @@ index bdbf68b..deb4759 100644
                if (tbl == NULL)
                        goto err_alloc_ctl;
  
-@@ -2256,7 +2256,10 @@ static __net_init int devinet_init_net(struct net *net)
+@@ -2271,7 +2273,10 @@ static __net_init int devinet_init_net(struct net *net)
                goto err_reg_dflt;
  
        err = -ENOMEM;
@@ -99488,7 +101714,7 @@ index bdbf68b..deb4759 100644
        if (forw_hdr == NULL)
                goto err_reg_ctl;
        net->ipv4.forw_hdr = forw_hdr;
-@@ -2272,8 +2275,7 @@ err_reg_ctl:
+@@ -2287,8 +2292,7 @@ err_reg_ctl:
  err_reg_dflt:
        __devinet_sysctl_unregister(all);
  err_reg_all:
@@ -99499,10 +101725,10 @@ index bdbf68b..deb4759 100644
  #endif
        if (dflt != &ipv4_devconf_dflt)
 diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
-index 255aa99..45c78f8 100644
+index 23104a3..9f5570b 100644
 --- a/net/ipv4/fib_frontend.c
 +++ b/net/ipv4/fib_frontend.c
-@@ -1015,12 +1015,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
+@@ -1017,12 +1017,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
  #ifdef CONFIG_IP_ROUTE_MULTIPATH
                fib_sync_up(dev);
  #endif
@@ -99517,7 +101743,7 @@ index 255aa99..45c78f8 100644
                if (ifa->ifa_dev->ifa_list == NULL) {
                        /* Last address was deleted from this interface.
                         * Disable IP.
-@@ -1058,7 +1058,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
+@@ -1060,7 +1060,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
  #ifdef CONFIG_IP_ROUTE_MULTIPATH
                fib_sync_up(dev);
  #endif
@@ -99527,10 +101753,10 @@ index 255aa99..45c78f8 100644
                break;
        case NETDEV_DOWN:
 diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
-index b10cd43a..22327f9 100644
+index f99f41b..1879da9 100644
 --- a/net/ipv4/fib_semantics.c
 +++ b/net/ipv4/fib_semantics.c
-@@ -768,7 +768,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh)
+@@ -770,7 +770,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh)
        nh->nh_saddr = inet_select_addr(nh->nh_dev,
                                        nh->nh_gw,
                                        nh->nh_parent->fib_scope);
@@ -99539,21 +101765,8 @@ index b10cd43a..22327f9 100644
  
        return nh->nh_saddr;
  }
-diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
-index a56b8e6..5be2a30 100644
---- a/net/ipv4/inet_connection_sock.c
-+++ b/net/ipv4/inet_connection_sock.c
-@@ -29,7 +29,7 @@ const char inet_csk_timer_bug_msg[] = "inet_csk BUG: unknown timer value\n";
- EXPORT_SYMBOL(inet_csk_timer_bug_msg);
- #endif
--unsigned long *sysctl_local_reserved_ports;
-+unsigned long sysctl_local_reserved_ports[65536 / 8 / sizeof(unsigned long)];
- EXPORT_SYMBOL(sysctl_local_reserved_ports);
- void inet_get_local_port_range(struct net *net, int *low, int *high)
 diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
-index 8b9cf27..0d8d592 100644
+index 9111a4e..3576905 100644
 --- a/net/ipv4/inet_hashtables.c
 +++ b/net/ipv4/inet_hashtables.c
 @@ -18,6 +18,7 @@
@@ -99568,7 +101781,7 @@ index 8b9cf27..0d8d592 100644
        return inet_ehashfn(net, laddr, lport, faddr, fport);
  }
  
-+extern void gr_update_task_in_ip_table(struct task_struct *task, const struct inet_sock *inet);
++extern void gr_update_task_in_ip_table(const struct inet_sock *inet);
 +
  /*
   * Allocate and initialize a new local port bind bucket.
@@ -99577,31 +101790,29 @@ index 8b9cf27..0d8d592 100644
                        twrefcnt += inet_twsk_bind_unhash(tw, hinfo);
                spin_unlock(&head->lock);
  
-+              gr_update_task_in_ip_table(current, inet_sk(sk));
++              gr_update_task_in_ip_table(inet_sk(sk));
 +
                if (tw) {
                        inet_twsk_deschedule(tw, death_row);
                        while (twrefcnt) {
 diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
-index 48f4244..f56d83a 100644
+index 241afd7..31b95d5 100644
 --- a/net/ipv4/inetpeer.c
 +++ b/net/ipv4/inetpeer.c
-@@ -496,8 +496,8 @@ relookup:
+@@ -461,7 +461,7 @@ relookup:
        if (p) {
                p->daddr = *daddr;
                atomic_set(&p->refcnt, 1);
 -              atomic_set(&p->rid, 0);
--              atomic_set(&p->ip_id_count,
 +              atomic_set_unchecked(&p->rid, 0);
-+              atomic_set_unchecked(&p->ip_id_count,
-                               (daddr->family == AF_INET) ?
-                                       secure_ip_id(daddr->addr.a4) :
-                                       secure_ipv6_id(daddr->addr.a6));
+               p->metrics[RTAX_LOCK-1] = INETPEER_METRICS_NEW;
+               p->rate_tokens = 0;
+               /* 60*HZ is arbitrary, but chosen enough high so that the first
 diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
-index ed32313..3762abe 100644
+index 2811cc1..ad5a534 100644
 --- a/net/ipv4/ip_fragment.c
 +++ b/net/ipv4/ip_fragment.c
-@@ -284,7 +284,7 @@ static inline int ip_frag_too_far(struct ipq *qp)
+@@ -268,7 +268,7 @@ static inline int ip_frag_too_far(struct ipq *qp)
                return 0;
  
        start = qp->rid;
@@ -99610,7 +101821,7 @@ index ed32313..3762abe 100644
        qp->rid = end;
  
        rc = qp->q.fragments && (end - start) > max;
-@@ -761,12 +761,11 @@ static struct ctl_table ip4_frags_ctl_table[] = {
+@@ -746,12 +746,11 @@ static struct ctl_table ip4_frags_ctl_table[] = {
  
  static int __net_init ip4_frags_ns_ctl_register(struct net *net)
  {
@@ -99625,7 +101836,7 @@ index ed32313..3762abe 100644
                if (table == NULL)
                        goto err_alloc;
  
-@@ -777,9 +776,10 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net)
+@@ -765,9 +764,10 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net)
                /* Don't export sysctls to unprivileged users */
                if (net->user_ns != &init_user_ns)
                        table[0].procname = NULL;
@@ -99638,7 +101849,7 @@ index ed32313..3762abe 100644
        if (hdr == NULL)
                goto err_reg;
  
-@@ -787,8 +787,7 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net)
+@@ -775,8 +775,7 @@ static int __net_init ip4_frags_ns_ctl_register(struct net *net)
        return 0;
  
  err_reg:
@@ -99649,7 +101860,7 @@ index ed32313..3762abe 100644
        return -ENOMEM;
  }
 diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
-index 94213c8..8bdb342 100644
+index 12055fd..df852c4 100644
 --- a/net/ipv4/ip_gre.c
 +++ b/net/ipv4/ip_gre.c
 @@ -115,7 +115,7 @@ static bool log_ecn_error = true;
@@ -99661,8 +101872,8 @@ index 94213c8..8bdb342 100644
  static int ipgre_tunnel_init(struct net_device *dev);
  
  static int ipgre_net_id __read_mostly;
-@@ -732,7 +732,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = {
-       [IFLA_GRE_PMTUDISC]     = { .type = NLA_U8 },
+@@ -815,7 +815,7 @@ static const struct nla_policy ipgre_policy[IFLA_GRE_MAX + 1] = {
+       [IFLA_GRE_ENCAP_DPORT]  = { .type = NLA_U16 },
  };
  
 -static struct rtnl_link_ops ipgre_link_ops __read_mostly = {
@@ -99670,7 +101881,7 @@ index 94213c8..8bdb342 100644
        .kind           = "gre",
        .maxtype        = IFLA_GRE_MAX,
        .policy         = ipgre_policy,
-@@ -746,7 +746,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = {
+@@ -829,7 +829,7 @@ static struct rtnl_link_ops ipgre_link_ops __read_mostly = {
        .fill_info      = ipgre_fill_info,
  };
  
@@ -99679,11 +101890,36 @@ index 94213c8..8bdb342 100644
        .kind           = "gretap",
        .maxtype        = IFLA_GRE_MAX,
        .policy         = ipgre_policy,
+diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
+index 3d4da2c..40f9c29 100644
+--- a/net/ipv4/ip_input.c
++++ b/net/ipv4/ip_input.c
+@@ -147,6 +147,10 @@
+ #include <linux/mroute.h>
+ #include <linux/netlink.h>
++#ifdef CONFIG_GRKERNSEC_BLACKHOLE
++extern int grsec_enable_blackhole;
++#endif
++
+ /*
+  *    Process Router Attention IP option (RFC 2113)
+  */
+@@ -223,6 +227,9 @@ static int ip_local_deliver_finish(struct sk_buff *skb)
+                       if (!raw) {
+                               if (xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) {
+                                       IP_INC_STATS_BH(net, IPSTATS_MIB_INUNKNOWNPROTOS);
++#ifdef CONFIG_GRKERNSEC_BLACKHOLE
++                                      if (!grsec_enable_blackhole || (skb->dev->flags & IFF_LOOPBACK))
++#endif
+                                       icmp_send(skb, ICMP_DEST_UNREACH,
+                                                 ICMP_PROT_UNREACH, 0);
+                               }
 diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
-index 64741b9..6f334a2 100644
+index 9daf217..dc6972d 100644
 --- a/net/ipv4/ip_sockglue.c
 +++ b/net/ipv4/ip_sockglue.c
-@@ -1188,7 +1188,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
+@@ -1177,7 +1177,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
                len = min_t(unsigned int, len, opt->optlen);
                if (put_user(len, optlen))
                        return -EFAULT;
@@ -99693,53 +101929,17 @@ index 64741b9..6f334a2 100644
                        return -EFAULT;
                return 0;
        }
-@@ -1319,7 +1320,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
+@@ -1308,7 +1309,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
                if (sk->sk_type != SOCK_STREAM)
                        return -ENOPROTOOPT;
  
--              msg.msg_control = optval;
-+              msg.msg_control = (void __force_kernel *)optval;
+-              msg.msg_control = (__force void *) optval;
++              msg.msg_control = (__force_kernel void *) optval;
                msg.msg_controllen = len;
                msg.msg_flags = flags;
  
-diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c
-index 2acc233..b93143f 100644
---- a/net/ipv4/ip_tunnel.c
-+++ b/net/ipv4/ip_tunnel.c
-@@ -73,12 +73,7 @@ static void __tunnel_dst_set(struct ip_tunnel_dst *idst,
- {
-       struct dst_entry *old_dst;
--      if (dst) {
--              if (dst->flags & DST_NOCACHE)
--                      dst = NULL;
--              else
--                      dst_clone(dst);
--      }
-+      dst_clone(dst);
-       old_dst = xchg((__force struct dst_entry **)&idst->dst, dst);
-       dst_release(old_dst);
- }
-@@ -108,13 +103,14 @@ static struct rtable *tunnel_rtable_get(struct ip_tunnel *t, u32 cookie)
-       rcu_read_lock();
-       dst = rcu_dereference(this_cpu_ptr(t->dst_cache)->dst);
-+      if (dst && !atomic_inc_not_zero(&dst->__refcnt))
-+              dst = NULL;
-       if (dst) {
-               if (dst->obsolete && dst->ops->check(dst, cookie) == NULL) {
--                      rcu_read_unlock();
-                       tunnel_dst_reset(t);
--                      return NULL;
-+                      dst_release(dst);
-+                      dst = NULL;
-               }
--              dst_hold(dst);
-       }
-       rcu_read_unlock();
-       return (struct rtable *)dst;
 diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c
-index 13ef00f..8ffca25 100644
+index 1a7e979..fd05aa4 100644
 --- a/net/ipv4/ip_vti.c
 +++ b/net/ipv4/ip_vti.c
 @@ -45,7 +45,7 @@
@@ -99751,7 +101951,7 @@ index 13ef00f..8ffca25 100644
  
  static int vti_net_id __read_mostly;
  static int vti_tunnel_init(struct net_device *dev);
-@@ -513,7 +513,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = {
+@@ -519,7 +519,7 @@ static const struct nla_policy vti_policy[IFLA_VTI_MAX + 1] = {
        [IFLA_VTI_REMOTE]       = { .len = FIELD_SIZEOF(struct iphdr, daddr) },
  };
  
@@ -99761,10 +101961,10 @@ index 13ef00f..8ffca25 100644
        .maxtype        = IFLA_VTI_MAX,
        .policy         = vti_policy,
 diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
-index b3e86ea..18ce98c 100644
+index 648fa14..97864d0 100644
 --- a/net/ipv4/ipconfig.c
 +++ b/net/ipv4/ipconfig.c
-@@ -334,7 +334,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg)
+@@ -333,7 +333,7 @@ static int __init ic_devinet_ioctl(unsigned int cmd, struct ifreq *arg)
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
@@ -99773,7 +101973,7 @@ index b3e86ea..18ce98c 100644
        set_fs(oldfs);
        return res;
  }
-@@ -345,7 +345,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg)
+@@ -344,7 +344,7 @@ static int __init ic_dev_ioctl(unsigned int cmd, struct ifreq *arg)
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
@@ -99782,7 +101982,7 @@ index b3e86ea..18ce98c 100644
        set_fs(oldfs);
        return res;
  }
-@@ -356,7 +356,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg)
+@@ -355,7 +355,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg)
  
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
@@ -99792,7 +101992,7 @@ index b3e86ea..18ce98c 100644
        return res;
  }
 diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c
-index 62eaa00..29b2dc2 100644
+index 37096d6..86abb03 100644
 --- a/net/ipv4/ipip.c
 +++ b/net/ipv4/ipip.c
 @@ -124,7 +124,7 @@ MODULE_PARM_DESC(log_ecn_error, "Log packets received with corrupted ECN");
@@ -99804,8 +102004,8 @@ index 62eaa00..29b2dc2 100644
  
  static int ipip_err(struct sk_buff *skb, u32 info)
  {
-@@ -409,7 +409,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = {
-       [IFLA_IPTUN_PMTUDISC]           = { .type = NLA_U8 },
+@@ -487,7 +487,7 @@ static const struct nla_policy ipip_policy[IFLA_IPTUN_MAX + 1] = {
+       [IFLA_IPTUN_ENCAP_DPORT]        = { .type = NLA_U16 },
  };
  
 -static struct rtnl_link_ops ipip_link_ops __read_mostly = {
@@ -99912,7 +102112,7 @@ index 99e810f..3711b81 100644
  
        case IPT_SO_GET_ENTRIES:
 diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
-index 2510c02..cfb34fa 100644
+index e90f83a..3e6acca 100644
 --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
 +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
 @@ -720,7 +720,7 @@ static int clusterip_net_init(struct net *net)
@@ -99925,7 +102125,7 @@ index 2510c02..cfb34fa 100644
                pr_err("Unable to proc dir entry\n");
                return -ENOMEM;
 diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
-index 044a0dd..e0c1971 100644
+index 5d740cc..b2842b9 100644
 --- a/net/ipv4/ping.c
 +++ b/net/ipv4/ping.c
 @@ -59,7 +59,7 @@ struct ping_table {
@@ -99937,7 +102137,7 @@ index 044a0dd..e0c1971 100644
  EXPORT_SYMBOL_GPL(pingv6_ops);
  
  static u16 ping_port_rover;
-@@ -348,7 +348,7 @@ static int ping_check_bind_addr(struct sock *sk, struct inet_sock *isk,
+@@ -350,7 +350,7 @@ static int ping_check_bind_addr(struct sock *sk, struct inet_sock *isk,
                                return -ENODEV;
                        }
                }
@@ -99946,7 +102146,7 @@ index 044a0dd..e0c1971 100644
                                                    scoped);
                rcu_read_unlock();
  
-@@ -556,7 +556,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info)
+@@ -558,7 +558,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info)
                }
  #if IS_ENABLED(CONFIG_IPV6)
        } else if (skb->protocol == htons(ETH_P_IPV6)) {
@@ -99955,7 +102155,7 @@ index 044a0dd..e0c1971 100644
  #endif
        }
  
-@@ -574,7 +574,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info)
+@@ -576,7 +576,7 @@ void ping_err(struct sk_buff *skb, int offset, u32 info)
                                      info, (u8 *)icmph);
  #if IS_ENABLED(CONFIG_IPV6)
                } else if (family == AF_INET6) {
@@ -99964,49 +102164,7 @@ index 044a0dd..e0c1971 100644
                                                   info, (u8 *)icmph);
  #endif
                }
-@@ -844,6 +844,8 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
- {
-       struct inet_sock *isk = inet_sk(sk);
-       int family = sk->sk_family;
-+      struct sockaddr_in *sin;
-+      struct sockaddr_in6 *sin6;
-       struct sk_buff *skb;
-       int copied, err;
-@@ -853,12 +855,19 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
-       if (flags & MSG_OOB)
-               goto out;
-+      if (addr_len) {
-+              if (family == AF_INET)
-+                      *addr_len = sizeof(*sin);
-+              else if (family == AF_INET6 && addr_len)
-+                      *addr_len = sizeof(*sin6);
-+      }
-+
-       if (flags & MSG_ERRQUEUE) {
-               if (family == AF_INET) {
-                       return ip_recv_error(sk, msg, len, addr_len);
- #if IS_ENABLED(CONFIG_IPV6)
-               } else if (family == AF_INET6) {
--                      return pingv6_ops.ipv6_recv_error(sk, msg, len,
-+                      return pingv6_ops->ipv6_recv_error(sk, msg, len,
-                                                         addr_len);
- #endif
-               }
-@@ -890,7 +899,6 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
-                       sin->sin_port = 0 /* skb->h.uh->source */;
-                       sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
-                       memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
--                      *addr_len = sizeof(*sin);
-               }
-               if (isk->cmsg_flags)
-@@ -912,14 +920,13 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
-                       sin6->sin6_scope_id =
-                               ipv6_iface_scope_id(&sin6->sin6_addr,
-                                                   IP6CB(skb)->iif);
--                      *addr_len = sizeof(*sin6);
+@@ -910,10 +910,10 @@ int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
                }
  
                if (inet6_sk(sk)->rxopt.all)
@@ -100019,7 +102177,7 @@ index 044a0dd..e0c1971 100644
                else if (skb->protocol == htons(ETH_P_IP) && isk->cmsg_flags)
                        ip_cmsg_recv(msg, skb);
  #endif
-@@ -1111,7 +1118,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
+@@ -1105,7 +1105,7 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
                from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
                0, sock_i_ino(sp),
                atomic_read(&sp->sk_refcnt), sp,
@@ -100029,10 +102187,10 @@ index 044a0dd..e0c1971 100644
  
  static int ping_v4_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
-index a9dbe58..46f577f 100644
+index 739db31..74f0210 100644
 --- a/net/ipv4/raw.c
 +++ b/net/ipv4/raw.c
-@@ -311,7 +311,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
+@@ -314,7 +314,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
  int raw_rcv(struct sock *sk, struct sk_buff *skb)
  {
        if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) {
@@ -100041,25 +102199,7 @@ index a9dbe58..46f577f 100644
                kfree_skb(skb);
                return NET_RX_DROP;
        }
-@@ -696,6 +696,9 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
-       if (flags & MSG_OOB)
-               goto out;
-+      if (addr_len)
-+              *addr_len = sizeof(*sin);
-+
-       if (flags & MSG_ERRQUEUE) {
-               err = ip_recv_error(sk, msg, len, addr_len);
-               goto out;
-@@ -723,7 +726,6 @@ static int raw_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
-               sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
-               sin->sin_port = 0;
-               memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
--              *addr_len = sizeof(*sin);
-       }
-       if (inet->cmsg_flags)
-               ip_cmsg_recv(msg, skb);
-@@ -748,16 +750,20 @@ static int raw_init(struct sock *sk)
+@@ -755,16 +755,20 @@ static int raw_init(struct sock *sk)
  
  static int raw_seticmpfilter(struct sock *sk, char __user *optval, int optlen)
  {
@@ -100081,7 +102221,7 @@ index a9dbe58..46f577f 100644
  
        if (get_user(len, optlen))
                goto out;
-@@ -767,8 +773,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o
+@@ -774,8 +778,8 @@ static int raw_geticmpfilter(struct sock *sk, char __user *optval, int __user *o
        if (len > sizeof(struct icmp_filter))
                len = sizeof(struct icmp_filter);
        ret = -EFAULT;
@@ -100092,7 +102232,7 @@ index a9dbe58..46f577f 100644
                goto out;
        ret = 0;
  out:  return ret;
-@@ -997,7 +1003,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
+@@ -1004,7 +1008,7 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
                0, 0L, 0,
                from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)),
                0, sock_i_ino(sp),
@@ -100102,10 +102242,10 @@ index a9dbe58..46f577f 100644
  
  static int raw_seq_show(struct seq_file *seq, void *v)
 diff --git a/net/ipv4/route.c b/net/ipv4/route.c
-index 5e676be..f6c62f1 100644
+index 6a2155b..d426880 100644
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
-@@ -227,7 +227,7 @@ static const struct seq_operations rt_cache_seq_ops = {
+@@ -228,7 +228,7 @@ static const struct seq_operations rt_cache_seq_ops = {
  
  static int rt_cache_seq_open(struct inode *inode, struct file *file)
  {
@@ -100114,7 +102254,7 @@ index 5e676be..f6c62f1 100644
  }
  
  static const struct file_operations rt_cache_seq_fops = {
-@@ -318,7 +318,7 @@ static const struct seq_operations rt_cpu_seq_ops = {
+@@ -319,7 +319,7 @@ static const struct seq_operations rt_cpu_seq_ops = {
  
  static int rt_cpu_seq_open(struct inode *inode, struct file *file)
  {
@@ -100123,7 +102263,7 @@ index 5e676be..f6c62f1 100644
  }
  
  static const struct file_operations rt_cpu_seq_fops = {
-@@ -356,7 +356,7 @@ static int rt_acct_proc_show(struct seq_file *m, void *v)
+@@ -357,7 +357,7 @@ static int rt_acct_proc_show(struct seq_file *m, void *v)
  
  static int rt_acct_proc_open(struct inode *inode, struct file *file)
  {
@@ -100132,7 +102272,30 @@ index 5e676be..f6c62f1 100644
  }
  
  static const struct file_operations rt_acct_proc_fops = {
-@@ -2610,34 +2610,34 @@ static struct ctl_table ipv4_route_flush_table[] = {
+@@ -459,11 +459,11 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst,
+ #define IP_IDENTS_SZ 2048u
+ struct ip_ident_bucket {
+-      atomic_t        id;
++      atomic_unchecked_t      id;
+       u32             stamp32;
+ };
+-static struct ip_ident_bucket *ip_idents __read_mostly;
++static struct ip_ident_bucket ip_idents[IP_IDENTS_SZ] __read_mostly;
+ /* In order to protect privacy, we add a perturbation to identifiers
+  * if one generator is seldom used. This makes hard for an attacker
+@@ -479,7 +479,7 @@ u32 ip_idents_reserve(u32 hash, int segs)
+       if (old != now && cmpxchg(&bucket->stamp32, old, now) == old)
+               delta = prandom_u32_max(now - old);
+-      return atomic_add_return(segs + delta, &bucket->id) - segs;
++      return atomic_add_return_unchecked(segs + delta, &bucket->id) - segs;
+ }
+ EXPORT_SYMBOL(ip_idents_reserve);
+@@ -2624,34 +2624,34 @@ static struct ctl_table ipv4_route_flush_table[] = {
                .maxlen         = sizeof(int),
                .mode           = 0200,
                .proc_handler   = ipv4_sysctl_rtcache_flush,
@@ -100175,7 +102338,7 @@ index 5e676be..f6c62f1 100644
  err_dup:
        return -ENOMEM;
  }
-@@ -2660,8 +2660,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = {
+@@ -2674,8 +2674,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = {
  
  static __net_init int rt_genid_init(struct net *net)
  {
@@ -100186,8 +102349,21 @@ index 5e676be..f6c62f1 100644
        get_random_bytes(&net->ipv4.dev_addr_genid,
                         sizeof(net->ipv4.dev_addr_genid));
        return 0;
+@@ -2718,11 +2718,7 @@ int __init ip_rt_init(void)
+ {
+       int rc = 0;
+-      ip_idents = kmalloc(IP_IDENTS_SZ * sizeof(*ip_idents), GFP_KERNEL);
+-      if (!ip_idents)
+-              panic("IP: failed to allocate ip_idents\n");
+-
+-      prandom_bytes(ip_idents, IP_IDENTS_SZ * sizeof(*ip_idents));
++      prandom_bytes(ip_idents, sizeof(ip_idents));
+ #ifdef CONFIG_IP_ROUTE_CLASSID
+       ip_rt_acct = __alloc_percpu(256 * sizeof(struct ip_rt_acct), __alignof__(struct ip_rt_acct));
 diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
-index 5cde8f2..5f5684e 100644
+index b3c53c8..35cc18d 100644
 --- a/net/ipv4/sysctl_net_ipv4.c
 +++ b/net/ipv4/sysctl_net_ipv4.c
 @@ -60,7 +60,7 @@ static int ipv4_local_port_range(struct ctl_table *table, int write,
@@ -100244,16 +102420,7 @@ index 5cde8f2..5f5684e 100644
        struct tcp_fastopen_context *ctxt;
        int ret;
        u32  user_key[4]; /* 16 bytes, matching TCP_FASTOPEN_KEY_LENGTH */
-@@ -438,7 +438,7 @@ static struct ctl_table ipv4_table[] = {
-       },
-       {
-               .procname       = "ip_local_reserved_ports",
--              .data           = NULL, /* initialized in sysctl_ipv4_init */
-+              .data           = sysctl_local_reserved_ports,
-               .maxlen         = 65536,
-               .mode           = 0644,
-               .proc_handler   = proc_do_large_bitmap,
-@@ -843,13 +843,12 @@ static struct ctl_table ipv4_net_table[] = {
+@@ -874,13 +874,12 @@ static struct ctl_table ipv4_net_table[] = {
  
  static __net_init int ipv4_sysctl_init_net(struct net *net)
  {
@@ -100269,7 +102436,7 @@ index 5cde8f2..5f5684e 100644
                if (table == NULL)
                        goto err_alloc;
  
-@@ -858,15 +857,17 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
+@@ -889,7 +888,10 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
                        table[i].data += (void *)net - (void *)&init_net;
        }
  
@@ -100281,37 +102448,11 @@ index 5cde8f2..5f5684e 100644
        if (net->ipv4.ipv4_hdr == NULL)
                goto err_reg;
  
-       return 0;
- err_reg:
--      if (!net_eq(net, &init_net))
--              kfree(table);
-+      kfree(table);
- err_alloc:
-       return -ENOMEM;
- }
-@@ -888,16 +889,6 @@ static __net_initdata struct pernet_operations ipv4_sysctl_ops = {
- static __init int sysctl_ipv4_init(void)
- {
-       struct ctl_table_header *hdr;
--      struct ctl_table *i;
--
--      for (i = ipv4_table; i->procname; i++) {
--              if (strcmp(i->procname, "ip_local_reserved_ports") == 0) {
--                      i->data = sysctl_local_reserved_ports;
--                      break;
--              }
--      }
--      if (!i->procname)
--              return -EINVAL;
-       hdr = register_net_sysctl(&init_net, "net/ipv4", ipv4_table);
-       if (hdr == NULL)
 diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index 3a26b3b..8bbe4ae 100644
+index d107ee2..bcebf11 100644
 --- a/net/ipv4/tcp_input.c
 +++ b/net/ipv4/tcp_input.c
-@@ -754,7 +754,7 @@ static void tcp_update_pacing_rate(struct sock *sk)
+@@ -765,7 +765,7 @@ static void tcp_update_pacing_rate(struct sock *sk)
         * without any lock. We want to make sure compiler wont store
         * intermediate values in this location.
         */
@@ -100320,7 +102461,7 @@ index 3a26b3b..8bbe4ae 100644
                                                sk->sk_max_pacing_rate);
  }
  
-@@ -4478,7 +4478,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb,
+@@ -4527,7 +4527,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb,
   * simplifies code)
   */
  static void
@@ -100329,7 +102470,7 @@ index 3a26b3b..8bbe4ae 100644
             struct sk_buff *head, struct sk_buff *tail,
             u32 start, u32 end)
  {
-@@ -5558,6 +5558,7 @@ discard:
+@@ -5506,6 +5506,7 @@ discard:
            tcp_paws_reject(&tp->rx_opt, 0))
                goto discard_and_undo;
  
@@ -100337,7 +102478,7 @@ index 3a26b3b..8bbe4ae 100644
        if (th->syn) {
                /* We see SYN without ACK. It is attempt of
                 * simultaneous connect with crossed SYNs.
-@@ -5608,6 +5609,7 @@ discard:
+@@ -5556,6 +5557,7 @@ discard:
                goto discard;
  #endif
        }
@@ -100345,7 +102486,7 @@ index 3a26b3b..8bbe4ae 100644
        /* "fifth, if neither of the SYN or RST bits is set then
         * drop the segment and return."
         */
-@@ -5654,7 +5656,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
+@@ -5602,7 +5604,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
                        goto discard;
  
                if (th->syn) {
@@ -100355,13 +102496,13 @@ index 3a26b3b..8bbe4ae 100644
                        if (icsk->icsk_af_ops->conn_request(sk, skb) < 0)
                                return 1;
 diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
-index 438f3b9..bc9e1ad 100644
+index ef7089c..a3e65fb 100644
 --- a/net/ipv4/tcp_ipv4.c
 +++ b/net/ipv4/tcp_ipv4.c
-@@ -91,6 +91,10 @@ int sysctl_tcp_low_latency __read_mostly;
+@@ -89,6 +89,10 @@ int sysctl_tcp_tw_reuse __read_mostly;
+ int sysctl_tcp_low_latency __read_mostly;
  EXPORT_SYMBOL(sysctl_tcp_low_latency);
  
 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
 +extern int grsec_enable_blackhole;
 +#endif
@@ -100369,7 +102510,7 @@ index 438f3b9..bc9e1ad 100644
  #ifdef CONFIG_TCP_MD5SIG
  static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key,
                               __be32 daddr, __be32 saddr, const struct tcphdr *th);
-@@ -1829,6 +1833,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -1469,6 +1473,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
        return 0;
  
  reset:
@@ -100379,7 +102520,7 @@ index 438f3b9..bc9e1ad 100644
        tcp_v4_send_reset(rsk, skb);
  discard:
        kfree_skb(skb);
-@@ -1974,12 +1981,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
+@@ -1633,12 +1640,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
        TCP_SKB_CB(skb)->sacked  = 0;
  
        sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
@@ -100402,7 +102543,7 @@ index 438f3b9..bc9e1ad 100644
  
        if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
                NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
-@@ -2033,6 +2047,10 @@ csum_error:
+@@ -1694,6 +1708,10 @@ csum_error:
  bad_packet:
                TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
        } else {
@@ -100414,7 +102555,7 @@ index 438f3b9..bc9e1ad 100644
        }
  
 diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
-index 05c1b15..3e9344b 100644
+index 63d2680..2db9d6b 100644
 --- a/net/ipv4/tcp_minisocks.c
 +++ b/net/ipv4/tcp_minisocks.c
 @@ -27,6 +27,10 @@
@@ -100428,7 +102569,7 @@ index 05c1b15..3e9344b 100644
  int sysctl_tcp_syncookies __read_mostly = 1;
  EXPORT_SYMBOL(sysctl_tcp_syncookies);
  
-@@ -709,7 +713,10 @@ embryonic_reset:
+@@ -739,7 +743,10 @@ embryonic_reset:
                 * avoid becoming vulnerable to outside attack aiming at
                 * resetting legit local connections.
                 */
@@ -100441,10 +102582,10 @@ index 05c1b15..3e9344b 100644
                reqsk_fastopen_remove(sk, req, true);
                tcp_reset(sk);
 diff --git a/net/ipv4/tcp_probe.c b/net/ipv4/tcp_probe.c
-index 3b66610..bfbe23a 100644
+index ebf5ff5..4d1ff32 100644
 --- a/net/ipv4/tcp_probe.c
 +++ b/net/ipv4/tcp_probe.c
-@@ -238,7 +238,7 @@ static ssize_t tcpprobe_read(struct file *file, char __user *buf,
+@@ -236,7 +236,7 @@ static ssize_t tcpprobe_read(struct file *file, char __user *buf,
                if (cnt + width >= len)
                        break;
  
@@ -100454,7 +102595,7 @@ index 3b66610..bfbe23a 100644
                cnt += width;
        }
 diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
-index 286227a..c495a76 100644
+index 9b21ae8..4eb67df 100644
 --- a/net/ipv4/tcp_timer.c
 +++ b/net/ipv4/tcp_timer.c
 @@ -22,6 +22,10 @@
@@ -100468,7 +102609,7 @@ index 286227a..c495a76 100644
  int sysctl_tcp_syn_retries __read_mostly = TCP_SYN_RETRIES;
  int sysctl_tcp_synack_retries __read_mostly = TCP_SYNACK_RETRIES;
  int sysctl_tcp_keepalive_time __read_mostly = TCP_KEEPALIVE_TIME;
-@@ -192,6 +196,13 @@ static int tcp_write_timeout(struct sock *sk)
+@@ -191,6 +195,13 @@ static int tcp_write_timeout(struct sock *sk)
                }
        }
  
@@ -100483,7 +102624,7 @@ index 286227a..c495a76 100644
                                  syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) {
                /* Has it gone just too far? */
 diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
-index 54a5fe9..78fea00 100644
+index cd0db54..93a6518 100644
 --- a/net/ipv4/udp.c
 +++ b/net/ipv4/udp.c
 @@ -87,6 +87,7 @@
@@ -100494,7 +102635,7 @@ index 54a5fe9..78fea00 100644
  #include <linux/socket.h>
  #include <linux/sockios.h>
  #include <linux/igmp.h>
-@@ -113,6 +114,10 @@
+@@ -114,6 +115,10 @@
  #include <net/busy_poll.h>
  #include "udp_impl.h"
  
@@ -100505,8 +102646,8 @@ index 54a5fe9..78fea00 100644
  struct udp_table udp_table __read_mostly;
  EXPORT_SYMBOL(udp_table);
  
-@@ -615,6 +620,9 @@ found:
-       return s;
+@@ -595,6 +600,9 @@ static inline bool __udp_is_mcast_sock(struct net *net, struct sock *sk,
+       return true;
  }
  
 +extern int gr_search_udp_recvmsg(struct sock *sk, const struct sk_buff *skb);
@@ -100515,7 +102656,7 @@ index 54a5fe9..78fea00 100644
  /*
   * This routine is called by the ICMP module when it gets some
   * sort of error condition.  If err < 0 then the socket should
-@@ -914,9 +922,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
+@@ -932,9 +940,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
                dport = usin->sin_port;
                if (dport == 0)
                        return -EINVAL;
@@ -100534,7 +102675,7 @@ index 54a5fe9..78fea00 100644
                daddr = inet->inet_daddr;
                dport = inet->inet_dport;
                /* Open fast path for connected socket.
-@@ -1164,7 +1181,7 @@ static unsigned int first_packet_length(struct sock *sk)
+@@ -1182,7 +1199,7 @@ static unsigned int first_packet_length(struct sock *sk)
                                 IS_UDPLITE(sk));
                UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
                                 IS_UDPLITE(sk));
@@ -100543,20 +102684,7 @@ index 54a5fe9..78fea00 100644
                __skb_unlink(skb, rcvq);
                __skb_queue_tail(&list_kill, skb);
        }
-@@ -1235,6 +1252,12 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
-       int is_udplite = IS_UDPLITE(sk);
-       bool slow;
-+      /*
-+       *      Check any passed addresses
-+       */
-+      if (addr_len)
-+              *addr_len = sizeof(*sin);
-+
-       if (flags & MSG_ERRQUEUE)
-               return ip_recv_error(sk, msg, len, addr_len);
-@@ -1244,6 +1267,10 @@ try_again:
+@@ -1262,6 +1279,10 @@ try_again:
        if (!skb)
                goto out;
  
@@ -100567,7 +102695,7 @@ index 54a5fe9..78fea00 100644
        ulen = skb->len - sizeof(struct udphdr);
        copied = len;
        if (copied > ulen)
-@@ -1277,7 +1304,7 @@ try_again:
+@@ -1295,7 +1316,7 @@ try_again:
        if (unlikely(err)) {
                trace_kfree_skb(skb, udp_recvmsg);
                if (!peeked) {
@@ -100576,15 +102704,7 @@ index 54a5fe9..78fea00 100644
                        UDP_INC_STATS_USER(sock_net(sk),
                                           UDP_MIB_INERRORS, is_udplite);
                }
-@@ -1296,7 +1323,6 @@ try_again:
-               sin->sin_port = udp_hdr(skb)->source;
-               sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
-               memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
--              *addr_len = sizeof(*sin);
-       }
-       if (inet->cmsg_flags)
-               ip_cmsg_recv(msg, skb);
-@@ -1567,7 +1593,7 @@ csum_error:
+@@ -1592,7 +1613,7 @@ csum_error:
        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
  drop:
        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
@@ -100593,7 +102713,7 @@ index 54a5fe9..78fea00 100644
        kfree_skb(skb);
        return -1;
  }
-@@ -1586,7 +1612,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
+@@ -1611,7 +1632,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
                        skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
  
                if (!skb1) {
@@ -100602,7 +102722,7 @@ index 54a5fe9..78fea00 100644
                        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
                                         IS_UDPLITE(sk));
                        UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
-@@ -1787,6 +1813,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
+@@ -1812,6 +1833,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
                goto csum_error;
  
        UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
@@ -100612,7 +102732,7 @@ index 54a5fe9..78fea00 100644
        icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
  
        /*
-@@ -2355,7 +2384,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
+@@ -2398,7 +2422,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
                from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
                0, sock_i_ino(sp),
                atomic_read(&sp->sk_refcnt), sp,
@@ -100675,10 +102795,28 @@ index 6156f68..d6ab46d 100644
        return -ENOMEM;
  }
 diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index 6c7fa08..8a31430 100644
+index 0169ccf..50d7b04 100644
 --- a/net/ipv6/addrconf.c
 +++ b/net/ipv6/addrconf.c
-@@ -598,7 +598,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
+@@ -171,7 +171,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = {
+       .hop_limit              = IPV6_DEFAULT_HOPLIMIT,
+       .mtu6                   = IPV6_MIN_MTU,
+       .accept_ra              = 1,
+-      .accept_redirects       = 1,
++      .accept_redirects       = 0,
+       .autoconf               = 1,
+       .force_mld_version      = 0,
+       .mldv1_unsolicited_report_interval = 10 * HZ,
+@@ -208,7 +208,7 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
+       .hop_limit              = IPV6_DEFAULT_HOPLIMIT,
+       .mtu6                   = IPV6_MIN_MTU,
+       .accept_ra              = 1,
+-      .accept_redirects       = 1,
++      .accept_redirects       = 0,
+       .autoconf               = 1,
+       .force_mld_version      = 0,
+       .mldv1_unsolicited_report_interval = 10 * HZ,
+@@ -604,7 +604,7 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
                idx = 0;
                head = &net->dev_index_head[h];
                rcu_read_lock();
@@ -100687,7 +102825,7 @@ index 6c7fa08..8a31430 100644
                          net->dev_base_seq;
                hlist_for_each_entry_rcu(dev, head, index_hlist) {
                        if (idx < s_idx)
-@@ -2395,7 +2395,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
+@@ -2396,7 +2396,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg)
                p.iph.ihl = 5;
                p.iph.protocol = IPPROTO_IPV6;
                p.iph.ttl = 64;
@@ -100696,7 +102834,7 @@ index 6c7fa08..8a31430 100644
  
                if (ops->ndo_do_ioctl) {
                        mm_segment_t oldfs = get_fs();
-@@ -3528,16 +3528,23 @@ static const struct file_operations if6_fops = {
+@@ -3534,16 +3534,23 @@ static const struct file_operations if6_fops = {
        .release        = seq_release_net,
  };
  
@@ -100721,7 +102859,7 @@ index 6c7fa08..8a31430 100644
  }
  
  static struct pernet_operations if6_proc_net_ops = {
-@@ -4146,7 +4153,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
+@@ -4159,7 +4166,7 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
        s_ip_idx = ip_idx = cb->args[2];
  
        rcu_read_lock();
@@ -100730,16 +102868,16 @@ index 6c7fa08..8a31430 100644
        for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
                idx = 0;
                head = &net->dev_index_head[h];
-@@ -4758,7 +4765,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
-                       dst_free(&ifp->rt->dst);
+@@ -4788,7 +4795,7 @@ static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
+               rt_genid_bump_ipv6(net);
                break;
        }
 -      atomic_inc(&net->ipv6.dev_addr_genid);
 +      atomic_inc_unchecked(&net->ipv6.dev_addr_genid);
-       rt_genid_bump_ipv6(net);
  }
  
-@@ -4779,7 +4786,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write,
+ static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifp)
+@@ -4808,7 +4815,7 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write,
        int *valp = ctl->data;
        int val = *valp;
        loff_t pos = *ppos;
@@ -100748,7 +102886,7 @@ index 6c7fa08..8a31430 100644
        int ret;
  
        /*
-@@ -4864,7 +4871,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write,
+@@ -4893,7 +4900,7 @@ int addrconf_sysctl_disable(struct ctl_table *ctl, int write,
        int *valp = ctl->data;
        int val = *valp;
        loff_t pos = *ppos;
@@ -100758,23 +102896,23 @@ index 6c7fa08..8a31430 100644
  
        /*
 diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
-index d935889..2f64330 100644
+index e8c4400..a4cd5da 100644
 --- a/net/ipv6/af_inet6.c
 +++ b/net/ipv6/af_inet6.c
-@@ -776,7 +776,7 @@ static int __net_init inet6_net_init(struct net *net)
-       net->ipv6.sysctl.bindv6only = 0;
+@@ -766,7 +766,7 @@ static int __net_init inet6_net_init(struct net *net)
        net->ipv6.sysctl.icmpv6_time = 1*HZ;
        net->ipv6.sysctl.flowlabel_consistency = 1;
--      atomic_set(&net->ipv6.rt_genid, 0);
-+      atomic_set_unchecked(&net->ipv6.rt_genid, 0);
+       net->ipv6.sysctl.auto_flowlabels = 0;
+-      atomic_set(&net->ipv6.fib6_sernum, 1);
++      atomic_set_unchecked(&net->ipv6.fib6_sernum, 1);
  
        err = ipv6_init_mibs(net);
        if (err)
 diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c
-index c3bf2d2..1f00573 100644
+index 2cdc383..09cffb8 100644
 --- a/net/ipv6/datagram.c
 +++ b/net/ipv6/datagram.c
-@@ -938,5 +938,5 @@ void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp,
+@@ -928,5 +928,5 @@ void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp,
                   0,
                   sock_i_ino(sp),
                   atomic_read(&sp->sk_refcnt), sp,
@@ -100782,10 +102920,10 @@ index c3bf2d2..1f00573 100644
 +                 atomic_read_unchecked(&sp->sk_drops));
  }
 diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
-index 7b32652..0bc348b 100644
+index 97ae700..18dcae0 100644
 --- a/net/ipv6/icmp.c
 +++ b/net/ipv6/icmp.c
-@@ -1005,7 +1005,7 @@ static struct ctl_table ipv6_icmp_table_template[] = {
+@@ -997,7 +997,7 @@ static struct ctl_table ipv6_icmp_table_template[] = {
  
  struct ctl_table * __net_init ipv6_icmp_sysctl_init(struct net *net)
  {
@@ -100794,20 +102932,38 @@ index 7b32652..0bc348b 100644
  
        table = kmemdup(ipv6_icmp_table_template,
                        sizeof(ipv6_icmp_table_template),
+diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
+index b2d1838..0194c04 100644
+--- a/net/ipv6/ip6_fib.c
++++ b/net/ipv6/ip6_fib.c
+@@ -99,9 +99,9 @@ static int fib6_new_sernum(struct net *net)
+       int new, old;
+       do {
+-              old = atomic_read(&net->ipv6.fib6_sernum);
++              old = atomic_read_unchecked(&net->ipv6.fib6_sernum);
+               new = old < INT_MAX ? old + 1 : 1;
+-      } while (atomic_cmpxchg(&net->ipv6.fib6_sernum,
++      } while (atomic_cmpxchg_unchecked(&net->ipv6.fib6_sernum,
+                               old, new) != old);
+       return new;
+ }
 diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
-index 9d92146..d986c6a 100644
+index 0e32d2e..98cbe65 100644
 --- a/net/ipv6/ip6_gre.c
 +++ b/net/ipv6/ip6_gre.c
-@@ -71,7 +71,7 @@ struct ip6gre_net {
+@@ -71,8 +71,8 @@ struct ip6gre_net {
        struct net_device *fb_tunnel_dev;
  };
  
 -static struct rtnl_link_ops ip6gre_link_ops __read_mostly;
+-static struct rtnl_link_ops ip6gre_tap_ops __read_mostly;
 +static struct rtnl_link_ops ip6gre_link_ops;
++static struct rtnl_link_ops ip6gre_tap_ops;
  static int ip6gre_tunnel_init(struct net_device *dev);
  static void ip6gre_tunnel_setup(struct net_device *dev);
  static void ip6gre_tunnel_link(struct ip6gre_net *ign, struct ip6_tnl *t);
-@@ -1291,7 +1291,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev)
+@@ -1289,7 +1289,7 @@ static void ip6gre_fb_tunnel_init(struct net_device *dev)
  }
  
  
@@ -100816,7 +102972,7 @@ index 9d92146..d986c6a 100644
        .handler     = ip6gre_rcv,
        .err_handler = ip6gre_err,
        .flags       = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL,
-@@ -1636,7 +1636,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = {
+@@ -1650,7 +1650,7 @@ static const struct nla_policy ip6gre_policy[IFLA_GRE_MAX + 1] = {
        [IFLA_GRE_FLAGS]       = { .type = NLA_U32 },
  };
  
@@ -100825,7 +102981,7 @@ index 9d92146..d986c6a 100644
        .kind           = "ip6gre",
        .maxtype        = IFLA_GRE_MAX,
        .policy         = ip6gre_policy,
-@@ -1650,7 +1650,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
+@@ -1664,7 +1664,7 @@ static struct rtnl_link_ops ip6gre_link_ops __read_mostly = {
        .fill_info      = ip6gre_fill_info,
  };
  
@@ -100835,7 +102991,7 @@ index 9d92146..d986c6a 100644
        .maxtype        = IFLA_GRE_MAX,
        .policy         = ip6gre_policy,
 diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
-index afa0824..04ba530 100644
+index 9cb94cf..5678108 100644
 --- a/net/ipv6/ip6_tunnel.c
 +++ b/net/ipv6/ip6_tunnel.c
 @@ -86,7 +86,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2)
@@ -100847,7 +103003,7 @@ index afa0824..04ba530 100644
  
  static int ip6_tnl_net_id __read_mostly;
  struct ip6_tnl_net {
-@@ -1708,7 +1708,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = {
+@@ -1706,7 +1706,7 @@ static const struct nla_policy ip6_tnl_policy[IFLA_IPTUN_MAX + 1] = {
        [IFLA_IPTUN_PROTO]              = { .type = NLA_U8 },
  };
  
@@ -100857,7 +103013,7 @@ index afa0824..04ba530 100644
        .maxtype        = IFLA_IPTUN_MAX,
        .policy         = ip6_tnl_policy,
 diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c
-index 6cc9f93..6e5bb7c 100644
+index bcda14d..49378c9 100644
 --- a/net/ipv6/ip6_vti.c
 +++ b/net/ipv6/ip6_vti.c
 @@ -62,7 +62,7 @@ static u32 HASH(const struct in6_addr *addr1, const struct in6_addr *addr2)
@@ -100869,7 +103025,7 @@ index 6cc9f93..6e5bb7c 100644
  
  static int vti6_net_id __read_mostly;
  struct vti6_net {
-@@ -980,7 +980,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = {
+@@ -981,7 +981,7 @@ static const struct nla_policy vti6_policy[IFLA_VTI_MAX + 1] = {
        [IFLA_VTI_OKEY]         = { .type = NLA_U32 },
  };
  
@@ -100879,10 +103035,10 @@ index 6cc9f93..6e5bb7c 100644
        .maxtype        = IFLA_VTI_MAX,
        .policy         = vti6_policy,
 diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
-index edb58af..78de133 100644
+index e1a9583..7dd8f4d 100644
 --- a/net/ipv6/ipv6_sockglue.c
 +++ b/net/ipv6/ipv6_sockglue.c
-@@ -991,7 +991,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
+@@ -993,7 +993,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
                if (sk->sk_type != SOCK_STREAM)
                        return -ENOPROTOOPT;
  
@@ -100941,10 +103097,10 @@ index e080fbb..412b3cf 100644
  
        case IP6T_SO_GET_ENTRIES:
 diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
-index 767ab8d..c5ec70a 100644
+index 6f187c8..34b367f 100644
 --- a/net/ipv6/netfilter/nf_conntrack_reasm.c
 +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
-@@ -90,12 +90,11 @@ static struct ctl_table nf_ct_frag6_sysctl_table[] = {
+@@ -96,12 +96,11 @@ static struct ctl_table nf_ct_frag6_sysctl_table[] = {
  
  static int nf_ct_frag6_sysctl_register(struct net *net)
  {
@@ -100959,10 +103115,10 @@ index 767ab8d..c5ec70a 100644
                                GFP_KERNEL);
                if (table == NULL)
                        goto err_alloc;
-@@ -103,9 +102,9 @@ static int nf_ct_frag6_sysctl_register(struct net *net)
-               table[0].data = &net->nf_frag.frags.timeout;
-               table[1].data = &net->nf_frag.frags.low_thresh;
+@@ -112,9 +111,9 @@ static int nf_ct_frag6_sysctl_register(struct net *net)
                table[2].data = &net->nf_frag.frags.high_thresh;
+               table[2].extra1 = &net->nf_frag.frags.low_thresh;
+               table[2].extra2 = &init_net.nf_frag.frags.high_thresh;
 -      }
 -
 -      hdr = register_net_sysctl(net, "net/netfilter", table);
@@ -100972,7 +103128,7 @@ index 767ab8d..c5ec70a 100644
        if (hdr == NULL)
                goto err_reg;
  
-@@ -113,8 +112,7 @@ static int nf_ct_frag6_sysctl_register(struct net *net)
+@@ -122,8 +121,7 @@ static int nf_ct_frag6_sysctl_register(struct net *net)
        return 0;
  
  err_reg:
@@ -100982,33 +103138,11 @@ index 767ab8d..c5ec70a 100644
  err_alloc:
        return -ENOMEM;
  }
-diff --git a/net/ipv6/output_core.c b/net/ipv6/output_core.c
-index 56596ce..c734618 100644
---- a/net/ipv6/output_core.c
-+++ b/net/ipv6/output_core.c
-@@ -10,7 +10,7 @@
- void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt)
- {
--      static atomic_t ipv6_fragmentation_id;
-+      static atomic_unchecked_t ipv6_fragmentation_id;
-       struct in6_addr addr;
-       int ident;
-@@ -26,7 +26,7 @@ void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt)
-               return;
-       }
- #endif
--      ident = atomic_inc_return(&ipv6_fragmentation_id);
-+      ident = atomic_inc_return_unchecked(&ipv6_fragmentation_id);
-       addr = rt->rt6i_dst.addr;
-       addr.s6_addr32[0] ^= (__force __be32)ident;
 diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
-index bda7429..469b26b 100644
+index 5b7a1ed..d9da205 100644
 --- a/net/ipv6/ping.c
 +++ b/net/ipv6/ping.c
-@@ -246,6 +246,24 @@ static struct pernet_operations ping_v6_net_ops = {
+@@ -240,6 +240,24 @@ static struct pernet_operations ping_v6_net_ops = {
  };
  #endif
  
@@ -101033,7 +103167,7 @@ index bda7429..469b26b 100644
  int __init pingv6_init(void)
  {
  #ifdef CONFIG_PROC_FS
-@@ -253,13 +271,7 @@ int __init pingv6_init(void)
+@@ -247,13 +265,7 @@ int __init pingv6_init(void)
        if (ret)
                return ret;
  #endif
@@ -101048,7 +103182,7 @@ index bda7429..469b26b 100644
        return inet6_register_protosw(&pingv6_protosw);
  }
  
-@@ -268,14 +280,9 @@ int __init pingv6_init(void)
+@@ -262,14 +274,9 @@ int __init pingv6_init(void)
   */
  void pingv6_exit(void)
  {
@@ -101065,7 +103199,7 @@ index bda7429..469b26b 100644
        inet6_unregister_protosw(&pingv6_protosw);
  }
 diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c
-index 091d066..139d410 100644
+index 1752cd0..3c6af41 100644
 --- a/net/ipv6/proc.c
 +++ b/net/ipv6/proc.c
 @@ -309,7 +309,7 @@ static int __net_init ipv6_proc_init_net(struct net *net)
@@ -101078,7 +103212,7 @@ index 091d066..139d410 100644
                goto proc_dev_snmp6_fail;
        return 0;
 diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
-index 1f29996..46fe0c7 100644
+index 896af88..6e2ba628 100644
 --- a/net/ipv6/raw.c
 +++ b/net/ipv6/raw.c
 @@ -388,7 +388,7 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb)
@@ -101108,25 +103242,7 @@ index 1f29996..46fe0c7 100644
                        kfree_skb(skb);
                        return NET_RX_DROP;
                }
-@@ -469,6 +469,9 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
-       if (flags & MSG_OOB)
-               return -EOPNOTSUPP;
-+      if (addr_len)
-+              *addr_len=sizeof(*sin6);
-+
-       if (flags & MSG_ERRQUEUE)
-               return ipv6_recv_error(sk, msg, len, addr_len);
-@@ -507,7 +510,6 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
-               sin6->sin6_flowinfo = 0;
-               sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr,
-                                                         IP6CB(skb)->iif);
--              *addr_len = sizeof(*sin6);
-       }
-       sock_recv_ts_and_drops(msg, sk, skb);
-@@ -610,7 +612,7 @@ out:
+@@ -608,7 +608,7 @@ out:
        return err;
  }
  
@@ -101135,7 +103251,7 @@ index 1f29996..46fe0c7 100644
                        struct flowi6 *fl6, struct dst_entry **dstp,
                        unsigned int flags)
  {
-@@ -922,12 +924,15 @@ do_confirm:
+@@ -914,12 +914,15 @@ do_confirm:
  static int rawv6_seticmpfilter(struct sock *sk, int level, int optname,
                               char __user *optval, int optlen)
  {
@@ -101152,7 +103268,7 @@ index 1f29996..46fe0c7 100644
                return 0;
        default:
                return -ENOPROTOOPT;
-@@ -940,6 +945,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
+@@ -932,6 +935,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
                               char __user *optval, int __user *optlen)
  {
        int len;
@@ -101160,7 +103276,7 @@ index 1f29996..46fe0c7 100644
  
        switch (optname) {
        case ICMPV6_FILTER:
-@@ -951,7 +957,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
+@@ -943,7 +947,8 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
                        len = sizeof(struct icmp6_filter);
                if (put_user(len, optlen))
                        return -EFAULT;
@@ -101171,10 +103287,10 @@ index 1f29996..46fe0c7 100644
                return 0;
        default:
 diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
-index cc85a9b..526a133 100644
+index 1a157ca..9fc05f4 100644
 --- a/net/ipv6/reassembly.c
 +++ b/net/ipv6/reassembly.c
-@@ -626,12 +626,11 @@ static struct ctl_table ip6_frags_ctl_table[] = {
+@@ -625,12 +625,11 @@ static struct ctl_table ip6_frags_ctl_table[] = {
  
  static int __net_init ip6_frags_ns_sysctl_register(struct net *net)
  {
@@ -101189,7 +103305,7 @@ index cc85a9b..526a133 100644
                if (table == NULL)
                        goto err_alloc;
  
-@@ -642,9 +641,10 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net)
+@@ -644,9 +643,10 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net)
                /* Don't export sysctls to unprivileged users */
                if (net->user_ns != &init_user_ns)
                        table[0].procname = NULL;
@@ -101202,7 +103318,7 @@ index cc85a9b..526a133 100644
        if (hdr == NULL)
                goto err_reg;
  
-@@ -652,8 +652,7 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net)
+@@ -654,8 +654,7 @@ static int __net_init ip6_frags_ns_sysctl_register(struct net *net)
        return 0;
  
  err_reg:
@@ -101213,10 +103329,10 @@ index cc85a9b..526a133 100644
        return -ENOMEM;
  }
 diff --git a/net/ipv6/route.c b/net/ipv6/route.c
-index 6ebdb7b6..f225ab1 100644
+index a318dd89..7ecfea6 100644
 --- a/net/ipv6/route.c
 +++ b/net/ipv6/route.c
-@@ -2971,7 +2971,7 @@ struct ctl_table ipv6_route_table_template[] = {
+@@ -2965,7 +2965,7 @@ struct ctl_table ipv6_route_table_template[] = {
  
  struct ctl_table * __net_init ipv6_route_sysctl_init(struct net *net)
  {
@@ -101226,7 +103342,7 @@ index 6ebdb7b6..f225ab1 100644
        table = kmemdup(ipv6_route_table_template,
                        sizeof(ipv6_route_table_template),
 diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
-index 4f40817..54dcbef 100644
+index a24557a..00a9ed1 100644
 --- a/net/ipv6/sit.c
 +++ b/net/ipv6/sit.c
 @@ -74,7 +74,7 @@ static void ipip6_tunnel_setup(struct net_device *dev);
@@ -101238,7 +103354,7 @@ index 4f40817..54dcbef 100644
  
  static int sit_net_id __read_mostly;
  struct sit_net {
-@@ -1661,7 +1661,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head)
+@@ -1750,7 +1750,7 @@ static void ipip6_dellink(struct net_device *dev, struct list_head *head)
                unregister_netdevice_queue(dev, head);
  }
  
@@ -101248,10 +103364,10 @@ index 4f40817..54dcbef 100644
        .maxtype        = IFLA_IPTUN_MAX,
        .policy         = ipip6_policy,
 diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c
-index 7f405a1..eabef92 100644
+index c5c10fa..2577d51 100644
 --- a/net/ipv6/sysctl_net_ipv6.c
 +++ b/net/ipv6/sysctl_net_ipv6.c
-@@ -54,7 +54,7 @@ static struct ctl_table ipv6_rotable[] = {
+@@ -78,7 +78,7 @@ static struct ctl_table ipv6_rotable[] = {
  
  static int __net_init ipv6_sysctl_net_init(struct net *net)
  {
@@ -101261,11 +103377,11 @@ index 7f405a1..eabef92 100644
        struct ctl_table *ipv6_icmp_table;
        int err;
 diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
-index e289830..79a5718 100644
+index c277951..c7ee5bf 100644
 --- a/net/ipv6/tcp_ipv6.c
 +++ b/net/ipv6/tcp_ipv6.c
-@@ -102,6 +102,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
-               inet6_sk(sk)->rx_dst_cookie = rt->rt6i_node->fn_sernum;
+@@ -104,6 +104,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
+       }
  }
  
 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
@@ -101275,7 +103391,7 @@ index e289830..79a5718 100644
  static void tcp_v6_hash(struct sock *sk)
  {
        if (sk->sk_state != TCP_CLOSE) {
-@@ -1416,6 +1420,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
+@@ -1341,6 +1345,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
        return 0;
  
  reset:
@@ -101285,10 +103401,10 @@ index e289830..79a5718 100644
        tcp_v6_send_reset(sk, skb);
  discard:
        if (opt_skb)
-@@ -1500,12 +1507,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
-       TCP_SKB_CB(skb)->sacked = 0;
+@@ -1434,12 +1441,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
  
-       sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
+       sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest,
+                               tcp_v6_iif(skb));
 -      if (!sk)
 +      if (!sk) {
 +#ifdef CONFIG_GRKERNSEC_BLACKHOLE
@@ -101308,7 +103424,7 @@ index e289830..79a5718 100644
  
        if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
                NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
-@@ -1557,6 +1572,10 @@ csum_error:
+@@ -1486,6 +1501,10 @@ csum_error:
  bad_packet:
                TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
        } else {
@@ -101320,7 +103436,7 @@ index e289830..79a5718 100644
        }
  
 diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
-index 20b63d2..13be908 100644
+index f6ba535..b41033f 100644
 --- a/net/ipv6/udp.c
 +++ b/net/ipv6/udp.c
 @@ -76,6 +76,10 @@ static unsigned int udp6_ehashfn(struct net *net,
@@ -101334,17 +103450,7 @@ index 20b63d2..13be908 100644
  int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
  {
        const struct in6_addr *sk2_rcv_saddr6 = inet6_rcv_saddr(sk2);
-@@ -392,6 +396,9 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk,
-       int is_udp4;
-       bool slow;
-+      if (addr_len)
-+              *addr_len = sizeof(struct sockaddr_in6);
-+
-       if (flags & MSG_ERRQUEUE)
-               return ipv6_recv_error(sk, msg, len, addr_len);
-@@ -435,7 +442,7 @@ try_again:
+@@ -434,7 +438,7 @@ try_again:
        if (unlikely(err)) {
                trace_kfree_skb(skb, udpv6_recvmsg);
                if (!peeked) {
@@ -101353,16 +103459,7 @@ index 20b63d2..13be908 100644
                        if (is_udp4)
                                UDP_INC_STATS_USER(sock_net(sk),
                                                   UDP_MIB_INERRORS,
-@@ -475,7 +482,7 @@ try_again:
-                               ipv6_iface_scope_id(&sin6->sin6_addr,
-                                                   IP6CB(skb)->iif);
-               }
--              *addr_len = sizeof(*sin6);
-+
-       }
-       if (np->rxopt.all)
-@@ -690,7 +697,7 @@ csum_error:
+@@ -701,7 +705,7 @@ csum_error:
        UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite);
  drop:
        UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
@@ -101371,7 +103468,7 @@ index 20b63d2..13be908 100644
        kfree_skb(skb);
        return -1;
  }
-@@ -747,7 +754,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
+@@ -740,7 +744,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
                if (likely(skb1 == NULL))
                        skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC);
                if (!skb1) {
@@ -101380,7 +103477,7 @@ index 20b63d2..13be908 100644
                        UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
                                          IS_UDPLITE(sk));
                        UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
-@@ -886,6 +893,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
+@@ -919,6 +923,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
                goto csum_error;
  
        UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE);
@@ -101391,10 +103488,20 @@ index 20b63d2..13be908 100644
  
        kfree_skb(skb);
 diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
-index 2a0bbda..d75ca57 100644
+index 5f98364..5ca982a 100644
 --- a/net/ipv6/xfrm6_policy.c
 +++ b/net/ipv6/xfrm6_policy.c
-@@ -212,11 +212,11 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
+@@ -130,8 +130,8 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
+ {
+       struct flowi6 *fl6 = &fl->u.ip6;
+       int onlyproto = 0;
+-      u16 offset = skb_network_header_len(skb);
+       const struct ipv6hdr *hdr = ipv6_hdr(skb);
++      u16 offset = sizeof(*hdr);
+       struct ipv6_opt_hdr *exthdr;
+       const unsigned char *nh = skb_network_header(skb);
+       u8 nexthdr = nh[IP6CB(skb)->nhoff];
+@@ -217,11 +217,11 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse)
        }
  }
  
@@ -101408,7 +103515,7 @@ index 2a0bbda..d75ca57 100644
        return dst_entries_get_fast(ops) > ops->gc_thresh * 2;
  }
  
-@@ -329,19 +329,19 @@ static struct ctl_table xfrm6_policy_table[] = {
+@@ -334,19 +334,19 @@ static struct ctl_table xfrm6_policy_table[] = {
  
  static int __net_init xfrm6_net_init(struct net *net)
  {
@@ -101433,7 +103540,7 @@ index 2a0bbda..d75ca57 100644
        if (!hdr)
                goto err_reg;
  
-@@ -349,8 +349,7 @@ static int __net_init xfrm6_net_init(struct net *net)
+@@ -354,8 +354,7 @@ static int __net_init xfrm6_net_init(struct net *net)
        return 0;
  
  err_reg:
@@ -101457,10 +103564,10 @@ index e15c16a..7cf07aa 100644
        if (!ipx_proc_dir)
                goto out;
 diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c
-index 2ba8b97..6d33010 100644
+index 61ceb4c..e788eb8 100644
 --- a/net/irda/ircomm/ircomm_tty.c
 +++ b/net/irda/ircomm/ircomm_tty.c
-@@ -317,11 +317,11 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
+@@ -317,10 +317,10 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
        add_wait_queue(&port->open_wait, &wait);
  
        IRDA_DEBUG(2, "%s(%d):block_til_ready before block on %s open_count=%d\n",
@@ -101468,13 +103575,12 @@ index 2ba8b97..6d33010 100644
 +            __FILE__, __LINE__, tty->driver->name, atomic_read(&port->count));
  
        spin_lock_irqsave(&port->lock, flags);
-       if (!tty_hung_up_p(filp))
--              port->count--;
-+              atomic_dec(&port->count);
+-      port->count--;
++      atomic_dec(&port->count);
        port->blocked_open++;
        spin_unlock_irqrestore(&port->lock, flags);
  
-@@ -356,7 +356,7 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
+@@ -355,7 +355,7 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
                }
  
                IRDA_DEBUG(1, "%s(%d):block_til_ready blocking on %s open_count=%d\n",
@@ -101483,7 +103589,7 @@ index 2ba8b97..6d33010 100644
  
                schedule();
        }
-@@ -366,12 +366,12 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
+@@ -365,12 +365,12 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self,
  
        spin_lock_irqsave(&port->lock, flags);
        if (!tty_hung_up_p(filp))
@@ -101498,7 +103604,7 @@ index 2ba8b97..6d33010 100644
  
        if (!retval)
                port->flags |= ASYNC_NORMAL_ACTIVE;
-@@ -445,12 +445,12 @@ static int ircomm_tty_open(struct tty_struct *tty, struct file *filp)
+@@ -444,12 +444,12 @@ static int ircomm_tty_open(struct tty_struct *tty, struct file *filp)
  
        /* ++ is not atomic, so this should be protected - Jean II */
        spin_lock_irqsave(&self->port.lock, flags);
@@ -101513,7 +103619,7 @@ index 2ba8b97..6d33010 100644
  
        /* Not really used by us, but lets do it anyway */
        self->port.low_latency = (self->port.flags & ASYNC_LOW_LATENCY) ? 1 : 0;
-@@ -987,7 +987,7 @@ static void ircomm_tty_hangup(struct tty_struct *tty)
+@@ -985,7 +985,7 @@ static void ircomm_tty_hangup(struct tty_struct *tty)
                tty_kref_put(port->tty);
        }
        port->tty = NULL;
@@ -101522,7 +103628,7 @@ index 2ba8b97..6d33010 100644
        spin_unlock_irqrestore(&port->lock, flags);
  
        wake_up_interruptible(&port->open_wait);
-@@ -1344,7 +1344,7 @@ static void ircomm_tty_line_info(struct ircomm_tty_cb *self, struct seq_file *m)
+@@ -1342,7 +1342,7 @@ static void ircomm_tty_line_info(struct ircomm_tty_cb *self, struct seq_file *m)
        seq_putc(m, '\n');
  
        seq_printf(m, "Role: %s\n", self->client ? "client" : "server");
@@ -101545,12 +103651,12 @@ index b9ac598..f88cc56 100644
                return;
  
 diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
-index 8c9d730..66c6305 100644
+index a089b6b..3ca3b60 100644
 --- a/net/iucv/af_iucv.c
 +++ b/net/iucv/af_iucv.c
-@@ -773,10 +773,10 @@ static int iucv_sock_autobind(struct sock *sk)
-       write_lock_bh(&iucv_sk_list.lock);
+@@ -686,10 +686,10 @@ static void __iucv_auto_name(struct iucv_sock *iucv)
+ {
+       char name[12];
  
 -      sprintf(name, "%08x", atomic_inc_return(&iucv_sk_list.autobind_name));
 +      sprintf(name, "%08x", atomic_inc_return_unchecked(&iucv_sk_list.autobind_name));
@@ -101559,10 +103665,10 @@ index 8c9d730..66c6305 100644
 -                      atomic_inc_return(&iucv_sk_list.autobind_name));
 +                      atomic_inc_return_unchecked(&iucv_sk_list.autobind_name));
        }
-       write_unlock_bh(&iucv_sk_list.lock);
+       memcpy(iucv->src_name, name, 8);
+ }
 diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c
-index da78793..bdd78cf 100644
+index 2a6a1fd..6c112b0 100644
 --- a/net/iucv/iucv.c
 +++ b/net/iucv/iucv.c
 @@ -702,7 +702,7 @@ static int iucv_cpu_notify(struct notifier_block *self,
@@ -101575,10 +103681,10 @@ index da78793..bdd78cf 100644
  };
  
 diff --git a/net/key/af_key.c b/net/key/af_key.c
-index f3c8307..7127791 100644
+index 1847ec4..26ef732 100644
 --- a/net/key/af_key.c
 +++ b/net/key/af_key.c
-@@ -3070,10 +3070,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc
+@@ -3049,10 +3049,10 @@ static int pfkey_send_policy_notify(struct xfrm_policy *xp, int dir, const struc
  static u32 get_acqseq(void)
  {
        u32 res;
@@ -101592,7 +103698,7 @@ index f3c8307..7127791 100644
        return res;
  }
 diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
-index 76125c5..e474828 100644
+index edb78e6..8dc654a 100644
 --- a/net/l2tp/l2tp_eth.c
 +++ b/net/l2tp/l2tp_eth.c
 @@ -42,12 +42,12 @@ struct l2tp_eth {
@@ -101667,50 +103773,6 @@ index 76125c5..e474828 100644
        kfree_skb(skb);
  }
  
-diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
-index 3397fe6..861fd1a 100644
---- a/net/l2tp/l2tp_ip.c
-+++ b/net/l2tp/l2tp_ip.c
-@@ -518,6 +518,9 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
-       if (flags & MSG_OOB)
-               goto out;
-+      if (addr_len)
-+              *addr_len = sizeof(*sin);
-+
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
-       if (!skb)
-               goto out;
-@@ -540,7 +543,6 @@ static int l2tp_ip_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
-               sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
-               sin->sin_port = 0;
-               memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
--              *addr_len = sizeof(*sin);
-       }
-       if (inet->cmsg_flags)
-               ip_cmsg_recv(msg, skb);
-diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
-index 950909f..13752d9 100644
---- a/net/l2tp/l2tp_ppp.c
-+++ b/net/l2tp/l2tp_ppp.c
-@@ -1365,7 +1365,7 @@ static int pppol2tp_setsockopt(struct socket *sock, int level, int optname,
-       int err;
-       if (level != SOL_PPPOL2TP)
--              return udp_prot.setsockopt(sk, level, optname, optval, optlen);
-+              return -EINVAL;
-       if (optlen < sizeof(int))
-               return -EINVAL;
-@@ -1491,7 +1491,7 @@ static int pppol2tp_getsockopt(struct socket *sock, int level, int optname,
-       struct pppol2tp_session *ps;
-       if (level != SOL_PPPOL2TP)
--              return udp_prot.getsockopt(sk, level, optname, optval, optlen);
-+              return -EINVAL;
-       if (get_user(len, optlen))
-               return -EFAULT;
 diff --git a/net/llc/llc_proc.c b/net/llc/llc_proc.c
 index 1a3c7e0..80f8b0c 100644
 --- a/net/llc/llc_proc.c
@@ -101725,10 +103787,10 @@ index 1a3c7e0..80f8b0c 100644
                goto out;
  
 diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
-index aaa59d7..21a2c4a 100644
+index 343da1e..509873f 100644
 --- a/net/mac80211/cfg.c
 +++ b/net/mac80211/cfg.c
-@@ -839,7 +839,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy,
+@@ -541,7 +541,7 @@ static int ieee80211_set_monitor_channel(struct wiphy *wiphy,
                        ret = ieee80211_vif_use_channel(sdata, chandef,
                                        IEEE80211_CHANCTX_EXCLUSIVE);
                }
@@ -101737,7 +103799,7 @@ index aaa59d7..21a2c4a 100644
                local->_oper_chandef = *chandef;
                ieee80211_hw_config(local, 0);
        }
-@@ -3440,7 +3440,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy,
+@@ -3326,7 +3326,7 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy,
                else
                        local->probe_req_reg--;
  
@@ -101746,9 +103808,9 @@ index aaa59d7..21a2c4a 100644
                        break;
  
                ieee80211_queue_work(&local->hw, &local->reconfig_filter);
-@@ -3903,8 +3903,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy,
+@@ -3460,8 +3460,8 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy,
        if (chanctx_conf) {
-               *chandef = chanctx_conf->def;
+               *chandef = sdata->vif.bss_conf.chandef;
                ret = 0;
 -      } else if (local->open_count > 0 &&
 -                 local->open_count == local->monitors &&
@@ -101758,10 +103820,10 @@ index aaa59d7..21a2c4a 100644
                if (local->use_chanctx)
                        *chandef = local->monitor_chandef;
 diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
-index f169b6e..a5dc4eb 100644
+index 8c68da3..0695016 100644
 --- a/net/mac80211/ieee80211_i.h
 +++ b/net/mac80211/ieee80211_i.h
-@@ -28,6 +28,7 @@
+@@ -29,6 +29,7 @@
  #include <net/ieee80211_radiotap.h>
  #include <net/cfg80211.h>
  #include <net/mac80211.h>
@@ -101769,7 +103831,7 @@ index f169b6e..a5dc4eb 100644
  #include "key.h"
  #include "sta_info.h"
  #include "debug.h"
-@@ -999,7 +1000,7 @@ struct ieee80211_local {
+@@ -1057,7 +1058,7 @@ struct ieee80211_local {
        /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
        spinlock_t queue_stop_reason_lock;
  
@@ -101779,10 +103841,10 @@ index f169b6e..a5dc4eb 100644
        /* number of interfaces with corresponding FIF_ flags */
        int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss, fif_pspoll,
 diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
-index 34799e0..b411290 100644
+index eeae0ab..0f24585 100644
 --- a/net/mac80211/iface.c
 +++ b/net/mac80211/iface.c
-@@ -524,7 +524,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
+@@ -533,7 +533,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
                break;
        }
  
@@ -101791,7 +103853,7 @@ index 34799e0..b411290 100644
                res = drv_start(local);
                if (res)
                        goto err_del_bss;
-@@ -571,7 +571,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
+@@ -580,7 +580,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
                        res = drv_add_interface(local, sdata);
                        if (res)
                                goto err_stop;
@@ -101800,7 +103862,7 @@ index 34799e0..b411290 100644
                        res = ieee80211_add_virtual_monitor(local);
                        if (res)
                                goto err_stop;
-@@ -680,7 +680,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
+@@ -689,7 +689,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
                atomic_inc(&local->iff_promiscs);
  
        if (coming_up)
@@ -101809,7 +103871,7 @@ index 34799e0..b411290 100644
  
        if (hw_reconf_flags)
                ieee80211_hw_config(local, hw_reconf_flags);
-@@ -718,7 +718,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
+@@ -727,7 +727,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
   err_del_interface:
        drv_remove_interface(local, sdata);
   err_stop:
@@ -101818,7 +103880,7 @@ index 34799e0..b411290 100644
                drv_stop(local);
   err_del_bss:
        sdata->bss = NULL;
-@@ -871,7 +871,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
+@@ -893,7 +893,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
        }
  
        if (going_down)
@@ -101827,7 +103889,7 @@ index 34799e0..b411290 100644
  
        switch (sdata->vif.type) {
        case NL80211_IFTYPE_AP_VLAN:
-@@ -930,7 +930,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
+@@ -955,7 +955,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
        }
        spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);
  
@@ -101836,16 +103898,16 @@ index 34799e0..b411290 100644
                ieee80211_clear_tx_pending(local);
  
        /*
-@@ -970,7 +970,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
-       ieee80211_recalc_ps(local, -1);
+@@ -998,7 +998,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
+       if (cancel_scan)
+               flush_delayed_work(&local->scan_work);
  
 -      if (local->open_count == 0) {
 +      if (local_read(&local->open_count) == 0) {
                ieee80211_stop_device(local);
  
                /* no reconfiguring after stop! */
-@@ -981,7 +981,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
+@@ -1009,7 +1009,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
        ieee80211_configure_filter(local);
        ieee80211_hw_config(local, hw_reconf_flags);
  
@@ -101855,10 +103917,10 @@ index 34799e0..b411290 100644
  }
  
 diff --git a/net/mac80211/main.c b/net/mac80211/main.c
-index 4c1bf61..00b449b 100644
+index 0de7c93..884b2ca 100644
 --- a/net/mac80211/main.c
 +++ b/net/mac80211/main.c
-@@ -174,7 +174,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
+@@ -175,7 +175,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
                changed &= ~(IEEE80211_CONF_CHANGE_CHANNEL |
                             IEEE80211_CONF_CHANGE_POWER);
  
@@ -101868,7 +103930,7 @@ index 4c1bf61..00b449b 100644
                /*
                 * Goal:
 diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
-index d478b88..8c8d157 100644
+index 4c5192e..04cc0d8 100644
 --- a/net/mac80211/pm.c
 +++ b/net/mac80211/pm.c
 @@ -12,7 +12,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
@@ -101880,7 +103942,7 @@ index d478b88..8c8d157 100644
                goto suspend;
  
        ieee80211_scan_cancel(local);
-@@ -58,7 +58,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
+@@ -59,7 +59,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
        cancel_work_sync(&local->dynamic_ps_enable_work);
        del_timer_sync(&local->dynamic_ps_timer);
  
@@ -101889,7 +103951,7 @@ index d478b88..8c8d157 100644
        if (local->wowlan) {
                int err = drv_suspend(local, wowlan);
                if (err < 0) {
-@@ -123,7 +123,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
+@@ -125,7 +125,7 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
        WARN_ON(!list_empty(&local->chanctx_list));
  
        /* stop hardware - this must stop RX */
@@ -101899,7 +103961,7 @@ index d478b88..8c8d157 100644
  
   suspend:
 diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
-index 8fdadfd..a4f72b8 100644
+index 6081329..ab23834 100644
 --- a/net/mac80211/rate.c
 +++ b/net/mac80211/rate.c
 @@ -720,7 +720,7 @@ int ieee80211_init_rate_ctrl_alg(struct ieee80211_local *local,
@@ -101911,24 +103973,11 @@ index 8fdadfd..a4f72b8 100644
                return -EBUSY;
  
        if (local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) {
-diff --git a/net/mac80211/rc80211_pid_debugfs.c b/net/mac80211/rc80211_pid_debugfs.c
-index 6ff1346..936ca9a 100644
---- a/net/mac80211/rc80211_pid_debugfs.c
-+++ b/net/mac80211/rc80211_pid_debugfs.c
-@@ -193,7 +193,7 @@ static ssize_t rate_control_pid_events_read(struct file *file, char __user *buf,
-       spin_unlock_irqrestore(&events->lock, status);
--      if (copy_to_user(buf, pb, p))
-+      if (p > sizeof(pb) || copy_to_user(buf, pb, p))
-               return -EFAULT;
-       return p;
 diff --git a/net/mac80211/util.c b/net/mac80211/util.c
-index 3c36583..12887fe 100644
+index 3c61060..7bed2e3 100644
 --- a/net/mac80211/util.c
 +++ b/net/mac80211/util.c
-@@ -1509,7 +1509,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
+@@ -1669,7 +1669,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
        }
  #endif
        /* everything else happens only if HW was up & running */
@@ -101937,7 +103986,7 @@ index 3c36583..12887fe 100644
                goto wake_up;
  
        /*
-@@ -1734,7 +1734,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
+@@ -1895,7 +1895,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
        local->in_reconfig = false;
        barrier();
  
@@ -101947,10 +103996,10 @@ index 3c36583..12887fe 100644
  
        /*
 diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
-index e9410d1..77b6378 100644
+index ae5096ab..e5aa70a 100644
 --- a/net/netfilter/Kconfig
 +++ b/net/netfilter/Kconfig
-@@ -1081,6 +1081,16 @@ config NETFILTER_XT_MATCH_ESP
+@@ -1105,6 +1105,16 @@ config NETFILTER_XT_MATCH_ESP
  
          To compile it as a module, choose M here.  If unsure, say N.
  
@@ -101968,10 +104017,10 @@ index e9410d1..77b6378 100644
        tristate '"hashlimit" match support'
        depends on (IP6_NF_IPTABLES || IP6_NF_IPTABLES=n)
 diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
-index bffdad7..f9317d1 100644
+index a9571be..c59e173 100644
 --- a/net/netfilter/Makefile
 +++ b/net/netfilter/Makefile
-@@ -133,6 +133,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_DEVGROUP) += xt_devgroup.o
+@@ -137,6 +137,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_DEVGROUP) += xt_devgroup.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_DSCP) += xt_dscp.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_ECN) += xt_ecn.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_ESP) += xt_esp.o
@@ -101980,10 +104029,10 @@ index bffdad7..f9317d1 100644
  obj-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += xt_helper.o
  obj-$(CONFIG_NETFILTER_XT_MATCH_HL) += xt_hl.o
 diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c
-index 1172083..986f1c1 100644
+index d259da3..6a32b2c 100644
 --- a/net/netfilter/ipset/ip_set_core.c
 +++ b/net/netfilter/ipset/ip_set_core.c
-@@ -1924,7 +1924,7 @@ done:
+@@ -1952,7 +1952,7 @@ done:
        return ret;
  }
  
@@ -101993,10 +104042,10 @@ index 1172083..986f1c1 100644
        .get_optmin     = SO_IP_SET,
        .get_optmax     = SO_IP_SET + 1,
 diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
-index a8eb0a8..86f2de4 100644
+index b0f7b62..0541842 100644
 --- a/net/netfilter/ipvs/ip_vs_conn.c
 +++ b/net/netfilter/ipvs/ip_vs_conn.c
-@@ -556,7 +556,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest)
+@@ -572,7 +572,7 @@ ip_vs_bind_dest(struct ip_vs_conn *cp, struct ip_vs_dest *dest)
        /* Increase the refcnt counter of the dest */
        ip_vs_dest_hold(dest);
  
@@ -102005,7 +104054,7 @@ index a8eb0a8..86f2de4 100644
        if (cp->protocol != IPPROTO_UDP)
                conn_flags &= ~IP_VS_CONN_F_ONE_PACKET;
        flags = cp->flags;
-@@ -900,7 +900,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p,
+@@ -922,7 +922,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p, int dest_af,
  
        cp->control = NULL;
        atomic_set(&cp->n_control, 0);
@@ -102014,7 +104063,7 @@ index a8eb0a8..86f2de4 100644
  
        cp->packet_xmit = NULL;
        cp->app = NULL;
-@@ -1188,7 +1188,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp)
+@@ -1229,7 +1229,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp)
  
        /* Don't drop the entry if its number of incoming packets is not
           located in [0, 8] */
@@ -102024,10 +104073,10 @@ index a8eb0a8..86f2de4 100644
  
        if (!todrop_rate[i]) return 0;
 diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
-index 3d2d2c8..c87e4d3 100644
+index 990decb..5075248 100644
 --- a/net/netfilter/ipvs/ip_vs_core.c
 +++ b/net/netfilter/ipvs/ip_vs_core.c
-@@ -567,7 +567,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
+@@ -568,7 +568,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
                ret = cp->packet_xmit(skb, cp, pd->pp, iph);
                /* do not touch skb anymore */
  
@@ -102036,7 +104085,7 @@ index 3d2d2c8..c87e4d3 100644
                ip_vs_conn_put(cp);
                return ret;
        }
-@@ -1711,7 +1711,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af)
+@@ -1712,7 +1712,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af)
        if (cp->flags & IP_VS_CONN_F_ONE_PACKET)
                pkts = sysctl_sync_threshold(ipvs);
        else
@@ -102046,10 +104095,10 @@ index 3d2d2c8..c87e4d3 100644
        if (ipvs->sync_state & IP_VS_STATE_MASTER)
                ip_vs_sync_conn(net, cp, pkts);
 diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
-index c42e83d..a6a3f8b 100644
+index ac7ba68..9735acb9 100644
 --- a/net/netfilter/ipvs/ip_vs_ctl.c
 +++ b/net/netfilter/ipvs/ip_vs_ctl.c
-@@ -794,7 +794,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest,
+@@ -800,7 +800,7 @@ __ip_vs_update_dest(struct ip_vs_service *svc, struct ip_vs_dest *dest,
                 */
                ip_vs_rs_hash(ipvs, dest);
        }
@@ -102058,7 +104107,7 @@ index c42e83d..a6a3f8b 100644
  
        /* bind the service */
        old_svc = rcu_dereference_protected(dest->svc, 1);
-@@ -1654,7 +1654,7 @@ proc_do_sync_ports(struct ctl_table *table, int write,
+@@ -1665,7 +1665,7 @@ proc_do_sync_ports(struct ctl_table *table, int write,
   *    align with netns init in ip_vs_control_net_init()
   */
  
@@ -102067,7 +104116,7 @@ index c42e83d..a6a3f8b 100644
        {
                .procname       = "amemthresh",
                .maxlen         = sizeof(int),
-@@ -2075,7 +2075,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
+@@ -2000,7 +2000,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
                                           "      %-7s %-6d %-10d %-10d\n",
                                           &dest->addr.in6,
                                           ntohs(dest->port),
@@ -102076,7 +104125,7 @@ index c42e83d..a6a3f8b 100644
                                           atomic_read(&dest->weight),
                                           atomic_read(&dest->activeconns),
                                           atomic_read(&dest->inactconns));
-@@ -2086,7 +2086,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
+@@ -2011,7 +2011,7 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
                                           "%-7s %-6d %-10d %-10d\n",
                                           ntohl(dest->addr.ip),
                                           ntohs(dest->port),
@@ -102085,7 +104134,7 @@ index c42e83d..a6a3f8b 100644
                                           atomic_read(&dest->weight),
                                           atomic_read(&dest->activeconns),
                                           atomic_read(&dest->inactconns));
-@@ -2564,7 +2564,7 @@ __ip_vs_get_dest_entries(struct net *net, const struct ip_vs_get_dests *get,
+@@ -2500,7 +2500,7 @@ __ip_vs_get_dest_entries(struct net *net, const struct ip_vs_get_dests *get,
  
                        entry.addr = dest->addr.ip;
                        entry.port = dest->port;
@@ -102094,7 +104143,7 @@ index c42e83d..a6a3f8b 100644
                        entry.weight = atomic_read(&dest->weight);
                        entry.u_threshold = dest->u_threshold;
                        entry.l_threshold = dest->l_threshold;
-@@ -3107,7 +3107,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest)
+@@ -3040,7 +3040,7 @@ static int ip_vs_genl_fill_dest(struct sk_buff *skb, struct ip_vs_dest *dest)
        if (nla_put(skb, IPVS_DEST_ATTR_ADDR, sizeof(dest->addr), &dest->addr) ||
            nla_put_be16(skb, IPVS_DEST_ATTR_PORT, dest->port) ||
            nla_put_u32(skb, IPVS_DEST_ATTR_FWD_METHOD,
@@ -102103,7 +104152,7 @@ index c42e83d..a6a3f8b 100644
                         IP_VS_CONN_F_FWD_MASK)) ||
            nla_put_u32(skb, IPVS_DEST_ATTR_WEIGHT,
                        atomic_read(&dest->weight)) ||
-@@ -3697,7 +3697,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct net *net)
+@@ -3673,7 +3673,7 @@ static int __net_init ip_vs_control_net_init_sysctl(struct net *net)
  {
        int idx;
        struct netns_ipvs *ipvs = net_ipvs(net);
@@ -102113,7 +104162,7 @@ index c42e83d..a6a3f8b 100644
        atomic_set(&ipvs->dropentry, 0);
        spin_lock_init(&ipvs->dropentry_lock);
 diff --git a/net/netfilter/ipvs/ip_vs_lblc.c b/net/netfilter/ipvs/ip_vs_lblc.c
-index 547ff33..c8c8117 100644
+index 127f140..553d652 100644
 --- a/net/netfilter/ipvs/ip_vs_lblc.c
 +++ b/net/netfilter/ipvs/ip_vs_lblc.c
 @@ -118,7 +118,7 @@ struct ip_vs_lblc_table {
@@ -102126,7 +104175,7 @@ index 547ff33..c8c8117 100644
                .procname       = "lblc_expiration",
                .data           = NULL,
 diff --git a/net/netfilter/ipvs/ip_vs_lblcr.c b/net/netfilter/ipvs/ip_vs_lblcr.c
-index 3f21a2f..a112e85 100644
+index 2229d2d..b32b785 100644
 --- a/net/netfilter/ipvs/ip_vs_lblcr.c
 +++ b/net/netfilter/ipvs/ip_vs_lblcr.c
 @@ -289,7 +289,7 @@ struct ip_vs_lblcr_table {
@@ -102139,7 +104188,7 @@ index 3f21a2f..a112e85 100644
                .procname       = "lblcr_expiration",
                .data           = NULL,
 diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
-index db80126..ef7110e 100644
+index 7162c86..9eeb60e 100644
 --- a/net/netfilter/ipvs/ip_vs_sync.c
 +++ b/net/netfilter/ipvs/ip_vs_sync.c
 @@ -609,7 +609,7 @@ static void ip_vs_sync_conn_v0(struct net *net, struct ip_vs_conn *cp,
@@ -102160,7 +104209,7 @@ index db80126..ef7110e 100644
        else
                pkts = sysctl_sync_threshold(ipvs);
        goto sloop;
-@@ -895,7 +895,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param,
+@@ -901,7 +901,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param,
  
        if (opt)
                memcpy(&cp->in_seq, opt, sizeof(*opt));
@@ -102170,10 +104219,10 @@ index db80126..ef7110e 100644
        cp->old_state = cp->state;
        /*
 diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
-index c47444e..b0961c6 100644
+index bd90bf8..816a020d 100644
 --- a/net/netfilter/ipvs/ip_vs_xmit.c
 +++ b/net/netfilter/ipvs/ip_vs_xmit.c
-@@ -1102,7 +1102,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
+@@ -1215,7 +1215,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
                else
                        rc = NF_ACCEPT;
                /* do not touch skb anymore */
@@ -102182,7 +104231,7 @@ index c47444e..b0961c6 100644
                goto out;
        }
  
-@@ -1194,7 +1194,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
+@@ -1308,7 +1308,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
                else
                        rc = NF_ACCEPT;
                /* do not touch skb anymore */
@@ -102205,10 +104254,10 @@ index a4b5e2a..13b1de3 100644
        table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table),
                        GFP_KERNEL);
 diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
-index 75421f2..0e69621 100644
+index 5016a69..594f8e9 100644
 --- a/net/netfilter/nf_conntrack_core.c
 +++ b/net/netfilter/nf_conntrack_core.c
-@@ -1789,6 +1789,10 @@ void nf_conntrack_init_end(void)
+@@ -1739,6 +1739,10 @@ void nf_conntrack_init_end(void)
  #define DYING_NULLS_VAL               ((1<<30)+1)
  #define TEMPLATE_NULLS_VAL    ((1<<30)+2)
  
@@ -102219,7 +104268,7 @@ index 75421f2..0e69621 100644
  int nf_conntrack_init_net(struct net *net)
  {
        int ret = -ENOMEM;
-@@ -1814,7 +1818,11 @@ int nf_conntrack_init_net(struct net *net)
+@@ -1764,7 +1768,11 @@ int nf_conntrack_init_net(struct net *net)
        if (!net->ct.stat)
                goto err_pcpu_lists;
  
@@ -102232,10 +104281,10 @@ index 75421f2..0e69621 100644
                goto err_slabname;
  
 diff --git a/net/netfilter/nf_conntrack_ecache.c b/net/netfilter/nf_conntrack_ecache.c
-index 1df1761..ce8b88a 100644
+index 4e78c57..ec8fb74 100644
 --- a/net/netfilter/nf_conntrack_ecache.c
 +++ b/net/netfilter/nf_conntrack_ecache.c
-@@ -188,7 +188,7 @@ static struct nf_ct_ext_type event_extend __read_mostly = {
+@@ -264,7 +264,7 @@ static struct nf_ct_ext_type event_extend __read_mostly = {
  #ifdef CONFIG_SYSCTL
  static int nf_conntrack_event_init_sysctl(struct net *net)
  {
@@ -102271,7 +104320,7 @@ index b65d586..beec902 100644
  {
        if (users > 0)
 diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
-index f641751..d3c5b51 100644
+index cf65a1e..2f291e9 100644
 --- a/net/netfilter/nf_conntrack_standalone.c
 +++ b/net/netfilter/nf_conntrack_standalone.c
 @@ -471,7 +471,7 @@ static struct ctl_table nf_ct_netfilter_table[] = {
@@ -102297,10 +104346,10 @@ index 7a394df..bd91a8a 100644
        table = kmemdup(tstamp_sysctl_table, sizeof(tstamp_sysctl_table),
                        GFP_KERNEL);
 diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
-index 85296d4..8becdec 100644
+index d719764..311bc60 100644
 --- a/net/netfilter/nf_log.c
 +++ b/net/netfilter/nf_log.c
-@@ -243,7 +243,7 @@ static const struct file_operations nflog_file_ops = {
+@@ -353,7 +353,7 @@ static const struct file_operations nflog_file_ops = {
  
  #ifdef CONFIG_SYSCTL
  static char nf_log_sysctl_fnames[NFPROTO_NUMPROTO-NFPROTO_UNSPEC][3];
@@ -102309,7 +104358,7 @@ index 85296d4..8becdec 100644
  
  static int nf_log_proc_dostring(struct ctl_table *table, int write,
                         void __user *buffer, size_t *lenp, loff_t *ppos)
-@@ -274,14 +274,16 @@ static int nf_log_proc_dostring(struct ctl_table *table, int write,
+@@ -384,14 +384,16 @@ static int nf_log_proc_dostring(struct ctl_table *table, int write,
                rcu_assign_pointer(net->nf.nf_loggers[tindex], logger);
                mutex_unlock(&nf_log_mutex);
        } else {
@@ -102330,10 +104379,10 @@ index 85296d4..8becdec 100644
        }
  
 diff --git a/net/netfilter/nf_sockopt.c b/net/netfilter/nf_sockopt.c
-index f042ae5..30ea486 100644
+index c68c1e5..8b5d670 100644
 --- a/net/netfilter/nf_sockopt.c
 +++ b/net/netfilter/nf_sockopt.c
-@@ -45,7 +45,7 @@ int nf_register_sockopt(struct nf_sockopt_ops *reg)
+@@ -43,7 +43,7 @@ int nf_register_sockopt(struct nf_sockopt_ops *reg)
                }
        }
  
@@ -102342,7 +104391,7 @@ index f042ae5..30ea486 100644
  out:
        mutex_unlock(&nf_sockopt_mutex);
        return ret;
-@@ -55,7 +55,7 @@ EXPORT_SYMBOL(nf_register_sockopt);
+@@ -53,7 +53,7 @@ EXPORT_SYMBOL(nf_register_sockopt);
  void nf_unregister_sockopt(struct nf_sockopt_ops *reg)
  {
        mutex_lock(&nf_sockopt_mutex);
@@ -102352,10 +104401,10 @@ index f042ae5..30ea486 100644
  }
  EXPORT_SYMBOL(nf_unregister_sockopt);
 diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
-index d292c8d..9f1e166 100644
+index 5f1be5b..2cba8cd 100644
 --- a/net/netfilter/nfnetlink_log.c
 +++ b/net/netfilter/nfnetlink_log.c
-@@ -79,7 +79,7 @@ static int nfnl_log_net_id __read_mostly;
+@@ -80,7 +80,7 @@ static int nfnl_log_net_id __read_mostly;
  struct nfnl_log_net {
        spinlock_t instances_lock;
        struct hlist_head instance_table[INSTANCE_BUCKETS];
@@ -102364,7 +104413,7 @@ index d292c8d..9f1e166 100644
  };
  
  static struct nfnl_log_net *nfnl_log_pernet(struct net *net)
-@@ -561,7 +561,7 @@ __build_packet_message(struct nfnl_log_net *log,
+@@ -563,7 +563,7 @@ __build_packet_message(struct nfnl_log_net *log,
        /* global sequence number */
        if ((inst->flags & NFULNL_CFG_F_SEQ_GLOBAL) &&
            nla_put_be32(inst->skb, NFULA_SEQ_GLOBAL,
@@ -102373,28 +104422,6 @@ index d292c8d..9f1e166 100644
                goto nla_put_failure;
  
        if (data_len) {
-diff --git a/net/netfilter/nft_compat.c b/net/netfilter/nft_compat.c
-index 8a779be..1551d4c 100644
---- a/net/netfilter/nft_compat.c
-+++ b/net/netfilter/nft_compat.c
-@@ -216,7 +216,7 @@ target_dump_info(struct sk_buff *skb, const struct xt_target *t, const void *in)
-               /* We want to reuse existing compat_to_user */
-               old_fs = get_fs();
-               set_fs(KERNEL_DS);
--              t->compat_to_user(out, in);
-+              t->compat_to_user((void __force_user *)out, in);
-               set_fs(old_fs);
-               ret = nla_put(skb, NFTA_TARGET_INFO, XT_ALIGN(t->targetsize), out);
-               kfree(out);
-@@ -403,7 +403,7 @@ match_dump_info(struct sk_buff *skb, const struct xt_match *m, const void *in)
-               /* We want to reuse existing compat_to_user */
-               old_fs = get_fs();
-               set_fs(KERNEL_DS);
--              m->compat_to_user(out, in);
-+              m->compat_to_user((void __force_user *)out, in);
-               set_fs(old_fs);
-               ret = nla_put(skb, NFTA_MATCH_INFO, XT_ALIGN(m->matchsize), out);
-               kfree(out);
 diff --git a/net/netfilter/xt_gradm.c b/net/netfilter/xt_gradm.c
 new file mode 100644
 index 0000000..c566332
@@ -102453,10 +104480,10 @@ index 0000000..c566332
 +MODULE_ALIAS("ipt_gradm");
 +MODULE_ALIAS("ip6t_gradm");
 diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c
-index a3910fc..2d2ba14 100644
+index 05fbc2a..4424b5c 100644
 --- a/net/netfilter/xt_hashlimit.c
 +++ b/net/netfilter/xt_hashlimit.c
-@@ -870,11 +870,11 @@ static int __net_init hashlimit_proc_net_init(struct net *net)
+@@ -871,11 +871,11 @@ static int __net_init hashlimit_proc_net_init(struct net *net)
  {
        struct hashlimit_net *hashlimit_net = hashlimit_pernet(net);
  
@@ -102471,10 +104498,10 @@ index a3910fc..2d2ba14 100644
                remove_proc_entry("ipt_hashlimit", net->proc_net);
                return -ENOMEM;
 diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c
-index 1e657cf..1eb1c34 100644
+index a9faae8..1ea30e0 100644
 --- a/net/netfilter/xt_recent.c
 +++ b/net/netfilter/xt_recent.c
-@@ -618,7 +618,7 @@ static int __net_init recent_proc_net_init(struct net *net)
+@@ -615,7 +615,7 @@ static int __net_init recent_proc_net_init(struct net *net)
  {
        struct recent_net *recent_net = recent_pernet(net);
  
@@ -102518,10 +104545,10 @@ index 11de55e..f25e448 100644
        return 0;
  }
 diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
-index f22757a..daf62a2 100644
+index b6bf8e8..7884ddf 100644
 --- a/net/netlink/af_netlink.c
 +++ b/net/netlink/af_netlink.c
-@@ -257,7 +257,7 @@ static void netlink_overrun(struct sock *sk)
+@@ -273,7 +273,7 @@ static void netlink_overrun(struct sock *sk)
                        sk->sk_error_report(sk);
                }
        }
@@ -102530,7 +104557,7 @@ index f22757a..daf62a2 100644
  }
  
  static void netlink_rcv_wake(struct sock *sk)
-@@ -3028,7 +3028,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
+@@ -3010,7 +3010,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
                           sk_wmem_alloc_get(s),
                           nlk->cb_running,
                           atomic_read(&s->sk_refcnt),
@@ -102539,23 +104566,86 @@ index f22757a..daf62a2 100644
                           sock_i_ino(s)
                        );
  
-diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
-index ede50d1..d2468e6 100644
---- a/net/netrom/af_netrom.c
-+++ b/net/netrom/af_netrom.c
-@@ -850,7 +850,6 @@ static int nr_getname(struct socket *sock, struct sockaddr *uaddr,
-               *uaddr_len = sizeof(struct full_sockaddr_ax25);
-       } else {
-               sax->fsa_ax25.sax25_family = AF_NETROM;
--              sax->fsa_ax25.sax25_ndigis = 0;
-               sax->fsa_ax25.sax25_call   = nr->source_addr;
-               *uaddr_len = sizeof(struct sockaddr_ax25);
+diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
+index 8451612..c8872bc 100644
+--- a/net/openvswitch/vport-internal_dev.c
++++ b/net/openvswitch/vport-internal_dev.c
+@@ -122,7 +122,7 @@ static const struct net_device_ops internal_dev_netdev_ops = {
+       .ndo_get_stats64 = internal_dev_get_stats,
+ };
+-static struct rtnl_link_ops internal_dev_link_ops __read_mostly = {
++static struct rtnl_link_ops internal_dev_link_ops = {
+       .kind = "openvswitch",
+ };
+diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c
+index 6015802..e81e8bf 100644
+--- a/net/openvswitch/vport.c
++++ b/net/openvswitch/vport.c
+@@ -269,10 +269,10 @@ void ovs_vport_get_stats(struct vport *vport, struct ovs_vport_stats *stats)
+        * netdev-stats can be directly read over netlink-ioctl.
+        */
+-      stats->rx_errors  = atomic_long_read(&vport->err_stats.rx_errors);
+-      stats->tx_errors  = atomic_long_read(&vport->err_stats.tx_errors);
+-      stats->tx_dropped = atomic_long_read(&vport->err_stats.tx_dropped);
+-      stats->rx_dropped = atomic_long_read(&vport->err_stats.rx_dropped);
++      stats->rx_errors  = atomic_long_read_unchecked(&vport->err_stats.rx_errors);
++      stats->tx_errors  = atomic_long_read_unchecked(&vport->err_stats.tx_errors);
++      stats->tx_dropped = atomic_long_read_unchecked(&vport->err_stats.tx_dropped);
++      stats->rx_dropped = atomic_long_read_unchecked(&vport->err_stats.rx_dropped);
+       for_each_possible_cpu(i) {
+               const struct pcpu_sw_netstats *percpu_stats;
+@@ -503,19 +503,19 @@ static void ovs_vport_record_error(struct vport *vport,
+ {
+       switch (err_type) {
+       case VPORT_E_RX_DROPPED:
+-              atomic_long_inc(&vport->err_stats.rx_dropped);
++              atomic_long_inc_unchecked(&vport->err_stats.rx_dropped);
+               break;
+       case VPORT_E_RX_ERROR:
+-              atomic_long_inc(&vport->err_stats.rx_errors);
++              atomic_long_inc_unchecked(&vport->err_stats.rx_errors);
+               break;
+       case VPORT_E_TX_DROPPED:
+-              atomic_long_inc(&vport->err_stats.tx_dropped);
++              atomic_long_inc_unchecked(&vport->err_stats.tx_dropped);
+               break;
+       case VPORT_E_TX_ERROR:
+-              atomic_long_inc(&vport->err_stats.tx_errors);
++              atomic_long_inc_unchecked(&vport->err_stats.tx_errors);
+               break;
        }
+diff --git a/net/openvswitch/vport.h b/net/openvswitch/vport.h
+index 8942125..03ed887 100644
+--- a/net/openvswitch/vport.h
++++ b/net/openvswitch/vport.h
+@@ -61,10 +61,10 @@ int ovs_vport_send(struct vport *, struct sk_buff *);
+ /* The following definitions are for implementers of vport devices: */
+ struct vport_err_stats {
+-      atomic_long_t rx_dropped;
+-      atomic_long_t rx_errors;
+-      atomic_long_t tx_dropped;
+-      atomic_long_t tx_errors;
++      atomic_long_unchecked_t rx_dropped;
++      atomic_long_unchecked_t rx_errors;
++      atomic_long_unchecked_t tx_dropped;
++      atomic_long_unchecked_t tx_errors;
+ };
+ /**
+  * struct vport_portids - array of netlink portids of a vport.
 diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
-index b85c67c..27c3368 100644
+index 07c04a8..3ca11eb 100644
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -275,7 +275,7 @@ static int packet_direct_xmit(struct sk_buff *skb)
+@@ -269,7 +269,7 @@ static int packet_direct_xmit(struct sk_buff *skb)
  
        return ret;
  drop:
@@ -102564,7 +104654,7 @@ index b85c67c..27c3368 100644
        kfree_skb(skb);
        return NET_XMIT_DROP;
  }
-@@ -1845,7 +1845,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
+@@ -1836,7 +1836,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
  
        spin_lock(&sk->sk_receive_queue.lock);
        po->stats.stats1.tp_packets++;
@@ -102573,7 +104663,7 @@ index b85c67c..27c3368 100644
        __skb_queue_tail(&sk->sk_receive_queue, skb);
        spin_unlock(&sk->sk_receive_queue.lock);
        sk->sk_data_ready(sk);
-@@ -1854,7 +1854,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
+@@ -1845,7 +1845,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
  drop_n_acct:
        spin_lock(&sk->sk_receive_queue.lock);
        po->stats.stats1.tp_drops++;
@@ -102582,7 +104672,7 @@ index b85c67c..27c3368 100644
        spin_unlock(&sk->sk_receive_queue.lock);
  
  drop_n_restore:
-@@ -3459,7 +3459,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
+@@ -3460,7 +3460,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
        case PACKET_HDRLEN:
                if (len > sizeof(int))
                        len = sizeof(int);
@@ -102591,7 +104681,7 @@ index b85c67c..27c3368 100644
                        return -EFAULT;
                switch (val) {
                case TPACKET_V1:
-@@ -3505,7 +3505,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
+@@ -3506,7 +3506,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
                len = lv;
        if (put_user(len, optlen))
                return -EFAULT;
@@ -102715,7 +104805,7 @@ index 31b74f5..dc1fbfa 100644
        ic->i_ack_next = 0;
  #endif
 diff --git a/net/rds/ib_recv.c b/net/rds/ib_recv.c
-index b7ebe23..b6352f6 100644
+index d67de45..73dbf51 100644
 --- a/net/rds/ib_recv.c
 +++ b/net/rds/ib_recv.c
 @@ -596,7 +596,7 @@ static u64 rds_ib_get_ack(struct rds_ib_connection *ic)
@@ -102725,11 +104815,11 @@ index b7ebe23..b6352f6 100644
 -      atomic64_set(&ic->i_ack_next, seq);
 +      atomic64_set_unchecked(&ic->i_ack_next, seq);
        if (ack_required) {
-               smp_mb__before_clear_bit();
+               smp_mb__before_atomic();
                set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
 @@ -608,7 +608,7 @@ static u64 rds_ib_get_ack(struct rds_ib_connection *ic)
        clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
-       smp_mb__after_clear_bit();
+       smp_mb__after_atomic();
  
 -      return atomic64_read(&ic->i_ack_next);
 +      return atomic64_read_unchecked(&ic->i_ack_next);
@@ -102763,7 +104853,7 @@ index a91e1db..cf3053f 100644
        ic->i_ack_next = 0;
  #endif
 diff --git a/net/rds/iw_recv.c b/net/rds/iw_recv.c
-index 4503335..db566b4 100644
+index aa8bf67..b70133c 100644
 --- a/net/rds/iw_recv.c
 +++ b/net/rds/iw_recv.c
 @@ -427,7 +427,7 @@ static u64 rds_iw_get_ack(struct rds_iw_connection *ic)
@@ -102773,11 +104863,11 @@ index 4503335..db566b4 100644
 -      atomic64_set(&ic->i_ack_next, seq);
 +      atomic64_set_unchecked(&ic->i_ack_next, seq);
        if (ack_required) {
-               smp_mb__before_clear_bit();
+               smp_mb__before_atomic();
                set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
 @@ -439,7 +439,7 @@ static u64 rds_iw_get_ack(struct rds_iw_connection *ic)
        clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
-       smp_mb__after_clear_bit();
+       smp_mb__after_atomic();
  
 -      return atomic64_read(&ic->i_ack_next);
 +      return atomic64_read_unchecked(&ic->i_ack_next);
@@ -102811,7 +104901,7 @@ index edac9ef..16bcb98 100644
        set_fs(oldfs);
  }
 diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c
-index 81cf5a4..b5826ff 100644
+index 53b17ca..45463e7 100644
 --- a/net/rds/tcp_send.c
 +++ b/net/rds/tcp_send.c
 @@ -43,7 +43,7 @@ static void rds_tcp_cork(struct socket *sock, int val)
@@ -102943,10 +105033,10 @@ index e7ed43a..6afa140 100644
  
        ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len);
 diff --git a/net/rxrpc/ar-input.c b/net/rxrpc/ar-input.c
-index 63b21e5..330232e 100644
+index 481f89f..ceeaf8d 100644
 --- a/net/rxrpc/ar-input.c
 +++ b/net/rxrpc/ar-input.c
-@@ -338,9 +338,9 @@ void rxrpc_fast_process_packet(struct rxrpc_call *call, struct sk_buff *skb)
+@@ -331,9 +331,9 @@ void rxrpc_fast_process_packet(struct rxrpc_call *call, struct sk_buff *skb)
        /* track the latest serial number on this connection for ACK packet
         * information */
        serial = ntohl(sp->hdr.serial);
@@ -103089,10 +105179,10 @@ index f226709..0e735a8 100644
  
        ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len);
 diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
-index e1543b0..7ce8bd0 100644
+index 6efca30..1259f82 100644
 --- a/net/sched/sch_generic.c
 +++ b/net/sched/sch_generic.c
-@@ -310,7 +310,7 @@ void netif_carrier_on(struct net_device *dev)
+@@ -349,7 +349,7 @@ void netif_carrier_on(struct net_device *dev)
        if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) {
                if (dev->reg_state == NETREG_UNINITIALIZED)
                        return;
@@ -103101,7 +105191,7 @@ index e1543b0..7ce8bd0 100644
                linkwatch_fire_event(dev);
                if (netif_running(dev))
                        __netdev_watchdog_up(dev);
-@@ -329,7 +329,7 @@ void netif_carrier_off(struct net_device *dev)
+@@ -368,7 +368,7 @@ void netif_carrier_off(struct net_device *dev)
        if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) {
                if (dev->reg_state == NETREG_UNINITIALIZED)
                        return;
@@ -103110,23 +105200,11 @@ index e1543b0..7ce8bd0 100644
                linkwatch_fire_event(dev);
        }
  }
-diff --git a/net/sctp/associola.c b/net/sctp/associola.c
-index 0b99998..a6953b0 100644
---- a/net/sctp/associola.c
-+++ b/net/sctp/associola.c
-@@ -1151,6 +1151,7 @@ void sctp_assoc_update(struct sctp_association *asoc,
-       asoc->c = new->c;
-       asoc->peer.rwnd = new->peer.rwnd;
-       asoc->peer.sack_needed = new->peer.sack_needed;
-+      asoc->peer.auth_capable = new->peer.auth_capable;
-       asoc->peer.i = new->peer.i;
-       sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL,
-                        asoc->peer.i.initial_tsn, GFP_ATOMIC);
 diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
-index 2b1738e..a9d0fc9 100644
+index 0e4198e..f94193e 100644
 --- a/net/sctp/ipv6.c
 +++ b/net/sctp/ipv6.c
-@@ -966,7 +966,7 @@ static const struct inet6_protocol sctpv6_protocol = {
+@@ -972,7 +972,7 @@ static const struct inet6_protocol sctpv6_protocol = {
        .flags        = INET6_PROTO_NOPOLICY | INET6_PROTO_FINAL,
  };
  
@@ -103135,7 +105213,7 @@ index 2b1738e..a9d0fc9 100644
        .sa_family         = AF_INET6,
        .sctp_xmit         = sctp_v6_xmit,
        .setsockopt        = ipv6_setsockopt,
-@@ -998,7 +998,7 @@ static struct sctp_af sctp_af_inet6 = {
+@@ -1002,7 +1002,7 @@ static struct sctp_af sctp_af_inet6 = {
  #endif
  };
  
@@ -103144,7 +105222,7 @@ index 2b1738e..a9d0fc9 100644
        .event_msgname = sctp_inet6_event_msgname,
        .skb_msgname   = sctp_inet6_skb_msgname,
        .af_supported  = sctp_inet6_af_supported,
-@@ -1023,7 +1023,7 @@ void sctp_v6_pf_init(void)
+@@ -1029,7 +1029,7 @@ void sctp_v6_pf_init(void)
  
  void sctp_v6_pf_exit(void)
  {
@@ -103154,7 +105232,7 @@ index 2b1738e..a9d0fc9 100644
  
  /* Initialize IPv6 support and register with socket layer.  */
 diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
-index 44cbb54..4c5dce6 100644
+index 8f34b27..b105385 100644
 --- a/net/sctp/protocol.c
 +++ b/net/sctp/protocol.c
 @@ -836,8 +836,10 @@ int sctp_register_af(struct sctp_af *af)
@@ -103187,7 +105265,7 @@ index 44cbb54..4c5dce6 100644
        .sa_family         = AF_INET,
        .sctp_xmit         = sctp_v4_xmit,
        .setsockopt        = ip_setsockopt,
-@@ -1124,7 +1126,7 @@ static void sctp_v4_pf_init(void)
+@@ -1123,7 +1125,7 @@ static void sctp_v4_pf_init(void)
  
  static void sctp_v4_pf_exit(void)
  {
@@ -103210,10 +105288,10 @@ index fef2acd..c705c4f 100644
        sctp_generate_t1_cookie_event,
        sctp_generate_t1_init_event,
 diff --git a/net/sctp/socket.c b/net/sctp/socket.c
-index fee06b9..eabc613 100644
+index 634a2ab..8e93929 100644
 --- a/net/sctp/socket.c
 +++ b/net/sctp/socket.c
-@@ -2175,11 +2175,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
+@@ -2199,11 +2199,13 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
  {
        struct sctp_association *asoc;
        struct sctp_ulpevent *event;
@@ -103226,9 +105304,9 @@ index fee06b9..eabc613 100644
                return -EFAULT;
 +      sctp_sk(sk)->subscribe = subscribe;
  
-       /*
-        * At the time when a user app subscribes to SCTP_SENDER_DRY_EVENT,
-@@ -4259,13 +4261,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,
+       if (sctp_sk(sk)->subscribe.sctp_data_io_event)
+               pr_warn_ratelimited(DEPRECATED "%s (pid %d) "
+@@ -4372,13 +4374,16 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,
  static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
                                  int __user *optlen)
  {
@@ -103246,7 +105324,7 @@ index fee06b9..eabc613 100644
                return -EFAULT;
        return 0;
  }
-@@ -4283,6 +4288,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
+@@ -4396,6 +4401,8 @@ static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
   */
  static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optval, int __user *optlen)
  {
@@ -103255,7 +105333,7 @@ index fee06b9..eabc613 100644
        /* Applicable to UDP-style socket only */
        if (sctp_style(sk, TCP))
                return -EOPNOTSUPP;
-@@ -4291,7 +4298,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv
+@@ -4404,7 +4411,8 @@ static int sctp_getsockopt_autoclose(struct sock *sk, int len, char __user *optv
        len = sizeof(int);
        if (put_user(len, optlen))
                return -EFAULT;
@@ -103265,7 +105343,7 @@ index fee06b9..eabc613 100644
                return -EFAULT;
        return 0;
  }
-@@ -4666,12 +4674,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len,
+@@ -4778,12 +4786,15 @@ static int sctp_getsockopt_delayed_ack(struct sock *sk, int len,
   */
  static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval, int __user *optlen)
  {
@@ -103282,8 +105360,8 @@ index fee06b9..eabc613 100644
                return -EFAULT;
        return 0;
  }
-@@ -4712,6 +4723,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
-               addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
+@@ -4824,6 +4835,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
+                             ->addr_to_user(sp, &temp);
                if (space_left < addrlen)
                        return -ENOMEM;
 +              if (addrlen > sizeof(temp) || addrlen < 0)
@@ -103292,37 +105370,37 @@ index fee06b9..eabc613 100644
                        return -EFAULT;
                to += addrlen;
 diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
-index c82fdc1..4ca1f95 100644
+index 2e9ada1..40f425d 100644
 --- a/net/sctp/sysctl.c
 +++ b/net/sctp/sysctl.c
-@@ -308,7 +308,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write,
+@@ -321,7 +321,7 @@ static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write,
+                               loff_t *ppos)
  {
        struct net *net = current->nsproxy->net_ns;
-       char tmp[8];
 -      struct ctl_table tbl;
 +      ctl_table_no_const tbl;
-       int ret;
-       int changed = 0;
+       bool changed = false;
        char *none = "none";
-@@ -355,7 +355,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write,
- {
+       char tmp[8];
+@@ -369,7 +369,7 @@ static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write,
        struct net *net = current->nsproxy->net_ns;
-       int new_value;
--      struct ctl_table tbl;
-+      ctl_table_no_const tbl;
        unsigned int min = *(unsigned int *) ctl->extra1;
        unsigned int max = *(unsigned int *) ctl->extra2;
-       int ret;
-@@ -382,7 +382,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write,
- {
-       struct net *net = current->nsproxy->net_ns;
-       int new_value;
 -      struct ctl_table tbl;
 +      ctl_table_no_const tbl;
+       int ret, new_value;
+       memset(&tbl, 0, sizeof(struct ctl_table));
+@@ -398,7 +398,7 @@ static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write,
+       struct net *net = current->nsproxy->net_ns;
        unsigned int min = *(unsigned int *) ctl->extra1;
        unsigned int max = *(unsigned int *) ctl->extra2;
-       int ret;
-@@ -408,7 +408,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
+-      struct ctl_table tbl;
++      ctl_table_no_const tbl;
+       int ret, new_value;
+       memset(&tbl, 0, sizeof(struct ctl_table));
+@@ -436,7 +436,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
                             loff_t *ppos)
  {
        struct net *net = current->nsproxy->net_ns;
@@ -103331,49 +105409,17 @@ index c82fdc1..4ca1f95 100644
        int new_value, ret;
  
        memset(&tbl, 0, sizeof(struct ctl_table));
-@@ -436,7 +436,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
+@@ -463,7 +463,7 @@ static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
  
  int sctp_sysctl_net_register(struct net *net)
  {
--      struct ctl_table *table = sctp_net_table;
-+      ctl_table_no_const *table = NULL;
-       if (!net_eq(net, &init_net)) {
-               int i;
-@@ -449,7 +449,10 @@ int sctp_sysctl_net_register(struct net *net)
-                       table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
-       }
--      net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
-+      if (!net_eq(net, &init_net))
-+              net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
-+      else
-+              net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", sctp_net_table);
-       return 0;
- }
-diff --git a/net/sctp/ulpevent.c b/net/sctp/ulpevent.c
-index 85c6465..879f3cd 100644
---- a/net/sctp/ulpevent.c
-+++ b/net/sctp/ulpevent.c
-@@ -411,6 +411,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_remote_error(
-        * sre_type:
-        *   It should be SCTP_REMOTE_ERROR.
-        */
-+      memset(sre, 0, sizeof(*sre));
-       sre->sre_type = SCTP_REMOTE_ERROR;
+-      struct ctl_table *table;
++      ctl_table_no_const *table;
+       int i;
  
-       /*
-@@ -916,6 +917,7 @@ void sctp_ulpevent_read_sndrcvinfo(const struct sctp_ulpevent *event,
-        * For recvmsg() the SCTP stack places the message's stream number in
-        * this value.
-       */
-+      memset(&sinfo, 0, sizeof(sinfo));
-       sinfo.sinfo_stream = event->stream;
-       /* sinfo_ssn: 16 bits (unsigned integer)
-        *
+       table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
 diff --git a/net/socket.c b/net/socket.c
-index abf56b2..b8998bc 100644
+index fe20c31..83a0ed6 100644
 --- a/net/socket.c
 +++ b/net/socket.c
 @@ -89,6 +89,7 @@
@@ -103384,7 +105430,7 @@ index abf56b2..b8998bc 100644
  
  #include <asm/uaccess.h>
  #include <asm/unistd.h>
-@@ -112,6 +113,8 @@ unsigned int sysctl_net_busy_read __read_mostly;
+@@ -113,6 +114,8 @@ unsigned int sysctl_net_busy_read __read_mostly;
  unsigned int sysctl_net_busy_poll __read_mostly;
  #endif
  
@@ -103393,7 +105439,7 @@ index abf56b2..b8998bc 100644
  static int sock_no_open(struct inode *irrelevant, struct file *dontcare);
  static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
                         unsigned long nr_segs, loff_t pos);
-@@ -163,7 +166,7 @@ static const struct file_operations socket_file_ops = {
+@@ -164,7 +167,7 @@ static const struct file_operations socket_file_ops = {
   */
  
  static DEFINE_SPINLOCK(net_family_lock);
@@ -103402,7 +105448,7 @@ index abf56b2..b8998bc 100644
  
  /*
   *    Statistics counters of the socket lists
-@@ -329,7 +332,7 @@ static struct dentry *sockfs_mount(struct file_system_type *fs_type,
+@@ -330,7 +333,7 @@ static struct dentry *sockfs_mount(struct file_system_type *fs_type,
                &sockfs_dentry_operations, SOCKFS_MAGIC);
  }
  
@@ -103411,7 +105457,7 @@ index abf56b2..b8998bc 100644
  
  static struct file_system_type sock_fs_type = {
        .name =         "sockfs",
-@@ -1257,6 +1260,8 @@ int __sock_create(struct net *net, int family, int type, int protocol,
+@@ -1263,6 +1266,8 @@ int __sock_create(struct net *net, int family, int type, int protocol,
                return -EAFNOSUPPORT;
        if (type < 0 || type >= SOCK_MAX)
                return -EINVAL;
@@ -103420,7 +105466,7 @@ index abf56b2..b8998bc 100644
  
        /* Compatibility.
  
-@@ -1277,6 +1282,20 @@ int __sock_create(struct net *net, int family, int type, int protocol,
+@@ -1283,6 +1288,20 @@ int __sock_create(struct net *net, int family, int type, int protocol,
        if (err)
                return err;
  
@@ -103441,7 +105487,7 @@ index abf56b2..b8998bc 100644
        /*
         *      Allocate the socket and allow the family to set things up. if
         *      the protocol is 0, the family is instructed to select an appropriate
-@@ -1528,6 +1547,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
+@@ -1534,6 +1553,14 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
        if (sock) {
                err = move_addr_to_kernel(umyaddr, addrlen, &address);
                if (err >= 0) {
@@ -103456,7 +105502,7 @@ index abf56b2..b8998bc 100644
                        err = security_socket_bind(sock,
                                                   (struct sockaddr *)&address,
                                                   addrlen);
-@@ -1536,6 +1563,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
+@@ -1542,6 +1569,7 @@ SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
                                                      (struct sockaddr *)
                                                      &address, addrlen);
                }
@@ -103464,7 +105510,7 @@ index abf56b2..b8998bc 100644
                fput_light(sock->file, fput_needed);
        }
        return err;
-@@ -1559,10 +1587,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog)
+@@ -1565,10 +1593,20 @@ SYSCALL_DEFINE2(listen, int, fd, int, backlog)
                if ((unsigned int)backlog > somaxconn)
                        backlog = somaxconn;
  
@@ -103485,7 +105531,7 @@ index abf56b2..b8998bc 100644
                fput_light(sock->file, fput_needed);
        }
        return err;
-@@ -1606,6 +1644,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
+@@ -1612,6 +1650,18 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
        newsock->type = sock->type;
        newsock->ops = sock->ops;
  
@@ -103504,7 +105550,7 @@ index abf56b2..b8998bc 100644
        /*
         * We don't need try_module_get here, as the listening socket (sock)
         * has the protocol module (sock->ops->owner) held.
-@@ -1651,6 +1701,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
+@@ -1657,6 +1707,8 @@ SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
        fd_install(newfd, newfile);
        err = newfd;
  
@@ -103513,7 +105559,7 @@ index abf56b2..b8998bc 100644
  out_put:
        fput_light(sock->file, fput_needed);
  out:
-@@ -1683,6 +1735,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
+@@ -1689,6 +1741,7 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
                int, addrlen)
  {
        struct socket *sock;
@@ -103521,7 +105567,7 @@ index abf56b2..b8998bc 100644
        struct sockaddr_storage address;
        int err, fput_needed;
  
-@@ -1693,6 +1746,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
+@@ -1699,6 +1752,17 @@ SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
        if (err < 0)
                goto out_put;
  
@@ -103539,7 +105585,7 @@ index abf56b2..b8998bc 100644
        err =
            security_socket_connect(sock, (struct sockaddr *)&address, addrlen);
        if (err)
-@@ -1774,6 +1838,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
+@@ -1780,6 +1844,8 @@ SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
   *    the protocol.
   */
  
@@ -103548,7 +105594,7 @@ index abf56b2..b8998bc 100644
  SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
                unsigned int, flags, struct sockaddr __user *, addr,
                int, addr_len)
-@@ -1840,7 +1906,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
+@@ -1846,7 +1912,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
        struct socket *sock;
        struct iovec iov;
        struct msghdr msg;
@@ -103557,7 +105603,7 @@ index abf56b2..b8998bc 100644
        int err, err2;
        int fput_needed;
  
-@@ -2066,7 +2132,7 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
+@@ -2075,7 +2141,7 @@ static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg,
                 * checking falls down on this.
                 */
                if (copy_from_user(ctl_buf,
@@ -103566,7 +105612,7 @@ index abf56b2..b8998bc 100644
                                   ctl_len))
                        goto out_freectl;
                msg_sys->msg_control = ctl_buf;
-@@ -2217,7 +2283,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
+@@ -2226,7 +2292,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
        int err, total_len, len;
  
        /* kernel mode address */
@@ -103575,7 +105621,7 @@ index abf56b2..b8998bc 100644
  
        /* user mode address pointers */
        struct sockaddr __user *uaddr;
-@@ -2246,7 +2312,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
+@@ -2255,7 +2321,7 @@ static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg,
        /* Save the user-mode address (verify_iovec will change the
         * kernel msghdr to use the kernel address space)
         */
@@ -103584,7 +105630,7 @@ index abf56b2..b8998bc 100644
        uaddr_len = COMPAT_NAMELEN(msg);
        if (MSG_CMSG_COMPAT & flags)
                err = verify_compat_iovec(msg_sys, iov, &addr, VERIFY_WRITE);
-@@ -2887,7 +2953,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
+@@ -2896,7 +2962,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
        ifr = compat_alloc_user_space(buf_size);
        rxnfc = (void __user *)ifr + ALIGN(sizeof(struct ifreq), 8);
  
@@ -103593,7 +105639,7 @@ index abf56b2..b8998bc 100644
                return -EFAULT;
  
        if (put_user(convert_in ? rxnfc : compat_ptr(data),
-@@ -2998,7 +3064,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd,
+@@ -3007,7 +3073,7 @@ static int bond_ioctl(struct net *net, unsigned int cmd,
                old_fs = get_fs();
                set_fs(KERNEL_DS);
                err = dev_ioctl(net, cmd,
@@ -103602,7 +105648,7 @@ index abf56b2..b8998bc 100644
                set_fs(old_fs);
  
                return err;
-@@ -3091,7 +3157,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
+@@ -3100,7 +3166,7 @@ static int compat_sioc_ifmap(struct net *net, unsigned int cmd,
  
        old_fs = get_fs();
        set_fs(KERNEL_DS);
@@ -103611,7 +105657,7 @@ index abf56b2..b8998bc 100644
        set_fs(old_fs);
  
        if (cmd == SIOCGIFMAP && !err) {
-@@ -3175,7 +3241,7 @@ static int routing_ioctl(struct net *net, struct socket *sock,
+@@ -3184,7 +3250,7 @@ static int routing_ioctl(struct net *net, struct socket *sock,
                ret |= get_user(rtdev, &(ur4->rt_dev));
                if (rtdev) {
                        ret |= copy_from_user(devname, compat_ptr(rtdev), 15);
@@ -103620,7 +105666,7 @@ index abf56b2..b8998bc 100644
                        devname[15] = 0;
                } else
                        r4.rt_dev = NULL;
-@@ -3402,8 +3468,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
+@@ -3411,8 +3477,8 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
        int __user *uoptlen;
        int err;
  
@@ -103631,7 +105677,7 @@ index abf56b2..b8998bc 100644
  
        set_fs(KERNEL_DS);
        if (level == SOL_SOCKET)
-@@ -3423,7 +3489,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,
+@@ -3432,7 +3498,7 @@ int kernel_setsockopt(struct socket *sock, int level, int optname,
        char __user *uoptval;
        int err;
  
@@ -103641,7 +105687,7 @@ index abf56b2..b8998bc 100644
        set_fs(KERNEL_DS);
        if (level == SOL_SOCKET)
 diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
-index 0f73f45..a96aa52 100644
+index c548ab2..4e1b68b 100644
 --- a/net/sunrpc/auth_gss/svcauth_gss.c
 +++ b/net/sunrpc/auth_gss/svcauth_gss.c
 @@ -1140,7 +1140,7 @@ static int gss_proxy_save_rsc(struct cache_detail *cd,
@@ -103663,7 +105709,7 @@ index 0f73f45..a96aa52 100644
        /* make a copy for the caller */
        *handle = ctxh;
 diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
-index ae333c1..18521f0 100644
+index 0663621..c4928d4 100644
 --- a/net/sunrpc/cache.c
 +++ b/net/sunrpc/cache.c
 @@ -1609,7 +1609,7 @@ static int create_cache_proc_entries(struct cache_detail *cd, struct net *net)
@@ -103676,10 +105722,10 @@ index ae333c1..18521f0 100644
                goto out_nomem;
        cd->u.procfs.channel_ent = NULL;
 diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
-index 2e6ab10..3170800 100644
+index 9acd6ce..4353a72 100644
 --- a/net/sunrpc/clnt.c
 +++ b/net/sunrpc/clnt.c
-@@ -1425,7 +1425,9 @@ call_start(struct rpc_task *task)
+@@ -1428,7 +1428,9 @@ call_start(struct rpc_task *task)
                        (RPC_IS_ASYNC(task) ? "async" : "sync"));
  
        /* Increment call count */
@@ -103691,10 +105737,10 @@ index 2e6ab10..3170800 100644
        task->tk_action = call_reserve;
  }
 diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
-index 25578af..a29298d 100644
+index fe3441a..922c29e 100644
 --- a/net/sunrpc/sched.c
 +++ b/net/sunrpc/sched.c
-@@ -261,9 +261,9 @@ static int rpc_wait_bit_killable(void *word)
+@@ -261,9 +261,9 @@ static int rpc_wait_bit_killable(struct wait_bit_key *key)
  #if defined(RPC_DEBUG) || defined(RPC_TRACEPOINTS)
  static void rpc_task_set_debuginfo(struct rpc_task *task)
  {
@@ -103720,10 +105766,10 @@ index 5453049..465669a 100644
                return -ENOMEM;
  
 diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
-index 5de6801..b4e330d 100644
+index ca8a795..ddfc41b 100644
 --- a/net/sunrpc/svc.c
 +++ b/net/sunrpc/svc.c
-@@ -1167,7 +1167,9 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
+@@ -1165,7 +1165,9 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv)
        svc_putnl(resv, RPC_SUCCESS);
  
        /* Bump per-procedure stats counter */
@@ -103868,19 +105914,28 @@ index c1b6270..05089c1 100644
                .proc_handler   = read_reset_stat,
        },
 diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
-index 8d904e4..b2fc727 100644
+index e011027..9d3c4e1 100644
 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
 +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
-@@ -504,7 +504,7 @@ next_sge:
-                       svc_rdma_put_context(ctxt, 0);
-                       goto out;
-               }
--              atomic_inc(&rdma_stat_read);
-+              atomic_inc_unchecked(&rdma_stat_read);
-               if (read_wr.num_sge < chl_map->ch[ch_no].count) {
-                       chl_map->ch[ch_no].count -= read_wr.num_sge;
-@@ -607,7 +607,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
+@@ -220,7 +220,7 @@ static int rdma_read_chunk_lcl(struct svcxprt_rdma *xprt,
+       *page_no = pg_no;
+       *page_offset = pg_off;
+       ret = read;
+-      atomic_inc(&rdma_stat_read);
++      atomic_inc_unchecked(&rdma_stat_read);
+       return ret;
+  err:
+       svc_rdma_unmap_dma(ctxt);
+@@ -356,7 +356,7 @@ static int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt,
+       *page_no = pg_no;
+       *page_offset = pg_off;
+       ret = read;
+-      atomic_inc(&rdma_stat_read);
++      atomic_inc_unchecked(&rdma_stat_read);
+       return ret;
+  err:
+       svc_rdma_unmap_dma(ctxt);
+@@ -540,7 +540,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
                                  dto_q);
                list_del_init(&ctxt->dto_q);
        } else {
@@ -103889,7 +105944,7 @@ index 8d904e4..b2fc727 100644
                clear_bit(XPT_DATA, &xprt->xpt_flags);
                ctxt = NULL;
        }
-@@ -627,7 +627,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
+@@ -559,7 +559,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
        dprintk("svcrdma: processing ctxt=%p on xprt=%p, rqstp=%p, status=%d\n",
                ctxt, rdma_xprt, rqstp, ctxt->wc_status);
        BUG_ON(ctxt->wc_status != IB_WC_SUCCESS);
@@ -103899,10 +105954,10 @@ index 8d904e4..b2fc727 100644
        /* Build up the XDR from the receive buffers. */
        rdma_build_arg_xdr(rqstp, ctxt, ctxt->byte_len);
 diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
-index 7e024a5..17f13d3 100644
+index 9f1b506..2e0b321 100644
 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
 +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
-@@ -363,7 +363,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp,
+@@ -208,7 +208,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp,
        write_wr.wr.rdma.remote_addr = to;
  
        /* Post It */
@@ -103910,12 +105965,12 @@ index 7e024a5..17f13d3 100644
 +      atomic_inc_unchecked(&rdma_stat_write);
        if (svc_rdma_send(xprt, &write_wr))
                goto err;
-       return 0;
+       return write_len - bc;
 diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
-index 25688fa..dc72003 100644
+index 4e61880..1f0d963 100644
 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
 +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
-@@ -292,7 +292,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
+@@ -295,7 +295,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
                return;
  
        ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP);
@@ -103924,7 +105979,7 @@ index 25688fa..dc72003 100644
  
        while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) {
                ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id;
-@@ -314,7 +314,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
+@@ -317,7 +317,7 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt)
        }
  
        if (ctxt)
@@ -103933,16 +105988,16 @@ index 25688fa..dc72003 100644
  
        set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags);
        /*
-@@ -386,7 +386,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
+@@ -392,7 +392,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
                return;
  
        ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP);
 -      atomic_inc(&rdma_stat_sq_poll);
 +      atomic_inc_unchecked(&rdma_stat_sq_poll);
-       while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) {
-               if (wc.status != IB_WC_SUCCESS)
-                       /* Close the transport */
-@@ -404,7 +404,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
+       while ((ret = ib_poll_cq(cq, ARRAY_SIZE(wc_a), wc_a)) > 0) {
+               int i;
+@@ -420,7 +420,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt)
        }
  
        if (ctxt)
@@ -103951,7 +106006,7 @@ index 25688fa..dc72003 100644
  }
  
  static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
-@@ -1261,7 +1261,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
+@@ -1264,7 +1264,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr)
                spin_lock_bh(&xprt->sc_lock);
                if (xprt->sc_sq_depth < atomic_read(&xprt->sc_sq_count) + wr_count) {
                        spin_unlock_bh(&xprt->sc_lock);
@@ -103974,10 +106029,10 @@ index e7000be..e3b0ba7 100644
                int mode = (table->mode >> 6) & 7;
                return (mode << 6) | (mode << 3) | mode;
 diff --git a/net/tipc/subscr.c b/net/tipc/subscr.c
-index 6424372..afd36e9 100644
+index 31b5cb2..566ff01 100644
 --- a/net/tipc/subscr.c
 +++ b/net/tipc/subscr.c
-@@ -97,7 +97,7 @@ static void subscr_send_event(struct tipc_subscription *sub, u32 found_lower,
+@@ -96,7 +96,7 @@ static void subscr_send_event(struct tipc_subscription *sub, u32 found_lower,
        struct tipc_subscriber *subscriber = sub->subscriber;
        struct kvec msg_sect;
  
@@ -103987,7 +106042,7 @@ index 6424372..afd36e9 100644
        sub->evt.event = htohl(event, sub->swap);
        sub->evt.found_lower = htohl(found_lower, sub->swap);
 diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
-index bb7e8ba..9f444c6 100644
+index e968843..bc95776 100644
 --- a/net/unix/af_unix.c
 +++ b/net/unix/af_unix.c
 @@ -791,6 +791,12 @@ static struct sock *unix_find_other(struct net *net,
@@ -104036,7 +106091,7 @@ index bb7e8ba..9f444c6 100644
        done_path_create(&path, dentry);
        return err;
  }
-@@ -2344,9 +2363,13 @@ static int unix_seq_show(struct seq_file *seq, void *v)
+@@ -2350,9 +2369,13 @@ static int unix_seq_show(struct seq_file *seq, void *v)
                seq_puts(seq, "Num       RefCount Protocol Flags    Type St "
                         "Inode Path\n");
        else {
@@ -104051,7 +106106,7 @@ index bb7e8ba..9f444c6 100644
  
                seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu",
                        s,
-@@ -2373,8 +2396,10 @@ static int unix_seq_show(struct seq_file *seq, void *v)
+@@ -2379,8 +2402,10 @@ static int unix_seq_show(struct seq_file *seq, void *v)
                        }
                        for ( ; i < len; i++)
                                seq_putc(seq, u->addr->name->sun_path[i]);
@@ -104219,10 +106274,10 @@ index 0917f04..f4e3d8c 100644
  
        if (!proc_create("x25/route", S_IRUGO, init_net.proc_net,
 diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
-index c08fbd1..3d99e85 100644
+index 88bf289..7b0741b 100644
 --- a/net/xfrm/xfrm_policy.c
 +++ b/net/xfrm/xfrm_policy.c
-@@ -325,7 +325,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy)
+@@ -330,7 +330,7 @@ static void xfrm_policy_kill(struct xfrm_policy *policy)
  {
        policy->walk.dead = 1;
  
@@ -104231,7 +106286,7 @@ index c08fbd1..3d99e85 100644
  
        if (del_timer(&policy->polq.hold_timer))
                xfrm_pol_put(policy);
-@@ -659,7 +659,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
+@@ -781,7 +781,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
                hlist_add_head(&policy->bydst, chain);
        xfrm_pol_hold(policy);
        net->xfrm.policy_count[dir]++;
@@ -104240,7 +106295,7 @@ index c08fbd1..3d99e85 100644
  
        /* After previous checking, family can either be AF_INET or AF_INET6 */
        if (policy->family == AF_INET)
-@@ -1759,7 +1759,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
+@@ -1871,7 +1871,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols,
  
        xdst->num_pols = num_pols;
        memcpy(xdst->pols, pols, sizeof(struct xfrm_policy *) * num_pols);
@@ -104249,7 +106304,7 @@ index c08fbd1..3d99e85 100644
  
        return xdst;
  }
-@@ -2546,10 +2546,11 @@ void xfrm_garbage_collect(struct net *net)
+@@ -2685,10 +2685,11 @@ void xfrm_garbage_collect(struct net *net)
  }
  EXPORT_SYMBOL(xfrm_garbage_collect);
  
@@ -104262,7 +106317,7 @@ index c08fbd1..3d99e85 100644
  
  static void xfrm_init_pmtu(struct dst_entry *dst)
  {
-@@ -2599,7 +2600,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first)
+@@ -2738,7 +2739,7 @@ static int xfrm_bundle_ok(struct xfrm_dst *first)
                if (xdst->xfrm_genid != dst->xfrm->genid)
                        return 0;
                if (xdst->num_pols > 0 &&
@@ -104271,7 +106326,7 @@ index c08fbd1..3d99e85 100644
                        return 0;
  
                mtu = dst_mtu(dst->child);
-@@ -2687,8 +2688,6 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
+@@ -2826,8 +2827,6 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
                        dst_ops->link_failure = xfrm_link_failure;
                if (likely(dst_ops->neigh_lookup == NULL))
                        dst_ops->neigh_lookup = xfrm_neigh_lookup;
@@ -104280,7 +106335,7 @@ index c08fbd1..3d99e85 100644
                rcu_assign_pointer(xfrm_policy_afinfo[afinfo->family], afinfo);
        }
        spin_unlock(&xfrm_policy_afinfo_lock);
-@@ -2742,7 +2741,6 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
+@@ -2881,7 +2880,6 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
                dst_ops->check = NULL;
                dst_ops->negative_advice = NULL;
                dst_ops->link_failure = NULL;
@@ -104288,7 +106343,7 @@ index c08fbd1..3d99e85 100644
        }
        return err;
  }
-@@ -3137,7 +3135,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol,
+@@ -3277,7 +3275,7 @@ static int xfrm_policy_migrate(struct xfrm_policy *pol,
                               sizeof(pol->xfrm_vec[i].saddr));
                        pol->xfrm_vec[i].encap_family = mp->new_family;
                        /* flush bundles */
@@ -104298,10 +106353,10 @@ index c08fbd1..3d99e85 100644
        }
  
 diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
-index 8e9c781..3972135 100644
+index de971b6..b843409 100644
 --- a/net/xfrm/xfrm_state.c
 +++ b/net/xfrm/xfrm_state.c
-@@ -173,12 +173,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family)
+@@ -166,12 +166,14 @@ int xfrm_register_type(const struct xfrm_type *type, unsigned short family)
  
        if (unlikely(afinfo == NULL))
                return -EAFNOSUPPORT;
@@ -104319,7 +106374,7 @@ index 8e9c781..3972135 100644
                err = -EEXIST;
        spin_unlock_bh(&xfrm_type_lock);
        xfrm_state_put_afinfo(afinfo);
-@@ -194,13 +196,16 @@ int xfrm_unregister_type(const struct xfrm_type *type, unsigned short family)
+@@ -187,13 +189,16 @@ int xfrm_unregister_type(const struct xfrm_type *type, unsigned short family)
  
        if (unlikely(afinfo == NULL))
                return -EAFNOSUPPORT;
@@ -104338,7 +106393,7 @@ index 8e9c781..3972135 100644
        spin_unlock_bh(&xfrm_type_lock);
        xfrm_state_put_afinfo(afinfo);
        return err;
-@@ -210,7 +215,6 @@ EXPORT_SYMBOL(xfrm_unregister_type);
+@@ -203,7 +208,6 @@ EXPORT_SYMBOL(xfrm_unregister_type);
  static const struct xfrm_type *xfrm_get_type(u8 proto, unsigned short family)
  {
        struct xfrm_state_afinfo *afinfo;
@@ -104346,7 +106401,7 @@ index 8e9c781..3972135 100644
        const struct xfrm_type *type;
        int modload_attempted = 0;
  
-@@ -218,9 +222,8 @@ retry:
+@@ -211,9 +215,8 @@ retry:
        afinfo = xfrm_state_get_afinfo(family);
        if (unlikely(afinfo == NULL))
                return NULL;
@@ -104357,7 +106412,7 @@ index 8e9c781..3972135 100644
        if (unlikely(type && !try_module_get(type->owner)))
                type = NULL;
        if (!type && !modload_attempted) {
-@@ -254,7 +257,7 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family)
+@@ -247,7 +250,7 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family)
                return -EAFNOSUPPORT;
  
        err = -EEXIST;
@@ -104366,7 +106421,7 @@ index 8e9c781..3972135 100644
        spin_lock_bh(&xfrm_mode_lock);
        if (modemap[mode->encap])
                goto out;
-@@ -263,8 +266,10 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family)
+@@ -256,8 +259,10 @@ int xfrm_register_mode(struct xfrm_mode *mode, int family)
        if (!try_module_get(afinfo->owner))
                goto out;
  
@@ -104378,7 +106433,7 @@ index 8e9c781..3972135 100644
        err = 0;
  
  out:
-@@ -288,10 +293,12 @@ int xfrm_unregister_mode(struct xfrm_mode *mode, int family)
+@@ -281,10 +286,12 @@ int xfrm_unregister_mode(struct xfrm_mode *mode, int family)
                return -EAFNOSUPPORT;
  
        err = -ENOENT;
@@ -104392,7 +106447,7 @@ index 8e9c781..3972135 100644
                module_put(mode->afinfo->owner);
                err = 0;
        }
-@@ -1519,10 +1526,10 @@ EXPORT_SYMBOL(xfrm_find_acq_byseq);
+@@ -1505,10 +1512,10 @@ EXPORT_SYMBOL(xfrm_find_acq_byseq);
  u32 xfrm_get_acqseq(void)
  {
        u32 res;
@@ -104418,21 +106473,11 @@ index 05a6e3d..6716ec9 100644
  
        __xfrm_sysctl_init(net);
  
-diff --git a/scripts/Makefile b/scripts/Makefile
-index 1d07860..f16fc22 100644
---- a/scripts/Makefile
-+++ b/scripts/Makefile
-@@ -40,3 +40,5 @@ subdir-$(CONFIG_DTC)         += dtc
- # Let clean descend into subdirs
- subdir-       += basic kconfig package selinux
-+
-+clean-files := randstruct.seed
 diff --git a/scripts/Makefile.build b/scripts/Makefile.build
-index 003bc26..d5f02b0 100644
+index 649ce68..f6bc05c 100644
 --- a/scripts/Makefile.build
 +++ b/scripts/Makefile.build
-@@ -121,7 +121,7 @@ endif
+@@ -60,7 +60,7 @@ endif
  endif
  
  # Do not include host rules unless needed
@@ -104442,12 +106487,12 @@ index 003bc26..d5f02b0 100644
  endif
  
 diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean
-index 686cb0d..9d653bf 100644
+index b1c668d..638055f 100644
 --- a/scripts/Makefile.clean
 +++ b/scripts/Makefile.clean
-@@ -43,7 +43,8 @@ subdir-ymn   := $(addprefix $(obj)/,$(subdir-ymn))
- __clean-files := $(extra-y) $(always)                  \
-                  $(targets) $(clean-files)             \
+@@ -41,7 +41,8 @@ subdir-ymn   := $(addprefix $(obj)/,$(subdir-ymn))
+ __clean-files := $(extra-y) $(extra-m) $(extra-)       \
+                  $(always) $(targets) $(clean-files)   \
                   $(host-progs)                         \
 -                 $(hostprogs-y) $(hostprogs-m) $(hostprogs-)
 +                 $(hostprogs-y) $(hostprogs-m) $(hostprogs-) \
@@ -104456,49 +106501,71 @@ index 686cb0d..9d653bf 100644
  __clean-files   := $(filter-out $(no-clean-files), $(__clean-files))
  
 diff --git a/scripts/Makefile.host b/scripts/Makefile.host
-index 1ac414f..38575f7 100644
+index 133edfa..c9aa07f 100644
 --- a/scripts/Makefile.host
 +++ b/scripts/Makefile.host
-@@ -31,6 +31,8 @@
- # Note: Shared libraries consisting of C++ files are not supported
+@@ -20,7 +20,19 @@
+ # Will compile qconf as a C++ program, and menu as a C program.
+ # They are linked as C++ code to the executable qconf
++# hostprogs-y := conf
++# conf-objs  := conf.o libkconfig.so
++# libkconfig-objs := expr.o type.o
++# Will create a shared library named libkconfig.so that consists of
++# expr.o and type.o (they are both compiled as C code and the object files
++# are made as position independent code).
++# conf.c is compiled as a C program, and conf.o is linked together with
++# libkconfig.so as the executable conf.
++# Note: Shared libraries consisting of C++ files are not supported
++
  __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))
 +__hostlibs := $(sort $(hostlibs-y) $(hostlibs-m))
 +__hostcxxlibs := $(sort $(hostcxxlibs-y) $(hostcxxlibs-m))
  
  # C code
  # Executables compiled from a single .c file
-@@ -54,11 +56,15 @@ host-cxxobjs       := $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs)))
- # Shared libaries (only .c supported)
- # Shared libraries (.so) - all .so files referenced in "xxx-objs"
- host-cshlib   := $(sort $(filter %.so, $(host-cobjs)))
+@@ -42,6 +54,19 @@ host-cxxmulti       := $(foreach m,$(__hostprogs),$(if $($(m)-cxxobjs),$(m)))
+ # C++ Object (.o) files compiled from .cc files
+ host-cxxobjs  := $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs)))
++# Shared libaries (only .c supported)
++# Shared libraries (.so) - all .so files referenced in "xxx-objs"
++host-cshlib   := $(sort $(filter %.so, $(host-cobjs)))
 +host-cshlib   += $(sort $(filter %.so, $(__hostlibs)))
 +host-cxxshlib := $(sort $(filter %.so, $(__hostcxxlibs)))
- # Remove .so files from "xxx-objs"
- host-cobjs    := $(filter-out %.so,$(host-cobjs))
++# Remove .so files from "xxx-objs"
++host-cobjs    := $(filter-out %.so,$(host-cobjs))
 +host-cxxobjs  := $(filter-out %.so,$(host-cxxobjs))
--#Object (.o) files used by the shared libaries
++
 +# Object (.o) files used by the shared libaries
- host-cshobjs  := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs))))
++host-cshobjs  := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs))))
 +host-cxxshobjs        := $(sort $(foreach m,$(host-cxxshlib),$($(m:.so=-objs))))
++
  # output directory for programs/.o files
- # hostprogs-y := tools/build may have been specified. Retrieve directory
-@@ -82,7 +88,9 @@ host-cobjs   := $(addprefix $(obj)/,$(host-cobjs))
+ # hostprogs-y := tools/build may have been specified.
+ # Retrieve also directory of .o files from prog-objs or prog-cxxobjs notation
+@@ -56,6 +81,10 @@ host-cmulti := $(addprefix $(obj)/,$(host-cmulti))
+ host-cobjs    := $(addprefix $(obj)/,$(host-cobjs))
  host-cxxmulti := $(addprefix $(obj)/,$(host-cxxmulti))
  host-cxxobjs  := $(addprefix $(obj)/,$(host-cxxobjs))
- host-cshlib   := $(addprefix $(obj)/,$(host-cshlib))
++host-cshlib   := $(addprefix $(obj)/,$(host-cshlib))
 +host-cxxshlib := $(addprefix $(obj)/,$(host-cxxshlib))
- host-cshobjs  := $(addprefix $(obj)/,$(host-cshobjs))
++host-cshobjs  := $(addprefix $(obj)/,$(host-cshobjs))
 +host-cxxshobjs        := $(addprefix $(obj)/,$(host-cxxshobjs))
  host-objdirs    := $(addprefix $(obj)/,$(host-objdirs))
  
  obj-dirs += $(host-objdirs)
-@@ -156,6 +164,13 @@ quiet_cmd_host-cshobjs    = HOSTCC  -fPIC $@
- $(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE
-       $(call if_changed_dep,host-cshobjs)
+@@ -124,5 +153,37 @@ quiet_cmd_host-cxxobjs    = HOSTCXX $@
+ $(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE
+       $(call if_changed_dep,host-cxxobjs)
  
++# Compile .c file, create position independent .o file
++# host-cshobjs -> .o
++quiet_cmd_host-cshobjs        = HOSTCC  -fPIC $@
++      cmd_host-cshobjs        = $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $<
++$(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE
++      $(call if_changed_dep,host-cshobjs)
++
 +# Compile .c file, create position independent .o file
 +# host-cxxshobjs -> .o
 +quiet_cmd_host-cxxshobjs      = HOSTCXX -fPIC $@
@@ -104506,13 +106573,15 @@ index 1ac414f..38575f7 100644
 +$(host-cxxshobjs): $(obj)/%.o: $(src)/%.c FORCE
 +      $(call if_changed_dep,host-cxxshobjs)
 +
- # Link a shared library, based on position independent .o files
- # *.o -> .so shared library (host-cshlib)
- quiet_cmd_host-cshlib = HOSTLLD -shared $@
-@@ -165,6 +180,15 @@ quiet_cmd_host-cshlib     = HOSTLLD -shared $@
- $(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE
-       $(call if_changed,host-cshlib)
++# Link a shared library, based on position independent .o files
++# *.o -> .so shared library (host-cshlib)
++quiet_cmd_host-cshlib = HOSTLLD -shared $@
++      cmd_host-cshlib = $(HOSTCC) $(HOSTLDFLAGS) -shared -o $@ \
++                        $(addprefix $(obj)/,$($(@F:.so=-objs))) \
++                        $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
++$(host-cshlib): $(obj)/%: $(host-cshobjs) FORCE
++      $(call if_changed,host-cshlib)
++
 +# Link a shared library, based on position independent .o files
 +# *.o -> .so shared library (host-cxxshlib)
 +quiet_cmd_host-cxxshlib       = HOSTLLD -shared $@
@@ -104523,11 +106592,10 @@ index 1ac414f..38575f7 100644
 +      $(call if_changed,host-cxxshlib)
 +
  targets += $(host-csingle)  $(host-cmulti) $(host-cobjs)\
--         $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) 
+-         $(host-cxxmulti) $(host-cxxobjs)
 +         $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs)
 diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
-index 078fe1d..fbdb363 100644
+index b304068..462d24e 100644
 --- a/scripts/basic/fixdep.c
 +++ b/scripts/basic/fixdep.c
 @@ -161,7 +161,7 @@ static unsigned int strhash(const char *str, unsigned int sz)
@@ -104575,11 +106643,11 @@ index 078fe1d..fbdb363 100644
                fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianness? %#x\n",
 diff --git a/scripts/gcc-plugin.sh b/scripts/gcc-plugin.sh
 new file mode 100644
-index 0000000..3fd3699
+index 0000000..42018ed
 --- /dev/null
 +++ b/scripts/gcc-plugin.sh
-@@ -0,0 +1,43 @@
-+#!/bin/bash
+@@ -0,0 +1,51 @@
++#!/bin/sh
 +srctree=$(dirname "$0")
 +gccplugins_dir=$($3 -print-file-name=plugin)
 +plugincc=$($1 -E - -o /dev/null -I${srctree}/../tools/gcc -I${gccplugins_dir}/include 2>&1 <<EOF
@@ -104597,15 +106665,23 @@ index 0000000..3fd3699
 +      exit 1
 +fi
 +
-+if [[ "$plugincc" =~ "$1 CC" ]]
-+then
-+      echo "$1"
-+      exit 0
-+fi
++case "$plugincc" in
++      *"$1 CC"*)
++              echo "$1"
++              exit 0
++              ;;
 +
-+if [[ "$plugincc" =~ "$2 CXX" ]]
-+then
-+plugincc=$($1 -c -x c++ -std=gnu++98 - -o /dev/null -I${srctree}/../tools/gcc -I${gccplugins_dir}/include 2>&1 <<EOF
++      *"$2 CXX"*)
++              # the c++ compiler needs another test, see below
++              ;;
++
++      *)
++              exit 1
++              ;;
++esac
++
++# we need a c++ compiler that supports the designated initializer GNU extension
++plugincc=$($2 -c -x c++ -std=gnu++98 - -fsyntax-only -I${srctree}/../tools/gcc -I${gccplugins_dir}/include 2>&1 <<EOF
 +#include "gcc-common.h"
 +class test {
 +public:
@@ -104615,15 +106691,15 @@ index 0000000..3fd3699
 +};
 +EOF
 +)
++
 +if [ $? -eq 0 ]
 +then
 +      echo "$2"
 +      exit 0
 +fi
-+fi
 +exit 1
 diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
-index 5de5660..d3deb89 100644
+index fdebd66..a349e33 100755
 --- a/scripts/headers_install.sh
 +++ b/scripts/headers_install.sh
 @@ -32,6 +32,7 @@ do
@@ -104635,7 +106711,7 @@ index 5de5660..d3deb89 100644
                -e 's@^#include <linux/compiler.h>@@' \
                -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
 diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
-index 86a4fe7..99e91f9 100644
+index 86a4fe7..99e91f9 100755
 --- a/scripts/link-vmlinux.sh
 +++ b/scripts/link-vmlinux.sh
 @@ -166,7 +166,7 @@ else
@@ -104648,7 +106724,7 @@ index 86a4fe7..99e91f9 100644
  kallsymso=""
  kallsyms_vmlinux=""
 diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
-index 1924990..3de7363 100644
+index e614ef6..d9d2b01 100644
 --- a/scripts/mod/file2alias.c
 +++ b/scripts/mod/file2alias.c
 @@ -142,7 +142,7 @@ static void device_id_check(const char *modname, const char *device_id,
@@ -104705,7 +106781,7 @@ index 1924990..3de7363 100644
  
                                buf_printf(&mod->dev_table_buf,
                                           "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
-@@ -941,7 +941,7 @@ static void dmi_ascii_filter(char *d, const char *s)
+@@ -939,7 +939,7 @@ static void dmi_ascii_filter(char *d, const char *s)
  static int do_dmi_entry(const char *filename, void *symval,
                        char *alias)
  {
@@ -104715,10 +106791,10 @@ index 1924990..3de7363 100644
        sprintf(alias, "dmi*");
  
 diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
-index 0663556..d9494f0 100644
+index d439856..10c1eac 100644
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
-@@ -949,6 +949,7 @@ enum mismatch {
+@@ -921,6 +921,7 @@ enum mismatch {
        ANY_INIT_TO_ANY_EXIT,
        ANY_EXIT_TO_ANY_INIT,
        EXPORT_TO_INIT_EXIT,
@@ -104726,7 +106802,7 @@ index 0663556..d9494f0 100644
  };
  
  struct sectioncheck {
-@@ -1035,6 +1036,12 @@ const struct sectioncheck sectioncheck[] = {
+@@ -1007,6 +1008,12 @@ static const struct sectioncheck sectioncheck[] = {
        .tosec   = { INIT_SECTIONS, EXIT_SECTIONS, NULL },
        .mismatch = EXPORT_TO_INIT_EXIT,
        .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
@@ -104739,7 +106815,7 @@ index 0663556..d9494f0 100644
  }
  };
  
-@@ -1155,10 +1162,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr,
+@@ -1127,10 +1134,10 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr,
                        continue;
                if (ELF_ST_TYPE(sym->st_info) == STT_SECTION)
                        continue;
@@ -104752,7 +106828,7 @@ index 0663556..d9494f0 100644
                if (d < 0)
                        d = addr - sym->st_value;
                if (d < distance) {
-@@ -1436,6 +1443,14 @@ static void report_sec_mismatch(const char *modname,
+@@ -1408,6 +1415,14 @@ static void report_sec_mismatch(const char *modname,
                tosym, prl_to, prl_to, tosym);
                free(prl_to);
                break;
@@ -104767,16 +106843,16 @@ index 0663556..d9494f0 100644
        }
        fprintf(stderr, "\n");
  }
-@@ -1687,7 +1702,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
+@@ -1659,7 +1674,7 @@ static void section_rel(const char *modname, struct elf_info *elf,
  static void check_sec_ref(struct module *mod, const char *modname,
-                           struct elf_info *elf)
+                         struct elf_info *elf)
  {
 -      int i;
 +      unsigned int i;
        Elf_Shdr *sechdrs = elf->sechdrs;
  
        /* Walk through all sections */
-@@ -1819,7 +1834,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf,
+@@ -1790,7 +1805,7 @@ void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf,
        va_end(ap);
  }
  
@@ -104785,7 +106861,7 @@ index 0663556..d9494f0 100644
  {
        if (buf->size - buf->pos < len) {
                buf->size += len + SZ;
-@@ -2038,7 +2053,7 @@ static void write_if_changed(struct buffer *b, const char *fname)
+@@ -2009,7 +2024,7 @@ static void write_if_changed(struct buffer *b, const char *fname)
        if (fstat(fileno(file), &st) < 0)
                goto close_write;
  
@@ -104818,7 +106894,7 @@ index 168b43d..77914bf 100644
  struct module {
        struct module *next;
 diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c
-index deb2994..af4f63e 100644
+index 944418d..15291e4 100644
 --- a/scripts/mod/sumversion.c
 +++ b/scripts/mod/sumversion.c
 @@ -470,7 +470,7 @@ static void write_version(const char *filename, const char *sum,
@@ -104845,20 +106921,100 @@ index 0865b3e..7235dd4 100644
        __ksymtab               : { *(SORT(___ksymtab+*)) }
        __ksymtab_gpl           : { *(SORT(___ksymtab_gpl+*)) }
        __ksymtab_unused        : { *(SORT(___ksymtab_unused+*)) }
+diff --git a/scripts/package/Makefile b/scripts/package/Makefile
+index 99ca6e7..3a1a1a1 100644
+--- a/scripts/package/Makefile
++++ b/scripts/package/Makefile
+@@ -46,7 +46,7 @@ rpm-pkg rpm: FORCE
+       ln -sf $(srctree) $(KERNELPATH)
+       $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
+       $(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --save-scmversion
+-      tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
++      tar --owner=root --group=root -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(TAR_CONTENT)
+       rm $(KERNELPATH)
+       rm -f $(objtree)/.scmversion
+       $(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
 diff --git a/scripts/package/builddeb b/scripts/package/builddeb
-index 152d4d2..791684c 100644
+index 5972624..4028795 100755
 --- a/scripts/package/builddeb
 +++ b/scripts/package/builddeb
-@@ -291,6 +291,7 @@ fi
- (cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles")
- (cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles")
- (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles")
+@@ -293,6 +293,7 @@ fi
+ (cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
+ (cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
+ (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
 +(cd $objtree; find tools/gcc -name \*.so >> "$objtree/debian/hdrobjfiles")
  destdir=$kernel_headers_dir/usr/src/linux-headers-$version
  mkdir -p "$destdir"
- (cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -)
+ (cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
+diff --git a/scripts/package/mkspec b/scripts/package/mkspec
+index 1395760..bca2734 100755
+--- a/scripts/package/mkspec
++++ b/scripts/package/mkspec
+@@ -121,29 +121,40 @@ echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/{build,source}"
+ echo "mkdir -p "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE"
+ echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\""
+ echo "tar "'$EXCLUDES'" -cf- . | (cd "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE;tar xvf -)"
+-echo 'cd $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE"
+-echo "ln -sf /usr/src/kernels/$KERNELRELEASE build"
+-echo "ln -sf /usr/src/kernels/$KERNELRELEASE source"
+ echo ""
+ echo "%clean"
+ echo 'rm -rf $RPM_BUILD_ROOT'
+ echo ""
++echo "%pre"
++echo 'chmod -f 0500 /boot'
++echo 'if [ -d /lib/modules ]; then'
++echo 'chmod -f 0500 /lib/modules'
++echo 'fi'
++echo 'if [ -d /lib32/modules ]; then'
++echo 'chmod -f 0500 /lib32/modules'
++echo 'fi'
++echo 'if [ -d /lib64/modules ]; then'
++echo 'chmod -f 0500 /lib64/modules'
++echo 'fi'
++echo ""
++echo "%post devel"
++echo "ln -sf /usr/src/kernels/$KERNELRELEASE /lib/modules/$KERNELRELEASE/build"
++echo "ln -sf /usr/src/kernels/$KERNELRELEASE /lib/modules/$KERNELRELEASE/source"
++echo ""
+ echo "%post"
+-echo "if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then"
+-echo "cp /boot/vmlinuz-$KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm"
+-echo "cp /boot/System.map-$KERNELRELEASE /boot/System.map-$KERNELRELEASE-rpm"
+-echo "rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE"
+-echo "/sbin/installkernel $KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm"
+-echo "rm -f /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm"
++echo "if [ -x /sbin/dracut ]; then"
++echo '/sbin/new-kernel-pkg --dracut --mkinitrd --depmod --install --make-default '"$KERNELRELEASE"' || exit $?'
++echo "else"
++echo '/sbin/new-kernel-pkg --mkinitrd --depmod --install --make-default '"$KERNELRELEASE"' || exit $?'
+ echo "fi"
+ echo ""
+ echo "%files"
+-echo '%defattr (-, root, root)'
++echo '%defattr (400, root, root, 500)'
+ echo "%dir /lib/modules"
+-echo "/lib/modules/$KERNELRELEASE"
+ echo "%exclude /lib/modules/$KERNELRELEASE/build"
+ echo "%exclude /lib/modules/$KERNELRELEASE/source"
++echo "/lib/modules/$KERNELRELEASE"
+ echo "/lib/firmware/$KERNELRELEASE"
+ echo "/boot/*"
+ echo ""
+@@ -152,8 +163,7 @@ echo '%defattr (-, root, root)'
+ echo "/usr/include"
+ echo ""
+ echo "%files devel"
+-echo '%defattr (-, root, root)'
++echo '%defattr (400, root, root, 500)'
++echo "%dir /lib/modules/$KERNELRELEASE"
+ echo "/usr/src/kernels/$KERNELRELEASE"
+-echo "/lib/modules/$KERNELRELEASE/build"
+-echo "/lib/modules/$KERNELRELEASE/source"
+ echo ""
 diff --git a/scripts/pnmtologo.c b/scripts/pnmtologo.c
-index 68bb4ef..2f419e1 100644
+index 4718d78..9220d58 100644
 --- a/scripts/pnmtologo.c
 +++ b/scripts/pnmtologo.c
 @@ -244,14 +244,14 @@ static void write_header(void)
@@ -104888,7 +107044,7 @@ index 68bb4ef..2f419e1 100644
      write_hex_cnt = 0;
      for (i = 0; i < logo_clutsize; i++) {
 diff --git a/scripts/sortextable.h b/scripts/sortextable.h
-index 8fac3fd..32ff38d 100644
+index ba87004..3f4852c 100644
 --- a/scripts/sortextable.h
 +++ b/scripts/sortextable.h
 @@ -108,9 +108,9 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort)
@@ -104904,11 +107060,24 @@ index 8fac3fd..32ff38d 100644
        unsigned int num_sections;
        unsigned int secindex_strings;
  
+diff --git a/scripts/tags.sh b/scripts/tags.sh
+index cdb491d..8d32bfc 100755
+--- a/scripts/tags.sh
++++ b/scripts/tags.sh
+@@ -26,7 +26,7 @@ else
+ fi
+ # ignore userspace tools
+-ignore="$ignore ( -path ${tree}tools ) -prune -o"
++ignore="$ignore ( -path \"${tree}tools/[^g]*\" ) -prune -o"
+ # Find all available archs
+ find_all_archs()
 diff --git a/security/Kconfig b/security/Kconfig
-index beb86b5..40b1edb 100644
+index beb86b5..1a953b1 100644
 --- a/security/Kconfig
 +++ b/security/Kconfig
-@@ -4,6 +4,957 @@
+@@ -4,6 +4,974 @@
  
  menu "Security options"
  
@@ -105072,6 +107241,11 @@ index beb86b5..40b1edb 100644
 +      help
 +        Choose this option if this kernel is running as a VirtualBox guest or host.
 +
++config GRKERNSEC_CONFIG_VIRT_HYPERV
++      bool "Hyper-V"
++      help
++        Choose this option if this kernel is running as a Hyper-V guest.
++
 +endchoice
 +
 +choice
@@ -105497,6 +107671,14 @@ index beb86b5..40b1edb 100644
 +        that is, enabling this option will make it harder to inject
 +        and execute 'foreign' code in kernel memory itself.
 +
++        Note that on amd64, CONFIG_EFI enabled with "efi=old_map" on
++        the kernel command-line will result in an RWX physical map.
++
++        Likewise, the EFI runtime services are necessarily mapped as
++        RWX.  If CONFIG_EFI is enabled on an EFI-capable system, it
++        is recommended that you boot with "noefi" on the kernel
++        command-line if possible to eliminate the mapping.
++
 +choice
 +      prompt "Return Address Instrumentation Method"
 +      default PAX_KERNEXEC_PLUGIN_METHOD_BTS
@@ -105531,7 +107713,7 @@ index beb86b5..40b1edb 100644
 +
 +config PAX_KERNEXEC_MODULE_TEXT
 +      int "Minimum amount of memory reserved for module code"
-+      default "4" if (!GRKERNSEC_CONFIG_AUTO || GRKERNSEC_CONFIG_SERVER)
++      default "8" if (!GRKERNSEC_CONFIG_AUTO || GRKERNSEC_CONFIG_SERVER)
 +      default "12" if (GRKERNSEC_CONFIG_AUTO && GRKERNSEC_CONFIG_DESKTOP)
 +      depends on PAX_KERNEXEC && X86_32
 +      help
@@ -105663,10 +107845,14 @@ index beb86b5..40b1edb 100644
 +        and you are advised to test this feature on your expected workload
 +        before deploying it.
 +
++        The slab sanitization feature excludes a few slab caches per default
++        for performance reasons.  To extend the feature to cover those as
++        well, pass "pax_sanitize_slab=full" as kernel command line parameter.
++
 +        To reduce the performance penalty by sanitizing pages only, albeit
 +        limiting the effectiveness of this feature at the same time, slab
-+        sanitization can be disabled with the kernel commandline parameter
-+        "pax_sanitize_slab=0".
++        sanitization can be disabled with the kernel command line parameter
++        "pax_sanitize_slab=off".
 +
 +        Note that this feature does not protect data stored in live pages,
 +        e.g., process memory swapped to disk may stay there for a long time.
@@ -105742,7 +107928,7 @@ index beb86b5..40b1edb 100644
 +config PAX_REFCOUNT
 +      bool "Prevent various kernel object reference counter overflows"
 +      default y if GRKERNSEC_CONFIG_AUTO
-+      depends on GRKERNSEC && ((ARM && (CPU_V6 || CPU_V6K || CPU_V7)) || MIPS || SPARC64 || X86)
++      depends on GRKERNSEC && ((ARM && (CPU_V6 || CPU_V6K || CPU_V7)) || MIPS || PPC || SPARC64 || X86)
 +      help
 +        By saying Y here the kernel will detect and prevent overflowing
 +        various (but not all) kinds of object reference counters.  Such
@@ -105866,7 +108052,7 @@ index beb86b5..40b1edb 100644
  source security/keys/Kconfig
  
  config SECURITY_DMESG_RESTRICT
-@@ -103,7 +1054,7 @@ config INTEL_TXT
+@@ -103,7 +1071,7 @@ config INTEL_TXT
  config LSM_MMAP_MIN_ADDR
        int "Low address space for LSM to protect from user allocation"
        depends on SECURITY && SECURITY_SELINUX
@@ -105891,7 +108077,7 @@ index fdaa50c..2761dcb 100644
                old_dentry->d_inode->i_uid,
                old_dentry->d_inode->i_mode
 diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
-index 9981000..eb21356 100644
+index 65ca451..ad6f22d 100644
 --- a/security/apparmor/lsm.c
 +++ b/security/apparmor/lsm.c
 @@ -186,7 +186,7 @@ static int common_perm_dir_dentry(int op, struct path *dir,
@@ -105933,10 +108119,10 @@ index 9981000..eb21356 100644
  
        .ptrace_access_check =          apparmor_ptrace_access_check,
 diff --git a/security/commoncap.c b/security/commoncap.c
-index b9d613e..f68305c 100644
+index bab0611..f9a0ff5 100644
 --- a/security/commoncap.c
 +++ b/security/commoncap.c
-@@ -424,6 +424,32 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data
+@@ -427,6 +427,32 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data
        return 0;
  }
  
@@ -105969,7 +108155,7 @@ index b9d613e..f68305c 100644
  /*
   * Attempt to get the on-exec apply capability sets for an executable file from
   * its xattrs and, if present, apply them to the proposed credentials being
-@@ -592,6 +618,9 @@ int cap_bprm_secureexec(struct linux_binprm *bprm)
+@@ -595,6 +621,9 @@ int cap_bprm_secureexec(struct linux_binprm *bprm)
        const struct cred *cred = current_cred();
        kuid_t root_uid = make_kuid(cred->user_ns, 0);
  
@@ -105980,10 +108166,10 @@ index b9d613e..f68305c 100644
                if (bprm->cap_effective)
                        return 1;
 diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
-index f79fa8b..6161868 100644
+index 8ee997d..24c174b 100644
 --- a/security/integrity/ima/ima.h
 +++ b/security/integrity/ima/ima.h
-@@ -118,8 +118,8 @@ int ima_init_template(void);
+@@ -116,8 +116,8 @@ int ima_init_template(void);
  extern spinlock_t ima_queue_lock;
  
  struct ima_h_table {
@@ -105995,7 +108181,7 @@ index f79fa8b..6161868 100644
  };
  extern struct ima_h_table ima_htable;
 diff --git a/security/integrity/ima/ima_api.c b/security/integrity/ima/ima_api.c
-index d9cd5ce..c5c29ac 100644
+index 8688597..9fa80d2 100644
 --- a/security/integrity/ima/ima_api.c
 +++ b/security/integrity/ima/ima_api.c
 @@ -137,7 +137,7 @@ void ima_add_violation(struct file *file, const unsigned char *filename,
@@ -106053,10 +108239,10 @@ index 3478965..ec7bb9e 100644
        if (iov != iovstack)
                kfree(iov);
 diff --git a/security/keys/internal.h b/security/keys/internal.h
-index 80b2aac..bb7ee65 100644
+index 200e378..cdc74b5 100644
 --- a/security/keys/internal.h
 +++ b/security/keys/internal.h
-@@ -253,7 +253,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t,
+@@ -244,7 +244,7 @@ extern long keyctl_instantiate_key_iov(key_serial_t,
  extern long keyctl_invalidate_key(key_serial_t);
  
  extern long keyctl_instantiate_key_common(key_serial_t,
@@ -106066,7 +108252,7 @@ index 80b2aac..bb7ee65 100644
  #ifdef CONFIG_PERSISTENT_KEYRINGS
  extern long keyctl_get_persistent(uid_t, key_serial_t);
 diff --git a/security/keys/key.c b/security/keys/key.c
-index 6e21c11..9ed67ca 100644
+index e17ba6a..2cc04a6 100644
 --- a/security/keys/key.c
 +++ b/security/keys/key.c
 @@ -285,7 +285,7 @@ struct key *key_alloc(struct key_type *type, const char *desc,
@@ -106078,7 +108264,7 @@ index 6e21c11..9ed67ca 100644
        key->index_key.type = type;
        key->user = user;
        key->quotalen = quotalen;
-@@ -1036,7 +1036,9 @@ int register_key_type(struct key_type *ktype)
+@@ -1075,7 +1075,9 @@ int register_key_type(struct key_type *ktype)
        struct key_type *p;
        int ret;
  
@@ -106089,7 +108275,7 @@ index 6e21c11..9ed67ca 100644
  
        ret = -EEXIST;
        down_write(&key_types_sem);
-@@ -1048,7 +1050,7 @@ int register_key_type(struct key_type *ktype)
+@@ -1087,7 +1089,7 @@ int register_key_type(struct key_type *ktype)
        }
  
        /* store the type */
@@ -106098,7 +108284,7 @@ index 6e21c11..9ed67ca 100644
  
        pr_notice("Key type %s registered\n", ktype->name);
        ret = 0;
-@@ -1070,7 +1072,7 @@ EXPORT_SYMBOL(register_key_type);
+@@ -1109,7 +1111,7 @@ EXPORT_SYMBOL(register_key_type);
  void unregister_key_type(struct key_type *ktype)
  {
        down_write(&key_types_sem);
@@ -106107,7 +108293,7 @@ index 6e21c11..9ed67ca 100644
        downgrade_write(&key_types_sem);
        key_gc_keytype(ktype);
        pr_notice("Key type %s unregistered\n", ktype->name);
-@@ -1088,10 +1090,10 @@ void __init key_init(void)
+@@ -1127,10 +1129,10 @@ void __init key_init(void)
                        0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL);
  
        /* add the special key types */
@@ -106123,10 +108309,10 @@ index 6e21c11..9ed67ca 100644
        /* record the root user tracking */
        rb_link_node(&root_key_user.node,
 diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
-index cee72ce..e46074a 100644
+index 4743d71..170a185 100644
 --- a/security/keys/keyctl.c
 +++ b/security/keys/keyctl.c
-@@ -987,7 +987,7 @@ static int keyctl_change_reqkey_auth(struct key *key)
+@@ -1000,7 +1000,7 @@ static int keyctl_change_reqkey_auth(struct key *key)
  /*
   * Copy the iovec data from userspace
   */
@@ -106135,7 +108321,7 @@ index cee72ce..e46074a 100644
                                 unsigned ioc)
  {
        for (; ioc > 0; ioc--) {
-@@ -1009,7 +1009,7 @@ static long copy_from_user_iovec(void *buffer, const struct iovec *iov,
+@@ -1022,7 +1022,7 @@ static long copy_from_user_iovec(void *buffer, const struct iovec *iov,
   * If successful, 0 will be returned.
   */
  long keyctl_instantiate_key_common(key_serial_t id,
@@ -106144,7 +108330,7 @@ index cee72ce..e46074a 100644
                                   unsigned ioc,
                                   size_t plen,
                                   key_serial_t ringid)
-@@ -1104,7 +1104,7 @@ long keyctl_instantiate_key(key_serial_t id,
+@@ -1117,7 +1117,7 @@ long keyctl_instantiate_key(key_serial_t id,
                        [0].iov_len  = plen
                };
  
@@ -106153,7 +108339,7 @@ index cee72ce..e46074a 100644
        }
  
        return keyctl_instantiate_key_common(id, NULL, 0, 0, ringid);
-@@ -1137,7 +1137,7 @@ long keyctl_instantiate_key_iov(key_serial_t id,
+@@ -1150,7 +1150,7 @@ long keyctl_instantiate_key_iov(key_serial_t id,
        if (ret == 0)
                goto no_payload_free;
  
@@ -106183,7 +108369,7 @@ index f728728..6457a0c 100644
  
  /*
 diff --git a/security/security.c b/security/security.c
-index 8b774f3..a396233 100644
+index 18b35c6..c9fbc92 100644
 --- a/security/security.c
 +++ b/security/security.c
 @@ -33,8 +33,8 @@
@@ -106210,7 +108396,7 @@ index 8b774f3..a396233 100644
  static int __init choose_lsm(char *str)
  {
 diff --git a/security/selinux/avc.c b/security/selinux/avc.c
-index fc3e662..7844c60 100644
+index a18f1fa..c9b9fc4 100644
 --- a/security/selinux/avc.c
 +++ b/security/selinux/avc.c
 @@ -59,7 +59,7 @@ struct avc_node {
@@ -106241,7 +108427,7 @@ index fc3e662..7844c60 100644
                lock = &avc_cache.slots_lock[hvalue];
  
 diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
-index 2c7341d..1da068e 100644
+index c603b20..8716ec9 100644
 --- a/security/selinux/hooks.c
 +++ b/security/selinux/hooks.c
 @@ -95,8 +95,6 @@
@@ -106253,7 +108439,7 @@ index 2c7341d..1da068e 100644
  /* SECMARK reference count */
  static atomic_t selinux_secmark_refcount = ATOMIC_INIT(0);
  
-@@ -5758,7 +5756,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer)
+@@ -5809,7 +5807,7 @@ static int selinux_key_getsecurity(struct key *key, char **_buffer)
  
  #endif
  
@@ -106262,7 +108448,7 @@ index 2c7341d..1da068e 100644
        .name =                         "selinux",
  
        .ptrace_access_check =          selinux_ptrace_access_check,
-@@ -6111,6 +6109,9 @@ static void selinux_nf_ip_exit(void)
+@@ -6150,6 +6148,9 @@ static void selinux_nf_ip_exit(void)
  #ifdef CONFIG_SECURITY_SELINUX_DISABLE
  static int selinux_disabled;
  
@@ -106272,7 +108458,7 @@ index 2c7341d..1da068e 100644
  int selinux_disable(void)
  {
        if (ss_initialized) {
-@@ -6128,7 +6129,9 @@ int selinux_disable(void)
+@@ -6167,7 +6168,9 @@ int selinux_disable(void)
        selinux_disabled = 1;
        selinux_enabled = 0;
  
@@ -106297,10 +108483,10 @@ index 1450f85..a91e0bc 100644
        }
        rtnl_unlock();
 diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
-index 14f52be..7352368 100644
+index d515ec2..8a4ca71 100644
 --- a/security/smack/smack_lsm.c
 +++ b/security/smack/smack_lsm.c
-@@ -3726,7 +3726,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
+@@ -4079,7 +4079,7 @@ static int smack_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
        return 0;
  }
  
@@ -106536,7 +108722,7 @@ index 13c88fbc..f8c115e 100644
        { .procname = "kernel", },
        { .procname = "yama", },
 diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c
-index f01bffb..bdda392 100644
+index 401107b..b9c47c6 100644
 --- a/sound/aoa/codecs/onyx.c
 +++ b/sound/aoa/codecs/onyx.c
 @@ -54,7 +54,7 @@ struct onyx {
@@ -106655,7 +108841,7 @@ index ada69d7..5f65386 100644
                                }
                        } else if (runtime->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) {
 diff --git a/sound/core/pcm_compat.c b/sound/core/pcm_compat.c
-index af49721..e85058e 100644
+index 2d957ba..fda022c 100644
 --- a/sound/core/pcm_compat.c
 +++ b/sound/core/pcm_compat.c
 @@ -31,7 +31,7 @@ static int snd_pcm_ioctl_delay_compat(struct snd_pcm_substream *substream,
@@ -106668,10 +108854,10 @@ index af49721..e85058e 100644
        if (err < 0)
                return err;
 diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
-index b653ab0..a4738e3 100644
+index 166d59c..89e3889 100644
 --- a/sound/core/pcm_native.c
 +++ b/sound/core/pcm_native.c
-@@ -2812,11 +2812,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
+@@ -2931,11 +2931,11 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
        switch (substream->stream) {
        case SNDRV_PCM_STREAM_PLAYBACK:
                result = snd_pcm_playback_ioctl1(NULL, substream, cmd,
@@ -106741,7 +108927,7 @@ index 91a786a..4c07ed4 100644
                dev->driver_data = NULL;
                ops->num_init_devices--;
 diff --git a/sound/core/seq/seq_midi.c b/sound/core/seq/seq_midi.c
-index 3e05c55..0f02efc 100644
+index a1fd77a..69cd659 100644
 --- a/sound/core/seq/seq_midi.c
 +++ b/sound/core/seq/seq_midi.c
 @@ -462,8 +462,8 @@ snd_seq_midisynth_unregister_port(struct snd_seq_device *dev)
@@ -106893,39 +109079,48 @@ index 78ccfa4..7a0857b 100644
        struct snd_rawmidi_substream *midi_input[PORTMAN_NUM_INPUT_PORTS];
  };
 diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c
-index 9048777..2d8b1fc 100644
+index 95fc2eaf..ea5d6a7 100644
 --- a/sound/firewire/amdtp.c
 +++ b/sound/firewire/amdtp.c
-@@ -488,7 +488,7 @@ static void queue_out_packet(struct amdtp_out_stream *s, unsigned int cycle)
-               ptr = s->pcm_buffer_pointer + data_blocks;
-               if (ptr >= pcm->runtime->buffer_size)
-                       ptr -= pcm->runtime->buffer_size;
--              ACCESS_ONCE(s->pcm_buffer_pointer) = ptr;
-+              ACCESS_ONCE_RW(s->pcm_buffer_pointer) = ptr;
-               s->pcm_period_pointer += data_blocks;
-               if (s->pcm_period_pointer >= pcm->runtime->period_size) {
-@@ -655,7 +655,7 @@ EXPORT_SYMBOL(amdtp_out_stream_pcm_pointer);
+@@ -521,7 +521,7 @@ static void update_pcm_pointers(struct amdtp_stream *s,
+       ptr = s->pcm_buffer_pointer + frames;
+       if (ptr >= pcm->runtime->buffer_size)
+               ptr -= pcm->runtime->buffer_size;
+-      ACCESS_ONCE(s->pcm_buffer_pointer) = ptr;
++      ACCESS_ONCE_RW(s->pcm_buffer_pointer) = ptr;
+       s->pcm_period_pointer += frames;
+       if (s->pcm_period_pointer >= pcm->runtime->period_size) {
+@@ -961,7 +961,7 @@ EXPORT_SYMBOL(amdtp_stream_pcm_pointer);
   */
- void amdtp_out_stream_update(struct amdtp_out_stream *s)
+ void amdtp_stream_update(struct amdtp_stream *s)
  {
 -      ACCESS_ONCE(s->source_node_id_field) =
 +      ACCESS_ONCE_RW(s->source_node_id_field) =
                (fw_parent_device(s->unit)->card->node_id & 0x3f) << 24;
  }
- EXPORT_SYMBOL(amdtp_out_stream_update);
+ EXPORT_SYMBOL(amdtp_stream_update);
 diff --git a/sound/firewire/amdtp.h b/sound/firewire/amdtp.h
-index 2746ecd..c35dedd 100644
+index 4823c08..47a5f7c 100644
 --- a/sound/firewire/amdtp.h
 +++ b/sound/firewire/amdtp.h
-@@ -135,7 +135,7 @@ static inline bool amdtp_out_streaming_error(struct amdtp_out_stream *s)
- static inline void amdtp_out_stream_pcm_trigger(struct amdtp_out_stream *s,
-                                               struct snd_pcm_substream *pcm)
+@@ -212,7 +212,7 @@ static inline bool amdtp_stream_pcm_running(struct amdtp_stream *s)
+ static inline void amdtp_stream_pcm_trigger(struct amdtp_stream *s,
+                                           struct snd_pcm_substream *pcm)
  {
 -      ACCESS_ONCE(s->pcm) = pcm;
 +      ACCESS_ONCE_RW(s->pcm) = pcm;
  }
  
+ /**
+@@ -230,7 +230,7 @@ static inline void amdtp_stream_midi_trigger(struct amdtp_stream *s,
+                                            struct snd_rawmidi_substream *midi)
+ {
+       if (port < s->midi_ports)
+-              ACCESS_ONCE(s->midi[port]) = midi;
++              ACCESS_ONCE_RW(s->midi[port]) = midi;
+ }
  static inline bool cip_sfc_is_base_44100(enum cip_sfc sfc)
 diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c
 index 7ac9443..0ec6274 100644
@@ -107033,7 +109228,7 @@ index 048439a..3be9f6f 100644
                                           userbuf+useroffs + p,
                                           locallen))
 diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c
-index f851fd0..92576fb 100644
+index a33e8ce..2262303 100644
 --- a/sound/oss/swarm_cs4297a.c
 +++ b/sound/oss/swarm_cs4297a.c
 @@ -2623,7 +2623,6 @@ static int __init cs4297a_init(void)
@@ -107042,9 +109237,9 @@ index f851fd0..92576fb 100644
        u32 pwr, id;
 -      mm_segment_t fs;
        int rval;
- #ifndef CONFIG_BCM_CS4297A_CSWARM
        u64 cfg;
-@@ -2713,22 +2712,23 @@ static int __init cs4297a_init(void)
+       int mdio_val;
+@@ -2709,22 +2708,23 @@ static int __init cs4297a_init(void)
          if (!rval) {
                char *sb1250_duart_present;
  
@@ -107086,7 +109281,7 @@ index 4c41c90..37f3631 100644
        return snd_seq_device_register_driver(SNDRV_SEQ_DEV_ID_EMU10K1_SYNTH, &ops,
                                              sizeof(struct snd_emu10k1_synth_arg));
 diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
-index 4c20277..91abdce 100644
+index 15e0089..ad6bc9b 100644
 --- a/sound/pci/hda/hda_codec.c
 +++ b/sound/pci/hda/hda_codec.c
 @@ -966,14 +966,10 @@ find_codec_preset(struct hda_codec *codec)
@@ -107106,7 +109301,7 @@ index 4c20277..91abdce 100644
                mod_requested++;
                goto again;
        }
-@@ -2777,7 +2773,7 @@ static int get_kctl_0dB_offset(struct snd_kcontrol *kctl, int *step_to_check)
+@@ -2800,7 +2796,7 @@ static int get_kctl_0dB_offset(struct hda_codec *codec,
                /* FIXME: set_fs() hack for obtaining user-space TLV data */
                mm_segment_t fs = get_fs();
                set_fs(get_ds());
@@ -107172,42 +109367,11 @@ index 81c916a..516f0bf 100644
        chip->card = card;
        chip->pci = pci;
        chip->irq = -1;
-diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
-index 5428a1f..474f651 100644
---- a/sound/soc/fsl/fsl_ssi.c
-+++ b/sound/soc/fsl/fsl_ssi.c
-@@ -1255,7 +1255,6 @@ static int fsl_ssi_probe(struct platform_device *pdev)
- {
-       struct fsl_ssi_private *ssi_private;
-       int ret = 0;
--      struct device_attribute *dev_attr = NULL;
-       struct device_node *np = pdev->dev.of_node;
-       const struct of_device_id *of_id;
-       enum fsl_ssi_type hw_type;
-@@ -1481,7 +1480,7 @@ static int fsl_ssi_probe(struct platform_device *pdev)
-                                        &ssi_private->cpu_dai_drv, 1);
-       if (ret) {
-               dev_err(&pdev->dev, "failed to register DAI: %d\n", ret);
--              goto error_dev;
-+              goto error_clk;
-       }
-       ret = fsl_ssi_debugfs_create(ssi_private, &pdev->dev);
-@@ -1562,9 +1561,6 @@ error_pcm:
- error_dbgfs:
-       snd_soc_unregister_component(&pdev->dev);
--error_dev:
--      device_remove_file(&pdev->dev, dev_attr);
--
- error_clk:
-       if (ssi_private->ssi_on_imx) {
-               if (!IS_ERR(ssi_private->baudclk))
 diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
-index 051c006..70598e8 100644
+index b60ff56..7307f0f 100644
 --- a/sound/soc/soc-core.c
 +++ b/sound/soc/soc-core.c
-@@ -2255,8 +2255,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops,
+@@ -2132,8 +2132,10 @@ int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops,
        if (ret)
                return ret;
  
@@ -109279,10 +111443,10 @@ index 0000000..89f256d
 +}
 diff --git a/tools/gcc/latent_entropy_plugin.c b/tools/gcc/latent_entropy_plugin.c
 new file mode 100644
-index 0000000..39d7cc7
+index 0000000..e48b323
 --- /dev/null
 +++ b/tools/gcc/latent_entropy_plugin.c
-@@ -0,0 +1,462 @@
+@@ -0,0 +1,466 @@
 +/*
 + * Copyright 2012-2014 by the PaX Team <pageexec@freemail.hu>
 + * Licensed under the GPL v2
@@ -109311,7 +111475,7 @@ index 0000000..39d7cc7
 +static tree latent_entropy_decl;
 +
 +static struct plugin_info latent_entropy_plugin_info = {
-+      .version        = "201403280150",
++      .version        = "201409101820",
 +      .help           = NULL
 +};
 +
@@ -109487,6 +111651,10 @@ index 0000000..39d7cc7
 +      if (TREE_THIS_VOLATILE(current_function_decl))
 +              return false;
 +
++      // gcc-4.5 doesn't discover some trivial noreturn functions
++      if (EDGE_COUNT(EXIT_BLOCK_PTR_FOR_FN(cfun)->preds) == 0)
++              return false;
++
 +      return lookup_attribute("latent_entropy", DECL_ATTRIBUTES(current_function_decl)) != NULL_TREE;
 +}
 +
@@ -109747,10 +111915,10 @@ index 0000000..39d7cc7
 +}
 diff --git a/tools/gcc/randomize_layout_plugin.c b/tools/gcc/randomize_layout_plugin.c
 new file mode 100644
-index 0000000..8dafb22
+index 0000000..a5cb46b
 --- /dev/null
 +++ b/tools/gcc/randomize_layout_plugin.c
-@@ -0,0 +1,910 @@
+@@ -0,0 +1,915 @@
 +/*
 + * Copyright 2014 by Open Source Security, Inc., Brad Spengler <spender@grsecurity.net>
 + *                   and PaX Team <pageexec@freemail.hu>
@@ -110069,6 +112237,11 @@ index 0000000..8dafb22
 +          lookup_attribute("no_randomize_layout", TYPE_ATTRIBUTES(TYPE_MAIN_VARIANT(type))))
 +              return 0;
 +
++      /* Workaround for 3rd-party VirtualBox source that we can't modify ourselves */
++      if (!strcmp((const char *)ORIG_TYPE_NAME(type), "INTNETTRUNKFACTORY") ||
++          !strcmp((const char *)ORIG_TYPE_NAME(type), "RAWPCIFACTORY"))
++              return 0;
++
 +      /* throw out any structs in uapi */
 +      xloc = expand_location(DECL_SOURCE_LOCATION(TYPE_FIELDS(type)));
 +
@@ -110806,10 +112979,10 @@ index 0000000..12b1e3b
 +exit 0
 diff --git a/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c b/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c
 new file mode 100644
-index 0000000..3e8148c
+index 0000000..c43901f
 --- /dev/null
 +++ b/tools/gcc/size_overflow_plugin/insert_size_overflow_asm.c
-@@ -0,0 +1,790 @@
+@@ -0,0 +1,748 @@
 +/*
 + * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
 + * Licensed under the GPL v2, or (at your option) v3
@@ -111289,45 +113462,6 @@ index 0000000..3e8148c
 +      return true;
 +}
 +
-+static bool is_from_cast(const_tree node)
-+{
-+      gimple def_stmt = get_def_stmt(node);
-+
-+      if (!def_stmt)
-+              return false;
-+
-+      if (gimple_assign_cast_p(def_stmt))
-+              return true;
-+
-+      return false;
-+}
-+
-+// Skip duplication when there is a minus expr and the type of rhs1 or rhs2 is a pointer_type.
-+static bool skip_ptr_minus(gimple stmt)
-+{
-+      const_tree rhs1, rhs2, ptr1_rhs, ptr2_rhs;
-+
-+      if (gimple_assign_rhs_code(stmt) != MINUS_EXPR)
-+              return false;
-+
-+      rhs1 = gimple_assign_rhs1(stmt);
-+      if (!is_from_cast(rhs1))
-+              return false;
-+
-+      rhs2 = gimple_assign_rhs2(stmt);
-+      if (!is_from_cast(rhs2))
-+              return false;
-+
-+      ptr1_rhs = gimple_assign_rhs1(get_def_stmt(rhs1));
-+      ptr2_rhs = gimple_assign_rhs1(get_def_stmt(rhs2));
-+
-+      if (TREE_CODE(TREE_TYPE(ptr1_rhs)) != POINTER_TYPE && TREE_CODE(TREE_TYPE(ptr2_rhs)) != POINTER_TYPE)
-+              return false;
-+
-+      create_mark_asm(stmt, MARK_YES);
-+      return true;
-+}
-+
 +static void walk_use_def_ptr(struct pointer_set_t *visited, const_tree lhs)
 +{
 +      gimple def_stmt;
@@ -111361,9 +113495,6 @@ index 0000000..3e8148c
 +                      walk_use_def_ptr(visited, gimple_assign_rhs1(def_stmt));
 +                      return;
 +              case 3:
-+                      if (skip_ptr_minus(def_stmt))
-+                              return;
-+
 +                      walk_use_def_ptr(visited, gimple_assign_rhs1(def_stmt));
 +                      walk_use_def_ptr(visited, gimple_assign_rhs2(def_stmt));
 +                      return;
@@ -111602,10 +113733,10 @@ index 0000000..3e8148c
 +}
 diff --git a/tools/gcc/size_overflow_plugin/insert_size_overflow_check_core.c b/tools/gcc/size_overflow_plugin/insert_size_overflow_check_core.c
 new file mode 100644
-index 0000000..88469e9
+index 0000000..73f0a12
 --- /dev/null
 +++ b/tools/gcc/size_overflow_plugin/insert_size_overflow_check_core.c
-@@ -0,0 +1,902 @@
+@@ -0,0 +1,943 @@
 +/*
 + * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
 + * Licensed under the GPL v2, or (at your option) v3
@@ -112329,6 +114460,44 @@ index 0000000..88469e9
 +      inform(loc, "Integer size_overflow check applied here.");
 +}
 +
++static bool is_from_cast(const_tree node)
++{
++      gimple def_stmt = get_def_stmt(node);
++
++      if (!def_stmt)
++              return false;
++
++      if (gimple_assign_cast_p(def_stmt))
++              return true;
++
++      return false;
++}
++
++// Skip duplication when there is a minus expr and the type of rhs1 or rhs2 is a pointer_type.
++static bool is_a_ptr_minus(gimple stmt)
++{
++      const_tree rhs1, rhs2, ptr1_rhs, ptr2_rhs;
++
++      if (gimple_assign_rhs_code(stmt) != MINUS_EXPR)
++              return false;
++
++      rhs1 = gimple_assign_rhs1(stmt);
++      if (!is_from_cast(rhs1))
++              return false;
++
++      rhs2 = gimple_assign_rhs2(stmt);
++      if (!is_from_cast(rhs2))
++              return false;
++
++      ptr1_rhs = gimple_assign_rhs1(get_def_stmt(rhs1));
++      ptr2_rhs = gimple_assign_rhs1(get_def_stmt(rhs2));
++
++      if (TREE_CODE(TREE_TYPE(ptr1_rhs)) != POINTER_TYPE && TREE_CODE(TREE_TYPE(ptr2_rhs)) != POINTER_TYPE)
++              return false;
++
++      return true;
++}
++
 +static tree handle_binary_ops(struct visited *visited, struct cgraph_node *caller_node, tree lhs)
 +{
 +      enum intentional_overflow_type res;
@@ -112337,6 +114506,9 @@ index 0000000..88469e9
 +      tree new_rhs1 = NULL_TREE;
 +      tree new_rhs2 = NULL_TREE;
 +
++      if (is_a_ptr_minus(def_stmt))
++              return create_assign(visited, def_stmt, lhs, AFTER_STMT);
++
 +      rhs1 = gimple_assign_rhs1(def_stmt);
 +      rhs2 = gimple_assign_rhs2(def_stmt);
 +
@@ -112510,7 +114682,7 @@ index 0000000..88469e9
 +
 diff --git a/tools/gcc/size_overflow_plugin/insert_size_overflow_check_ipa.c b/tools/gcc/size_overflow_plugin/insert_size_overflow_check_ipa.c
 new file mode 100644
-index 0000000..715a590
+index 0000000..df50164
 --- /dev/null
 +++ b/tools/gcc/size_overflow_plugin/insert_size_overflow_check_ipa.c
 @@ -0,0 +1,1141 @@
@@ -112749,7 +114921,7 @@ index 0000000..715a590
 +
 +      switch (gimple_code(def_stmt)) {
 +      case GIMPLE_CALL:
-+              if (lhs == gimple_return_retval(def_stmt))
++              if (lhs == gimple_call_lhs(def_stmt))
 +                      interesting_conditions[RET] = true;
 +              return;
 +      case GIMPLE_NOP:
@@ -113657,10 +115829,10 @@ index 0000000..715a590
 +
 diff --git a/tools/gcc/size_overflow_plugin/intentional_overflow.c b/tools/gcc/size_overflow_plugin/intentional_overflow.c
 new file mode 100644
-index 0000000..38904bc
+index 0000000..d71d72a
 --- /dev/null
 +++ b/tools/gcc/size_overflow_plugin/intentional_overflow.c
-@@ -0,0 +1,733 @@
+@@ -0,0 +1,736 @@
 +/*
 + * Copyright 2011-2014 by Emese Revfy <re.emese@gmail.com>
 + * Licensed under the GPL v2, or (at your option) v3
@@ -114265,6 +116437,9 @@ index 0000000..38904bc
 +      } else
 +              return false;
 +
++      if (!is_gimple_assign(def_stmt))
++              return false;
++
 +      if (gimple_assign_rhs_code(def_stmt) != PLUS_EXPR && gimple_assign_rhs_code(def_stmt) != MINUS_EXPR)
 +              return false;
 +
@@ -115004,10 +117179,10 @@ index 0000000..4378111
 +}
 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data
 new file mode 100644
-index 0000000..386792a
+index 0000000..f38f762
 --- /dev/null
 +++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data
-@@ -0,0 +1,5808 @@
+@@ -0,0 +1,6029 @@
 +intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL
 +storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL
 +compat_sock_setsockopt_23 compat_sock_setsockopt 5 23 NULL
@@ -115023,25 +117198,27 @@ index 0000000..386792a
 +memstick_alloc_host_142 memstick_alloc_host 1 142 NULL
 +hva_to_gfn_memslot_149 hva_to_gfn_memslot 0-1 149 NULL
 +ping_v6_sendmsg_152 ping_v6_sendmsg 4 152 NULL
-+tracing_trace_options_write_153 tracing_trace_options_write 3 153 NULL nohasharray
-+ext4_ext_get_actual_len_153 ext4_ext_get_actual_len 0 153 &tracing_trace_options_write_153
-+pci_request_selected_regions_169 pci_request_selected_regions 0 169 NULL
++ext4_ext_get_actual_len_153 ext4_ext_get_actual_len 0 153 NULL nohasharray
++tracing_trace_options_write_153 tracing_trace_options_write 3 153 &ext4_ext_get_actual_len_153
 +xfs_buf_item_get_format_189 xfs_buf_item_get_format 2 189 NULL
 +iscsi_session_setup_196 iscsi_session_setup 4-5 196 NULL
++obd_proc_jobid_var_seq_write_199 obd_proc_jobid_var_seq_write 3 199 NULL
 +ll_xattr_cache_seq_write_250 ll_xattr_cache_seq_write 3 250 NULL
++vpdma_create_desc_list_255 vpdma_create_desc_list 2 255 NULL
 +br_port_info_size_268 br_port_info_size 0 268 NULL
 +read_file_war_stats_292 read_file_war_stats 3 292 NULL
 +SYSC_connect_304 SYSC_connect 3 304 NULL
 +syslog_print_307 syslog_print 2 307 NULL
 +dn_setsockopt_314 dn_setsockopt 5 314 NULL
 +mlx5_core_access_reg_361 mlx5_core_access_reg 3-5 361 NULL
-+aio_read_events_ring_410 aio_read_events_ring 3 410 NULL
++aio_read_events_ring_410 aio_read_events_ring 3-0 410 NULL
 +lbs_rdmac_read_418 lbs_rdmac_read 3 418 NULL
 +snd_ca0106_ptr_read_467 snd_ca0106_ptr_read 0 467 NULL
 +cfs_trace_set_debug_mb_usrstr_486 cfs_trace_set_debug_mb_usrstr 2 486 NULL
 +nvme_trans_modesel_data_488 nvme_trans_modesel_data 4 488 NULL
 +iwl_dbgfs_protection_mode_write_502 iwl_dbgfs_protection_mode_write 3 502 NULL
 +rx_rx_defrag_end_read_505 rx_rx_defrag_end_read 3 505 NULL
++smp_send_cmd_512 smp_send_cmd 3 512 NULL
 +ocfs2_validate_meta_ecc_bhs_527 ocfs2_validate_meta_ecc_bhs 0 527 NULL
 +zlib_deflate_workspacesize_537 zlib_deflate_workspacesize 0-1-2 537 NULL
 +iwl_dbgfs_wowlan_sram_read_540 iwl_dbgfs_wowlan_sram_read 3 540 NULL
@@ -115060,25 +117237,25 @@ index 0000000..386792a
 +cfs_hash_bkt_size_643 cfs_hash_bkt_size 0 643 NULL
 +unlink_queued_645 unlink_queued 4 645 NULL
 +dtim_interval_read_654 dtim_interval_read 3 654 NULL
++nvif_notify_new_671 nvif_notify_new 6 671 NULL
 +mem_rx_free_mem_blks_read_675 mem_rx_free_mem_blks_read 3 675 NULL
 +persistent_ram_vmap_709 persistent_ram_vmap 2-1 709 NULL
 +sctp_setsockopt_peer_addr_params_734 sctp_setsockopt_peer_addr_params 3 734 NULL
 +dvb_video_write_754 dvb_video_write 3 754 NULL
 +cfs_trace_allocate_string_buffer_781 cfs_trace_allocate_string_buffer 2 781 NULL
 +ath6kl_disconnect_timeout_write_794 ath6kl_disconnect_timeout_write 3 794 NULL
-+snd_pcm_drain_811 snd_pcm_drain 0 811 NULL
 +if_writecmd_815 if_writecmd 2 815 NULL
 +aac_change_queue_depth_825 aac_change_queue_depth 2 825 NULL
 +error_state_read_859 error_state_read 6 859 NULL
++lustre_init_msg_v2_864 lustre_init_msg_v2 2 864 NULL
 +o2net_send_message_vec_879 o2net_send_message_vec 4 879 NULL nohasharray
 +iwl_dbgfs_fh_reg_read_879 iwl_dbgfs_fh_reg_read 3 879 &o2net_send_message_vec_879
 +snd_pcm_action_single_905 snd_pcm_action_single 0 905 NULL
 +carl9170_cmd_buf_950 carl9170_cmd_buf 3 950 NULL
-+__nodes_weight_956 __nodes_weight 0 956 NULL
++__nodes_weight_956 __nodes_weight 2-0 956 NULL
 +bnx2x_fill_fw_str_968 bnx2x_fill_fw_str 3 968 NULL
-+mnt_want_write_975 mnt_want_write 0 975 NULL
 +usnic_ib_qp_grp_dump_hdr_989 usnic_ib_qp_grp_dump_hdr 2 989 NULL
-+memcmp_990 memcmp 0 990 NULL
++readreg_1017 readreg 0-1 1017 NULL
 +smk_write_cipso2_1021 smk_write_cipso2 3 1021 NULL
 +gigaset_initdriver_1060 gigaset_initdriver 2 1060 NULL
 +mce_request_packet_1073 mce_request_packet 3 1073 NULL
@@ -115086,6 +117263,8 @@ index 0000000..386792a
 +_scsih_adjust_queue_depth_1083 _scsih_adjust_queue_depth 2 1083 NULL
 +llcp_sock_sendmsg_1092 llcp_sock_sendmsg 4 1092 NULL
 +nfs4_init_nonuniform_client_string_1097 nfs4_init_nonuniform_client_string 3 1097 NULL
++__arch_hweight8_1105 __arch_hweight8 0 1105 NULL
++utf8s_to_utf16s_1115 utf8s_to_utf16s 0 1115 NULL
 +cfg80211_report_obss_beacon_1133 cfg80211_report_obss_beacon 3 1133 NULL
 +i2400m_rx_ctl_1157 i2400m_rx_ctl 4 1157 NULL
 +ipc_alloc_1192 ipc_alloc 1 1192 NULL
@@ -115095,7 +117274,6 @@ index 0000000..386792a
 +dgrp_dpa_read_1204 dgrp_dpa_read 3 1204 NULL
 +i2cdev_read_1206 i2cdev_read 3 1206 NULL
 +lov_ost_pool_init_1215 lov_ost_pool_init 2 1215 NULL
-+fsync_buffers_list_1219 fsync_buffers_list 0 1219 NULL
 +kernfs_file_direct_read_1238 kernfs_file_direct_read 3 1238 NULL
 +acpi_battery_write_alarm_1240 acpi_battery_write_alarm 3 1240 NULL
 +drm_primary_helper_create_plane_1262 drm_primary_helper_create_plane 3 1262 NULL
@@ -115108,10 +117286,12 @@ index 0000000..386792a
 +ffs_1322 ffs 0 1322 NULL
 +qlcnic_pci_sriov_configure_1327 qlcnic_pci_sriov_configure 2 1327 NULL
 +btrfs_submit_compressed_write_1347 btrfs_submit_compressed_write 5 1347 NULL
++bond_verify_device_path_1352 bond_verify_device_path 3 1352 NULL
 +snd_pcm_lib_write1_1358 snd_pcm_lib_write1 0-3 1358 NULL
 +ipx_sendmsg_1362 ipx_sendmsg 4 1362 NULL
 +fw_stats_raw_read_1369 fw_stats_raw_read 3 1369 NULL
 +ocfs2_prepare_inode_for_write_1372 ocfs2_prepare_inode_for_write 3 1372 NULL
++xpcs_reg_addr_read_1381 xpcs_reg_addr_read 3 1381 NULL
 +sctp_setsockopt_initmsg_1383 sctp_setsockopt_initmsg 3 1383 NULL
 +do_msgsnd_1387 do_msgsnd 4 1387 NULL
 +SYSC_io_getevents_1392 SYSC_io_getevents 3 1392 NULL
@@ -115126,6 +117306,7 @@ index 0000000..386792a
 +tomoyo_round2_1518 tomoyo_round2 0 1518 NULL
 +alloc_perm_bits_1532 alloc_perm_bits 2 1532 NULL
 +ath6kl_init_get_fwcaps_1557 ath6kl_init_get_fwcaps 3 1557 NULL
++ffs_mutex_lock_1564 ffs_mutex_lock 0 1564 NULL
 +ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime_1589 ieee80211_if_read_dot11MeshHWMPnetDiameterTraversalTime 3 1589 NULL
 +ipath_ht_handle_hwerrors_1592 ipath_ht_handle_hwerrors 3 1592 NULL
 +packet_buffer_init_1607 packet_buffer_init 2 1607 NULL
@@ -115152,12 +117333,14 @@ index 0000000..386792a
 +SyS_add_key_1900 SyS_add_key 4 1900 NULL
 +uhid_char_read_1920 uhid_char_read 3 1920 NULL
 +tx_tx_retry_data_read_1926 tx_tx_retry_data_read 3 1926 NULL
++azx_get_position_1927 azx_get_position 0 1927 NULL
 +bdev_erase_1933 bdev_erase 3 1933 NULL
 +ext3_fiemap_1936 ext3_fiemap 4 1936 NULL
-+cyttsp_probe_1940 cyttsp_probe 4 1940 NULL
++cyttsp_probe_1940 cyttsp_probe 4 1940 NULL nohasharray
++nvif_object_sclass_1940 nvif_object_sclass 3 1940 &cyttsp_probe_1940
 +ieee80211_if_fmt_dot11MeshConfirmTimeout_1945 ieee80211_if_fmt_dot11MeshConfirmTimeout 3 1945 NULL
-+__assign_irq_vector_1961 __assign_irq_vector 0 1961 NULL
 +ivtv_v4l2_read_1964 ivtv_v4l2_read 3 1964 NULL
++qla2xxx_get_vpd_field_1965 qla2xxx_get_vpd_field 4 1965 NULL
 +sel_read_avc_hash_stats_1984 sel_read_avc_hash_stats 3 1984 NULL
 +gpio_power_write_1991 gpio_power_write 3 1991 NULL
 +__alloc_bootmem_node_1992 __alloc_bootmem_node 2 1992 NULL
@@ -115170,7 +117353,9 @@ index 0000000..386792a
 +__generic_copy_from_user_intel_2073 __generic_copy_from_user_intel 0-3 2073 NULL
 +diva_set_driver_dbg_mask_2077 diva_set_driver_dbg_mask 0 2077 NULL
 +iwl_dbgfs_current_sleep_command_read_2081 iwl_dbgfs_current_sleep_command_read 3 2081 NULL
++xgmac_reg_value_read_2095 xgmac_reg_value_read 3 2095 NULL
 +idetape_chrdev_read_2097 idetape_chrdev_read 3 2097 NULL
++audit_expand_2098 audit_expand 0 2098 NULL
 +__set_print_fmt_2106 __set_print_fmt 0 2106 NULL
 +iwl_dbgfs_log_event_read_2107 iwl_dbgfs_log_event_read 3 2107 NULL
 +ecryptfs_encrypt_and_encode_filename_2109 ecryptfs_encrypt_and_encode_filename 6 2109 NULL
@@ -115190,12 +117375,13 @@ index 0000000..386792a
 +sel_write_avc_cache_threshold_2256 sel_write_avc_cache_threshold 3 2256 NULL
 +do_update_counters_2259 do_update_counters 4 2259 NULL
 +ath6kl_wmi_bssinfo_event_rx_2275 ath6kl_wmi_bssinfo_event_rx 3 2275 NULL
++vpdma_alloc_desc_buf_2278 vpdma_alloc_desc_buf 2 2278 NULL
 +debug_debug5_read_2291 debug_debug5_read 3 2291 NULL
 +sr_read_cmd_2299 sr_read_cmd 5 2299 NULL
 +kvm_clear_guest_page_2308 kvm_clear_guest_page 4 2308 NULL
 +intel_sdvo_set_value_2311 intel_sdvo_set_value 4 2311 NULL
-+picolcd_fb_write_2318 picolcd_fb_write 3 2318 NULL nohasharray
-+hfsplus_find_init_2318 hfsplus_find_init 0 2318 &picolcd_fb_write_2318
++hfsplus_find_init_2318 hfsplus_find_init 0 2318 NULL nohasharray
++picolcd_fb_write_2318 picolcd_fb_write 3 2318 &hfsplus_find_init_2318
 +dice_hwdep_read_2326 dice_hwdep_read 3 2326 NULL
 +__erst_read_to_erange_2341 __erst_read_to_erange 0 2341 NULL
 +zr364xx_read_2354 zr364xx_read 3 2354 NULL
@@ -115206,7 +117392,6 @@ index 0000000..386792a
 +rxpipe_rx_prep_beacon_drop_read_2403 rxpipe_rx_prep_beacon_drop_read 3 2403 NULL
 +isdn_v110_open_2418 isdn_v110_open 3 2418 NULL
 +raid1_size_2419 raid1_size 0-2 2419 NULL
-+arch_msi_check_device_2449 arch_msi_check_device 0 2449 NULL
 +b43legacy_debugfs_read_2473 b43legacy_debugfs_read 3 2473 NULL
 +wiphy_new_2482 wiphy_new 2 2482 NULL
 +bio_alloc_bioset_2484 bio_alloc_bioset 2 2484 NULL
@@ -115216,16 +117401,19 @@ index 0000000..386792a
 +batadv_tvlv_container_list_size_2524 batadv_tvlv_container_list_size 0 2524 NULL
 +smk_write_syslog_2529 smk_write_syslog 3 2529 NULL
 +__ceph_setxattr_2532 __ceph_setxattr 4 2532 NULL
++sfw_create_rpc_2562 sfw_create_rpc 4 2562 NULL
 +gspca_dev_probe_2570 gspca_dev_probe 4 2570 NULL
 +pcm_sanity_check_2574 pcm_sanity_check 0 2574 NULL
 +mdc_max_rpcs_in_flight_seq_write_2594 mdc_max_rpcs_in_flight_seq_write 3 2594 NULL
 +slot_bytes_2609 slot_bytes 0 2609 NULL
 +smk_write_logging_2618 smk_write_logging 3 2618 NULL
 +switch_status_2629 switch_status 5 2629 NULL
++_proc_do_string_2632 _proc_do_string 2 2632 NULL
 +tcp_xmit_size_goal_2661 tcp_xmit_size_goal 2 2661 NULL
 +osc_build_ppga_2670 osc_build_ppga 2 2670 NULL
 +ffs_ep0_read_2672 ffs_ep0_read 3 2672 NULL
 +oti6858_write_2692 oti6858_write 4 2692 NULL
++copy_to_iter_iovec_2697 copy_to_iter_iovec 2 2697 NULL
 +nfc_llcp_send_ui_frame_2702 nfc_llcp_send_ui_frame 5 2702 NULL
 +memcpy_fromiovecend_2707 memcpy_fromiovecend 3-4 2707 NULL
 +lprocfs_stats_counter_size_2708 lprocfs_stats_counter_size 0 2708 NULL
@@ -115236,8 +117424,8 @@ index 0000000..386792a
 +device_add_attrs_2789 device_add_attrs 0 2789 NULL
 +iwl_dbgfs_clear_ucode_statistics_write_2804 iwl_dbgfs_clear_ucode_statistics_write 3 2804 NULL
 +sel_read_enforce_2828 sel_read_enforce 3 2828 NULL
-+vb2_dc_get_userptr_2829 vb2_dc_get_userptr 2-3 2829 NULL nohasharray
-+snd_pcm_reset_2829 snd_pcm_reset 0 2829 &vb2_dc_get_userptr_2829
++vb2_dc_get_userptr_2829 vb2_dc_get_userptr 2-3 2829 NULL
++sock_create_2838 sock_create 0 2838 NULL
 +wait_for_avail_2847 wait_for_avail 0 2847 NULL
 +sfq_alloc_2861 sfq_alloc 1 2861 NULL
 +irnet_ctrl_read_2863 irnet_ctrl_read 4 2863 NULL
@@ -115267,33 +117455,38 @@ index 0000000..386792a
 +il3945_ucode_rx_stats_read_3048 il3945_ucode_rx_stats_read 3 3048 NULL
 +qp_alloc_ppn_set_3068 qp_alloc_ppn_set 2-4 3068 NULL
 +__blk_end_bidi_request_3070 __blk_end_bidi_request 3-4 3070 NULL
-+dac960_user_command_proc_write_3071 dac960_user_command_proc_write 3 3071 NULL
++hfsplus_asc2uni_3071 hfsplus_asc2uni 0 3071 NULL nohasharray
++dac960_user_command_proc_write_3071 dac960_user_command_proc_write 3 3071 &hfsplus_asc2uni_3071
 +read_file_antenna_diversity_3077 read_file_antenna_diversity 3 3077 NULL
++bio_integrity_intervals_3094 bio_integrity_intervals 0-2 3094 NULL
 +ttusb2_msg_3100 ttusb2_msg 4 3100 NULL
 +rb_alloc_3102 rb_alloc 1 3102 NULL
++ufshcd_get_rsp_upiu_result_3114 ufshcd_get_rsp_upiu_result 0 3114 NULL
 +simple_write_to_buffer_3122 simple_write_to_buffer 5-2 3122 NULL
 +print_time_3132 print_time 0 3132 NULL
 +fill_write_buffer_3142 fill_write_buffer 3 3142 NULL
 +CIFSSMBSetPosixACL_3154 CIFSSMBSetPosixACL 5 3154 NULL
 +uv_num_possible_blades_3177 uv_num_possible_blades 0 3177 NULL
++pkcs7_sig_note_signature_3178 pkcs7_sig_note_signature 5 3178 NULL
 +uinput_ioctl_handler_3181 uinput_ioctl_handler 2 3181 NULL nohasharray
 +uvc_video_stats_dump_3181 uvc_video_stats_dump 3 3181 &uinput_ioctl_handler_3181
 +compat_do_ip6t_set_ctl_3184 compat_do_ip6t_set_ctl 4 3184 NULL
 +mempool_create_node_3191 mempool_create_node 1 3191 NULL
 +alloc_context_3194 alloc_context 1 3194 NULL
++dma_init_coherent_memory_3197 dma_init_coherent_memory 3 3197 NULL
 +shmem_pread_slow_3198 shmem_pread_slow 3-2 3198 NULL
 +codec_reg_write_file_3204 codec_reg_write_file 3 3204 NULL
 +SyS_sendto_3219 SyS_sendto 6 3219 NULL
 +btrfs_prealloc_file_range_3227 btrfs_prealloc_file_range 3 3227 NULL
 +kimage_crash_alloc_3233 kimage_crash_alloc 3 3233 NULL
++write_adapter_mem_3234 write_adapter_mem 3 3234 NULL
 +do_read_log_to_user_3236 do_read_log_to_user 4 3236 NULL
 +ext3_xattr_find_entry_3237 ext3_xattr_find_entry 0 3237 NULL
 +key_key_read_3241 key_key_read 3 3241 NULL
 +__ilog2_u64_3284 __ilog2_u64 0 3284 NULL
 +ieee80211_if_write_beacon_loss_3296 ieee80211_if_write_beacon_loss 3 3296 NULL
 +cgroup_name_3300 cgroup_name 3 3300 NULL
-+__set_extent_bit_3305 __set_extent_bit 0 3305 NULL
-+__iovec_copy_from_user_inatomic_3314 __iovec_copy_from_user_inatomic 4-3-0 3314 NULL
++__iovec_copy_from_user_inatomic_3314 __iovec_copy_from_user_inatomic 0-4-3 3314 NULL
 +_iwl_dbgfs_d3_sram_write_3315 _iwl_dbgfs_d3_sram_write 3 3315 NULL
 +dbDiscardAG_3322 dbDiscardAG 3 3322 NULL
 +read_from_oldmem_3337 read_from_oldmem 2 3337 NULL
@@ -115316,6 +117509,7 @@ index 0000000..386792a
 +mem_tx_free_mem_blks_read_3521 mem_tx_free_mem_blks_read 3 3521 NULL
 +SyS_semtimedop_3532 SyS_semtimedop 3 3532 NULL
 +SyS_readv_3539 SyS_readv 3 3539 NULL
++nouveau_fuse_create__3546 nouveau_fuse_create_ 4 3546 NULL
 +btrfs_dir_name_len_3549 btrfs_dir_name_len 0 3549 NULL
 +alloc_smp_resp_3566 alloc_smp_resp 1 3566 NULL
 +evtchn_read_3569 evtchn_read 3 3569 NULL
@@ -115326,15 +117520,17 @@ index 0000000..386792a
 +edac_mc_alloc_3611 edac_mc_alloc 4 3611 NULL
 +tx_tx_starts_read_3617 tx_tx_starts_read 3 3617 NULL
 +aligned_kmalloc_3628 aligned_kmalloc 1 3628 NULL
++fm10k_alloc_q_vector_3638 fm10k_alloc_q_vector 4-6 3638 NULL
 +ath6kl_disconnect_timeout_read_3650 ath6kl_disconnect_timeout_read 3 3650 NULL
 +i915_compat_ioctl_3656 i915_compat_ioctl 2 3656 NULL
 +_iwl_dbgfs_tx_flush_write_3675 _iwl_dbgfs_tx_flush_write 3 3675 NULL
 +snd_m3_assp_read_3703 snd_m3_assp_read 0 3703 NULL
 +ci_ll_write_3740 ci_ll_write 4 3740 NULL
++msm_otg_mode_write_3788 msm_otg_mode_write 3 3788 NULL
 +sctp_setsockopt_auth_key_3793 sctp_setsockopt_auth_key 3 3793 NULL
 +ncp_file_write_3813 ncp_file_write 3 3813 NULL
 +llc_ui_recvmsg_3826 llc_ui_recvmsg 4 3826 NULL
-+hfsplus_direct_IO_3835 hfsplus_direct_IO 4 3835 NULL
++ceph_do_getattr_3838 ceph_do_getattr 0 3838 NULL
 +create_one_cdev_3852 create_one_cdev 2 3852 NULL
 +smk_read_onlycap_3855 smk_read_onlycap 3 3855 NULL
 +get_fd_set_3866 get_fd_set 1 3866 NULL
@@ -115345,26 +117541,30 @@ index 0000000..386792a
 +comedi_buf_read_n_available_3899 comedi_buf_read_n_available 0 3899 NULL
 +vcs_write_3910 vcs_write 3 3910 NULL
 +SyS_move_pages_3920 SyS_move_pages 2 3920 NULL
++hdlc_irq_one_3944 hdlc_irq_one 2 3944 NULL
 +brcmf_debugfs_fws_stats_read_3947 brcmf_debugfs_fws_stats_read 3 3947 NULL
 +mite_bytes_written_to_memory_lb_3987 mite_bytes_written_to_memory_lb 0 3987 NULL
++copy_from_user_atomic_iovec_3990 copy_from_user_atomic_iovec 0-4 3990 NULL
 +do_add_counters_3992 do_add_counters 3 3992 NULL
-+obd_alloc_memmd_4002 obd_alloc_memmd 0 4002 NULL
 +userspace_status_4004 userspace_status 4 4004 NULL
-+mei_write_4005 mei_write 3 4005 NULL nohasharray
-+xfs_check_block_4005 xfs_check_block 4 4005 &mei_write_4005
++xfs_check_block_4005 xfs_check_block 4 4005 NULL nohasharray
++mei_write_4005 mei_write 3 4005 &xfs_check_block_4005
 +snd_hdsp_capture_copy_4011 snd_hdsp_capture_copy 5 4011 NULL
 +blk_end_request_4024 blk_end_request 3 4024 NULL
 +ext4_xattr_find_entry_4025 ext4_xattr_find_entry 0 4025 NULL
 +mtip_hw_read_registers_4037 mtip_hw_read_registers 3 4037 NULL
 +read_file_queues_4078 read_file_queues 3 4078 NULL
 +fbcon_do_set_font_4079 fbcon_do_set_font 2-3 4079 NULL
++C_SYSC_rt_sigpending_4114 C_SYSC_rt_sigpending 2 4114 NULL
 +tm6000_read_4151 tm6000_read 3 4151 NULL
 +mpt_raid_phys_disk_get_num_paths_4155 mpt_raid_phys_disk_get_num_paths 0 4155 NULL
 +msg_bits_4158 msg_bits 0-3-4 4158 NULL
 +get_alua_req_4166 get_alua_req 3 4166 NULL
 +blk_dropped_read_4168 blk_dropped_read 3 4168 NULL
 +read_file_bool_4180 read_file_bool 3 4180 NULL
++lstcon_test_add_4190 lstcon_test_add 10 4190 NULL
 +vring_new_virtqueue_4199 vring_new_virtqueue 2 4199 NULL
++f1x_determine_channel_4202 f1x_determine_channel 2 4202 NULL
 +_osd_req_list_objects_4204 _osd_req_list_objects 6 4204 NULL
 +__snd_gf1_read_addr_4210 __snd_gf1_read_addr 0 4210 NULL
 +ath6kl_force_roam_write_4282 ath6kl_force_roam_write 3 4282 NULL
@@ -115372,19 +117572,21 @@ index 0000000..386792a
 +get_connectors_for_crtc_4291 get_connectors_for_crtc 0 4291 NULL
 +__usbnet_read_cmd_4299 __usbnet_read_cmd 7 4299 NULL
 +dvb_ringbuffer_pkt_read_user_4303 dvb_ringbuffer_pkt_read_user 2-3-5 4303 NULL
-+count_strings_4315 count_strings 0 4315 NULL
++count_strings_4315 count_strings 0 4315 NULL nohasharray
++cfg80211_inform_bss_4315 cfg80211_inform_bss 9 4315 &count_strings_4315
 +nouveau_fifo_create__4327 nouveau_fifo_create_ 5-6 4327 NULL
 +snd_rawmidi_kernel_read_4328 snd_rawmidi_kernel_read 3 4328 NULL
 +ima_eventdigest_init_common_4338 ima_eventdigest_init_common 2 4338 NULL
-+__copy_from_user_inatomic_4365 __copy_from_user_inatomic 3-0 4365 NULL
++__copy_from_user_inatomic_4365 __copy_from_user_inatomic 0-3 4365 NULL nohasharray
++lookup_string_4365 lookup_string 0 4365 &__copy_from_user_inatomic_4365
 +irda_sendmsg_4388 irda_sendmsg 4 4388 NULL
-+cxacru_cm_get_array_4412 cxacru_cm_get_array 4 4412 NULL nohasharray
-+access_process_vm_4412 access_process_vm 0 4412 &cxacru_cm_get_array_4412
++access_process_vm_4412 access_process_vm 0 4412 NULL nohasharray
++cxacru_cm_get_array_4412 cxacru_cm_get_array 4 4412 &access_process_vm_4412
 +libfc_vport_create_4415 libfc_vport_create 2 4415 NULL
 +rtw_android_get_rssi_4421 rtw_android_get_rssi 0 4421 NULL
 +do_pages_stat_4437 do_pages_stat 2 4437 NULL
 +at76_set_card_command_4471 at76_set_card_command 4 4471 NULL
-+snd_seq_expand_var_event_4481 snd_seq_expand_var_event 0-5 4481 NULL
++snd_seq_expand_var_event_4481 snd_seq_expand_var_event 5-0 4481 NULL
 +vmbus_establish_gpadl_4495 vmbus_establish_gpadl 3 4495 NULL
 +set_link_security_4502 set_link_security 4 4502 NULL
 +ll_max_readahead_per_file_mb_seq_write_4531 ll_max_readahead_per_file_mb_seq_write 3 4531 NULL
@@ -115395,14 +117597,15 @@ index 0000000..386792a
 +bch_alloc_4593 bch_alloc 1 4593 NULL
 +ll_rw_extents_stats_seq_write_4633 ll_rw_extents_stats_seq_write 3 4633 NULL
 +iwl_dbgfs_tx_queue_read_4635 iwl_dbgfs_tx_queue_read 3 4635 NULL
++nve0_gpio_intr_mask_4665 nve0_gpio_intr_mask 4-3 4665 NULL
 +skb_add_data_nocache_4682 skb_add_data_nocache 4 4682 NULL
 +cx18_read_pos_4683 cx18_read_pos 3 4683 NULL
 +short_retry_limit_read_4687 short_retry_limit_read 3 4687 NULL
 +kone_receive_4690 kone_receive 4 4690 NULL
 +hash_netportnet6_expire_4702 hash_netportnet6_expire 4 4702 NULL
 +cxgbi_alloc_big_mem_4707 cxgbi_alloc_big_mem 1 4707 NULL
-+show_header_4722 show_header 3 4722 NULL nohasharray
-+ati_create_gatt_pages_4722 ati_create_gatt_pages 1 4722 &show_header_4722
++ati_create_gatt_pages_4722 ati_create_gatt_pages 1 4722 NULL nohasharray
++show_header_4722 show_header 3 4722 &ati_create_gatt_pages_4722
 +ll_rw_offset_stats_seq_write_4736 ll_rw_offset_stats_seq_write 3 4736 NULL nohasharray
 +bitmap_startwrite_4736 bitmap_startwrite 2 4736 &ll_rw_offset_stats_seq_write_4736
 +lu_buf_alloc_4753 lu_buf_alloc 2 4753 NULL
@@ -115411,6 +117614,7 @@ index 0000000..386792a
 +ncp__vol2io_4804 ncp__vol2io 5 4804 NULL
 +C_SYSC_setsockopt_4806 C_SYSC_setsockopt 5 4806 NULL
 +repair_io_failure_4815 repair_io_failure 4-3 4815 NULL
++scsi_end_request_4839 scsi_end_request 3-4 4839 NULL
 +comedi_buf_write_free_4847 comedi_buf_write_free 2 4847 NULL
 +gigaset_if_receive_4861 gigaset_if_receive 3 4861 NULL
 +key_tx_spec_read_4862 key_tx_spec_read 3 4862 NULL
@@ -115424,17 +117628,17 @@ index 0000000..386792a
 +ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval_4976 ieee80211_if_fmt_dot11MeshHWMPconfirmationInterval 3 4976 NULL
 +compat_SyS_ipc_5000 compat_SyS_ipc 3 5000 NULL
 +do_mincore_5018 do_mincore 0-2-1 5018 NULL
-+btrfs_punch_hole_5041 btrfs_punch_hole 2 5041 NULL
 +cfg80211_rx_mgmt_5056 cfg80211_rx_mgmt 5 5056 NULL
-+ocfs2_check_range_for_holes_5066 ocfs2_check_range_for_holes 2-3 5066 NULL
++ocfs2_check_range_for_holes_5066 ocfs2_check_range_for_holes 3-2 5066 NULL
 +snd_mixart_BA1_read_5082 snd_mixart_BA1_read 5 5082 NULL
 +snd_emu10k1_ptr20_read_5087 snd_emu10k1_ptr20_read 0 5087 NULL
-+kfifo_copy_from_user_5091 kfifo_copy_from_user 3-4-0 5091 NULL nohasharray
-+get_random_bytes_5091 get_random_bytes 2 5091 &kfifo_copy_from_user_5091 nohasharray
-+blk_rq_sectors_5091 blk_rq_sectors 0 5091 &get_random_bytes_5091
++get_random_bytes_5091 get_random_bytes 2 5091 NULL nohasharray
++kfifo_copy_from_user_5091 kfifo_copy_from_user 3-4-0 5091 &get_random_bytes_5091 nohasharray
++blk_rq_sectors_5091 blk_rq_sectors 0 5091 &kfifo_copy_from_user_5091
 +sound_write_5102 sound_write 3 5102 NULL
 +i40e_dbg_netdev_ops_write_5117 i40e_dbg_netdev_ops_write 3 5117 NULL
 +qib_7220_handle_hwerrors_5142 qib_7220_handle_hwerrors 3 5142 NULL
++bucket_table_alloc_5149 bucket_table_alloc 1 5149 NULL
 +__uwb_addr_print_5161 __uwb_addr_print 2 5161 NULL
 +iwl_dbgfs_status_read_5171 iwl_dbgfs_status_read 3 5171 NULL
 +acpi_pcc_get_sqty_5176 acpi_pcc_get_sqty 0 5176 NULL
@@ -115442,6 +117646,10 @@ index 0000000..386792a
 +ppp_cp_parse_cr_5214 ppp_cp_parse_cr 4 5214 NULL
 +dwc2_hcd_urb_alloc_5217 dwc2_hcd_urb_alloc 2 5217 NULL
 +ath6kl_debug_roam_tbl_event_5224 ath6kl_debug_roam_tbl_event 3 5224 NULL
++ipv4_tun_to_nlattr_5261 ipv4_tun_to_nlattr 4 5261 NULL
++dvb_ringbuffer_write_user_5270 dvb_ringbuffer_write_user 3 5270 NULL
++xgmac_reg_addr_read_5278 xgmac_reg_addr_read 3 5278 NULL
++usb_descriptor_fillbuf_5302 usb_descriptor_fillbuf 0 5302 NULL
 +r592_write_fifo_pio_5315 r592_write_fifo_pio 3 5315 NULL
 +sbc_get_write_same_sectors_5317 sbc_get_write_same_sectors 0 5317 NULL
 +pwr_elp_enter_read_5324 pwr_elp_enter_read 3 5324 NULL
@@ -115453,7 +117661,7 @@ index 0000000..386792a
 +ll_xattr_cache_refill_5468 ll_xattr_cache_refill 0 5468 NULL
 +kernfs_fop_write_5471 kernfs_fop_write 3 5471 NULL
 +xfs_efi_init_5476 xfs_efi_init 2 5476 NULL
-+pci_enable_msix_exact_5482 pci_enable_msix_exact 3-0 5482 NULL
++pci_enable_msix_exact_5482 pci_enable_msix_exact 3 5482 NULL
 +cifs_security_flags_proc_write_5484 cifs_security_flags_proc_write 3 5484 NULL
 +tty_write_5494 tty_write 3 5494 NULL
 +tomoyo_update_domain_5498 tomoyo_update_domain 2 5498 NULL nohasharray
@@ -115465,18 +117673,17 @@ index 0000000..386792a
 +inw_5558 inw 0 5558 NULL
 +bioset_create_5580 bioset_create 1 5580 NULL
 +oz_ep_alloc_5587 oz_ep_alloc 1 5587 NULL
-+__remove_suid_5618 __remove_suid 0 5618 NULL
 +SYSC_fsetxattr_5639 SYSC_fsetxattr 4 5639 NULL
 +ext4_xattr_get_5661 ext4_xattr_get 0 5661 NULL
 +posix_clock_register_5662 posix_clock_register 2 5662 NULL
 +get_arg_5694 get_arg 3 5694 NULL
 +subbuf_read_actor_5708 subbuf_read_actor 3 5708 NULL
 +vmw_kms_readback_5727 vmw_kms_readback 6 5727 NULL
-+rts51x_transfer_data_partial_5735 rts51x_transfer_data_partial 6 5735 NULL
 +sctp_setsockopt_autoclose_5775 sctp_setsockopt_autoclose 3 5775 NULL
 +__vxge_hw_blockpool_malloc_5786 __vxge_hw_blockpool_malloc 2 5786 NULL
 +nvme_trans_bdev_char_page_5797 nvme_trans_bdev_char_page 3 5797 NULL
-+skb_copy_datagram_iovec_5806 skb_copy_datagram_iovec 2-4 5806 NULL
++skb_copy_datagram_iovec_5806 skb_copy_datagram_iovec 2-4 5806 NULL nohasharray
++ath10k_core_create_5806 ath10k_core_create 1 5806 &skb_copy_datagram_iovec_5806
 +nv50_disp_pioc_create__5812 nv50_disp_pioc_create_ 5 5812 NULL
 +ceph_x_encrypt_buflen_5829 ceph_x_encrypt_buflen 0-1 5829 NULL
 +ceph_msg_new_5846 ceph_msg_new 2 5846 NULL
@@ -115484,6 +117691,8 @@ index 0000000..386792a
 +ria_page_count_5849 ria_page_count 0 5849 NULL
 +rx_filter_max_arp_queue_dep_read_5851 rx_filter_max_arp_queue_dep_read 3 5851 NULL
 +uinput_compat_ioctl_5861 uinput_compat_ioctl 2 5861 NULL
++config_buf_5862 config_buf 0 5862 NULL nohasharray
++ufshcd_check_query_response_5862 ufshcd_check_query_response 0 5862 &config_buf_5862
 +lprocfs_fid_width_seq_write_5889 lprocfs_fid_width_seq_write 3 5889 NULL
 +port_show_regs_5904 port_show_regs 3 5904 NULL
 +rbd_segment_length_5907 rbd_segment_length 0-3-2 5907 NULL
@@ -115495,10 +117704,10 @@ index 0000000..386792a
 +__apu_get_register_5967 __apu_get_register 0 5967 NULL
 +ieee80211_if_fmt_rc_rateidx_mask_5ghz_5971 ieee80211_if_fmt_rc_rateidx_mask_5ghz 3 5971 NULL
 +SyS_semop_5980 SyS_semop 3 5980 NULL
++btrfs_item_offset_6019 btrfs_item_offset 0 6019 NULL
 +alloc_msg_6072 alloc_msg 1 6072 NULL
 +sctp_setsockopt_connectx_6073 sctp_setsockopt_connectx 3 6073 NULL
-+rts51x_ms_rw_multi_sector_6076 rts51x_ms_rw_multi_sector 3-4 6076 NULL
-+__mnt_want_write_6091 __mnt_want_write 0 6091 NULL
++_random_read_6098 _random_read 3 6098 NULL
 +ipmi_addr_length_6110 ipmi_addr_length 0 6110 NULL nohasharray
 +force_static_address_read_6110 force_static_address_read 3 6110 &ipmi_addr_length_6110
 +dfs_global_file_write_6112 dfs_global_file_write 3 6112 NULL
@@ -115508,6 +117717,7 @@ index 0000000..386792a
 +maybe_insert_hole_6167 maybe_insert_hole 3 6167 NULL
 +wl1251_cmd_template_set_6172 wl1251_cmd_template_set 4 6172 NULL
 +SyS_setgroups_6182 SyS_setgroups 1 6182 NULL
++snd_efw_command_get_phys_meters_6190 snd_efw_command_get_phys_meters 3 6190 NULL
 +mxt_show_instance_6207 mxt_show_instance 2-0 6207 NULL
 +v4l2_ctrl_new_std_menu_6221 v4l2_ctrl_new_std_menu 4 6221 NULL
 +mqueue_read_file_6228 mqueue_read_file 3 6228 NULL
@@ -115520,18 +117730,21 @@ index 0000000..386792a
 +posix_acl_fix_xattr_to_user_6283 posix_acl_fix_xattr_to_user 2 6283 NULL
 +serial_port_in_6291 serial_port_in 0 6291 NULL
 +qlcnic_sriov_alloc_bc_msg_6309 qlcnic_sriov_alloc_bc_msg 2 6309 NULL
-+hfa384x_inw_6329 hfa384x_inw 0 6329 NULL nohasharray
-+SyS_mincore_6329 SyS_mincore 1-2 6329 &hfa384x_inw_6329
++hfsplus_direct_IO_6313 hfsplus_direct_IO 4 6313 NULL
++SyS_mincore_6329 SyS_mincore 2-1 6329 NULL nohasharray
++hfa384x_inw_6329 hfa384x_inw 0 6329 &SyS_mincore_6329
 +fuse_get_req_for_background_6337 fuse_get_req_for_background 2 6337 NULL
 +ucs2_strnlen_6342 ucs2_strnlen 0 6342 NULL
 +regcache_sync_block_raw_6350 regcache_sync_block_raw 5-4 6350 NULL
 +mei_dbgfs_read_devstate_6352 mei_dbgfs_read_devstate 3 6352 NULL
-+_proc_do_string_6376 _proc_do_string 2 6376 NULL
-+osd_req_read_sg_kern_6378 osd_req_read_sg_kern 5 6378 NULL
++arch_gnttab_valloc_6372 arch_gnttab_valloc 2 6372 NULL
++osd_req_read_sg_kern_6378 osd_req_read_sg_kern 5 6378 NULL nohasharray
++sync_fence_alloc_6378 sync_fence_alloc 1 6378 &osd_req_read_sg_kern_6378
 +posix_acl_fix_xattr_userns_6420 posix_acl_fix_xattr_userns 4 6420 NULL
 +add_transaction_credits_6422 add_transaction_credits 2-3 6422 NULL
 +ipr_change_queue_depth_6431 ipr_change_queue_depth 2 6431 NULL
 +__alloc_bootmem_node_nopanic_6432 __alloc_bootmem_node_nopanic 2 6432 NULL
++C_SYSC_vmsplice_6470 C_SYSC_vmsplice 3 6470 NULL
 +ieee80211_if_fmt_dot11MeshMaxRetries_6476 ieee80211_if_fmt_dot11MeshMaxRetries 3 6476 NULL
 +qp_memcpy_from_queue_6479 qp_memcpy_from_queue 5-4 6479 NULL
 +cipso_v4_map_lvl_hton_6490 cipso_v4_map_lvl_hton 0 6490 NULL
@@ -115542,17 +117755,18 @@ index 0000000..386792a
 +dm_stats_create_6551 dm_stats_create 4-2-3 6551 NULL
 +fb_alloc_cmap_6554 fb_alloc_cmap 2 6554 NULL
 +SyS_semtimedop_6563 SyS_semtimedop 3 6563 NULL
-+snd_pcm_hw_refine_old_user_6586 snd_pcm_hw_refine_old_user 0 6586 NULL
 +ecryptfs_filldir_6622 ecryptfs_filldir 3 6622 NULL
++xfs_do_div_6649 xfs_do_div 0-2 6649 NULL
 +process_rcvd_data_6679 process_rcvd_data 3 6679 NULL
-+pvscsi_allocate_rings_6689 pvscsi_allocate_rings 0 6689 NULL
 +btrfs_lookup_csums_range_6696 btrfs_lookup_csums_range 2-3 6696 NULL
 +ps_pspoll_max_apturn_read_6699 ps_pspoll_max_apturn_read 3 6699 NULL
 +bnad_debugfs_write_regrd_6706 bnad_debugfs_write_regrd 3 6706 NULL
 +mpeg_read_6708 mpeg_read 3 6708 NULL
 +ibmpex_query_sensor_count_6709 ibmpex_query_sensor_count 0 6709 NULL
++check_clk_sync_6717 check_clk_sync 2 6717 NULL
 +video_proc_write_6724 video_proc_write 3 6724 NULL
 +posix_acl_xattr_count_6725 posix_acl_xattr_count 0-1 6725 NULL
++inet_recv_error_6744 inet_recv_error 3 6744 NULL
 +kobject_add_varg_6781 kobject_add_varg 0 6781 NULL
 +iwl_dbgfs_channels_read_6784 iwl_dbgfs_channels_read 3 6784 NULL
 +ieee80211_if_read_6785 ieee80211_if_read 3 6785 NULL
@@ -115560,8 +117774,10 @@ index 0000000..386792a
 +hdlcdrv_register_6792 hdlcdrv_register 2 6792 NULL
 +ll_xattr_cache_find_6798 ll_xattr_cache_find 0 6798 NULL
 +tx_tx_done_data_read_6799 tx_tx_done_data_read 3 6799 NULL
++rounded_hashtable_size_6802 rounded_hashtable_size 0 6802 NULL
 +lbs_rdrf_write_6826 lbs_rdrf_write 3 6826 NULL
-+calc_pages_for_6838 calc_pages_for 0-2-1 6838 NULL
++calc_pages_for_6838 calc_pages_for 0-1-2 6838 NULL
++blk_alloc_flush_queue_6839 blk_alloc_flush_queue 3 6839 NULL
 +mon_bin_read_6841 mon_bin_read 3 6841 NULL
 +snd_cs4281_BA0_read_6847 snd_cs4281_BA0_read 5 6847 NULL
 +perf_output_sample_ustack_6868 perf_output_sample_ustack 2 6868 NULL
@@ -115573,6 +117789,7 @@ index 0000000..386792a
 +spi_show_regs_6911 spi_show_regs 3 6911 &proc_sessionid_read_6911 nohasharray
 +acm_alloc_minor_6911 acm_alloc_minor 0 6911 &spi_show_regs_6911
 +__kfifo_dma_in_finish_r_6913 __kfifo_dma_in_finish_r 2-3 6913 NULL
++do_msgrcv_6921 do_msgrcv 3 6921 NULL
 +cache_do_downcall_6926 cache_do_downcall 3 6926 NULL
 +ipath_verbs_send_dma_6929 ipath_verbs_send_dma 6 6929 NULL
 +qsfp_cks_6945 qsfp_cks 2-0 6945 NULL
@@ -115580,9 +117797,9 @@ index 0000000..386792a
 +pch_uart_hal_read_6961 pch_uart_hal_read 0 6961 NULL
 +i40e_dbg_dump_write_6973 i40e_dbg_dump_write 3 6973 NULL nohasharray
 +rsa_extract_mpi_6973 rsa_extract_mpi 5 6973 &i40e_dbg_dump_write_6973
++lustre_pack_reply_6982 lustre_pack_reply 2 6982 NULL
 +request_key_async_6990 request_key_async 4 6990 NULL
 +tpl_write_6998 tpl_write 3 6998 NULL
-+r871x_set_wpa_ie_7000 r871x_set_wpa_ie 3 7000 NULL
 +cipso_v4_gentag_enum_7006 cipso_v4_gentag_enum 0 7006 NULL
 +tracing_cpumask_read_7010 tracing_cpumask_read 3 7010 NULL
 +ld_usb_write_7022 ld_usb_write 3 7022 NULL
@@ -115593,22 +117810,24 @@ index 0000000..386792a
 +nouveau_device_create__7063 nouveau_device_create_ 7 7063 NULL
 +hci_sock_recvmsg_7072 hci_sock_recvmsg 4 7072 NULL
 +event_enable_read_7074 event_enable_read 3 7074 NULL
-+tipc_send_packet_7091 tipc_send_packet 4 7091 NULL nohasharray
-+beacon_interval_read_7091 beacon_interval_read 3 7091 &tipc_send_packet_7091
++beacon_interval_read_7091 beacon_interval_read 3 7091 NULL nohasharray
++tipc_send_packet_7091 tipc_send_packet 4 7091 &beacon_interval_read_7091
 +pipeline_enc_rx_stat_fifo_int_read_7107 pipeline_enc_rx_stat_fifo_int_read 3 7107 NULL
 +osc_resend_count_seq_write_7120 osc_resend_count_seq_write 3 7120 NULL
 +qib_format_hwerrors_7133 qib_format_hwerrors 5 7133 NULL
 +kvm_mmu_notifier_test_young_7139 kvm_mmu_notifier_test_young 3 7139 NULL
 +qlcnic_enable_msix_7144 qlcnic_enable_msix 2 7144 NULL
 +__alloc_objio_seg_7203 __alloc_objio_seg 1 7203 NULL
-+rx_rate_rx_frames_per_rates_read_7282 rx_rate_rx_frames_per_rates_read 3 7282 NULL
-+security_inode_need_killpriv_7322 security_inode_need_killpriv 0 7322 NULL
++hdlc_loop_7255 hdlc_loop 0 7255 NULL
++rx_rate_rx_frames_per_rates_read_7282 rx_rate_rx_frames_per_rates_read 3 7282 NULL nohasharray
++kimage_alloc_init_7282 kimage_alloc_init 3 7282 &rx_rate_rx_frames_per_rates_read_7282
++get_string_7302 get_string 0 7302 NULL
 +pci_vpd_info_field_size_7324 pci_vpd_info_field_size 0 7324 NULL
 +mgmt_control_7349 mgmt_control 3 7349 NULL
 +at_est2timeout_7365 at_est2timeout 0-1 7365 NULL
 +ieee80211_if_read_dot11MeshHWMPactivePathTimeout_7368 ieee80211_if_read_dot11MeshHWMPactivePathTimeout 3 7368 NULL
 +ath10k_read_fw_stats_7387 ath10k_read_fw_stats 3 7387 NULL
-+hweight_long_7388 hweight_long 0 7388 NULL
++hweight_long_7388 hweight_long 0-1 7388 NULL
 +sl_change_mtu_7396 sl_change_mtu 2 7396 NULL
 +_ore_add_stripe_unit_7399 _ore_add_stripe_unit 6-3 7399 NULL
 +audmux_read_file_7400 audmux_read_file 3 7400 NULL
@@ -115620,12 +117839,12 @@ index 0000000..386792a
 +SYSC_setgroups_7454 SYSC_setgroups 1 7454 NULL
 +rt2x00debug_read_queue_stats_7455 rt2x00debug_read_queue_stats 3 7455 NULL
 +l2tp_ip6_sendmsg_7461 l2tp_ip6_sendmsg 4 7461 NULL
-+garp_request_join_7471 garp_request_join 4 7471 NULL
++garp_request_join_7471 garp_request_join 4 7471 NULL nohasharray
++ReadHSCX_7471 ReadHSCX 0 7471 &garp_request_join_7471
 +snd_pcm_lib_read1_7491 snd_pcm_lib_read1 0-3 7491 NULL
 +ahash_instance_headroom_7509 ahash_instance_headroom 0 7509 NULL nohasharray
 +sdhci_alloc_host_7509 sdhci_alloc_host 2 7509 &ahash_instance_headroom_7509
 +array_zalloc_7519 array_zalloc 1-2 7519 NULL
-+sk_convert_filter_7541 sk_convert_filter 2 7541 NULL
 +ath10k_read_htt_stats_mask_7557 ath10k_read_htt_stats_mask 3 7557 NULL
 +smk_read_mapped_7562 smk_read_mapped 3 7562 NULL
 +netvsc_get_slots_7565 netvsc_get_slots 0 7565 NULL
@@ -115639,30 +117858,33 @@ index 0000000..386792a
 +dev_write_7708 dev_write 3 7708 NULL
 +pci_raw_set_power_state_7729 pci_raw_set_power_state 0 7729 NULL
 +vxge_device_register_7752 vxge_device_register 4 7752 NULL
-+ubi_io_read_vid_hdr_7766 ubi_io_read_vid_hdr 0 7766 NULL
 +iwl_dbgfs_bt_cmd_read_7770 iwl_dbgfs_bt_cmd_read 3 7770 NULL
 +alloc_candev_7776 alloc_candev 1-2 7776 NULL
++__videobuf_read_start_7782 __videobuf_read_start 0 7782 NULL
 +dfs_global_file_read_7787 dfs_global_file_read 3 7787 NULL
 +bnx2_nvram_write_7790 bnx2_nvram_write 4-2 7790 NULL
-+lustre_packed_msg_size_7792 lustre_packed_msg_size 0 7792 NULL nohasharray
-+diva_os_copy_from_user_7792 diva_os_copy_from_user 4 7792 &lustre_packed_msg_size_7792
++diva_os_copy_from_user_7792 diva_os_copy_from_user 4 7792 NULL nohasharray
++lustre_packed_msg_size_7792 lustre_packed_msg_size 0 7792 &diva_os_copy_from_user_7792
++seq_buf_alloc_7828 seq_buf_alloc 1 7828 NULL
 +cfs_trace_dump_debug_buffer_usrstr_7861 cfs_trace_dump_debug_buffer_usrstr 2 7861 NULL
 +tipc_alloc_entry_7875 tipc_alloc_entry 2 7875 NULL
++config_desc_7878 config_desc 0 7878 NULL
 +dvb_dmxdev_read_sec_7892 dvb_dmxdev_read_sec 4 7892 NULL
 +xfs_trans_get_efi_7898 xfs_trans_get_efi 2 7898 NULL
 +libfc_host_alloc_7917 libfc_host_alloc 2 7917 NULL
 +f_hidg_write_7932 f_hidg_write 3 7932 NULL
-+integrity_digsig_verify_7956 integrity_digsig_verify 3-0 7956 NULL
++integrity_digsig_verify_7956 integrity_digsig_verify 3 7956 NULL
 +smk_write_load_self_7958 smk_write_load_self 3 7958 NULL
 +tt3650_ci_msg_locked_8013 tt3650_ci_msg_locked 4 8013 NULL
 +vcs_read_8017 vcs_read 3 8017 NULL
 +vhost_add_used_and_signal_n_8038 vhost_add_used_and_signal_n 4 8038 NULL
-+ms_read_multiple_pages_8052 ms_read_multiple_pages 5-4 8052 NULL
 +dgrp_mon_read_8065 dgrp_mon_read 3 8065 NULL
 +spi_write_then_read_8073 spi_write_then_read 5-3 8073 NULL
 +qla4xxx_post_ping_evt_work_8074 qla4xxx_post_ping_evt_work 4 8074 NULL
 +venus_lookup_8121 venus_lookup 4 8121 NULL
 +ieee80211_if_fmt_num_buffered_multicast_8127 ieee80211_if_fmt_num_buffered_multicast 3 8127 NULL
++xfs_file_fallocate_8150 xfs_file_fallocate 3-4 8150 NULL
++ufshcd_wait_for_dev_cmd_8168 ufshcd_wait_for_dev_cmd 0 8168 NULL
 +__sk_mem_schedule_8185 __sk_mem_schedule 2 8185 NULL
 +ieee80211_if_fmt_dot11MeshHoldingTimeout_8187 ieee80211_if_fmt_dot11MeshHoldingTimeout 3 8187 NULL
 +recent_mt_proc_write_8206 recent_mt_proc_write 3 8206 NULL
@@ -115676,7 +117898,6 @@ index 0000000..386792a
 +init_cdev_8274 init_cdev 1 8274 NULL
 +rproc_recovery_write_8281 rproc_recovery_write 3 8281 NULL
 +qib_decode_7220_err_8315 qib_decode_7220_err 3 8315 NULL
-+snd_pcm_update_state_8320 snd_pcm_update_state 0 8320 NULL
 +ipwireless_send_packet_8328 ipwireless_send_packet 4 8328 NULL
 +rtw_cfg80211_rx_action_8329 rtw_cfg80211_rx_action 3 8329 NULL
 +tracing_entries_read_8345 tracing_entries_read 3 8345 NULL
@@ -115694,41 +117915,44 @@ index 0000000..386792a
 +batadv_tt_len_8502 batadv_tt_len 0-1 8502 NULL
 +dev_config_8506 dev_config 3 8506 NULL
 +ACL_to_cifs_posix_8509 ACL_to_cifs_posix 3 8509 NULL
++nouveau_platform_device_create__8514 nouveau_platform_device_create_ 2 8514 NULL
 +opticon_process_data_packet_8524 opticon_process_data_packet 3 8524 NULL
 +user_on_off_8552 user_on_off 2 8552 NULL
 +profile_remove_8556 profile_remove 3 8556 NULL
-+cache_slow_downcall_8570 cache_slow_downcall 2 8570 NULL nohasharray
-+pci_msi_check_device_8570 pci_msi_check_device 0 8570 &cache_slow_downcall_8570
++cache_slow_downcall_8570 cache_slow_downcall 2 8570 NULL
 +isr_dma0_done_read_8574 isr_dma0_done_read 3 8574 NULL
 +tower_write_8580 tower_write 3 8580 NULL
 +cfs_cpt_number_8618 cfs_cpt_number 0 8618 NULL
 +shash_setkey_unaligned_8620 shash_setkey_unaligned 3 8620 NULL
 +it821x_firmware_command_8628 it821x_firmware_command 3 8628 NULL
 +scsi_dma_map_8632 scsi_dma_map 0 8632 NULL
-+fuse_send_write_pages_8636 fuse_send_write_pages 0-5 8636 NULL
++fuse_send_write_pages_8636 fuse_send_write_pages 5-0 8636 NULL
 +mlx5_vzalloc_8663 mlx5_vzalloc 1 8663 NULL
 +dio_bio_alloc_8677 dio_bio_alloc 5 8677 NULL
 +lbs_bcnmiss_read_8678 lbs_bcnmiss_read 3 8678 NULL
++bpf_prog_size_8685 bpf_prog_size 0 8685 NULL
 +rproc_trace_read_8686 rproc_trace_read 3 8686 NULL
 +skb_frag_size_8695 skb_frag_size 0 8695 NULL
 +arcfb_write_8702 arcfb_write 3 8702 NULL
 +i_size_read_8703 i_size_read 0 8703 NULL nohasharray
 +init_header_8703 init_header 0 8703 &i_size_read_8703
++ufshcd_get_tr_ocs_8706 ufshcd_get_tr_ocs 0 8706 NULL
++HDLC_irq_8709 HDLC_irq 2 8709 NULL
 +ctrl_out_8712 ctrl_out 3-5 8712 NULL
 +tracing_max_lat_write_8728 tracing_max_lat_write 3 8728 NULL
 +jffs2_acl_count_8729 jffs2_acl_count 0-1 8729 NULL
-+__create_irqs_8733 __create_irqs 2 8733 NULL
++iov_iter_zero_8748 iov_iter_zero 1 8748 NULL
 +tx_tx_exch_expiry_read_8749 tx_tx_exch_expiry_read 3 8749 NULL
 +compound_order_8750 compound_order 0 8750 NULL
++cfg80211_inform_bss_width_8754 cfg80211_inform_bss_width 10 8754 NULL
 +yurex_write_8761 yurex_write 3 8761 NULL
 +joydev_compat_ioctl_8765 joydev_compat_ioctl 2 8765 NULL
 +kstrtoint_from_user_8778 kstrtoint_from_user 2 8778 NULL
 +paging32_prefetch_gpte_8783 paging32_prefetch_gpte 4 8783 NULL
-+ext4_try_to_write_inline_data_8785 ext4_try_to_write_inline_data 3-4 8785 NULL
-+__bitmap_weight_8796 __bitmap_weight 0 8796 NULL
++ext4_try_to_write_inline_data_8785 ext4_try_to_write_inline_data 4-3 8785 NULL
++__bitmap_weight_8796 __bitmap_weight 0-2 8796 NULL
 +metronomefb_write_8823 metronomefb_write 3 8823 NULL
 +SyS_llistxattr_8824 SyS_llistxattr 3 8824 NULL
-+extent_read_full_page_8826 extent_read_full_page 0 8826 NULL
 +ll_xattr_cache_get_8829 ll_xattr_cache_get 0 8829 NULL
 +get_queue_depth_8833 get_queue_depth 0 8833 NULL
 +dvb_ringbuffer_pkt_next_8834 dvb_ringbuffer_pkt_next 0-2 8834 NULL
@@ -115736,6 +117960,7 @@ index 0000000..386792a
 +iwl_rx_packet_len_8854 iwl_rx_packet_len 0 8854 NULL
 +debug_debug1_read_8856 debug_debug1_read 3 8856 NULL
 +wa_nep_queue_8858 wa_nep_queue 2 8858 NULL
++xgmac_reg_value_write_8860 xgmac_reg_value_write 3 8860 NULL
 +radeon_drm_ioctl_8875 radeon_drm_ioctl 2 8875 NULL
 +compressed_bio_size_8887 compressed_bio_size 0-2 8887 NULL
 +ab3100_get_set_reg_8890 ab3100_get_set_reg 3 8890 NULL nohasharray
@@ -115758,17 +117983,18 @@ index 0000000..386792a
 +jbd2_journal_blocks_per_page_9004 jbd2_journal_blocks_per_page 0 9004 NULL
 +il_dbgfs_clear_ucode_stats_write_9016 il_dbgfs_clear_ucode_stats_write 3 9016 NULL
 +snd_emu10k1_ptr_read_9026 snd_emu10k1_ptr_read 0-2 9026 NULL
++fd_ioctl_9028 fd_ioctl 3 9028 NULL
 +nla_put_9042 nla_put 3 9042 NULL
 +sta_tx_latency_stat_header_9050 sta_tx_latency_stat_header 0-3-4 9050 NULL
 +snd_emu10k1_synth_copy_from_user_9061 snd_emu10k1_synth_copy_from_user 3-5 9061 NULL
 +snd_gus_dram_peek_9062 snd_gus_dram_peek 4 9062 NULL
 +fib_info_hash_alloc_9075 fib_info_hash_alloc 1 9075 NULL
 +create_queues_9088 create_queues 2-3 9088 NULL
++nvkm_output_create__9091 nvkm_output_create_ 6 9091 NULL
 +ftdi_prepare_write_buffer_9093 ftdi_prepare_write_buffer 3 9093 NULL
 +adxl34x_spi_read_block_9108 adxl34x_spi_read_block 3 9108 NULL
-+caif_stream_sendmsg_9110 caif_stream_sendmsg 4 9110 NULL nohasharray
-+gfn_to_rmap_9110 gfn_to_rmap 2-3 9110 &caif_stream_sendmsg_9110
-+udf_direct_IO_9111 udf_direct_IO 4 9111 NULL
++gfn_to_rmap_9110 gfn_to_rmap 3-2 9110 NULL nohasharray
++caif_stream_sendmsg_9110 caif_stream_sendmsg 4 9110 &gfn_to_rmap_9110
 +pmcraid_change_queue_depth_9116 pmcraid_change_queue_depth 2 9116 NULL
 +vb2_dma_sg_alloc_9157 vb2_dma_sg_alloc 2 9157 NULL
 +dbg_command_buf_9165 dbg_command_buf 2 9165 NULL
@@ -115777,14 +118003,17 @@ index 0000000..386792a
 +altera_swap_ir_9194 altera_swap_ir 2 9194 NULL
 +snd_m3_get_pointer_9206 snd_m3_get_pointer 0 9206 NULL
 +iwl_dbgfs_frame_stats_read_9211 iwl_dbgfs_frame_stats_read 3 9211 NULL
++card_send_command_9215 card_send_command 3 9215 NULL
 +virtqueue_add_9217 virtqueue_add 4-5 9217 NULL
 +tx_tx_prepared_descs_read_9221 tx_tx_prepared_descs_read 3 9221 NULL
++l2cap_create_connless_pdu_9222 l2cap_create_connless_pdu 3 9222 NULL
 +sctp_getsockopt_delayed_ack_9232 sctp_getsockopt_delayed_ack 2 9232 NULL
 +hfsplus_bnode_read_u16_9262 hfsplus_bnode_read_u16 0 9262 NULL
 +hdpvr_read_9273 hdpvr_read 3 9273 NULL
 +flakey_status_9274 flakey_status 5 9274 NULL
 +iwl_dbgfs_stations_read_9309 iwl_dbgfs_stations_read 3 9309 NULL
 +ceph_sync_setxattr_9310 ceph_sync_setxattr 4 9310 NULL
++__blockdev_direct_IO_9321 __blockdev_direct_IO 0-6 9321 NULL
 +ieee80211_if_fmt_txpower_9334 ieee80211_if_fmt_txpower 3 9334 NULL
 +nvme_trans_fmt_get_parm_header_9340 nvme_trans_fmt_get_parm_header 2 9340 NULL
 +ocfs2_orphan_for_truncate_9342 ocfs2_orphan_for_truncate 4 9342 NULL
@@ -115825,6 +118054,7 @@ index 0000000..386792a
 +dns_query_9676 dns_query 3 9676 NULL
 +qib_7322_handle_hwerrors_9678 qib_7322_handle_hwerrors 3 9678 NULL
 +__erst_read_from_storage_9690 __erst_read_from_storage 0 9690 NULL
++lowpan_control_write_9699 lowpan_control_write 3 9699 NULL
 +vx_transfer_end_9701 vx_transfer_end 0 9701 NULL
 +fuse_iter_npages_9705 fuse_iter_npages 0 9705 NULL nohasharray
 +ieee80211_if_read_aid_9705 ieee80211_if_read_aid 3 9705 &fuse_iter_npages_9705
@@ -115838,15 +118068,18 @@ index 0000000..386792a
 +regmap_multi_reg_write_bypassed_9751 regmap_multi_reg_write_bypassed 3 9751 NULL nohasharray
 +sta_last_ack_signal_read_9751 sta_last_ack_signal_read 3 9751 &regmap_multi_reg_write_bypassed_9751
 +btrfs_super_root_9763 btrfs_super_root 0 9763 NULL
++copy_page_from_iter_bvec_9767 copy_page_from_iter_bvec 0-3 9767 NULL
 +__blk_queue_init_tags_9778 __blk_queue_init_tags 2 9778 NULL
 +kvm_age_hva_9795 kvm_age_hva 2 9795 NULL
-+udpv6_recvmsg_9813 udpv6_recvmsg 4 9813 NULL nohasharray
-+ieee80211_if_read_state_9813 ieee80211_if_read_state 3 9813 &udpv6_recvmsg_9813
++bio_alloc_map_data_9798 bio_alloc_map_data 1 9798 NULL
++ieee80211_if_read_state_9813 ieee80211_if_read_state 3 9813 NULL nohasharray
++udpv6_recvmsg_9813 udpv6_recvmsg 4 9813 &ieee80211_if_read_state_9813
++compat_SyS_vmsplice_9828 compat_SyS_vmsplice 3 9828 NULL
 +pmcraid_alloc_sglist_9864 pmcraid_alloc_sglist 1 9864 NULL
-+btrfs_free_reserved_extent_9867 btrfs_free_reserved_extent 2 9867 NULL
++f1x_translate_sysaddr_to_cs_9868 f1x_translate_sysaddr_to_cs 2 9868 NULL
 +wil_read_file_ioblob_9878 wil_read_file_ioblob 3 9878 NULL
-+snd_midi_event_new_9893 snd_midi_event_new 1 9893 NULL nohasharray
-+bm_register_write_9893 bm_register_write 3 9893 &snd_midi_event_new_9893
++bm_register_write_9893 bm_register_write 3 9893 NULL nohasharray
++snd_midi_event_new_9893 snd_midi_event_new 1 9893 &bm_register_write_9893
 +snd_gf1_pcm_playback_copy_9895 snd_gf1_pcm_playback_copy 3-5 9895 NULL
 +nonpaging_page_fault_9908 nonpaging_page_fault 2 9908 NULL
 +iwl_dbgfs_prph_reg_read_9928 iwl_dbgfs_prph_reg_read 3 9928 NULL
@@ -115858,34 +118091,38 @@ index 0000000..386792a
 +get_free_serial_index_9969 get_free_serial_index 0 9969 NULL
 +btrfs_add_link_9973 btrfs_add_link 5 9973 NULL
 +SYSC_move_pages_9986 SYSC_move_pages 2 9986 NULL
++ceph_oloc_oid_to_pg_10003 ceph_oloc_oid_to_pg 0 10003 NULL
 +aat2870_dump_reg_10019 aat2870_dump_reg 0 10019 NULL
++asymmetric_key_generate_id_10064 asymmetric_key_generate_id 2-4 10064 NULL
 +ieee80211_set_probe_resp_10077 ieee80211_set_probe_resp 3 10077 NULL
 +get_elem_size_10110 get_elem_size 0-2 10110 NULL nohasharray
 +dynamic_ps_timeout_read_10110 dynamic_ps_timeout_read 3 10110 &get_elem_size_10110
 +gfs2_meta_read_10112 gfs2_meta_read 0 10112 NULL
 +SyS_migrate_pages_10134 SyS_migrate_pages 2 10134 NULL
 +aes_decrypt_packets_read_10155 aes_decrypt_packets_read 3 10155 NULL
-+rx_out_of_mem_read_10157 rx_out_of_mem_read 3 10157 NULL
++rx_out_of_mem_read_10157 rx_out_of_mem_read 3 10157 NULL nohasharray
++tracing_nsecs_write_10157 tracing_nsecs_write 3 10157 &rx_out_of_mem_read_10157
 +hidg_alloc_ep_req_10159 hidg_alloc_ep_req 2 10159 NULL
 +asd_store_update_bios_10165 asd_store_update_bios 4 10165 NULL
 +kstrtol_from_user_10168 kstrtol_from_user 2 10168 NULL
 +proc_pid_attr_read_10173 proc_pid_attr_read 3 10173 NULL
 +jffs2_user_setxattr_10182 jffs2_user_setxattr 4 10182 NULL
++hdlc_rpr_irq_10240 hdlc_rpr_irq 2 10240 NULL
++lmv_hsm_req_count_10245 lmv_hsm_req_count 0 10245 NULL
 +cciss_proc_write_10259 cciss_proc_write 3 10259 NULL
 +__qlcnic_pci_sriov_enable_10281 __qlcnic_pci_sriov_enable 2 10281 NULL
 +snd_rme9652_capture_copy_10287 snd_rme9652_capture_copy 5 10287 NULL
-+ubi_leb_change_10289 ubi_leb_change 0 10289 NULL
++nvif_object_new_10300 nvif_object_new 5 10300 NULL
 +read_emulate_10310 read_emulate 2-4 10310 NULL
 +read_file_spectral_count_10320 read_file_spectral_count 3 10320 NULL
 +compat_SyS_writev_10327 compat_SyS_writev 3 10327 NULL
 +tun_sendmsg_10337 tun_sendmsg 4 10337 NULL
 +ufx_alloc_urb_list_10349 ufx_alloc_urb_list 3 10349 NULL
++whci_add_cap_10350 whci_add_cap 0 10350 NULL
 +dbAllocAny_10354 dbAllocAny 0 10354 NULL
 +ath6kl_listen_int_read_10355 ath6kl_listen_int_read 3 10355 NULL
-+ms_write_multiple_pages_10362 ms_write_multiple_pages 6-5 10362 NULL
 +sta_ht_capa_read_10366 sta_ht_capa_read 3 10366 NULL
 +ecryptfs_decode_and_decrypt_filename_10379 ecryptfs_decode_and_decrypt_filename 5 10379 NULL
-+led_classdev_register_10384 led_classdev_register 0 10384 NULL
 +do_compat_pselect_10398 do_compat_pselect 1 10398 NULL
 +fwtty_rx_10434 fwtty_rx 3 10434 NULL
 +event_phy_transmit_error_read_10471 event_phy_transmit_error_read 3 10471 NULL
@@ -115897,7 +118134,6 @@ index 0000000..386792a
 +osd_req_write_sg_kern_10514 osd_req_write_sg_kern 5 10514 NULL
 +rds_message_alloc_10517 rds_message_alloc 1 10517 NULL
 +qlcnic_pci_sriov_enable_10519 qlcnic_pci_sriov_enable 2 10519 NULL
-+snd_pcm_hw_params_user_10520 snd_pcm_hw_params_user 0 10520 NULL
 +kstrtouint_from_user_10536 kstrtouint_from_user 2 10536 NULL nohasharray
 +snd_pcm_lib_read_10536 snd_pcm_lib_read 0-3 10536 &kstrtouint_from_user_10536
 +ext4_write_begin_10576 ext4_write_begin 3-4 10576 NULL
@@ -115906,16 +118142,14 @@ index 0000000..386792a
 +supply_map_read_file_10608 supply_map_read_file 3 10608 NULL
 +ima_show_htable_violations_10619 ima_show_htable_violations 3 10619 NULL
 +fq_alloc_node_10633 fq_alloc_node 1 10633 NULL
-+nfs_idmap_lookup_id_10660 nfs_idmap_lookup_id 2 10660 NULL nohasharray
-+ubi_io_write_vid_hdr_10660 ubi_io_write_vid_hdr 0 10660 &nfs_idmap_lookup_id_10660
++nfs_idmap_lookup_id_10660 nfs_idmap_lookup_id 2 10660 NULL
 +efx_max_tx_len_10662 efx_max_tx_len 0-2 10662 NULL
 +parport_write_10669 parport_write 0 10669 NULL
 +edge_write_10692 edge_write 4 10692 NULL
-+ubi_wl_get_peb_10699 ubi_wl_get_peb 0 10699 NULL
 +selinux_inode_setxattr_10708 selinux_inode_setxattr 4 10708 NULL nohasharray
 +inl_10708 inl 0 10708 &selinux_inode_setxattr_10708
-+shash_async_setkey_10720 shash_async_setkey 3 10720 NULL nohasharray
-+pvr2_ioread_read_10720 pvr2_ioread_read 3 10720 &shash_async_setkey_10720
++pvr2_ioread_read_10720 pvr2_ioread_read 3 10720 NULL nohasharray
++shash_async_setkey_10720 shash_async_setkey 3 10720 &pvr2_ioread_read_10720
 +spi_sync_10731 spi_sync 0 10731 NULL
 +sctp_getsockopt_maxseg_10737 sctp_getsockopt_maxseg 2 10737 NULL nohasharray
 +apu_get_register_10737 apu_get_register 0 10737 &sctp_getsockopt_maxseg_10737
@@ -115926,6 +118160,7 @@ index 0000000..386792a
 +__qp_memcpy_to_queue_10779 __qp_memcpy_to_queue 2-4 10779 NULL
 +diva_set_trace_filter_10820 diva_set_trace_filter 0-1 10820 NULL
 +lbs_sleepparams_read_10840 lbs_sleepparams_read 3 10840 NULL
++ext4_direct_IO_10843 ext4_direct_IO 4 10843 NULL
 +ida_get_new_above_10853 ida_get_new_above 0 10853 NULL
 +fuse_conn_max_background_read_10855 fuse_conn_max_background_read 3 10855 NULL
 +snd_pcm_oss_write1_10872 snd_pcm_oss_write1 3 10872 NULL
@@ -115942,25 +118177,28 @@ index 0000000..386792a
 +xfrm_hash_alloc_10997 xfrm_hash_alloc 1 10997 NULL
 +rx_filter_accum_arp_pend_requests_read_11003 rx_filter_accum_arp_pend_requests_read 3 11003 NULL
 +SetLineNumber_11023 SetLineNumber 0 11023 NULL
-+pci_msi_vec_count_11046 pci_msi_vec_count 0 11046 NULL
++nouveau_gpio_create__11048 nouveau_gpio_create_ 4 11048 NULL
 +tda10048_writeregbulk_11050 tda10048_writeregbulk 4 11050 NULL
-+qlcnic_83xx_calculate_msix_vector_11063 qlcnic_83xx_calculate_msix_vector 0 11063 NULL nohasharray
-+insert_inline_extent_backref_11063 insert_inline_extent_backref 8 11063 &qlcnic_83xx_calculate_msix_vector_11063
++insert_inline_extent_backref_11063 insert_inline_extent_backref 8 11063 NULL nohasharray
++qlcnic_83xx_calculate_msix_vector_11063 qlcnic_83xx_calculate_msix_vector 0 11063 &insert_inline_extent_backref_11063
++xfs_collapse_file_space_11075 xfs_collapse_file_space 2-3 11075 NULL
 +tcp_send_mss_11079 tcp_send_mss 0 11079 NULL
-+snd_pcm_delay_11081 snd_pcm_delay 0 11081 NULL
 +count_argc_11083 count_argc 0 11083 NULL
 +kvm_write_guest_cached_11106 kvm_write_guest_cached 4 11106 NULL
 +tw_change_queue_depth_11116 tw_change_queue_depth 2 11116 NULL
++tc90522_master_xfer_11119 tc90522_master_xfer 3 11119 NULL
 +page_offset_11120 page_offset 0 11120 NULL
-+cea_db_payload_len_11124 cea_db_payload_len 0 11124 NULL nohasharray
-+tracing_buffers_read_11124 tracing_buffers_read 3 11124 &cea_db_payload_len_11124
++tracing_buffers_read_11124 tracing_buffers_read 3 11124 NULL
 +alloc_alien_cache_11127 alloc_alien_cache 2 11127 NULL
 +snd_gf1_pcm_playback_silence_11172 snd_gf1_pcm_playback_silence 3-4 11172 NULL
++copy_from_iter_iovec_11196 copy_from_iter_iovec 2 11196 NULL
 +il_dbgfs_rx_queue_read_11221 il_dbgfs_rx_queue_read 3 11221 NULL
 +comedi_alloc_spriv_11234 comedi_alloc_spriv 2 11234 NULL
 +of_irq_count_11253 of_irq_count 0 11253 NULL
 +hugetlbfs_read_11268 hugetlbfs_read 3 11268 NULL
 +ath6kl_power_params_write_11274 ath6kl_power_params_write 3 11274 NULL
++SYSC_getrandom_11294 SYSC_getrandom 2 11294 NULL
++tipc_msg_build_11304 tipc_msg_build 3-4-5 11304 NULL
 +__proc_daemon_file_11305 __proc_daemon_file 5 11305 NULL
 +ext4_xattr_check_names_11314 ext4_xattr_check_names 0 11314 NULL
 +bcache_dev_sectors_dirty_add_11315 bcache_dev_sectors_dirty_add 3-4 11315 NULL
@@ -115987,13 +118225,11 @@ index 0000000..386792a
 +adis16480_show_firmware_revision_11417 adis16480_show_firmware_revision 3 11417 NULL
 +trace_options_read_11419 trace_options_read 3 11419 NULL
 +i40e_dbg_command_write_11421 i40e_dbg_command_write 3 11421 NULL
-+xd_read_multiple_pages_11422 xd_read_multiple_pages 5-4 11422 NULL
 +bttv_read_11432 bttv_read 3 11432 NULL
 +create_zero_mask_11453 create_zero_mask 0-1 11453 NULL
-+do_blockdev_direct_IO_11455 do_blockdev_direct_IO 0-6 11455 NULL
++ufshcd_change_queue_depth_11477 ufshcd_change_queue_depth 2 11477 NULL
 +sca3000_read_first_n_hw_rb_11479 sca3000_read_first_n_hw_rb 2 11479 NULL nohasharray
 +pci_set_power_state_11479 pci_set_power_state 0 11479 &sca3000_read_first_n_hw_rb_11479
-+xfs_file_buffered_aio_write_11492 xfs_file_buffered_aio_write 4 11492 NULL
 +sd_do_mode_sense_11507 sd_do_mode_sense 5 11507 NULL
 +kmem_zalloc_11510 kmem_zalloc 1 11510 NULL
 +ll_direct_IO_26_seg_11518 ll_direct_IO_26_seg 0 11518 NULL
@@ -116008,8 +118244,9 @@ index 0000000..386792a
 +SYSC_mq_timedsend_11607 SYSC_mq_timedsend 3 11607 NULL
 +C_SYSC_migrate_pages_11618 C_SYSC_migrate_pages 2 11618 NULL
 +sisusb_send_bridge_packet_11649 sisusb_send_bridge_packet 2 11649 NULL
-+nla_total_size_11658 nla_total_size 1-0 11658 NULL
-+slab_ksize_11664 slab_ksize 0 11664 NULL
++nla_total_size_11658 nla_total_size 0-1 11658 NULL
++srpc_create_client_rpc_11664 srpc_create_client_rpc 3 11664 NULL nohasharray
++slab_ksize_11664 slab_ksize 0 11664 &srpc_create_client_rpc_11664
 +ide_queue_pc_tail_11673 ide_queue_pc_tail 5 11673 NULL
 +compat_SyS_msgsnd_11675 compat_SyS_msgsnd 3 11675 NULL
 +btrfs_alloc_delayed_item_11678 btrfs_alloc_delayed_item 1 11678 NULL
@@ -116025,19 +118262,23 @@ index 0000000..386792a
 +ps_pspoll_timeouts_read_11776 ps_pspoll_timeouts_read 3 11776 NULL
 +btrfs_key_blockptr_11786 btrfs_key_blockptr 0 11786 NULL
 +pcpu_fc_alloc_11818 pcpu_fc_alloc 2 11818 NULL
++umc_device_register_11824 umc_device_register 0 11824 NULL
 +zerocopy_sg_from_iovec_11828 zerocopy_sg_from_iovec 3 11828 NULL
 +sctp_setsockopt_maxseg_11829 sctp_setsockopt_maxseg 3 11829 NULL
 +rts51x_read_status_11830 rts51x_read_status 4 11830 NULL
 +unix_stream_connect_11844 unix_stream_connect 3 11844 NULL
 +pci_enable_msix_range_11852 pci_enable_msix_range 0-4 11852 NULL
 +ecryptfs_copy_filename_11868 ecryptfs_copy_filename 4 11868 NULL
++l2cap_chan_send_11878 l2cap_chan_send 3 11878 NULL
 +ieee80211_rx_bss_info_11887 ieee80211_rx_bss_info 3 11887 NULL
 +mdc_rename_11899 mdc_rename 4-6 11899 NULL
 +xstateregs_get_11906 xstateregs_get 4 11906 NULL
 +ti_write_11916 ti_write 4 11916 NULL
 +fs_devrw_entry_11924 fs_devrw_entry 3 11924 NULL
++bitmap_remap_11929 bitmap_remap 5 11929 NULL
 +atomic_sub_return_11939 atomic_sub_return 0-1 11939 NULL
 +r1_sync_page_io_11963 r1_sync_page_io 3 11963 NULL
++f1x_swap_interleaved_region_11970 f1x_swap_interleaved_region 0-2 11970 NULL
 +read_and_add_raw_conns_11987 read_and_add_raw_conns 0 11987 NULL
 +ftdi_elan_total_command_size_12045 ftdi_elan_total_command_size 0 12045 NULL
 +ieee80211_if_read_user_power_level_12050 ieee80211_if_read_user_power_level 3 12050 NULL
@@ -116051,7 +118292,6 @@ index 0000000..386792a
 +xfs_handle_to_dentry_12135 xfs_handle_to_dentry 3 12135 NULL
 +rawv6_seticmpfilter_12137 rawv6_seticmpfilter 5 12137 NULL
 +rawsock_recvmsg_12144 rawsock_recvmsg 4 12144 NULL
-+get_idx_gc_leb_12148 get_idx_gc_leb 0 12148 NULL
 +btmrvl_sdio_host_to_card_12152 btmrvl_sdio_host_to_card 3 12152 NULL
 +vmbus_open_12154 vmbus_open 2-3 12154 NULL
 +fnic_reset_stats_write_12177 fnic_reset_stats_write 3 12177 NULL
@@ -116067,26 +118307,28 @@ index 0000000..386792a
 +ib_uverbs_unmarshall_recv_12251 ib_uverbs_unmarshall_recv 5 12251 NULL
 +shash_compat_setkey_12267 shash_compat_setkey 3 12267 NULL
 +add_sctp_bind_addr_12269 add_sctp_bind_addr 3 12269 NULL
-+SYSC_vm86_12279 SYSC_vm86 2 12279 NULL
 +note_last_dentry_12285 note_last_dentry 3 12285 NULL
 +roundup_to_multiple_of_64_12288 roundup_to_multiple_of_64 0-1 12288 NULL nohasharray
 +il_dbgfs_nvm_read_12288 il_dbgfs_nvm_read 3 12288 &roundup_to_multiple_of_64_12288
 +bt_sock_recvmsg_12316 bt_sock_recvmsg 4 12316 NULL
 +usnic_transport_sock_to_str_12322 usnic_transport_sock_to_str 2-0 12322 NULL
++ufshcd_copy_query_response_12324 ufshcd_copy_query_response 0 12324 NULL
 +pcbit_writecmd_12332 pcbit_writecmd 2 12332 NULL
 +mptctl_ioctl_12355 mptctl_ioctl 2 12355 NULL
 +__nf_ct_ext_add_length_12364 __nf_ct_ext_add_length 3 12364 NULL
 +xfs_iext_inline_to_direct_12384 xfs_iext_inline_to_direct 2 12384 NULL
 +write_file_dump_12391 write_file_dump 3 12391 NULL nohasharray
-+populate_dir_12391 populate_dir 0 12391 &write_file_dump_12391
++btrfs_file_extent_ram_bytes_12391 btrfs_file_extent_ram_bytes 0 12391 &write_file_dump_12391 nohasharray
++populate_dir_12391 populate_dir 0 12391 &btrfs_file_extent_ram_bytes_12391
 +hbucket_elem_add_12416 hbucket_elem_add 3 12416 NULL
 +ieee80211_if_read_num_mcast_sta_12419 ieee80211_if_read_num_mcast_sta 3 12419 NULL
-+cfs_array_alloc_12441 cfs_array_alloc 2 12441 NULL
++cfs_array_alloc_12441 cfs_array_alloc 1-2 12441 NULL
 +skb_do_copy_data_nocache_12465 skb_do_copy_data_nocache 5 12465 NULL
 +x25_sendmsg_12487 x25_sendmsg 4 12487 NULL
 +fnic_trace_ctrl_read_12497 fnic_trace_ctrl_read 3 12497 NULL
++__ceph_osdc_start_request_12502 __ceph_osdc_start_request 0 12502 NULL
 +qib_alloc_fast_reg_mr_12526 qib_alloc_fast_reg_mr 2 12526 NULL
-+write_inode_now_12565 write_inode_now 0 12565 NULL
++nvkm_event_init_12565 nvkm_event_init 3-2 12565 NULL
 +hvc_alloc_12579 hvc_alloc 4 12579 NULL
 +pcpu_extend_area_map_12589 pcpu_extend_area_map 2 12589 NULL
 +_iwl_dbgfs_prph_reg_write_12597 _iwl_dbgfs_prph_reg_write 3 12597 NULL
@@ -116099,6 +118341,7 @@ index 0000000..386792a
 +nr_recvmsg_12649 nr_recvmsg 4 12649 NULL
 +rtw_android_get_link_speed_12655 rtw_android_get_link_speed 0 12655 NULL
 +ocfs2_read_block_12659 ocfs2_read_block 0 12659 NULL
++lustre_pack_request_v2_12665 lustre_pack_request_v2 2 12665 NULL
 +sel_read_class_12669 sel_read_class 3 12669 NULL nohasharray
 +sparse_mem_maps_populate_node_12669 sparse_mem_maps_populate_node 4 12669 &sel_read_class_12669
 +ext4_writepage_trans_blocks_12674 ext4_writepage_trans_blocks 0 12674 NULL
@@ -116109,7 +118352,7 @@ index 0000000..386792a
 +__mei_cl_async_send_12737 __mei_cl_async_send 3 12737 NULL
 +ieee80211_if_read_dot11MeshMaxRetries_12756 ieee80211_if_read_dot11MeshMaxRetries 3 12756 NULL
 +listxattr_12769 listxattr 3 12769 NULL
-+sctp_ssnmap_init_12772 sctp_ssnmap_init 3-2 12772 NULL
++sctp_ssnmap_init_12772 sctp_ssnmap_init 2-3 12772 NULL
 +scsi_adjust_queue_depth_12802 scsi_adjust_queue_depth 3 12802 NULL
 +xfs_inumbers_fmt_12817 xfs_inumbers_fmt 3 12817 NULL
 +SyS_add_key_12834 SyS_add_key 4 12834 NULL
@@ -116125,16 +118368,15 @@ index 0000000..386792a
 +raid56_parity_recover_12987 raid56_parity_recover 5 12987 NULL
 +TransmitTcb_12989 TransmitTcb 4 12989 NULL
 +sk_peek_offset_12991 sk_peek_offset 0 12991 NULL
-+__btrfs_direct_write_13007 __btrfs_direct_write 4-0 13007 NULL
 +bset_prev_bytes_13020 bset_prev_bytes 0 13020 NULL
 +subsystem_filter_write_13022 subsystem_filter_write 3 13022 NULL
-+generic_segment_checks_13041 generic_segment_checks 0 13041 NULL
 +ocfs2_write_begin_13045 ocfs2_write_begin 3-4 13045 NULL
 +__dn_setsockopt_13060 __dn_setsockopt 5 13060 NULL nohasharray
 +ptlrpc_lprocfs_threads_min_seq_write_13060 ptlrpc_lprocfs_threads_min_seq_write 3 13060 &__dn_setsockopt_13060
-+biovec_create_pool_13079 biovec_create_pool 2 13079 NULL
++ufshcd_compose_upiu_13076 ufshcd_compose_upiu 0 13076 NULL
 +xattr_getsecurity_13090 xattr_getsecurity 0 13090 NULL
 +ttm_dma_pool_alloc_new_pages_13105 ttm_dma_pool_alloc_new_pages 3 13105 NULL
++SyS_msgrcv_13109 SyS_msgrcv 3 13109 NULL
 +snd_rme96_playback_copy_13111 snd_rme96_playback_copy 5 13111 NULL
 +bfad_debugfs_read_13119 bfad_debugfs_read 3 13119 NULL
 +blk_update_request_13146 blk_update_request 3 13146 NULL
@@ -116154,12 +118396,15 @@ index 0000000..386792a
 +bio_integrity_trim_13259 bio_integrity_trim 3-2 13259 NULL
 +simple_attr_write_13260 simple_attr_write 3 13260 NULL
 +pmcraid_notify_aen_13274 pmcraid_notify_aen 3 13274 NULL
++nvkm_ltc_create__13275 nvkm_ltc_create_ 4 13275 NULL
 +il4965_stats_flag_13281 il4965_stats_flag 0-3 13281 NULL
 +lpfc_idiag_mbxacc_get_setup_13282 lpfc_idiag_mbxacc_get_setup 0 13282 NULL
++nvkm_i2c_pad_create__13292 nvkm_i2c_pad_create_ 5 13292 NULL
 +sd_major_13294 sd_major 0-1 13294 NULL
 +read_file_phy_err_13318 read_file_phy_err 3 13318 NULL
 +kvm_read_nested_guest_page_13337 kvm_read_nested_guest_page 5 13337 NULL
 +round_event_name_len_13348 round_event_name_len 0 13348 NULL
++hscx_empty_fifo_13360 hscx_empty_fifo 2 13360 NULL
 +iso_sched_alloc_13377 iso_sched_alloc 1 13377 NULL nohasharray
 +wep_key_not_found_read_13377 wep_key_not_found_read 3 13377 &iso_sched_alloc_13377
 +ext4_meta_trans_blocks_13380 ext4_meta_trans_blocks 0-3-2 13380 NULL
@@ -116169,16 +118414,15 @@ index 0000000..386792a
 +sctp_setsockopt_peer_primary_addr_13440 sctp_setsockopt_peer_primary_addr 3 13440 NULL
 +ath6kl_cfg80211_connect_event_13443 ath6kl_cfg80211_connect_event 7-8-9 13443 NULL
 +sb_init_dio_done_wq_13482 sb_init_dio_done_wq 0 13482 NULL
-+data_read_13494 data_read 3 13494 NULL
++data_read_13494 data_read 3 13494 NULL nohasharray
++ext_prop_data_store_13494 ext_prop_data_store 3 13494 &data_read_13494
++ocfs2_align_bytes_to_blocks_13512 ocfs2_align_bytes_to_blocks 0-2 13512 NULL
 +core_status_13515 core_status 4 13515 NULL
 +smk_write_mapped_13519 smk_write_mapped 3 13519 NULL
 +bm_init_13529 bm_init 2 13529 NULL
-+request_any_context_irq_13530 request_any_context_irq 0 13530 NULL
 +llcp_sock_recvmsg_13556 llcp_sock_recvmsg 4 13556 NULL
-+SyS_vm86_13557 SyS_vm86 2 13557 NULL
 +ieee80211_if_read_ap_power_level_13558 ieee80211_if_read_ap_power_level 3 13558 NULL
 +hash_net4_expire_13559 hash_net4_expire 4 13559 NULL
-+ubifs_get_idx_gc_leb_13566 ubifs_get_idx_gc_leb 0 13566 NULL
 +read_file_antenna_13574 read_file_antenna 3 13574 NULL
 +cache_write_13589 cache_write 3 13589 NULL
 +Rd_Indx_13602 Rd_Indx 3-2 13602 NULL
@@ -116187,16 +118431,19 @@ index 0000000..386792a
 +packet_snd_13634 packet_snd 3 13634 NULL
 +blk_msg_write_13655 blk_msg_write 3 13655 NULL
 +cache_downcall_13666 cache_downcall 3 13666 NULL
-+ext3_xattr_list_entries_13682 ext3_xattr_list_entries 0 13682 NULL
++usb_get_string_13693 usb_get_string 0 13693 NULL
 +fw_iso_buffer_alloc_13704 fw_iso_buffer_alloc 2 13704 NULL
 +audit_unpack_string_13748 audit_unpack_string 3 13748 NULL
++udf_direct_IO_13765 udf_direct_IO 4 13765 NULL
 +ieee802154_alloc_device_13767 ieee802154_alloc_device 1 13767 NULL
 +fb_sys_read_13778 fb_sys_read 3 13778 NULL
++alloc_indirect_13783 alloc_indirect 1 13783 NULL
 +ath6kl_mgmt_powersave_ap_13791 ath6kl_mgmt_powersave_ap 6 13791 NULL
 +random_read_13815 random_read 3 13815 NULL
 +mutex_lock_interruptible_nested_13817 mutex_lock_interruptible_nested 0 13817 NULL
 +hsi_register_board_info_13820 hsi_register_board_info 2 13820 NULL
 +___mei_cl_send_13821 ___mei_cl_send 3 13821 NULL
++qce_ahash_hmac_setkey_13837 qce_ahash_hmac_setkey 3 13837 NULL
 +enc_pools_insert_13849 enc_pools_insert 3 13849 NULL
 +evdev_ioctl_compat_13851 evdev_ioctl_compat 2 13851 NULL
 +compat_ip_setsockopt_13870 compat_ip_setsockopt 5 13870 NULL
@@ -116208,8 +118455,7 @@ index 0000000..386792a
 +ocfs2_xa_value_truncate_13940 ocfs2_xa_value_truncate 2 13940 &ieee80211_if_read_dot11MeshForwarding_13940
 +iwl_dbgfs_protection_mode_read_13943 iwl_dbgfs_protection_mode_read 3 13943 NULL
 +ieee80211_if_read_min_discovery_timeout_13946 ieee80211_if_read_min_discovery_timeout 3 13946 NULL
-+lpfc_idiag_queacc_read_13950 lpfc_idiag_queacc_read 3 13950 NULL nohasharray
-+pagecache_write_end_13950 pagecache_write_end 0 13950 &lpfc_idiag_queacc_read_13950
++lpfc_idiag_queacc_read_13950 lpfc_idiag_queacc_read 3 13950 NULL
 +osc_grant_shrink_interval_seq_write_13952 osc_grant_shrink_interval_seq_write 3 13952 NULL
 +snd_pcm_plug_slave_size_13967 snd_pcm_plug_slave_size 0-2 13967 NULL
 +qcam_read_13977 qcam_read 3 13977 NULL
@@ -116221,7 +118467,6 @@ index 0000000..386792a
 +iscsi_create_flashnode_conn_14022 iscsi_create_flashnode_conn 4 14022 NULL
 +pci_add_ext_cap_save_buffer_14032 pci_add_ext_cap_save_buffer 3 14032 NULL
 +dvb_usercopy_14036 dvb_usercopy 2 14036 NULL
-+read_def_modal_eeprom_14041 read_def_modal_eeprom 3 14041 NULL
 +ieee80211_if_fmt_aid_14055 ieee80211_if_fmt_aid 3 14055 NULL
 +ovs_nla_alloc_flow_actions_14056 ovs_nla_alloc_flow_actions 1 14056 NULL
 +sta_agg_status_read_14058 sta_agg_status_read 3 14058 NULL
@@ -116243,9 +118488,9 @@ index 0000000..386792a
 +btrfs_token_file_extent_ram_bytes_14247 btrfs_token_file_extent_ram_bytes 0 14247 NULL
 +ath6kl_connect_event_14267 ath6kl_connect_event 7-8-9 14267 NULL
 +rr_status_14293 rr_status 5 14293 NULL
-+read_default_ldt_14302 read_default_ldt 2 14302 NULL
++read_default_ldt_14302 read_default_ldt 2 14302 NULL nohasharray
++lustre_pack_reply_flags_14302 lustre_pack_reply_flags 2 14302 &read_default_ldt_14302
 +oo_objects_14319 oo_objects 0 14319 NULL
-+ll_get_user_pages_14328 ll_get_user_pages 3-2-0 14328 NULL
 +p9_client_zc_rpc_14345 p9_client_zc_rpc 7 14345 NULL
 +alloc_tx_struct_14349 alloc_tx_struct 1 14349 NULL
 +hash_ipportnet4_expire_14354 hash_ipportnet4_expire 4 14354 NULL
@@ -116260,11 +118505,10 @@ index 0000000..386792a
 +lmv_user_md_size_14456 lmv_user_md_size 0-1 14456 NULL
 +snd_emu10k1_proc_spdif_status_14457 snd_emu10k1_proc_spdif_status 4-5 14457 NULL
 +ath10k_write_htt_stats_mask_14458 ath10k_write_htt_stats_mask 3 14458 NULL
-+lustre_msg_size_v2_14470 lustre_msg_size_v2 0 14470 NULL
++lustre_msg_size_v2_14470 lustre_msg_size_v2 0-1 14470 NULL
 +dma_transfer_size_14473 dma_transfer_size 0 14473 NULL
 +udplite_getfrag_14479 udplite_getfrag 3-4 14479 NULL
 +ieee80211_if_read_dot11MeshGateAnnouncementProtocol_14486 ieee80211_if_read_dot11MeshGateAnnouncementProtocol 3 14486 NULL
-+split_state_14491 split_state 0 14491 NULL
 +ocfs2_debug_read_14507 ocfs2_debug_read 3 14507 NULL
 +dataflash_read_user_otp_14536 dataflash_read_user_otp 3-2 14536 NULL nohasharray
 +ep0_write_14536 ep0_write 3 14536 &dataflash_read_user_otp_14536
@@ -116273,6 +118517,7 @@ index 0000000..386792a
 +SyS_setdomainname_14569 SyS_setdomainname 2 14569 NULL
 +idmap_pipe_downcall_14591 idmap_pipe_downcall 3 14591 NULL
 +ceph_osdc_alloc_request_14597 ceph_osdc_alloc_request 3 14597 NULL
++ufshcd_compose_dev_cmd_14626 ufshcd_compose_dev_cmd 0 14626 NULL
 +dbJoin_14644 dbJoin 0 14644 NULL
 +profile_replace_14652 profile_replace 3 14652 NULL
 +usnic_vnic_dump_14662 usnic_vnic_dump 3 14662 NULL
@@ -116294,18 +118539,20 @@ index 0000000..386792a
 +sta_dev_read_14782 sta_dev_read 3 14782 NULL
 +keys_proc_write_14792 keys_proc_write 3 14792 NULL
 +ext4_kvmalloc_14796 ext4_kvmalloc 1 14796 NULL
-+__kfifo_in_14797 __kfifo_in 3-0 14797 NULL
++__kfifo_in_14797 __kfifo_in 3-0 14797 NULL nohasharray
++ttm_page_pool_free_14797 ttm_page_pool_free 2-0 14797 &__kfifo_in_14797
 +hpet_readl_14801 hpet_readl 0 14801 NULL nohasharray
 +snd_als300_gcr_read_14801 snd_als300_gcr_read 0 14801 &hpet_readl_14801
 +do_tune_cpucache_14828 do_tune_cpucache 2 14828 NULL
 +mrp_attr_create_14853 mrp_attr_create 3 14853 NULL
 +lcd_write_14857 lcd_write 3 14857 NULL
 +get_user_cpu_mask_14861 get_user_cpu_mask 2 14861 NULL
-+gmux_index_read8_14890 gmux_index_read8 0 14890 NULL
 +acpi_os_allocate_14892 acpi_os_allocate 1 14892 NULL
 +SYSC_readv_14901 SYSC_readv 3 14901 NULL
++netlbl_catmap_walk_14902 netlbl_catmap_walk 0-2 14902 NULL
 +__arch_hweight64_14923 __arch_hweight64 0 14923 NULL nohasharray
-+qp_memcpy_to_queue_iov_14923 qp_memcpy_to_queue_iov 5-2 14923 &__arch_hweight64_14923
++qp_memcpy_to_queue_iov_14923 qp_memcpy_to_queue_iov 5-2 14923 &__arch_hweight64_14923 nohasharray
++ptlrpc_prep_req_pool_14923 ptlrpc_prep_req_pool 4 14923 &qp_memcpy_to_queue_iov_14923
 +ocfs2_expand_nonsparse_inode_14936 ocfs2_expand_nonsparse_inode 3-4 14936 NULL
 +queue_cnt_14951 queue_cnt 0 14951 NULL
 +unix_dgram_recvmsg_14952 unix_dgram_recvmsg 4 14952 NULL
@@ -116313,49 +118560,47 @@ index 0000000..386792a
 +mce_flush_rx_buffer_14976 mce_flush_rx_buffer 2 14976 NULL
 +setkey_14987 setkey 3 14987 NULL nohasharray
 +gpio_twl4030_write_14987 gpio_twl4030_write 1 14987 &setkey_14987
++sctp_setsockopt_default_sndinfo_15011 sctp_setsockopt_default_sndinfo 3 15011 NULL
 +blk_integrity_tuple_size_15027 blk_integrity_tuple_size 0 15027 NULL
 +read_file_node_aggr_15040 read_file_node_aggr 3 15040 NULL
 +cld_pipe_downcall_15058 cld_pipe_downcall 3 15058 NULL
 +ieee80211_if_read_uapsd_max_sp_len_15067 ieee80211_if_read_uapsd_max_sp_len 3 15067 NULL
 +nfs4_write_cached_acl_15070 nfs4_write_cached_acl 4 15070 NULL
-+ntfs_copy_from_user_15072 ntfs_copy_from_user 0-5-3 15072 NULL
++ntfs_copy_from_user_15072 ntfs_copy_from_user 3-5-0 15072 NULL
 +pppoe_recvmsg_15073 pppoe_recvmsg 4 15073 NULL
 +smscore_load_firmware_family2_15086 smscore_load_firmware_family2 3 15086 NULL
-+btrfs_readpage_15094 btrfs_readpage 0 15094 NULL
 +compat_SyS_pwritev_15118 compat_SyS_pwritev 3 15118 NULL
 +hex_dump_to_buffer_15121 hex_dump_to_buffer 6 15121 NULL
 +start_port_15124 start_port 0 15124 NULL
 +ipwireless_ppp_mru_15153 ipwireless_ppp_mru 0 15153 NULL
-+self_check_not_bad_15175 self_check_not_bad 0 15175 NULL
 +SYSC_setdomainname_15180 SYSC_setdomainname 2 15180 NULL
 +iscsi_create_endpoint_15193 iscsi_create_endpoint 1 15193 NULL
 +mtt_alloc_res_15211 mtt_alloc_res 5 15211 NULL
 +bfad_debugfs_write_regrd_15218 bfad_debugfs_write_regrd 3 15218 NULL
 +iwl_dbgfs_sram_write_15239 iwl_dbgfs_sram_write 3 15239 NULL
 +il_dbgfs_rx_stats_read_15243 il_dbgfs_rx_stats_read 3 15243 NULL
++wacom_led_putimage_15264 wacom_led_putimage 4 15264 NULL
 +simple_strtol_15273 simple_strtol 0 15273 NULL
 +fw_realloc_buffer_15280 fw_realloc_buffer 2 15280 NULL
 +kovaplus_sysfs_read_15337 kovaplus_sysfs_read 6 15337 NULL
 +ioread16_15342 ioread16 0 15342 NULL
 +ept_prefetch_gpte_15348 ept_prefetch_gpte 4 15348 NULL
++blkdev_readpages_15357 blkdev_readpages 4 15357 NULL
 +acpi_ut_create_string_object_15360 acpi_ut_create_string_object 1 15360 NULL
-+ext4_direct_IO_15369 ext4_direct_IO 4 15369 NULL
 +graph_depth_read_15371 graph_depth_read 3 15371 NULL
 +fq_codel_zalloc_15378 fq_codel_zalloc 1 15378 NULL
 +alloc_fddidev_15382 alloc_fddidev 1 15382 NULL
 +pipeline_csum_to_rx_xfer_swi_read_15403 pipeline_csum_to_rx_xfer_swi_read 3 15403 NULL
 +get_modalias_15406 get_modalias 2 15406 NULL
-+blockdev_direct_IO_15408 blockdev_direct_IO 5 15408 NULL
 +__videobuf_copy_to_user_15423 __videobuf_copy_to_user 4-0 15423 NULL
-+rtw_cfg80211_rx_action_p2p_15432 rtw_cfg80211_rx_action_p2p 3 15432 NULL
 +tcp_mtu_to_mss_15438 tcp_mtu_to_mss 2-0 15438 NULL
 +hpsa_change_queue_depth_15449 hpsa_change_queue_depth 2 15449 NULL
-+insert_old_idx_znode_15500 insert_old_idx_znode 0 15500 NULL
++memweight_15450 memweight 2 15450 NULL
++__clone_and_map_data_bio_15498 __clone_and_map_data_bio 3 15498 NULL
 +zd_chip_is_zd1211b_15518 zd_chip_is_zd1211b 0 15518 NULL
 +ifx_spi_write_15531 ifx_spi_write 3 15531 NULL
 +p9_check_zc_errors_15534 p9_check_zc_errors 4 15534 NULL
 +xfrm_state_mtu_15548 xfrm_state_mtu 0-2 15548 NULL
-+snd_pcm_channel_info_15572 snd_pcm_channel_info 0 15572 NULL
 +persistent_status_15574 persistent_status 4 15574 NULL
 +bnx2fc_process_unsol_compl_15576 bnx2fc_process_unsol_compl 2 15576 NULL
 +vme_user_write_15587 vme_user_write 3 15587 NULL
@@ -116366,7 +118611,6 @@ index 0000000..386792a
 +sk_memory_allocated_add_15642 sk_memory_allocated_add 2 15642 &pipeline_hs_tx_stat_fifo_int_read_15642
 +joydev_handle_JSIOCSBTNMAP_15643 joydev_handle_JSIOCSBTNMAP 3 15643 NULL
 +fs_path_add_15648 fs_path_add 3 15648 NULL
-+__do_readpage_15652 __do_readpage 0 15652 NULL
 +xsd_read_15653 xsd_read 3 15653 NULL
 +unix_bind_15668 unix_bind 3 15668 NULL
 +dm_read_15674 dm_read 3 15674 NULL nohasharray
@@ -116381,21 +118625,23 @@ index 0000000..386792a
 +afs_proc_rootcell_write_15822 afs_proc_rootcell_write 3 15822 NULL
 +table_size_15851 table_size 0-1-2 15851 NULL
 +write_file_tx99_15856 write_file_tx99 3 15856 NULL
-+media_entity_init_15870 media_entity_init 2-4 15870 NULL nohasharray
-+ubi_io_write_15870 ubi_io_write 0 15870 &media_entity_init_15870
++media_entity_init_15870 media_entity_init 2-4 15870 NULL
 +__mptctl_ioctl_15875 __mptctl_ioctl 2 15875 NULL
 +parse_audio_stream_data_15937 parse_audio_stream_data 3 15937 NULL
 +power_read_15939 power_read 3 15939 NULL
 +lpfc_idiag_drbacc_read_15948 lpfc_idiag_drbacc_read 3 15948 NULL
 +snd_pcm_lib_read_transfer_15952 snd_pcm_lib_read_transfer 5-2-4 15952 NULL
 +memblock_virt_alloc_try_nid_15954 memblock_virt_alloc_try_nid 1 15954 NULL
++smk_read_ptrace_15974 smk_read_ptrace 3 15974 NULL
 +viafb_vt1636_proc_write_16018 viafb_vt1636_proc_write 3 16018 NULL
 +dccp_recvmsg_16056 dccp_recvmsg 4 16056 NULL
 +read_file_spectral_period_16057 read_file_spectral_period 3 16057 NULL
++SYSC_kexec_file_load_16058 SYSC_kexec_file_load 3 16058 NULL
 +si5351_msynth_params_address_16062 si5351_msynth_params_address 0-1 16062 NULL
 +isr_tx_exch_complete_read_16103 isr_tx_exch_complete_read 3 16103 NULL
 +isr_hw_pm_mode_changes_read_16110 isr_hw_pm_mode_changes_read 3 16110 NULL nohasharray
 +dma_tx_requested_read_16110 dma_tx_requested_read 3 16110 &isr_hw_pm_mode_changes_read_16110
++udelay_test_write_16111 udelay_test_write 3 16111 NULL
 +snd_dma_pointer_16126 snd_dma_pointer 0-2 16126 NULL
 +fsm_init_16134 fsm_init 2 16134 NULL
 +ext4_xattr_block_get_16148 ext4_xattr_block_get 0 16148 NULL
@@ -116428,11 +118674,12 @@ index 0000000..386792a
 +sysfs_create_groups_16360 sysfs_create_groups 0 16360 NULL
 +total_ps_buffered_read_16365 total_ps_buffered_read 3 16365 NULL
 +iscsi_tcp_conn_setup_16376 iscsi_tcp_conn_setup 2 16376 NULL
-+i8042_create_kbd_port_16379 i8042_create_kbd_port 0 16379 NULL
++nv50_pioc_create_16389 nv50_pioc_create 5 16389 NULL
 +ieee80211_if_read_tsf_16420 ieee80211_if_read_tsf 3 16420 NULL
 +rxrpc_server_keyring_16431 rxrpc_server_keyring 3 16431 NULL
 +__bio_add_page_16435 __bio_add_page 0-4 16435 NULL
 +cmdline_store_16442 cmdline_store 4 16442 NULL
++copy_from_user_bvec_16447 copy_from_user_bvec 0-4 16447 NULL
 +btrfs_truncate_inode_items_16452 btrfs_truncate_inode_items 4 16452 NULL
 +netlink_change_ngroups_16457 netlink_change_ngroups 2 16457 NULL
 +req_capsule_get_size_16467 req_capsule_get_size 0 16467 NULL
@@ -116442,12 +118689,12 @@ index 0000000..386792a
 +raid10_resize_16537 raid10_resize 2 16537 NULL
 +lpfc_debugfs_read_16566 lpfc_debugfs_read 3 16566 NULL
 +agp_allocate_memory_wrap_16576 agp_allocate_memory_wrap 1 16576 NULL
-+lustre_msg_hdr_size_v2_16589 lustre_msg_hdr_size_v2 0 16589 NULL
-+gmux_index_read32_16604 gmux_index_read32 0 16604 NULL
++lustre_msg_hdr_size_v2_16589 lustre_msg_hdr_size_v2 0-1 16589 NULL
 +compat_SyS_migrate_pages_16618 compat_SyS_migrate_pages 2 16618 NULL
 +rtw_set_wpa_ie_16633 rtw_set_wpa_ie 3 16633 NULL
 +btrfs_get_token_32_16651 btrfs_get_token_32 0 16651 NULL
 +__wa_populate_dto_urb_16699 __wa_populate_dto_urb 3-4 16699 NULL
++_iwl_dbgfs_bt_force_ant_write_16701 _iwl_dbgfs_bt_force_ant_write 3 16701 NULL
 +__proc_lnet_buffers_16717 __proc_lnet_buffers 5 16717 NULL
 +__copy_to_user_swizzled_16748 __copy_to_user_swizzled 3-4 16748 NULL
 +arcmsr_adjust_disk_queue_depth_16756 arcmsr_adjust_disk_queue_depth 2 16756 NULL
@@ -116465,6 +118712,7 @@ index 0000000..386792a
 +snd_gf1_mem_proc_dump_16926 snd_gf1_mem_proc_dump 5 16926 &psb_unlocked_ioctl_16926
 +_sp2d_alloc_16944 _sp2d_alloc 1-2-3 16944 NULL
 +squashfs_read_table_16945 squashfs_read_table 3 16945 NULL
++svcxdr_dupstr_16963 svcxdr_dupstr 3 16963 NULL
 +keyctl_instantiate_key_iov_16969 keyctl_instantiate_key_iov 3 16969 NULL
 +ceph_read_dir_17005 ceph_read_dir 3 17005 NULL
 +copy_counters_to_user_17027 copy_counters_to_user 5 17027 NULL
@@ -116478,16 +118726,18 @@ index 0000000..386792a
 +entry_length_17093 entry_length 0 17093 NULL
 +write_mem_17114 write_mem 3 17114 NULL
 +pvr2_hdw_state_report_17121 pvr2_hdw_state_report 3 17121 NULL
++do_blockdev_direct_IO_17143 do_blockdev_direct_IO 0-6 17143 NULL
 +nouveau_instobj_create__17144 nouveau_instobj_create_ 4 17144 NULL
 +jumpshot_write_data_17151 jumpshot_write_data 4 17151 NULL
++mxt_upload_cfg_mem_17157 mxt_upload_cfg_mem 4 17157 NULL
 +sep_read_17161 sep_read 3 17161 NULL
 +befs_nls2utf_17163 befs_nls2utf 3 17163 NULL
 +tx_tx_start_templates_read_17164 tx_tx_start_templates_read 3 17164 NULL
 +UniStrnlen_17169 UniStrnlen 0 17169 NULL
 +access_remote_vm_17189 access_remote_vm 0 17189 NULL nohasharray
 +iwl_dbgfs_txfifo_flush_write_17189 iwl_dbgfs_txfifo_flush_write 3 17189 &access_remote_vm_17189
-+iscsit_find_cmd_from_itt_or_dump_17194 iscsit_find_cmd_from_itt_or_dump 3 17194 NULL nohasharray
-+driver_state_read_17194 driver_state_read 3 17194 &iscsit_find_cmd_from_itt_or_dump_17194
++driver_state_read_17194 driver_state_read 3 17194 NULL nohasharray
++iscsit_find_cmd_from_itt_or_dump_17194 iscsit_find_cmd_from_itt_or_dump 3 17194 &driver_state_read_17194
 +sync_request_17208 sync_request 2 17208 NULL
 +dn_recvmsg_17213 dn_recvmsg 4 17213 NULL
 +lprocfs_read_frac_helper_17261 lprocfs_read_frac_helper 0 17261 NULL
@@ -116498,6 +118748,7 @@ index 0000000..386792a
 +hmac_sha256_17278 hmac_sha256 2 17278 NULL
 +neigh_hash_grow_17283 neigh_hash_grow 2 17283 NULL
 +minstrel_stats_read_17290 minstrel_stats_read 3 17290 NULL
++__ptlrpc_request_bufs_pack_17298 __ptlrpc_request_bufs_pack 4 17298 NULL
 +ieee80211_if_fmt_dot11MeshForwarding_17301 ieee80211_if_fmt_dot11MeshForwarding 3 17301 NULL
 +mb_cache_create_17307 mb_cache_create 2 17307 NULL
 +gnttab_map_frames_v2_17314 gnttab_map_frames_v2 2 17314 NULL
@@ -116505,18 +118756,21 @@ index 0000000..386792a
 +ath6kl_wmi_send_mgmt_cmd_17347 ath6kl_wmi_send_mgmt_cmd 7 17347 NULL
 +mdc_import_seq_write_17409 mdc_import_seq_write 3 17409 NULL
 +lpfc_debugfs_dif_err_write_17424 lpfc_debugfs_dif_err_write 3 17424 NULL
++copy_from_iter_17433 copy_from_iter 2 17433 NULL
 +sta_connected_time_read_17435 sta_connected_time_read 3 17435 NULL
 +libcfs_ipif_enumerate_17445 libcfs_ipif_enumerate 0 17445 NULL
 +nla_get_u32_17455 nla_get_u32 0 17455 NULL
 +__ref_totlen_17461 __ref_totlen 0 17461 NULL
 +probe_kernel_write_17481 probe_kernel_write 3 17481 NULL
 +TSS_rawhmac_17486 TSS_rawhmac 3 17486 NULL
++copy_page_from_iter_17512 copy_page_from_iter 3-0 17512 NULL
++reiserfs_direct_IO_17513 reiserfs_direct_IO 4 17513 NULL
 +lbs_highrssi_write_17515 lbs_highrssi_write 3 17515 NULL
 +qp_free_res_17541 qp_free_res 5 17541 NULL
 +__copy_to_user_17551 __copy_to_user 0-3 17551 NULL
 +copy_from_user_17559 copy_from_user 3-0 17559 NULL
-+snd_pcm_action_lock_irq_17569 snd_pcm_action_lock_irq 0 17569 NULL
 +hash_netport4_expire_17573 hash_netport4_expire 4 17573 NULL
++wil_write_file_rxon_17581 wil_write_file_rxon 3 17581 NULL
 +acpi_ut_create_package_object_17594 acpi_ut_create_package_object 1 17594 NULL
 +neigh_hash_alloc_17595 neigh_hash_alloc 1 17595 NULL
 +osst_execute_17607 osst_execute 7-6 17607 NULL
@@ -116524,16 +118778,15 @@ index 0000000..386792a
 +dma_map_page_17628 dma_map_page 0 17628 NULL
 +twl4030_set_gpio_direction_17645 twl4030_set_gpio_direction 1 17645 NULL
 +SYSC_migrate_pages_17657 SYSC_migrate_pages 2 17657 NULL
-+packet_setsockopt_17662 packet_setsockopt 5 17662 NULL nohasharray
-+ubi_io_read_data_17662 ubi_io_read_data 0 17662 &packet_setsockopt_17662
++packet_setsockopt_17662 packet_setsockopt 5 17662 NULL
 +pwr_enable_ps_read_17686 pwr_enable_ps_read 3 17686 NULL
-+filemap_fdatawait_17688 filemap_fdatawait 0 17688 NULL
 +venus_rename_17707 venus_rename 4-5 17707 NULL
 +exofs_read_lookup_dev_table_17733 exofs_read_lookup_dev_table 3 17733 NULL
 +sctpprobe_read_17741 sctpprobe_read 3 17741 NULL
-+ubifs_leb_change_17789 ubifs_leb_change 0 17789 NULL
++nv92_gpio_intr_mask_17773 nv92_gpio_intr_mask 4-3 17773 NULL
 +shrink_slab_node_17794 shrink_slab_node 3 17794 NULL
 +lpuart_copy_rx_to_tty_17801 lpuart_copy_rx_to_tty 3 17801 NULL
++_iwl_dbgfs_set_nic_temperature_write_17804 _iwl_dbgfs_set_nic_temperature_write 3 17804 NULL
 +gnet_stats_copy_app_17821 gnet_stats_copy_app 3 17821 NULL
 +cipso_v4_gentag_rbm_17836 cipso_v4_gentag_rbm 0 17836 NULL
 +em28xx_audio_ep_packet_size_17844 em28xx_audio_ep_packet_size 0 17844 NULL
@@ -116558,7 +118811,6 @@ index 0000000..386792a
 +smk_write_cipso_17989 smk_write_cipso 3 17989 NULL
 +gnttab_max_grant_frames_17993 gnttab_max_grant_frames 0 17993 NULL
 +pvr2_v4l2_read_18006 pvr2_v4l2_read 3 18006 NULL
-+cpufreq_add_dev_symlink_18028 cpufreq_add_dev_symlink 0 18028 NULL
 +o2hb_highest_node_18034 o2hb_highest_node 0 18034 NULL
 +cryptd_alloc_instance_18048 cryptd_alloc_instance 2-3 18048 NULL
 +__btrfs_drop_extents_18049 __btrfs_drop_extents 5 18049 NULL
@@ -116569,37 +118821,35 @@ index 0000000..386792a
 +SYSC_pselect6_18076 SYSC_pselect6 1 18076 NULL
 +SYSC_semtimedop_18091 SYSC_semtimedop 3 18091 NULL
 +mpi_alloc_18094 mpi_alloc 1 18094 NULL
-+hfs_direct_IO_18104 hfs_direct_IO 4 18104 NULL
 +dfs_file_read_18116 dfs_file_read 3 18116 NULL
 +svc_getnl_18120 svc_getnl 0 18120 NULL
 +paging32_gpte_to_gfn_lvl_18131 paging32_gpte_to_gfn_lvl 0-2-1 18131 NULL
 +selinux_inode_setsecurity_18148 selinux_inode_setsecurity 4 18148 NULL
-+is_idx_node_in_use_18165 is_idx_node_in_use 0 18165 NULL
++enable_ints_write_18170 enable_ints_write 3 18170 NULL
 +pccard_store_cis_18176 pccard_store_cis 6 18176 NULL
-+snd_pcm_hw_refine_user_18204 snd_pcm_hw_refine_user 0 18204 NULL
 +orinoco_add_extscan_result_18207 orinoco_add_extscan_result 3 18207 NULL
 +gsm_control_message_18209 gsm_control_message 4 18209 NULL
 +do_ipv6_setsockopt_18215 do_ipv6_setsockopt 5 18215 NULL
++fill_ext_prop_18233 fill_ext_prop 0 18233 NULL
 +gnttab_alloc_grant_references_18240 gnttab_alloc_grant_references 1 18240 NULL
 +alloc_trace_uprobe_18247 alloc_trace_uprobe 3 18247 NULL
 +rfcomm_sock_setsockopt_18254 rfcomm_sock_setsockopt 5 18254 NULL
 +qdisc_class_hash_alloc_18262 qdisc_class_hash_alloc 1 18262 NULL
 +gfs2_alloc_sort_buffer_18275 gfs2_alloc_sort_buffer 1 18275 NULL
 +alloc_ring_18278 alloc_ring 2-4 18278 NULL
-+find_dirty_idx_leb_18280 find_dirty_idx_leb 0 18280 NULL
 +bio_phys_segments_18281 bio_phys_segments 0 18281 NULL nohasharray
 +nouveau_subdev_create__18281 nouveau_subdev_create_ 7 18281 &bio_phys_segments_18281
 +ext4_readpages_18283 ext4_readpages 4 18283 NULL
 +mmc_send_bus_test_18285 mmc_send_bus_test 4 18285 NULL
 +um_idi_write_18293 um_idi_write 3 18293 NULL
 +nouveau_disp_create__18305 nouveau_disp_create_ 4-7 18305 NULL
-+vga_r_18310 vga_r 0 18310 NULL
++lustre_msg_hdr_size_18308 lustre_msg_hdr_size 2 18308 NULL
 +class_add_profile_18315 class_add_profile 1-3-5 18315 NULL
 +csio_mem_read_18319 csio_mem_read 3 18319 NULL
 +alloc_and_copy_string_18321 alloc_and_copy_string 2 18321 NULL
 +ecryptfs_send_message_18322 ecryptfs_send_message 2 18322 NULL
 +bio_integrity_advance_18324 bio_integrity_advance 2 18324 NULL
-+copy_page_to_iter_18345 copy_page_to_iter 3-0 18345 NULL
++copy_page_to_iter_18345 copy_page_to_iter 0-3 18345 NULL
 +lcd_proc_write_18351 lcd_proc_write 3 18351 NULL
 +pwr_power_save_off_read_18355 pwr_power_save_off_read 3 18355 NULL
 +SyS_process_vm_readv_18366 SyS_process_vm_readv 3-5 18366 NULL
@@ -116607,8 +118857,9 @@ index 0000000..386792a
 +qib_user_sdma_num_pages_18371 qib_user_sdma_num_pages 0 18371 NULL
 +__ceph_getxattr_18386 __ceph_getxattr 0 18386 NULL
 +ci_role_write_18388 ci_role_write 3 18388 NULL
++hdlc_empty_fifo_18397 hdlc_empty_fifo 2 18397 NULL
 +adis16136_show_serial_18402 adis16136_show_serial 3 18402 NULL
-+rtl8169_rx_fill_18416 rtl8169_rx_fill 0 18416 NULL
++nvif_device_init_18418 nvif_device_init 6 18418 NULL
 +memblock_virt_alloc_node_nopanic_18431 memblock_virt_alloc_node_nopanic 1 18431 NULL
 +iscsi_create_flashnode_sess_18433 iscsi_create_flashnode_sess 4 18433 NULL
 +snd_hda_get_connections_18437 snd_hda_get_connections 0 18437 NULL
@@ -116631,6 +118882,7 @@ index 0000000..386792a
 +slabinfo_write_18600 slabinfo_write 3 18600 &filemap_fdatawait_range_18600
 +iowarrior_write_18604 iowarrior_write 3 18604 NULL
 +from_buffer_18625 from_buffer 3 18625 NULL
++kmalloc_kernel_18641 kmalloc_kernel 1 18641 NULL
 +snd_pcm_oss_write3_18657 snd_pcm_oss_write3 0-3 18657 NULL
 +ieee80211_if_fmt_rssi_threshold_18664 ieee80211_if_fmt_rssi_threshold 3 18664 NULL
 +xfs_iext_insert_18667 xfs_iext_insert 3 18667 NULL
@@ -116647,52 +118899,54 @@ index 0000000..386792a
 +read_file_dump_nfcal_18766 read_file_dump_nfcal 3 18766 NULL
 +SyS_lsetxattr_18776 SyS_lsetxattr 4 18776 NULL
 +alloc_fcdev_18780 alloc_fcdev 1 18780 NULL
++fence_context_alloc_18792 fence_context_alloc 1 18792 NULL
 +dm_stats_print_18815 dm_stats_print 7 18815 NULL
 +sys_modify_ldt_18824 sys_modify_ldt 3 18824 NULL
 +mtf_test_write_18844 mtf_test_write 3 18844 NULL
 +sctp_setsockopt_events_18862 sctp_setsockopt_events 3 18862 NULL
 +ieee80211_if_read_element_ttl_18869 ieee80211_if_read_element_ttl 3 18869 NULL
 +xlog_find_verify_log_record_18870 xlog_find_verify_log_record 2 18870 NULL
++devm_mdiobus_alloc_size_18902 devm_mdiobus_alloc_size 2 18902 NULL
++tracing_thresh_write_18909 tracing_thresh_write 3 18909 NULL
 +ceph_setxattr_18913 ceph_setxattr 4 18913 NULL
++xfs_buf_read_uncached_18922 xfs_buf_read_uncached 3 18922 NULL
 +ieee80211_rx_mgmt_disassoc_18927 ieee80211_rx_mgmt_disassoc 3 18927 NULL
 +snapshot_write_next_18937 snapshot_write_next 0 18937 NULL
 +__nla_reserve_18974 __nla_reserve 3 18974 NULL
-+__blockdev_direct_IO_18977 __blockdev_direct_IO 0-6 18977 NULL
-+find_dirtiest_idx_leb_19001 find_dirtiest_idx_leb 0 19001 NULL
 +layout_in_gaps_19006 layout_in_gaps 2 19006 NULL
 +huge_page_size_19008 huge_page_size 0 19008 NULL
 +hash_netport6_expire_19013 hash_netport6_expire 4 19013 NULL
 +sysfs_create_dir_ns_19033 sysfs_create_dir_ns 0 19033 NULL
 +revalidate_19043 revalidate 2 19043 NULL
 +afs_vnode_store_data_19048 afs_vnode_store_data 2-3-4-5 19048 NULL
-+osc_pinger_recov_seq_write_19056 osc_pinger_recov_seq_write 3 19056 NULL nohasharray
-+do_vm86_irq_handling_19056 do_vm86_irq_handling 2 19056 &osc_pinger_recov_seq_write_19056
++osc_pinger_recov_seq_write_19056 osc_pinger_recov_seq_write 3 19056 NULL
 +create_gpadl_header_19064 create_gpadl_header 2 19064 NULL
 +ceph_create_snap_context_19082 ceph_create_snap_context 1 19082 NULL
 +sta_last_seq_ctrl_read_19106 sta_last_seq_ctrl_read 3 19106 NULL
 +cifs_readv_from_socket_19109 cifs_readv_from_socket 3 19109 NULL
 +skb_gro_offset_19123 skb_gro_offset 0 19123 NULL
++cma_bitmap_maxno_19135 cma_bitmap_maxno 0 19135 NULL
 +snd_als4k_iobase_readl_19136 snd_als4k_iobase_readl 0 19136 NULL
 +alloc_irdadev_19140 alloc_irdadev 1 19140 NULL
 +sleep_auth_read_19159 sleep_auth_read 3 19159 NULL
 +smk_write_access2_19170 smk_write_access2 3 19170 NULL
++read_extent_buffer_to_user_19189 read_extent_buffer_to_user 4-3 19189 NULL
 +iwl_dbgfs_reply_tx_error_read_19205 iwl_dbgfs_reply_tx_error_read 3 19205 NULL
-+__copy_to_user_inatomic_19214 __copy_to_user_inatomic 3-0 19214 NULL
++__copy_to_user_inatomic_19214 __copy_to_user_inatomic 0-3 19214 NULL
 +dev_counters_read_19216 dev_counters_read 3 19216 NULL
 +wbcir_tx_19219 wbcir_tx 3 19219 NULL
 +snd_mask_max_19224 snd_mask_max 0 19224 NULL
-+snd_pcm_capture_rewind_19229 snd_pcm_capture_rewind 0-2 19229 NULL
 +bio_alloc_mddev_19238 bio_alloc_mddev 2 19238 NULL
 +ucma_query_19260 ucma_query 4 19260 NULL
 +il_dbgfs_rxon_filter_flags_read_19281 il_dbgfs_rxon_filter_flags_read 3 19281 NULL
 +batadv_tt_save_orig_buffer_19288 batadv_tt_save_orig_buffer 4 19288 NULL nohasharray
 +cfg80211_rx_unprot_mlme_mgmt_19288 cfg80211_rx_unprot_mlme_mgmt 3 19288 &batadv_tt_save_orig_buffer_19288
 +qc_capture_19298 qc_capture 3 19298 NULL
-+ocfs2_prepare_inode_for_refcount_19303 ocfs2_prepare_inode_for_refcount 3-4 19303 NULL
++ocfs2_prepare_inode_for_refcount_19303 ocfs2_prepare_inode_for_refcount 4-3 19303 NULL
 +event_tx_stuck_read_19305 event_tx_stuck_read 3 19305 NULL
 +debug_read_19322 debug_read 3 19322 NULL
-+cfg80211_inform_bss_19332 cfg80211_inform_bss 8 19332 NULL nohasharray
-+lbs_host_sleep_write_19332 lbs_host_sleep_write 3 19332 &cfg80211_inform_bss_19332
++lbs_host_sleep_write_19332 lbs_host_sleep_write 3 19332 NULL nohasharray
++cfg80211_inform_bss_19332 cfg80211_inform_bss 8 19332 &lbs_host_sleep_write_19332
 +closure_sub_19359 closure_sub 2 19359 NULL
 +firmware_data_write_19360 firmware_data_write 6-5 19360 NULL
 +read_zero_19366 read_zero 3 19366 NULL
@@ -116706,22 +118960,24 @@ index 0000000..386792a
 +gnet_stats_copy_19458 gnet_stats_copy 4 19458 NULL
 +gp2ap020a00f_get_thresh_reg_19468 gp2ap020a00f_get_thresh_reg 0 19468 NULL
 +sky2_read16_19475 sky2_read16 0 19475 NULL
++__read_status_pciv2_19492 __read_status_pciv2 0 19492 NULL
 +kstrtoll_from_user_19500 kstrtoll_from_user 2 19500 NULL
 +ext4_add_new_descs_19509 ext4_add_new_descs 3 19509 NULL
 +batadv_tvlv_container_register_19520 batadv_tvlv_container_register 5 19520 NULL
++ttm_dma_page_pool_free_19527 ttm_dma_page_pool_free 2-0 19527 NULL
 +cfc_write_array_to_buffer_19529 cfc_write_array_to_buffer 3 19529 NULL
 +nfc_llcp_build_tlv_19536 nfc_llcp_build_tlv 3 19536 NULL
 +gfn_to_index_19558 gfn_to_index 0-1-3-2 19558 NULL
 +ocfs2_control_message_19564 ocfs2_control_message 3 19564 NULL
 +nfsd_read_19568 nfsd_read 5 19568 NULL
 +ieee80211_key_alloc_19575 ieee80211_key_alloc 3 19575 NULL
-+mnt_want_write_file_19579 mnt_want_write_file 0 19579 NULL
 +bm_status_read_19583 bm_status_read 3 19583 NULL
 +load_xattr_datum_19594 load_xattr_datum 0 19594 NULL
++drbg_sec_strength_19604 drbg_sec_strength 0 19604 NULL
 +__mei_cl_recv_19636 __mei_cl_recv 3 19636 NULL
++parser_init_19651 parser_init 2 19651 NULL
 +LoadBitmap_19658 LoadBitmap 2 19658 NULL
 +memblock_virt_alloc_low_nopanic_19714 memblock_virt_alloc_low_nopanic 1 19714 NULL
-+ocfs2_control_get_this_node_19721 ocfs2_control_get_this_node 0 19721 NULL
 +read_reg_19723 read_reg 0 19723 NULL
 +wm8350_block_write_19727 wm8350_block_write 2-3 19727 NULL
 +memcpy_toiovecend_19736 memcpy_toiovecend 4-3 19736 NULL
@@ -116730,6 +118986,8 @@ index 0000000..386792a
 +pnpbios_proc_write_19758 pnpbios_proc_write 3 19758 NULL
 +ocfs2_readpages_19759 ocfs2_readpages 4 19759 NULL
 +jffs2_acl_from_medium_19762 jffs2_acl_from_medium 2 19762 NULL
++readhscx_19769 readhscx 0 19769 NULL
++ath10k_write_htt_max_amsdu_ampdu_19820 ath10k_write_htt_max_amsdu_ampdu 3 19820 NULL
 +irda_setsockopt_19824 irda_setsockopt 5 19824 NULL
 +vfs_getxattr_19832 vfs_getxattr 0 19832 NULL
 +crypt_alloc_buffer_19846 crypt_alloc_buffer 2 19846 NULL
@@ -116739,8 +118997,11 @@ index 0000000..386792a
 +aes_decrypt_interrupt_read_19910 aes_decrypt_interrupt_read 3 19910 NULL
 +ps_upsd_max_apturn_read_19918 ps_upsd_max_apturn_read 3 19918 NULL
 +mangle_name_19923 mangle_name 0 19923 NULL
++tipc_sk_show_19928 tipc_sk_show 3-0 19928 NULL
 +cgroup_task_count_19930 cgroup_task_count 0 19930 NULL
 +guest_read_tsc_19931 guest_read_tsc 0 19931 NULL
++azx_get_pos_lpib_19933 azx_get_pos_lpib 0 19933 NULL
++v4l2_ctrl_new_19942 v4l2_ctrl_new 8-12 19942 NULL
 +iwl_dbgfs_rx_queue_read_19943 iwl_dbgfs_rx_queue_read 3 19943 NULL
 +cfg80211_rx_assoc_resp_19944 cfg80211_rx_assoc_resp 4 19944 NULL
 +ll_xattr_cache_list_19954 ll_xattr_cache_list 0 19954 NULL
@@ -116748,6 +119009,8 @@ index 0000000..386792a
 +attach_hdlc_protocol_19986 attach_hdlc_protocol 3 19986 NULL
 +rtw_set_wps_probe_resp_19989 rtw_set_wps_probe_resp 3 19989 NULL nohasharray
 +i40e_reserve_msix_vectors_19989 i40e_reserve_msix_vectors 2 19989 &rtw_set_wps_probe_resp_19989
++lustre_pack_request_19992 lustre_pack_request 3 19992 NULL
++find_overflow_devnum_19995 find_overflow_devnum 0 19995 NULL
 +diva_um_idi_read_20003 diva_um_idi_read 0 20003 NULL
 +lov_stripe_md_size_20009 lov_stripe_md_size 0-1 20009 NULL nohasharray
 +event_trigger_write_20009 event_trigger_write 3 20009 &lov_stripe_md_size_20009
@@ -116763,7 +119026,7 @@ index 0000000..386792a
 +qla2x00_adjust_sdev_qdepth_up_20097 qla2x00_adjust_sdev_qdepth_up 2 20097 NULL
 +root_nfs_copy_20111 root_nfs_copy 3 20111 NULL
 +hptiop_adjust_disk_queue_depth_20122 hptiop_adjust_disk_queue_depth 2 20122 NULL
-+self_check_vid_hdr_20131 self_check_vid_hdr 0 20131 NULL
++ext4_ext_direct_IO_20165 ext4_ext_direct_IO 4 20165 NULL
 +tomoyo_commit_ok_20167 tomoyo_commit_ok 2 20167 NULL
 +read_flush_pipefs_20171 read_flush_pipefs 3 20171 NULL
 +wep_addr_key_count_read_20174 wep_addr_key_count_read 3 20174 NULL
@@ -116779,7 +119042,6 @@ index 0000000..386792a
 +snd_cs4281_BA1_read_20323 snd_cs4281_BA1_read 5 20323 NULL
 +gfs2_glock_nq_m_20347 gfs2_glock_nq_m 1 20347 NULL
 +handle_arr_calc_size_20355 handle_arr_calc_size 0-1 20355 NULL
-+snd_pcm_stop_20376 snd_pcm_stop 0 20376 NULL
 +smk_set_cipso_20379 smk_set_cipso 3 20379 NULL
 +snd_nm256_readl_20394 snd_nm256_readl 0 20394 NULL
 +SyS_get_mempolicy_20399 SyS_get_mempolicy 3 20399 NULL nohasharray
@@ -116799,32 +119061,32 @@ index 0000000..386792a
 +set_secure_conn_20596 set_secure_conn 4 20596 NULL
 +sync_timeline_create_20601 sync_timeline_create 2 20601 NULL
 +lirc_write_20604 lirc_write 3 20604 NULL
-+qib_qsfp_write_20614 qib_qsfp_write 0-2-4 20614 NULL
++qib_qsfp_write_20614 qib_qsfp_write 0-4-2 20614 NULL
 +snd_pcm_oss_prepare_20641 snd_pcm_oss_prepare 0 20641 NULL
 +get_extent_skip_holes_20642 get_extent_skip_holes 2 20642 NULL
 +kfifo_copy_to_user_20646 kfifo_copy_to_user 3-4 20646 NULL
 +cpulist_scnprintf_20648 cpulist_scnprintf 2-0 20648 NULL
 +oz_add_farewell_20652 oz_add_farewell 5 20652 NULL
 +oz_cdev_read_20659 oz_cdev_read 3 20659 NULL
-+snd_hdsp_playback_copy_20676 snd_hdsp_playback_copy 5 20676 NULL nohasharray
-+btrfs_qgroup_reserve_20676 btrfs_qgroup_reserve 0 20676 &snd_hdsp_playback_copy_20676
++snd_hdsp_playback_copy_20676 snd_hdsp_playback_copy 5 20676 NULL
 +dvb_dmxdev_buffer_read_20682 dvb_dmxdev_buffer_read 0-4 20682 NULL
 +cpumask_size_20683 cpumask_size 0 20683 NULL
 +btrfs_node_blockptr_20685 btrfs_node_blockptr 0 20685 NULL
++xpcs_reg_addr_write_20694 xpcs_reg_addr_write 3 20694 NULL
 +read_file_tgt_int_stats_20697 read_file_tgt_int_stats 3 20697 NULL
 +__maestro_read_20700 __maestro_read 0 20700 NULL
 +cipso_v4_gentag_rng_20703 cipso_v4_gentag_rng 0 20703 NULL
 +pcpu_page_first_chunk_20712 pcpu_page_first_chunk 1 20712 NULL
++hfs_direct_IO_20714 hfs_direct_IO 4 20714 NULL
 +ocfs2_read_xattr_bucket_20722 ocfs2_read_xattr_bucket 0 20722 NULL
 +security_context_to_sid_force_20724 security_context_to_sid_force 2 20724 NULL
 +fb_prepare_logo_20743 fb_prepare_logo 0 20743 NULL
 +vol_cdev_direct_write_20751 vol_cdev_direct_write 3 20751 NULL
 +ocfs2_align_bytes_to_clusters_20754 ocfs2_align_bytes_to_clusters 2 20754 NULL
-+brcmf_p2p_escan_20763 brcmf_p2p_escan 2 20763 NULL nohasharray
-+mnt_clone_write_20763 mnt_clone_write 0 20763 &brcmf_p2p_escan_20763
-+ubi_io_read_20767 ubi_io_read 0 20767 NULL
++brcmf_p2p_escan_20763 brcmf_p2p_escan 2 20763 NULL
 +fb_alloc_cmap_gfp_20792 fb_alloc_cmap_gfp 2 20792 NULL
 +iwl_dbgfs_rxon_flags_read_20795 iwl_dbgfs_rxon_flags_read 3 20795 NULL
++edid_write_20797 edid_write 3 20797 NULL
 +lowpan_write_20800 lowpan_write 3 20800 NULL
 +strndup_user_20819 strndup_user 2 20819 NULL
 +tipc_msg_build_20825 tipc_msg_build 3 20825 NULL
@@ -116837,12 +119099,14 @@ index 0000000..386792a
 +snd_pcm_capture_avail_20867 snd_pcm_capture_avail 0 20867 NULL
 +srq_free_res_20868 srq_free_res 5 20868 NULL
 +cfs_cpt_table_create_20884 cfs_cpt_table_create 1 20884 NULL
++req_capsule_filled_sizes_20888 req_capsule_filled_sizes 0 20888 NULL
 +rb_simple_write_20890 rb_simple_write 3 20890 NULL
 +sisusb_send_packet_20891 sisusb_send_packet 2 20891 NULL
 +key_icverrors_read_20895 key_icverrors_read 3 20895 NULL
 +vfio_msi_enable_20906 vfio_msi_enable 2 20906 NULL
 +lbs_rdbbp_write_20918 lbs_rdbbp_write 3 20918 NULL
 +htable_bits_20933 htable_bits 0 20933 NULL
++cfg80211_rx_assoc_resp_20934 cfg80211_rx_assoc_resp 4 20934 NULL
 +altera_set_ir_post_20948 altera_set_ir_post 2 20948 NULL
 +rx_rx_phy_hdr_read_20950 rx_rx_phy_hdr_read 3 20950 NULL
 +rsxx_cram_read_20957 rsxx_cram_read 3 20957 NULL
@@ -116850,13 +119114,12 @@ index 0000000..386792a
 +snd_rme9652_playback_copy_20970 snd_rme9652_playback_copy 5 20970 NULL
 +alg_setsockopt_20985 alg_setsockopt 5 20985 NULL
 +qib_verbs_send_20999 qib_verbs_send 5-3 20999 NULL
-+btrfs_dirty_pages_21019 btrfs_dirty_pages 0 21019 NULL
 +btrfs_inode_ref_name_len_21024 btrfs_inode_ref_name_len 0 21024 NULL
++arch_gnttab_init_21030 arch_gnttab_init 1 21030 NULL
 +rx_defrag_tkip_called_read_21031 rx_defrag_tkip_called_read 3 21031 NULL
 +srp_change_queue_depth_21038 srp_change_queue_depth 2 21038 NULL
 +fsl_edma_prep_dma_cyclic_21042 fsl_edma_prep_dma_cyclic 4-3 21042 NULL
 +lbs_threshold_read_21046 lbs_threshold_read 5 21046 NULL
-+reiserfs_direct_IO_21051 reiserfs_direct_IO 4 21051 NULL
 +proc_fault_inject_write_21058 proc_fault_inject_write 3 21058 NULL
 +qdisc_get_default_21072 qdisc_get_default 2 21072 NULL
 +event_calibration_read_21083 event_calibration_read 3 21083 NULL
@@ -116867,39 +119130,40 @@ index 0000000..386792a
 +_efx_mcdi_rpc_async_21119 _efx_mcdi_rpc_async 4-5 21119 NULL
 +i2400m_rx_trace_21127 i2400m_rx_trace 3 21127 NULL
 +mei_dbgfs_read_active_21172 mei_dbgfs_read_active 3 21172 NULL
++bioset_create_nobvec_21180 bioset_create_nobvec 1 21180 NULL
 +cx18_v4l2_read_21196 cx18_v4l2_read 3 21196 NULL
-+__generic_file_aio_write_21201 __generic_file_aio_write 0 21201 NULL
 +ipc_rcu_alloc_21208 ipc_rcu_alloc 1 21208 NULL
 +scsi_execute_req_flags_21215 scsi_execute_req_flags 5 21215 NULL
-+get_numpages_21227 get_numpages 0-2-1 21227 NULL
++get_numpages_21227 get_numpages 0-1-2 21227 NULL
 +input_ff_create_21240 input_ff_create 2 21240 NULL
 +cfg80211_notify_new_peer_candidate_21242 cfg80211_notify_new_peer_candidate 4 21242 NULL
 +fru_length_21257 fru_length 0 21257 NULL
 +rtw_set_wps_beacon_21262 rtw_set_wps_beacon 3 21262 NULL
++ocfs2_blocks_for_bytes_21268 ocfs2_blocks_for_bytes 0-2 21268 NULL
 +drm_universal_plane_init_21296 drm_universal_plane_init 6 21296 NULL
 +do_msg_fill_21307 do_msg_fill 3 21307 NULL
 +add_res_range_21310 add_res_range 4 21310 NULL
 +get_zeroed_page_21322 get_zeroed_page 0 21322 NULL
 +ftrace_profile_read_21327 ftrace_profile_read 3 21327 NULL
 +read_file_bool_bmps_21344 read_file_bool_bmps 3 21344 NULL
++azx_get_delay_from_lpib_21348 azx_get_delay_from_lpib 3 21348 NULL
 +gfs2_ea_get_copy_21353 gfs2_ea_get_copy 0 21353 NULL
++allocate_cmdlines_buffer_21355 allocate_cmdlines_buffer 1 21355 NULL
 +alloc_orinocodev_21371 alloc_orinocodev 1 21371 NULL
 +SYSC_rt_sigpending_21379 SYSC_rt_sigpending 2 21379 NULL
 +video_ioctl2_21380 video_ioctl2 2 21380 NULL
 +insert_ptr_21386 insert_ptr 6 21386 NULL
 +diva_get_driver_dbg_mask_21399 diva_get_driver_dbg_mask 0 21399 NULL
-+__clone_and_map_simple_bio_21404 __clone_and_map_simple_bio 4 21404 NULL
 +snd_m3_inw_21406 snd_m3_inw 0 21406 NULL
 +usnic_ib_dump_vf_hdr_21423 usnic_ib_dump_vf_hdr 3 21423 NULL
 +snapshot_read_next_21426 snapshot_read_next 0 21426 NULL
 +tcp_bound_to_half_wnd_21429 tcp_bound_to_half_wnd 0-2 21429 NULL
-+tracing_saved_cmdlines_read_21434 tracing_saved_cmdlines_read 3 21434 NULL
 +aggr_size_tx_agg_vs_rate_read_21438 aggr_size_tx_agg_vs_rate_read 3 21438 NULL
++nouveau_clock_create__21449 nouveau_clock_create_ 8 21449 NULL
 +__ertm_hdr_size_21450 __ertm_hdr_size 0 21450 NULL
 +mei_nfc_send_21477 mei_nfc_send 3 21477 NULL
 +read_file_xmit_21487 read_file_xmit 3 21487 NULL
 +mmc_alloc_sg_21504 mmc_alloc_sg 1 21504 NULL
-+btrfs_file_aio_write_21520 btrfs_file_aio_write 4 21520 NULL
 +il_dbgfs_stations_read_21532 il_dbgfs_stations_read 3 21532 NULL
 +cipso_v4_map_cat_enum_hton_21540 cipso_v4_map_cat_enum_hton 0 21540 NULL
 +rxrpc_send_data_21553 rxrpc_send_data 5 21553 NULL
@@ -116908,13 +119172,14 @@ index 0000000..386792a
 +snd_es18xx_mixer_read_21586 snd_es18xx_mixer_read 0 21586 NULL
 +ocfs2_acl_from_xattr_21604 ocfs2_acl_from_xattr 2 21604 NULL
 +filemap_get_page_21606 filemap_get_page 2 21606 NULL
++ocfs2_refcount_cow_hunk_21630 ocfs2_refcount_cow_hunk 3-4 21630 NULL
 +__jfs_getxattr_21631 __jfs_getxattr 0 21631 NULL
 +atalk_sendmsg_21677 atalk_sendmsg 4 21677 NULL
 +ocfs2_xattr_get_nolock_21678 ocfs2_xattr_get_nolock 0 21678 NULL
 +regmap_register_patch_21681 regmap_register_patch 3 21681 NULL
-+rtllib_alloc_txb_21687 rtllib_alloc_txb 1 21687 NULL
++rtllib_alloc_txb_21687 rtllib_alloc_txb 1 21687 NULL nohasharray
++proc_maps_open_21687 proc_maps_open 4 21687 &rtllib_alloc_txb_21687
 +evdev_ioctl_handler_21705 evdev_ioctl_handler 2 21705 NULL
-+update_time_21719 update_time 0 21719 NULL
 +unix_skb_len_21722 unix_skb_len 0 21722 NULL
 +lprocfs_wr_import_21728 lprocfs_wr_import 3 21728 NULL
 +mthca_alloc_init_21754 mthca_alloc_init 2 21754 NULL
@@ -116929,12 +119194,14 @@ index 0000000..386792a
 +msix_capability_init_21870 msix_capability_init 0 21870 NULL
 +sisusbcon_bmove_21873 sisusbcon_bmove 6-5-7 21873 NULL
 +ldlm_lock_create_21888 ldlm_lock_create 7 21888 NULL
-+dbAllocCtl_21911 dbAllocCtl 0 21911 NULL
++__btrfs_direct_write_21894 __btrfs_direct_write 3 21894 NULL
++dbAllocCtl_21911 dbAllocCtl 0 21911 NULL nohasharray
++nvme_submit_sync_cmd_21911 nvme_submit_sync_cmd 0 21911 &dbAllocCtl_21911
 +qsfp_1_read_21915 qsfp_1_read 3 21915 NULL
 +twl_i2c_write_u16_21953 twl_i2c_write_u16 3 21953 NULL
 +__build_xattrs_21979 __build_xattrs 0 21979 NULL
 +SYSC_prctl_21980 SYSC_prctl 4 21980 NULL
-+compat_rw_copy_check_uvector_22001 compat_rw_copy_check_uvector 3-0 22001 NULL nohasharray
++compat_rw_copy_check_uvector_22001 compat_rw_copy_check_uvector 0-3 22001 NULL nohasharray
 +rxpipe_descr_host_int_trig_rx_data_read_22001 rxpipe_descr_host_int_trig_rx_data_read 3 22001 &compat_rw_copy_check_uvector_22001
 +regcache_sync_block_raw_flush_22021 regcache_sync_block_raw_flush 3-4 22021 NULL
 +btrfs_get_16_22023 btrfs_get_16 0 22023 NULL
@@ -116944,12 +119211,11 @@ index 0000000..386792a
 +btrfs_reloc_clone_csums_22077 btrfs_reloc_clone_csums 2-3 22077 NULL
 +mem_rw_22085 mem_rw 3 22085 NULL
 +kstrtos32_from_user_22087 kstrtos32_from_user 2 22087 NULL
-+snd_pcm_xrun_22088 snd_pcm_xrun 0 22088 NULL
 +rt2x00debug_read_crypto_stats_22109 rt2x00debug_read_crypto_stats 3 22109 NULL
 +snd_hda_codec_read_22130 snd_hda_codec_read 0 22130 NULL
 +SyS_sched_setaffinity_22148 SyS_sched_setaffinity 2 22148 NULL
 +do_tcp_sendpages_22155 do_tcp_sendpages 4 22155 NULL
-+pci_request_region_22164 pci_request_region 0 22164 NULL
++nve0_aux_mask_22158 nve0_aux_mask 2 22158 NULL
 +__kfifo_alloc_22173 __kfifo_alloc 3 22173 NULL
 +rfcomm_sock_recvmsg_22227 rfcomm_sock_recvmsg 4 22227 NULL
 +mem_write_22232 mem_write 3 22232 NULL
@@ -116959,11 +119225,12 @@ index 0000000..386792a
 +ping_common_sendmsg_22261 ping_common_sendmsg 5 22261 NULL
 +add_res_tree_22263 add_res_tree 7 22263 NULL
 +queue_max_sectors_22280 queue_max_sectors 0 22280 NULL
-+pci_vpd_srdt_size_22300 pci_vpd_srdt_size 0 22300 NULL nohasharray
-+__tun_chr_ioctl_22300 __tun_chr_ioctl 4 22300 &pci_vpd_srdt_size_22300
++__tun_chr_ioctl_22300 __tun_chr_ioctl 4 22300 NULL nohasharray
++pci_vpd_srdt_size_22300 pci_vpd_srdt_size 0 22300 &__tun_chr_ioctl_22300
 +mesh_table_alloc_22305 mesh_table_alloc 1 22305 NULL
 +lov_setstripe_22307 lov_setstripe 2 22307 NULL
 +udpv6_sendmsg_22316 udpv6_sendmsg 4 22316 NULL
++C_SYSC_msgrcv_22320 C_SYSC_msgrcv 3 22320 NULL
 +atomic_read_22342 atomic_read 0 22342 NULL
 +ll_lazystatfs_seq_write_22353 ll_lazystatfs_seq_write 3 22353 NULL
 +snd_pcm_alsa_frames_22363 snd_pcm_alsa_frames 2 22363 NULL
@@ -116975,37 +119242,37 @@ index 0000000..386792a
 +queue_max_segments_22441 queue_max_segments 0 22441 NULL
 +handle_received_packet_22457 handle_received_packet 3 22457 NULL
 +ecryptfs_write_22488 ecryptfs_write 4-3 22488 NULL
-+qib_user_sdma_alloc_header_22490 qib_user_sdma_alloc_header 2 22490 NULL
++qib_user_sdma_alloc_header_22490 qib_user_sdma_alloc_header 2 22490 NULL nohasharray
++video_write_22490 video_write 3 22490 &qib_user_sdma_alloc_header_22490
 +cache_write_procfs_22491 cache_write_procfs 3 22491 NULL
++mutex_lock_interruptible_22505 mutex_lock_interruptible 0 22505 NULL
 +trim_no_bitmap_22524 trim_no_bitmap 4-3 22524 NULL
-+ntb_setup_bwd_msix_22549 ntb_setup_bwd_msix 2-0 22549 NULL
++ntb_setup_bwd_msix_22549 ntb_setup_bwd_msix 2 22549 NULL
 +ocfs2_read_extent_block_22550 ocfs2_read_extent_block 0 22550 NULL
 +agp_alloc_page_array_22554 agp_alloc_page_array 1 22554 NULL
 +dbFindCtl_22587 dbFindCtl 0 22587 NULL
++cfs_expr_list_values_22600 cfs_expr_list_values 0 22600 NULL
 +snapshot_read_22601 snapshot_read 3 22601 NULL
 +sctp_setsockopt_connectx_old_22631 sctp_setsockopt_connectx_old 3 22631 NULL
 +ide_core_cp_entry_22636 ide_core_cp_entry 3 22636 NULL
 +wl1271_rx_filter_get_fields_size_22638 wl1271_rx_filter_get_fields_size 0 22638 NULL
 +pwr_wake_on_timer_exp_read_22640 pwr_wake_on_timer_exp_read 3 22640 NULL
 +iwl_dbgfs_calib_disabled_read_22649 iwl_dbgfs_calib_disabled_read 3 22649 NULL
-+ext4_ext_direct_IO_22679 ext4_ext_direct_IO 4 22679 NULL
-+fill_gap_22681 fill_gap 0 22681 NULL nohasharray
-+l2tp_ip_recvmsg_22681 l2tp_ip_recvmsg 4 22681 &fill_gap_22681
++compat_SyS_msgrcv_22661 compat_SyS_msgrcv 3 22661 NULL
++l2tp_ip_recvmsg_22681 l2tp_ip_recvmsg 4 22681 NULL
 +bch_dump_read_22685 bch_dump_read 3 22685 NULL
 +reg_umr_22686 reg_umr 5 22686 NULL
 +SYSC_vmsplice_22697 SYSC_vmsplice 3 22697 NULL
++nr_cpusets_22705 nr_cpusets 0 22705 NULL
 +alloc_libipw_22708 alloc_libipw 1 22708 NULL
 +cx18_copy_buf_to_user_22735 cx18_copy_buf_to_user 4-0 22735 NULL
 +ceph_decode_32_22738 ceph_decode_32 0 22738 NULL nohasharray
 +__mei_cl_send_22738 __mei_cl_send 3 22738 &ceph_decode_32_22738
-+__writeback_single_inode_22739 __writeback_single_inode 0 22739 NULL
 +iio_debugfs_write_reg_22742 iio_debugfs_write_reg 3 22742 NULL
 +qlcnic_sriov_init_22762 qlcnic_sriov_init 2 22762 NULL
 +print_frame_22769 print_frame 0 22769 NULL
 +ftrace_arch_read_dyn_info_22773 ftrace_arch_read_dyn_info 0 22773 NULL
-+__break_lease_22777 __break_lease 0 22777 NULL
 +vnic_dev_get_res_count_22791 vnic_dev_get_res_count 0 22791 NULL
-+pla_ocp_write_22802 pla_ocp_write 4 22802 NULL
 +__generic_copy_to_user_intel_22806 __generic_copy_to_user_intel 0-3 22806 NULL
 +create_attr_set_22861 create_attr_set 1 22861 NULL
 +hash_ip6_expire_22867 hash_ip6_expire 4 22867 NULL
@@ -117014,6 +119281,7 @@ index 0000000..386792a
 +mdc800_device_read_22896 mdc800_device_read 3 22896 NULL
 +ion_handle_test_kernel_22900 ion_handle_test_kernel 4-3 22900 NULL nohasharray
 +policy_emit_config_values_22900 policy_emit_config_values 3 22900 &ion_handle_test_kernel_22900
++nfs4_acl_bytes_22915 nfs4_acl_bytes 0-1 22915 NULL
 +__set_xattr_22923 __set_xattr 0 22923 NULL
 +xstateregs_set_22932 xstateregs_set 4 22932 NULL
 +pcpu_mem_zalloc_22948 pcpu_mem_zalloc 1 22948 NULL
@@ -117026,19 +119294,19 @@ index 0000000..386792a
 +remote_settings_file_write_22987 remote_settings_file_write 3 22987 NULL
 +viafb_dvp0_proc_write_23023 viafb_dvp0_proc_write 3 23023 NULL
 +cifs_local_to_utf16_bytes_23025 cifs_local_to_utf16_bytes 0 23025 NULL
++ocfs2_refcount_cow_xattr_23029 ocfs2_refcount_cow_xattr 6-7 23029 NULL
 +st_status_23032 st_status 5 23032 NULL
 +nv50_disp_chan_create__23056 nv50_disp_chan_create_ 5 23056 NULL
 +comedi_buf_write_n_available_23057 comedi_buf_write_n_available 0 23057 NULL
-+security_inode_killpriv_23060 security_inode_killpriv 0 23060 NULL
 +reiserfs_add_entry_23062 reiserfs_add_entry 4 23062 NULL nohasharray
 +unix_seqpacket_recvmsg_23062 unix_seqpacket_recvmsg 4 23062 &reiserfs_add_entry_23062
 +mei_cl_send_23068 mei_cl_send 3 23068 NULL
++kvm_mmu_gva_to_gpa_write_23075 kvm_mmu_gva_to_gpa_write 0 23075 NULL
 +raw_sendmsg_23078 raw_sendmsg 4 23078 NULL
 +get_user_hdr_len_23079 get_user_hdr_len 0 23079 NULL
 +isr_tx_procs_read_23084 isr_tx_procs_read 3 23084 NULL
 +rt2x00debug_write_eeprom_23091 rt2x00debug_write_eeprom 3 23091 NULL
 +ntfs_ucstonls_23097 ntfs_ucstonls 3-5 23097 NULL
-+pipe_iov_copy_from_user_23102 pipe_iov_copy_from_user 3 23102 NULL
 +dgram_recvmsg_23104 dgram_recvmsg 4 23104 NULL
 +mwl8k_cmd_set_beacon_23110 mwl8k_cmd_set_beacon 4 23110 NULL
 +bset_tree_bytes_23111 bset_tree_bytes 0 23111 NULL nohasharray
@@ -117050,30 +119318,31 @@ index 0000000..386792a
 +usblp_write_23178 usblp_write 3 23178 NULL
 +gss_pipe_downcall_23182 gss_pipe_downcall 3 23182 NULL
 +mpi_alloc_limb_space_23190 mpi_alloc_limb_space 1 23190 NULL
++tipc_sendmcast_23214 tipc_sendmcast 4 23214 NULL
++mcryptd_alloc_instance_23221 mcryptd_alloc_instance 2-3 23221 NULL
 +nft_hash_tbl_alloc_23224 nft_hash_tbl_alloc 1 23224 NULL
 +tty_buffer_request_room_23228 tty_buffer_request_room 2-0 23228 NULL
-+xlog_get_bp_23229 xlog_get_bp 2 23229 NULL
++xlog_get_bp_23229 xlog_get_bp 2 23229 NULL nohasharray
++__read_status_pci_23229 __read_status_pci 0 23229 &xlog_get_bp_23229
 +ft1000_read_dpram_mag_32_23232 ft1000_read_dpram_mag_32 0 23232 NULL
 +rxrpc_client_sendmsg_23236 rxrpc_client_sendmsg 5 23236 NULL
 +__gfn_to_rmap_23240 __gfn_to_rmap 1-2 23240 NULL
 +nv50_ram_create__23241 nv50_ram_create_ 4 23241 NULL
 +sctp_recvmsg_23265 sctp_recvmsg 4 23265 NULL
 +uwb_dev_addr_print_23282 uwb_dev_addr_print 2 23282 NULL
++ec_i2c_count_message_23285 ec_i2c_count_message 0-2 23285 NULL
 +diva_get_trace_filter_23286 diva_get_trace_filter 0 23286 NULL
 +i2cdev_write_23310 i2cdev_write 3 23310 NULL
 +__aa_kvmalloc_23320 __aa_kvmalloc 1 23320 NULL
 +page_readlink_23346 page_readlink 3 23346 NULL
 +kmem_zalloc_large_23351 kmem_zalloc_large 1 23351 NULL
-+get_dst_timing_23358 get_dst_timing 0 23358 NULL nohasharray
-+write_inode_23358 write_inode 0 23358 &get_dst_timing_23358
++get_dst_timing_23358 get_dst_timing 0 23358 NULL
 +fd_setup_write_same_buf_23369 fd_setup_write_same_buf 3 23369 NULL
 +iscsi_change_queue_depth_23416 iscsi_change_queue_depth 2 23416 NULL
-+vga_mm_r_23419 vga_mm_r 0 23419 NULL
 +ocfs2_zero_tail_23447 ocfs2_zero_tail 3 23447 NULL
 +hidraw_send_report_23449 hidraw_send_report 3 23449 NULL
 +__ata_change_queue_depth_23484 __ata_change_queue_depth 3 23484 NULL
-+linear_conf_23485 linear_conf 2 23485 NULL nohasharray
-+sync_mapping_buffers_23485 sync_mapping_buffers 0 23485 &linear_conf_23485
++linear_conf_23485 linear_conf 2 23485 NULL
 +event_filter_read_23494 event_filter_read 3 23494 NULL
 +lustre_acl_xattr_merge2ext_23502 lustre_acl_xattr_merge2ext 2 23502 NULL
 +devm_iio_device_alloc_23511 devm_iio_device_alloc 2 23511 NULL
@@ -117081,7 +119350,6 @@ index 0000000..386792a
 +hash_ipmark6_expire_23518 hash_ipmark6_expire 4 23518 NULL
 +ima_show_measurements_count_23536 ima_show_measurements_count 3 23536 NULL
 +tcp_current_mss_23552 tcp_current_mss 0 23552 NULL
-+dbg_leb_change_23555 dbg_leb_change 0 23555 NULL
 +btrfs_super_bytenr_23561 btrfs_super_bytenr 0 23561 NULL
 +venus_symlink_23570 venus_symlink 6-4 23570 NULL
 +iwl_dbgfs_interrupt_read_23574 iwl_dbgfs_interrupt_read 3 23574 NULL
@@ -117093,6 +119361,7 @@ index 0000000..386792a
 +SyS_connect_23669 SyS_connect 3 23669 NULL
 +cx18_read_23699 cx18_read 3 23699 NULL
 +at_get_23708 at_get 0 23708 NULL
++get_conn_info_23723 get_conn_info 4 23723 NULL
 +rx_rx_dropped_frame_read_23748 rx_rx_dropped_frame_read 3 23748 NULL
 +__kfifo_max_r_23768 __kfifo_max_r 0-2-1 23768 NULL
 +__build_packet_message_23778 __build_packet_message 4-10 23778 NULL
@@ -117103,16 +119372,14 @@ index 0000000..386792a
 +rx_path_reset_read_23801 rx_path_reset_read 3 23801 NULL
 +__earlyonly_bootmem_alloc_23824 __earlyonly_bootmem_alloc 2 23824 NULL
 +lustre_msg_buflen_23827 lustre_msg_buflen 0 23827 NULL
-+ceph_copy_page_vector_to_user_23829 ceph_copy_page_vector_to_user 0-3-4 23829 NULL
 +pgdat_end_pfn_23842 pgdat_end_pfn 0 23842 NULL
 +iwl_dbgfs_nvm_read_23845 iwl_dbgfs_nvm_read 3 23845 NULL
 +p54_init_common_23850 p54_init_common 1 23850 NULL
 +bin_to_hex_dup_23853 bin_to_hex_dup 2 23853 NULL
 +ocfs2_xattr_get_clusters_23857 ocfs2_xattr_get_clusters 0 23857 NULL
 +ieee80211_if_read_dot11MeshMaxPeerLinks_23878 ieee80211_if_read_dot11MeshMaxPeerLinks 3 23878 NULL
-+nouveau_clock_create__23881 nouveau_clock_create_ 5 23881 NULL nohasharray
-+writeback_single_inode_23881 writeback_single_inode 0 23881 &nouveau_clock_create__23881
 +tipc_snprintf_23893 tipc_snprintf 2-0 23893 NULL
++iov_iter_get_pages_alloc_23903 iov_iter_get_pages_alloc 3-0 23903 NULL
 +add_new_gdb_meta_bg_23911 add_new_gdb_meta_bg 3 23911 NULL nohasharray
 +ieee80211_if_read_hw_queues_23911 ieee80211_if_read_hw_queues 3 23911 &add_new_gdb_meta_bg_23911
 +f2fs_getxattr_23917 f2fs_getxattr 0 23917 NULL
@@ -117124,6 +119391,7 @@ index 0000000..386792a
 +size_roundup_power2_23958 size_roundup_power2 0-1 23958 NULL
 +sddr55_write_data_23983 sddr55_write_data 4 23983 NULL
 +zd_usb_iowrite16v_async_23984 zd_usb_iowrite16v_async 3 23984 NULL
++xfs_zero_file_space_24000 xfs_zero_file_space 2-3 24000 NULL
 +cxgb_alloc_mem_24007 cxgb_alloc_mem 1 24007 NULL
 +give_pages_24021 give_pages 3 24021 NULL
 +adis16400_show_serial_number_24037 adis16400_show_serial_number 3 24037 NULL
@@ -117142,12 +119410,12 @@ index 0000000..386792a
 +trim_bitmaps_24158 trim_bitmaps 3 24158 NULL
 +adu_read_24177 adu_read 3 24177 NULL
 +safe_prepare_write_buffer_24187 safe_prepare_write_buffer 3 24187 NULL
-+irq_remapping_setup_msi_irqs_24194 irq_remapping_setup_msi_irqs 2 24194 NULL
++nv94_aux_24197 nv94_aux 3-6 24197 NULL
 +ieee80211_if_read_dot11MeshHWMPpreqMinInterval_24208 ieee80211_if_read_dot11MeshHWMPpreqMinInterval 3 24208 NULL
 +efx_vf_size_24213 efx_vf_size 0 24213 NULL
 +tcpprobe_sprint_24222 tcpprobe_sprint 0-2 24222 NULL
-+mei_amthif_read_24224 mei_amthif_read 4 24224 NULL nohasharray
-+pcpu_embed_first_chunk_24224 pcpu_embed_first_chunk 3-2-1 24224 &mei_amthif_read_24224
++pcpu_embed_first_chunk_24224 pcpu_embed_first_chunk 3-2-1 24224 NULL nohasharray
++mei_amthif_read_24224 mei_amthif_read 4 24224 &pcpu_embed_first_chunk_24224
 +pci_num_vf_24235 pci_num_vf 0 24235 NULL
 +sel_read_bool_24236 sel_read_bool 3 24236 NULL
 +em28xx_alloc_urbs_24260 em28xx_alloc_urbs 4-6 24260 NULL
@@ -117155,18 +119423,14 @@ index 0000000..386792a
 +thin_status_24278 thin_status 5 24278 NULL
 +msg_size_24288 msg_size 0 24288 NULL
 +btmrvl_pscmd_read_24308 btmrvl_pscmd_read 3 24308 NULL
-+reserve_metadata_bytes_24313 reserve_metadata_bytes 0 24313 NULL
 +ath6kl_add_bss_if_needed_24317 ath6kl_add_bss_if_needed 6 24317 NULL
 +si476x_radio_read_acf_blob_24336 si476x_radio_read_acf_blob 3 24336 NULL
 +C_SYSC_pwritev_24345 C_SYSC_pwritev 3 24345 NULL
-+prepare_pages_24349 prepare_pages 0 24349 NULL
 +kzalloc_node_24352 kzalloc_node 1 24352 NULL
 +qla2x00_handle_queue_full_24365 qla2x00_handle_queue_full 2 24365 NULL
 +cfi_read_pri_24366 cfi_read_pri 3 24366 NULL
 +btrfs_item_size_nr_24367 btrfs_item_size_nr 0 24367 NULL
-+igetword_24373 igetword 0 24373 NULL nohasharray
-+break_deleg_24373 break_deleg 0 24373 &igetword_24373
-+max_io_len_24384 max_io_len 0-1 24384 NULL
++igetword_24373 igetword 0 24373 NULL
 +mpt_alloc_res_24387 mpt_alloc_res 5 24387 NULL
 +osc_cur_grant_bytes_seq_write_24396 osc_cur_grant_bytes_seq_write 3 24396 NULL
 +getxattr_24398 getxattr 4 24398 NULL nohasharray
@@ -117179,8 +119443,8 @@ index 0000000..386792a
 +ieee80211_rx_mgmt_beacon_24430 ieee80211_rx_mgmt_beacon 3 24430 NULL
 +copy_and_ioctl_24434 copy_and_ioctl 4 24434 NULL
 +ixgbe_alloc_q_vector_24439 ixgbe_alloc_q_vector 4-6 24439 NULL
-+rtw_set_wps_assoc_resp_24440 rtw_set_wps_assoc_resp 3 24440 NULL nohasharray
-+smk_user_access_24440 smk_user_access 3 24440 &rtw_set_wps_assoc_resp_24440
++smk_user_access_24440 smk_user_access 3 24440 NULL nohasharray
++rtw_set_wps_assoc_resp_24440 rtw_set_wps_assoc_resp 3 24440 &smk_user_access_24440
 +evdev_do_ioctl_24459 evdev_do_ioctl 2 24459 NULL
 +lbs_highsnr_write_24460 lbs_highsnr_write 3 24460 NULL
 +skb_copy_and_csum_datagram_iovec_24466 skb_copy_and_csum_datagram_iovec 2 24466 NULL
@@ -117194,16 +119458,17 @@ index 0000000..386792a
 +SyS_pselect6_24582 SyS_pselect6 1 24582 NULL
 +udf_compute_nr_groups_24594 udf_compute_nr_groups 0 24594 NULL
 +sensor_hub_get_physical_device_count_24605 sensor_hub_get_physical_device_count 0 24605 NULL nohasharray
-+lov_alloc_memmd_24605 lov_alloc_memmd 2 24605 &sensor_hub_get_physical_device_count_24605
++lov_alloc_memmd_24605 lov_alloc_memmd 2 24605 &sensor_hub_get_physical_device_count_24605 nohasharray
++i915_error_state_buf_init_24605 i915_error_state_buf_init 3 24605 &lov_alloc_memmd_24605
 +SyS_poll_24620 SyS_poll 2 24620 NULL
 +context_alloc_24645 context_alloc 3 24645 NULL
 +blk_rq_err_bytes_24650 blk_rq_err_bytes 0 24650 NULL
-+btrfs_check_data_free_space_24692 btrfs_check_data_free_space 0 24692 NULL
 +datafab_write_data_24696 datafab_write_data 4 24696 NULL
 +intelfbhw_get_p1p2_24703 intelfbhw_get_p1p2 2 24703 NULL
 +simple_attr_read_24738 simple_attr_read 3 24738 NULL
 +qla2x00_change_queue_depth_24742 qla2x00_change_queue_depth 2 24742 NULL
 +get_dma_residue_24749 get_dma_residue 0 24749 NULL
++ocfs2_cow_file_pos_24751 ocfs2_cow_file_pos 3 24751 NULL
 +kgdb_hex2mem_24755 kgdb_hex2mem 3 24755 NULL
 +ocfs2_read_blocks_24777 ocfs2_read_blocks 0 24777 NULL
 +datablob_hmac_verify_24786 datablob_hmac_verify 4 24786 NULL
@@ -117216,45 +119481,52 @@ index 0000000..386792a
 +pnp_alloc_24869 pnp_alloc 1 24869 NULL nohasharray
 +l2cap_create_basic_pdu_24869 l2cap_create_basic_pdu 3 24869 &pnp_alloc_24869
 +queues_read_24877 queues_read 3 24877 NULL
++iov_iter_npages_bvec_24905 iov_iter_npages_bvec 0-2 24905 NULL
 +codec_list_read_file_24910 codec_list_read_file 3 24910 NULL
-+v4l2_ctrl_new_24927 v4l2_ctrl_new 7 24927 NULL nohasharray
-+__btrfs_free_extent_24927 __btrfs_free_extent 7 24927 &v4l2_ctrl_new_24927
-+ocfs2_fiemap_24949 ocfs2_fiemap 3-4 24949 NULL
++xpcs_reg_value_write_24922 xpcs_reg_value_write 3 24922 NULL
++v4l2_ctrl_new_24927 v4l2_ctrl_new 7 24927 NULL
++ocfs2_fiemap_24949 ocfs2_fiemap 4-3 24949 NULL
 +packet_sendmsg_24954 packet_sendmsg 4 24954 NULL
-+security_inode_rename_24971 security_inode_rename 0 24971 NULL
 +twl_i2c_write_u8_24976 twl_i2c_write_u8 3 24976 NULL
-+llc_ui_sendmsg_24987 llc_ui_sendmsg 4 24987 NULL
++llc_ui_sendmsg_24987 llc_ui_sendmsg 4 24987 NULL nohasharray
++ath10k_fw_crash_dump_read_24987 ath10k_fw_crash_dump_read 3 24987 &llc_ui_sendmsg_24987
++info_debugfs_read_helper_24988 info_debugfs_read_helper 0 24988 NULL
 +key_conf_hw_key_idx_read_25003 key_conf_hw_key_idx_read 3 25003 NULL
 +il_dbgfs_channels_read_25005 il_dbgfs_channels_read 3 25005 NULL
 +ni_660x_num_counters_25031 ni_660x_num_counters 0 25031 NULL
 +nfs_dns_resolve_name_25036 nfs_dns_resolve_name 3 25036 NULL
++load_unaligned_zeropad_25050 load_unaligned_zeropad 0 25050 NULL
 +btrfs_stack_key_blockptr_25058 btrfs_stack_key_blockptr 0 25058 NULL
 +gs_buf_alloc_25067 gs_buf_alloc 2 25067 NULL
 +ll_track_pid_seq_write_25068 ll_track_pid_seq_write 3 25068 NULL
++do_add_page_to_bio_25071 do_add_page_to_bio 2 25071 NULL
 +SYSC_listxattr_25072 SYSC_listxattr 3 25072 NULL
 +ima_appraise_measurement_25093 ima_appraise_measurement 6 25093 NULL
 +snd_rawmidi_kernel_write_25106 snd_rawmidi_kernel_write 3 25106 NULL
 +ipath_init_qp_table_25167 ipath_init_qp_table 2 25167 NULL
-+_iwl_dbgfs_reduced_txp_write_25169 _iwl_dbgfs_reduced_txp_write 3 25169 NULL nohasharray
-+kvm_mmu_notifier_change_pte_25169 kvm_mmu_notifier_change_pte 3 25169 &_iwl_dbgfs_reduced_txp_write_25169
++kvm_mmu_notifier_change_pte_25169 kvm_mmu_notifier_change_pte 3 25169 NULL
 +sctp_getsockopt_local_addrs_25178 sctp_getsockopt_local_addrs 2 25178 NULL
++security_socket_post_create_25221 security_socket_post_create 0 25221 NULL
 +mon_stat_read_25238 mon_stat_read 3 25238 NULL
 +stripe_status_25259 stripe_status 5 25259 NULL
 +snd_pcm_start_25273 snd_pcm_start 0 25273 NULL
 +crypto_alloc_instance2_25277 crypto_alloc_instance2 3 25277 NULL
 +vfs_writev_25278 vfs_writev 3 25278 NULL
 +l2tp_session_create_25286 l2tp_session_create 1 25286 NULL
++cx25821_write_frame_25315 cx25821_write_frame 3 25315 NULL
 +ath9k_debugfs_read_buf_25316 ath9k_debugfs_read_buf 3 25316 NULL
 +rng_buffer_size_25348 rng_buffer_size 0 25348 NULL
 +SYSC_kexec_load_25361 SYSC_kexec_load 2 25361 NULL
 +unix_mkname_25368 unix_mkname 0-2 25368 NULL
 +sel_read_mls_25369 sel_read_mls 3 25369 NULL
 +vsp1_entity_init_25407 vsp1_entity_init 3 25407 NULL
++mcp795_rtcc_read_25415 mcp795_rtcc_read 4 25415 NULL
 +dai_list_read_file_25421 dai_list_read_file 3 25421 NULL
 +ipath_decode_err_25468 ipath_decode_err 3 25468 NULL
 +crypto_hash_digestsize_25469 crypto_hash_digestsize 0 25469 NULL
 +ivtv_buf_copy_from_user_25502 ivtv_buf_copy_from_user 4-0 25502 NULL
 +snd_pcm_plugin_build_25505 snd_pcm_plugin_build 5 25505 NULL
++mxt_obj_size_25510 mxt_obj_size 0 25510 NULL
 +sb_permission_25523 sb_permission 0 25523 NULL
 +ext3_get_inode_loc_25542 ext3_get_inode_loc 0 25542 NULL
 +ieee80211_if_read_path_refresh_time_25545 ieee80211_if_read_path_refresh_time 3 25545 NULL
@@ -117266,7 +119538,7 @@ index 0000000..386792a
 +proc_coredump_filter_write_25625 proc_coredump_filter_write 3 25625 NULL
 +befs_utf2nls_25628 befs_utf2nls 3 25628 NULL nohasharray
 +__get_user_pages_25628 __get_user_pages 0 25628 &befs_utf2nls_25628
-+__direct_map_25647 __direct_map 5-6 25647 NULL
++__direct_map_25647 __direct_map 6-5 25647 NULL
 +aircable_prepare_write_buffer_25669 aircable_prepare_write_buffer 3 25669 NULL
 +lpfc_idiag_cmd_get_25672 lpfc_idiag_cmd_get 2 25672 NULL
 +sta_inactive_ms_read_25690 sta_inactive_ms_read 3 25690 NULL
@@ -117275,6 +119547,7 @@ index 0000000..386792a
 +ibmasm_new_command_25714 ibmasm_new_command 2 25714 NULL
 +__alloc_bootmem_low_node_25726 __alloc_bootmem_low_node 2 25726 NULL nohasharray
 +sel_write_context_25726 sel_write_context 3 25726 &__alloc_bootmem_low_node_25726
++xgbe_common_read_25743 xgbe_common_read 2 25743 NULL
 +cxgbi_device_portmap_create_25747 cxgbi_device_portmap_create 3 25747 NULL
 +event_rx_pool_read_25792 event_rx_pool_read 3 25792 NULL
 +sg_read_25799 sg_read 3 25799 NULL
@@ -117317,7 +119590,7 @@ index 0000000..386792a
 +mwifiex_regrdwr_write_26225 mwifiex_regrdwr_write 3 26225 NULL
 +_scsih_change_queue_depth_26230 _scsih_change_queue_depth 2 26230 NULL
 +rxrpc_recvmsg_26233 rxrpc_recvmsg 4 26233 NULL
-+simple_setattr_26234 simple_setattr 0 26234 NULL
++nlm_end_grace_read_26234 nlm_end_grace_read 3 26234 NULL
 +genwqe_ffdc_buff_size_26263 genwqe_ffdc_buff_size 0 26263 NULL
 +crypto_ctxsize_26278 crypto_ctxsize 0 26278 NULL
 +wacom_set_device_mode_26280 wacom_set_device_mode 3 26280 NULL
@@ -117331,11 +119604,12 @@ index 0000000..386792a
 +ntty_write_26404 ntty_write 3 26404 NULL
 +firmware_store_26408 firmware_store 4 26408 NULL
 +pagemap_read_26441 pagemap_read 3 26441 NULL
-+enc_pools_add_pages_26461 enc_pools_add_pages 1 26461 NULL nohasharray
-+tower_read_26461 tower_read 3 26461 &enc_pools_add_pages_26461
++tower_read_26461 tower_read 3 26461 NULL nohasharray
++enc_pools_add_pages_26461 enc_pools_add_pages 1 26461 &tower_read_26461
 +ib_alloc_device_26483 ib_alloc_device 1 26483 NULL
 +ulong_write_file_26485 ulong_write_file 3 26485 NULL
-+dvb_ca_en50221_io_ioctl_26490 dvb_ca_en50221_io_ioctl 2 26490 NULL
++dvb_ca_en50221_io_ioctl_26490 dvb_ca_en50221_io_ioctl 2 26490 NULL nohasharray
++msi_verify_entries_26490 msi_verify_entries 0 26490 &dvb_ca_en50221_io_ioctl_26490
 +read_vmcore_26501 read_vmcore 3 26501 NULL
 +uhid_char_write_26502 uhid_char_write 3 26502 NULL
 +vfio_pci_set_msi_trigger_26507 vfio_pci_set_msi_trigger 4-3 26507 NULL
@@ -117347,20 +119621,22 @@ index 0000000..386792a
 +rts51x_read_mem_26577 rts51x_read_mem 4 26577 NULL
 +kernfs_name_locked_26617 kernfs_name_locked 3 26617 NULL
 +pwr_fix_tsf_ps_read_26627 pwr_fix_tsf_ps_read 3 26627 NULL
-+irq_alloc_generic_chip_26650 irq_alloc_generic_chip 2 26650 NULL nohasharray
-+inb_p_26650 inb_p 0 26650 &irq_alloc_generic_chip_26650
++amdtp_stream_get_max_payload_26645 amdtp_stream_get_max_payload 0 26645 NULL
++irq_alloc_generic_chip_26650 irq_alloc_generic_chip 2 26650 NULL
 +nouveau_volt_create__26654 nouveau_volt_create_ 4 26654 NULL
 +cipso_v4_map_cat_rbm_hton_26680 cipso_v4_map_cat_rbm_hton 0 26680 NULL
 +flowinfo_read_26683 flowinfo_read 3 26683 NULL
 +sysfs_add_file_26716 sysfs_add_file 0 26716 NULL
 +nouveau_namedb_create__26732 nouveau_namedb_create_ 7 26732 NULL
 +pipeline_tcp_rx_stat_fifo_int_read_26745 pipeline_tcp_rx_stat_fifo_int_read 3 26745 NULL
++bos_desc_26752 bos_desc 0 26752 NULL
 +snd_hda_get_raw_connections_26762 snd_hda_get_raw_connections 0 26762 NULL
 +dma_map_single_attrs_26779 dma_map_single_attrs 0 26779 NULL
 +qlcnic_alloc_sds_rings_26795 qlcnic_alloc_sds_rings 2 26795 NULL
 +cipso_v4_genopt_26812 cipso_v4_genopt 0 26812 NULL
 +iwl_trans_read_mem32_26825 iwl_trans_read_mem32 0 26825 NULL
 +smk_write_load_26829 smk_write_load 3 26829 NULL
++snd_pcm_action_mutex_26832 snd_pcm_action_mutex 0 26832 NULL
 +scnprint_id_26842 scnprint_id 3-0 26842 NULL
 +ecryptfs_miscdev_write_26847 ecryptfs_miscdev_write 3 26847 NULL
 +ss_alloc_ep_req_26848 ss_alloc_ep_req 2 26848 NULL
@@ -117371,32 +119647,37 @@ index 0000000..386792a
 +hhf_zalloc_26912 hhf_zalloc 1 26912 NULL
 +cfg80211_process_auth_26916 cfg80211_process_auth 3 26916 NULL
 +x25_asy_change_mtu_26928 x25_asy_change_mtu 2 26928 NULL
++brcmf_usb_dl_cmd_26931 brcmf_usb_dl_cmd 4 26931 NULL
 +scsi_tgt_copy_sense_26933 scsi_tgt_copy_sense 3 26933 NULL
 +sctp_setsockopt_adaptation_layer_26935 sctp_setsockopt_adaptation_layer 3 26935 NULL nohasharray
 +pwr_ps_enter_read_26935 pwr_ps_enter_read 3 26935 &sctp_setsockopt_adaptation_layer_26935
 +hecubafb_write_26942 hecubafb_write 3 26942 NULL
-+extract_entropy_user_26952 extract_entropy_user 3 26952 NULL nohasharray
-+do_trimming_26952 do_trimming 3 26952 &extract_entropy_user_26952
++do_trimming_26952 do_trimming 3 26952 NULL nohasharray
++extract_entropy_user_26952 extract_entropy_user 3 26952 &do_trimming_26952
 +do_direct_IO_26979 do_direct_IO 0 26979 NULL
++lustre_msg_size_26995 lustre_msg_size 2 26995 NULL
++sc16is7xx_port_read_27051 sc16is7xx_port_read 0 27051 NULL
 +__videobuf_alloc_vb_27062 __videobuf_alloc_vb 1 27062 NULL
-+ext4_convert_unwritten_extents_27064 ext4_convert_unwritten_extents 4-3-0 27064 NULL
++ext4_convert_unwritten_extents_27064 ext4_convert_unwritten_extents 4-3 27064 NULL
 +snd_pcm_lib_period_bytes_27071 snd_pcm_lib_period_bytes 0 27071 NULL
 +paravirt_read_msr_27077 paravirt_read_msr 0 27077 NULL
 +alloc_fdmem_27083 alloc_fdmem 1 27083 NULL
 +btmrvl_hscmd_write_27089 btmrvl_hscmd_write 3 27089 NULL nohasharray
 +ath9k_hw_4k_dump_eeprom_27089 ath9k_hw_4k_dump_eeprom 5-4 27089 &btmrvl_hscmd_write_27089
 +__devcgroup_inode_permission_27108 __devcgroup_inode_permission 0 27108 NULL
-+get_kernel_page_27133 get_kernel_page 0 27133 NULL
 +drbd_get_capacity_27141 drbd_get_capacity 0 27141 NULL
 +pms_capture_27142 pms_capture 4 27142 NULL
 +btmrvl_hscfgcmd_write_27143 btmrvl_hscfgcmd_write 3 27143 NULL
++wil_write_file_wmi_27150 wil_write_file_wmi 3 27150 NULL
 +snd_compr_calc_avail_27165 snd_compr_calc_avail 0 27165 NULL
 +ieee80211_if_read_rc_rateidx_mask_5ghz_27183 ieee80211_if_read_rc_rateidx_mask_5ghz 3 27183 NULL
-+write_kmem_27225 write_kmem 3 27225 NULL
++write_kmem_27225 write_kmem 3 27225 NULL nohasharray
++svcxdr_tmpalloc_27225 svcxdr_tmpalloc 2 27225 &write_kmem_27225
 +dbAllocAG_27228 dbAllocAG 0 27228 NULL
 +rxrpc_request_key_27235 rxrpc_request_key 3 27235 NULL
 +ll_track_gid_seq_write_27267 ll_track_gid_seq_write 3 27267 NULL
 +comedi_alloc_devpriv_27272 comedi_alloc_devpriv 2 27272 NULL
++get_rx_fifo_content_27283 get_rx_fifo_content 0 27283 NULL
 +copy_from_buf_27308 copy_from_buf 4-2 27308 NULL
 +virtqueue_add_inbuf_27312 virtqueue_add_inbuf 3 27312 NULL
 +snd_pcm_oss_write2_27332 snd_pcm_oss_write2 3-0 27332 NULL
@@ -117406,13 +119687,15 @@ index 0000000..386792a
 +seq_read_27411 seq_read 3 27411 NULL
 +ib_dma_map_sg_27413 ib_dma_map_sg 0 27413 NULL
 +ieee80211_if_read_smps_27416 ieee80211_if_read_smps 3 27416 NULL
++ocfs2_refcount_cal_cow_clusters_27422 ocfs2_refcount_cal_cow_clusters 3-4 27422 NULL
 +cypress_write_27423 cypress_write 4 27423 NULL
 +sddr09_read_data_27447 sddr09_read_data 3 27447 NULL
 +v4l2_ctrl_new_std_menu_items_27487 v4l2_ctrl_new_std_menu_items 4 27487 NULL
 +hcd_buffer_alloc_27495 hcd_buffer_alloc 2 27495 NULL
 +ip_set_get_h32_27498 ip_set_get_h32 0 27498 NULL
 +btrfs_get_64_27499 btrfs_get_64 0 27499 NULL
-+garmin_read_process_27509 garmin_read_process 3 27509 NULL
++garmin_read_process_27509 garmin_read_process 3 27509 NULL nohasharray
++mcryptd_hash_setkey_27509 mcryptd_hash_setkey 3 27509 &garmin_read_process_27509
 +oti_alloc_cookies_27510 oti_alloc_cookies 2 27510 NULL
 +ib_copy_to_udata_27525 ib_copy_to_udata 3 27525 NULL
 +snd_sonicvibes_getdmaa_27552 snd_sonicvibes_getdmaa 0 27552 NULL
@@ -117422,8 +119705,7 @@ index 0000000..386792a
 +C_SYSC_mbind_27636 C_SYSC_mbind 5 27636 NULL
 +ocfs2_xattr_ibody_get_27642 ocfs2_xattr_ibody_get 0 27642 NULL nohasharray
 +read_flush_procfs_27642 read_flush_procfs 3 27642 &ocfs2_xattr_ibody_get_27642 nohasharray
-+nl80211_send_connect_result_27642 nl80211_send_connect_result 5-7 27642 &read_flush_procfs_27642 nohasharray
-+ocfs2_direct_IO_27642 ocfs2_direct_IO 4 27642 &nl80211_send_connect_result_27642
++nl80211_send_connect_result_27642 nl80211_send_connect_result 5-7 27642 &read_flush_procfs_27642
 +add_new_gdb_27643 add_new_gdb 3 27643 NULL
 +btrfs_fallocate_27647 btrfs_fallocate 3-4 27647 NULL
 +qnx6_readpages_27657 qnx6_readpages 4 27657 NULL
@@ -117433,6 +119715,7 @@ index 0000000..386792a
 +evm_write_key_27715 evm_write_key 3 27715 NULL
 +ieee80211_if_fmt_dot11MeshGateAnnouncementProtocol_27722 ieee80211_if_fmt_dot11MeshGateAnnouncementProtocol 3 27722 NULL
 +xfs_dir2_block_sfsize_27727 xfs_dir2_block_sfsize 0 27727 NULL
++load_scode_27738 load_scode 2 27738 NULL
 +SyS_setsockopt_27759 SyS_setsockopt 5 27759 NULL
 +transport_init_session_tags_27776 transport_init_session_tags 1-2 27776 NULL
 +__lov_setstripe_27782 __lov_setstripe 2 27782 NULL
@@ -117447,9 +119730,8 @@ index 0000000..386792a
 +unix_seqpacket_sendmsg_27893 unix_seqpacket_sendmsg 4 27893 NULL
 +i915_error_object_create_sized_27919 i915_error_object_create_sized 4 27919 NULL
 +check_mapped_name_27943 check_mapped_name 3 27943 NULL
-+tracing_clock_write_27961 tracing_clock_write 3 27961 NULL nohasharray
-+bio_next_split_27961 bio_next_split 2 27961 &tracing_clock_write_27961
-+security_path_chown_27966 security_path_chown 0 27966 NULL
++bio_next_split_27961 bio_next_split 2 27961 NULL nohasharray
++tracing_clock_write_27961 tracing_clock_write 3 27961 &bio_next_split_27961
 +tipc_media_addr_printf_27971 tipc_media_addr_printf 2 27971 NULL
 +mic_rx_pkts_read_27972 mic_rx_pkts_read 3 27972 NULL nohasharray
 +device_register_27972 device_register 0 27972 &mic_rx_pkts_read_27972
@@ -117460,15 +119742,16 @@ index 0000000..386792a
 +snd_rawmidi_write_28008 snd_rawmidi_write 3 28008 NULL
 +powercap_register_zone_28028 powercap_register_zone 6 28028 NULL
 +sctp_setsockopt_maxburst_28041 sctp_setsockopt_maxburst 3 28041 NULL
-+rts51x_xd_rw_28046 rts51x_xd_rw 3-4 28046 NULL
 +cx231xx_init_vbi_isoc_28053 cx231xx_init_vbi_isoc 3-2-4 28053 NULL
 +pool_status_28055 pool_status 5 28055 NULL
 +init_rs_non_canonical_28059 init_rs_non_canonical 1 28059 NULL
 +lpfc_idiag_mbxacc_read_28061 lpfc_idiag_mbxacc_read 3 28061 NULL
 +tx_frag_bad_mblk_num_read_28064 tx_frag_bad_mblk_num_read 3 28064 NULL
++acpi_gsb_i2c_write_bytes_28082 acpi_gsb_i2c_write_bytes 4 28082 NULL
 +mmc_test_alloc_mem_28102 mmc_test_alloc_mem 3-2 28102 NULL
 +rx_defrag_need_defrag_read_28117 rx_defrag_need_defrag_read 3 28117 NULL
 +vgacon_adjust_height_28124 vgacon_adjust_height 2 28124 NULL
++m25p80_read_reg_28132 m25p80_read_reg 4 28132 NULL
 +video_read_28148 video_read 3 28148 NULL
 +snd_midi_channel_alloc_set_28153 snd_midi_channel_alloc_set 1 28153 NULL
 +stats_dot11FCSErrorCount_read_28154 stats_dot11FCSErrorCount_read 3 28154 NULL
@@ -117476,11 +119759,11 @@ index 0000000..386792a
 +macvtap_get_user_28185 macvtap_get_user 4 28185 NULL
 +counter_free_res_28187 counter_free_res 5 28187 NULL
 +read_disk_sb_28188 read_disk_sb 2 28188 NULL
++nvkm_output_dp_create__28192 nvkm_output_dp_create_ 6 28192 NULL
 +nouveau_mxm_create__28200 nouveau_mxm_create_ 4 28200 NULL
 +__qp_memcpy_from_queue_28220 __qp_memcpy_from_queue 3-4 28220 NULL
 +line6_alloc_sysex_buffer_28225 line6_alloc_sysex_buffer 4 28225 NULL
 +amd_nb_num_28228 amd_nb_num 0 28228 NULL
-+fuse_direct_IO_28275 fuse_direct_IO 4 28275 NULL
 +usemap_size_28281 usemap_size 0 28281 NULL
 +inline_xattr_size_28285 inline_xattr_size 0 28285 NULL
 +dma_map_sg_attrs_28289 dma_map_sg_attrs 0 28289 NULL
@@ -117488,8 +119771,7 @@ index 0000000..386792a
 +kstrtos16_from_user_28300 kstrtos16_from_user 2 28300 NULL
 +nouveau_compat_ioctl_28305 nouveau_compat_ioctl 2 28305 NULL
 +snd_pcm_oss_read_28317 snd_pcm_oss_read 3 28317 NULL
-+security_inode_link_28327 security_inode_link 0 28327 NULL
-+generic_write_checks_28329 generic_write_checks 0 28329 NULL
++xpcs_mmd_read_28331 xpcs_mmd_read 3 28331 NULL
 +bm_entry_write_28338 bm_entry_write 3 28338 NULL
 +tcp_copy_to_iovec_28344 tcp_copy_to_iovec 3 28344 NULL
 +snapshot_write_28351 snapshot_write 3 28351 NULL
@@ -117499,30 +119781,33 @@ index 0000000..386792a
 +tx_frag_cache_miss_read_28394 tx_frag_cache_miss_read 3 28394 NULL
 +bypass_pwup_write_28416 bypass_pwup_write 3 28416 NULL
 +subdev_ioctl_28417 subdev_ioctl 2 28417 NULL
++__videobuf_mmap_setup_28421 __videobuf_mmap_setup 0 28421 NULL
 +ksocknal_alloc_tx_28426 ksocknal_alloc_tx 2 28426 NULL
++hid_hw_output_report_28429 hid_hw_output_report 0 28429 NULL
 +mpage_readpages_28436 mpage_readpages 3 28436 NULL
 +snd_emu10k1_efx_read_28452 snd_emu10k1_efx_read 2 28452 NULL
 +key_mic_failures_read_28457 key_mic_failures_read 3 28457 NULL
 +alloc_irq_cpu_rmap_28459 alloc_irq_cpu_rmap 1 28459 NULL
 +ps_poll_upsd_utilization_read_28519 ps_poll_upsd_utilization_read 3 28519 NULL
-+i2400m_tx_stats_read_28527 i2400m_tx_stats_read 3 28527 NULL
++sh_irda_init_iobuf_28527 sh_irda_init_iobuf 2 28527 NULL nohasharray
++i2400m_tx_stats_read_28527 i2400m_tx_stats_read 3 28527 &sh_irda_init_iobuf_28527
 +early_init_dt_alloc_memory_arch_28528 early_init_dt_alloc_memory_arch 1 28528 NULL
 +sel_read_policycap_28544 sel_read_policycap 3 28544 NULL
-+mptctl_getiocinfo_28545 mptctl_getiocinfo 2 28545 NULL nohasharray
-+aio_read_events_28545 aio_read_events 3 28545 &mptctl_getiocinfo_28545 nohasharray
-+run_delalloc_range_28545 run_delalloc_range 3-4 28545 &aio_read_events_28545
-+sysfs_create_bin_file_28551 sysfs_create_bin_file 0 28551 NULL
++run_delalloc_range_28545 run_delalloc_range 3-4 28545 NULL nohasharray
++aio_read_events_28545 aio_read_events 3 28545 &run_delalloc_range_28545 nohasharray
++mptctl_getiocinfo_28545 mptctl_getiocinfo 2 28545 &aio_read_events_28545
 +b43legacy_debugfs_write_28556 b43legacy_debugfs_write 3 28556 NULL
 +asymmetric_verify_28567 asymmetric_verify 3 28567 NULL
 +oxygen_read32_28582 oxygen_read32 0 28582 NULL
 +task_cgroup_path_28599 task_cgroup_path 3 28599 NULL
 +extract_entropy_28604 extract_entropy 5-3 28604 NULL
++xgbe_common_write_28609 xgbe_common_write 2 28609 NULL
 +kfifo_unused_28612 kfifo_unused 0 28612 NULL
-+snd_nm256_capture_copy_28622 snd_nm256_capture_copy 3-5 28622 NULL
++snd_nm256_capture_copy_28622 snd_nm256_capture_copy 5-3 28622 NULL
 +setup_usemap_28636 setup_usemap 3-4 28636 NULL
 +qib_handle_6120_hwerrors_28642 qib_handle_6120_hwerrors 3 28642 NULL
 +p9_fcall_alloc_28652 p9_fcall_alloc 1 28652 NULL
-+read_nic_io_byte_28654 read_nic_io_byte 0 28654 NULL
++iwl_dbgfs_nic_temp_read_28662 iwl_dbgfs_nic_temp_read 3 28662 NULL
 +blk_queue_resize_tags_28670 blk_queue_resize_tags 2 28670 NULL
 +SyS_setgroups16_28686 SyS_setgroups16 1 28686 NULL
 +kvm_mmu_get_page_28692 kvm_mmu_get_page 2 28692 NULL
@@ -117531,14 +119816,15 @@ index 0000000..386792a
 +snd_pcm_aio_write_28738 snd_pcm_aio_write 3 28738 NULL
 +read_file_btcoex_28743 read_file_btcoex 3 28743 NULL
 +max_hw_blocks_28748 max_hw_blocks 0 28748 NULL
++nv50_dmac_create_28762 nv50_dmac_create 5 28762 NULL
 +rpc_pipe_generic_upcall_28766 rpc_pipe_generic_upcall 4 28766 NULL
 +ath6kl_get_num_reg_28780 ath6kl_get_num_reg 0 28780 NULL
 +sel_write_member_28800 sel_write_member 3 28800 NULL
 +iwl_dbgfs_rxon_filter_flags_read_28832 iwl_dbgfs_rxon_filter_flags_read 3 28832 NULL
 +kernel_tree_alloc_28833 kernel_tree_alloc 1 28833 NULL
++parser_init_byteStream_28841 parser_init_byteStream 2 28841 NULL
 +vp_request_msix_vectors_28849 vp_request_msix_vectors 2 28849 NULL
 +ipv6_renew_options_28867 ipv6_renew_options 5 28867 NULL
-+max_io_len_target_boundary_28879 max_io_len_target_boundary 0-1 28879 NULL
 +packet_sendmsg_spkt_28885 packet_sendmsg_spkt 4 28885 NULL
 +da9055_group_write_28904 da9055_group_write 2-3 28904 NULL
 +ps_upsd_timeouts_read_28924 ps_upsd_timeouts_read 3 28924 NULL
@@ -117570,16 +119856,17 @@ index 0000000..386792a
 +iwl_dbgfs_temperature_read_29224 iwl_dbgfs_temperature_read 3 29224 NULL
 +nvme_trans_copy_from_user_29227 nvme_trans_copy_from_user 3 29227 NULL
 +irq_domain_add_linear_29236 irq_domain_add_linear 2 29236 NULL
-+recover_peb_29238 recover_peb 0 29238 NULL
 +evdev_handle_get_val_29242 evdev_handle_get_val 5-6 29242 NULL
 +security_context_to_sid_core_29248 security_context_to_sid_core 2 29248 NULL
 +rbd_osd_req_create_29260 rbd_osd_req_create 3 29260 NULL
++mwifiex_hscfg_write_29262 mwifiex_hscfg_write 3 29262 NULL
 +prism2_set_genericelement_29277 prism2_set_genericelement 3 29277 NULL
 +ext4_fiemap_29296 ext4_fiemap 4 29296 NULL
 +sn9c102_read_29305 sn9c102_read 3 29305 NULL
 +__fuse_get_req_29315 __fuse_get_req 2 29315 NULL
 +lprocfs_write_helper_29323 lprocfs_write_helper 2 29323 NULL
 +kvm_handle_hva_29326 kvm_handle_hva 2 29326 NULL
++obd_proc_jobid_name_seq_write_29332 obd_proc_jobid_name_seq_write 3 29332 NULL
 +tun_put_user_29337 tun_put_user 5 29337 NULL
 +__alloc_ei_netdev_29338 __alloc_ei_netdev 1 29338 NULL
 +l2cap_sock_setsockopt_old_29346 l2cap_sock_setsockopt_old 4 29346 NULL
@@ -117588,27 +119875,28 @@ index 0000000..386792a
 +crypto_ahash_alignmask_29445 crypto_ahash_alignmask 0 29445 NULL
 +p9_client_prepare_req_29448 p9_client_prepare_req 3 29448 NULL
 +validate_scan_freqs_29462 validate_scan_freqs 0 29462 NULL
++memcg_update_cache_params_29465 memcg_update_cache_params 2 29465 NULL
 +SyS_flistxattr_29474 SyS_flistxattr 3 29474 NULL
 +do_register_entry_29478 do_register_entry 4 29478 NULL
 +simple_strtoul_29480 simple_strtoul 0 29480 NULL
 +btmrvl_pscmd_write_29504 btmrvl_pscmd_write 3 29504 NULL
 +btrfs_file_extent_disk_bytenr_29505 btrfs_file_extent_disk_bytenr 0 29505 NULL
-+i2c_add_adapter_29507 i2c_add_adapter 0 29507 NULL
 +usnic_vnic_spec_dump_29508 usnic_vnic_spec_dump 2 29508 NULL
 +write_file_regidx_29517 write_file_regidx 3 29517 NULL
 +atk_debugfs_ggrp_read_29522 atk_debugfs_ggrp_read 3 29522 NULL
 +pci_enable_msix_29524 pci_enable_msix 0 29524 NULL
++mic_vringh_copy_29531 mic_vringh_copy 4 29531 NULL
 +ftrace_write_29551 ftrace_write 3 29551 NULL
 +idetape_queue_rw_tail_29562 idetape_queue_rw_tail 3 29562 NULL
 +leaf_dealloc_29566 leaf_dealloc 3 29566 NULL
 +kvm_read_guest_virt_system_29569 kvm_read_guest_virt_system 4-2 29569 NULL
 +lbs_lowsnr_read_29571 lbs_lowsnr_read 3 29571 NULL
-+security_path_chmod_29578 security_path_chmod 0 29578 NULL
 +iwl_dbgfs_missed_beacon_write_29586 iwl_dbgfs_missed_beacon_write 3 29586 NULL
 +pvr2_hdw_report_unlocked_29589 pvr2_hdw_report_unlocked 4-0 29589 NULL
 +dio_set_defer_completion_29599 dio_set_defer_completion 0 29599 NULL
 +slots_per_page_29601 slots_per_page 0 29601 NULL
 +osc_cached_mb_seq_write_29610 osc_cached_mb_seq_write 3 29610 NULL
++lstcon_rpc_init_29623 lstcon_rpc_init 4 29623 NULL
 +nla_get_u16_29624 nla_get_u16 0 29624 NULL
 +tx_frag_cache_hit_read_29639 tx_frag_cache_hit_read 3 29639 NULL
 +sctp_make_abort_user_29654 sctp_make_abort_user 3 29654 NULL nohasharray
@@ -117620,6 +119908,7 @@ index 0000000..386792a
 +read_cis_cache_29735 read_cis_cache 4 29735 NULL
 +xfs_new_eof_29737 xfs_new_eof 2 29737 NULL
 +std_nic_write_29752 std_nic_write 3 29752 NULL
++static_key_count_29771 static_key_count 0 29771 NULL
 +tg3_irq_count_29786 tg3_irq_count 0 29786 NULL
 +dbAlloc_29794 dbAlloc 0 29794 NULL
 +tcp_sendpage_29829 tcp_sendpage 4 29829 NULL
@@ -117628,20 +119917,19 @@ index 0000000..386792a
 +count_partial_29850 count_partial 0 29850 NULL
 +write_file_bool_bmps_29870 write_file_bool_bmps 3 29870 NULL
 +ipv6_setsockopt_29871 ipv6_setsockopt 5 29871 NULL
-+scsi_end_request_29876 scsi_end_request 3 29876 NULL
 +crypto_aead_alignmask_29885 crypto_aead_alignmask 0 29885 NULL
 +rtw_cfg80211_indicate_sta_assoc_29897 rtw_cfg80211_indicate_sta_assoc 3 29897 NULL
++nv94_gpio_intr_mask_29907 nv94_gpio_intr_mask 4-3 29907 NULL
 +lov_ost_pool_extend_29914 lov_ost_pool_extend 2 29914 NULL
 +write_file_queue_29922 write_file_queue 3 29922 NULL
 +__btrfs_getxattr_29947 __btrfs_getxattr 0 29947 NULL nohasharray
 +ipv6_recv_error_29947 ipv6_recv_error 3 29947 &__btrfs_getxattr_29947
-+arch_setup_dmar_msi_29992 arch_setup_dmar_msi 0 29992 NULL
++zero_iovec_29955 zero_iovec 1 29955 NULL
 +dev_mem_write_30028 dev_mem_write 3 30028 NULL
 +alloc_netdev_mqs_30030 alloc_netdev_mqs 1 30030 NULL
 +sysfs_add_file_mode_ns_30038 sysfs_add_file_mode_ns 0 30038 NULL
 +scsi_vpd_inquiry_30040 scsi_vpd_inquiry 0-4 30040 NULL
 +drp_wmove_30043 drp_wmove 4 30043 NULL
-+__pci_request_selected_regions_30058 __pci_request_selected_regions 0 30058 NULL
 +cxgbi_ddp_reserve_30091 cxgbi_ddp_reserve 4 30091 NULL
 +snd_midi_channel_init_set_30092 snd_midi_channel_init_set 1 30092 NULL
 +rx_filter_data_filter_read_30098 rx_filter_data_filter_read 3 30098 NULL
@@ -117655,14 +119943,11 @@ index 0000000..386792a
 +mempool_create_page_pool_30189 mempool_create_page_pool 1 30189 NULL
 +drm_property_create_bitmask_30195 drm_property_create_bitmask 5 30195 NULL
 +__genwqe_readq_30197 __genwqe_readq 0 30197 NULL
-+snd_pcm_playback_forward_30201 snd_pcm_playback_forward 0-2 30201 NULL
 +usblp_ioctl_30203 usblp_ioctl 2 30203 NULL
-+read_4k_modal_eeprom_30212 read_4k_modal_eeprom 3 30212 NULL
 +SyS_semop_30227 SyS_semop 3 30227 NULL
 +bitmap_file_set_bit_30228 bitmap_file_set_bit 2 30228 NULL
 +rawv6_recvmsg_30265 rawv6_recvmsg 4 30265 NULL
-+isr_pci_pm_read_30271 isr_pci_pm_read 3 30271 NULL nohasharray
-+try_break_deleg_30271 try_break_deleg 0 30271 &isr_pci_pm_read_30271
++isr_pci_pm_read_30271 isr_pci_pm_read 3 30271 NULL
 +compat_readv_30273 compat_readv 3 30273 NULL
 +skcipher_sendmsg_30290 skcipher_sendmsg 4 30290 NULL
 +pipeline_sec_frag_swi_read_30294 pipeline_sec_frag_swi_read 3 30294 NULL
@@ -117673,12 +119958,10 @@ index 0000000..386792a
 +resource_from_user_30341 resource_from_user 3 30341 NULL
 +o2nm_this_node_30342 o2nm_this_node 0 30342 NULL
 +kstrtou32_from_user_30361 kstrtou32_from_user 2 30361 NULL
-+pagecache_write_begin_30364 pagecache_write_begin 0 30364 NULL
 +pvscsi_change_queue_depth_30365 pvscsi_change_queue_depth 2 30365 NULL
 +C_SYSC_readv_30369 C_SYSC_readv 3 30369 NULL
 +blkdev_issue_zeroout_30392 blkdev_issue_zeroout 3 30392 NULL
 +c4iw_init_resource_30393 c4iw_init_resource 2-3 30393 NULL
-+get_kernel_pages_30397 get_kernel_pages 0 30397 NULL
 +vb2_fop_write_30420 vb2_fop_write 3 30420 NULL
 +tx_tx_template_prepared_read_30424 tx_tx_template_prepared_read 3 30424 NULL
 +lstcon_session_info_30425 lstcon_session_info 6 30425 NULL
@@ -117686,19 +119969,20 @@ index 0000000..386792a
 +tx_tx_template_programmed_read_30461 tx_tx_template_programmed_read 3 30461 NULL
 +urandom_read_30462 urandom_read 3 30462 NULL
 +zoran_ioctl_30465 zoran_ioctl 2 30465 NULL
-+i2c_ctrl_read_30467 i2c_ctrl_read 0 30467 NULL
 +adu_write_30487 adu_write 3 30487 NULL
 +dtim_interval_write_30489 dtim_interval_write 3 30489 NULL
 +batadv_send_tt_request_30493 batadv_send_tt_request 5 30493 NULL
-+__send_duplicate_bios_30498 __send_duplicate_bios 4 30498 NULL
 +memblock_virt_alloc_node_30515 memblock_virt_alloc_node 1 30515 NULL
 +dwc3_testmode_write_30516 dwc3_testmode_write 3 30516 NULL
-+debug_debug2_read_30526 debug_debug2_read 3 30526 NULL
-+ixgbevf_acquire_msix_vectors_30559 ixgbevf_acquire_msix_vectors 2 30559 NULL
++debug_debug2_read_30526 debug_debug2_read 3 30526 NULL nohasharray
++set_config_30526 set_config 0 30526 &debug_debug2_read_30526
++xfs_sb_version_hasftype_30559 xfs_sb_version_hasftype 0 30559 NULL nohasharray
++ixgbevf_acquire_msix_vectors_30559 ixgbevf_acquire_msix_vectors 2 30559 &xfs_sb_version_hasftype_30559
 +disk_expand_part_tbl_30561 disk_expand_part_tbl 2 30561 NULL
 +set_le_30581 set_le 4 30581 NULL
 +blk_init_tags_30592 blk_init_tags 1 30592 NULL
 +sgl_map_user_pages_30610 sgl_map_user_pages 2 30610 NULL
++SyS_msgrcv_30611 SyS_msgrcv 3 30611 NULL
 +macvtap_sendmsg_30629 macvtap_sendmsg 4 30629 NULL
 +ieee80211_if_read_dot11MeshAwakeWindowDuration_30631 ieee80211_if_read_dot11MeshAwakeWindowDuration 3 30631 NULL
 +compat_raw_setsockopt_30634 compat_raw_setsockopt 5 30634 NULL
@@ -117707,11 +119991,13 @@ index 0000000..386792a
 +jffs2_flash_read_30667 jffs2_flash_read 0 30667 NULL
 +ni_ai_fifo_read_30681 ni_ai_fifo_read 3 30681 NULL
 +sst_hsw_get_dsp_position_30691 sst_hsw_get_dsp_position 0 30691 NULL
++get_pages_alloc_iovec_30699 get_pages_alloc_iovec 3-0 30699 NULL
 +dccp_setsockopt_ccid_30701 dccp_setsockopt_ccid 4 30701 NULL
 +lbs_wrbbp_write_30712 lbs_wrbbp_write 3 30712 NULL
 +lbs_debugfs_read_30721 lbs_debugfs_read 3 30721 NULL
-+snd_nm256_playback_silence_30727 snd_nm256_playback_silence 3-4 30727 NULL
++snd_nm256_playback_silence_30727 snd_nm256_playback_silence 4-3 30727 NULL
 +snapshot_status_30744 snapshot_status 5 30744 NULL
++fuse_direct_IO_30753 fuse_direct_IO 4 30753 NULL
 +fuse_conn_limit_write_30777 fuse_conn_limit_write 3 30777 NULL
 +__bio_alloc_30787 __bio_alloc 3 30787 NULL
 +smk_read_doi_30813 smk_read_doi 3 30813 NULL
@@ -117719,9 +120005,11 @@ index 0000000..386792a
 +ath10k_write_fw_dbglog_30835 ath10k_write_fw_dbglog 3 30835 NULL
 +of_gpio_named_count_30841 of_gpio_named_count 0 30841 NULL
 +sctp_setsockopt_auth_chunk_30843 sctp_setsockopt_auth_chunk 3 30843 NULL
++cfg80211_rx_mgmt_30844 cfg80211_rx_mgmt 5 30844 NULL
 +wd_autoreset_write_30862 wd_autoreset_write 3 30862 NULL
 +ieee80211_if_fmt_dropped_frames_no_route_30884 ieee80211_if_fmt_dropped_frames_no_route 3 30884 NULL
 +pn_recvmsg_30887 pn_recvmsg 4 30887 NULL
++copy_to_iter_30901 copy_to_iter 2 30901 NULL
 +usnic_debugfs_buildinfo_read_30928 usnic_debugfs_buildinfo_read 3 30928 NULL
 +sctp_setsockopt_rtoinfo_30941 sctp_setsockopt_rtoinfo 3 30941 NULL
 +tty_insert_flip_string_flags_30969 tty_insert_flip_string_flags 4 30969 NULL
@@ -117730,7 +120018,6 @@ index 0000000..386792a
 +lbs_host_sleep_read_31013 lbs_host_sleep_read 3 31013 NULL
 +ima_eventsig_init_31022 ima_eventsig_init 5 31022 NULL
 +template_fmt_size_31033 template_fmt_size 0 31033 NULL
-+do_setup_msi_irqs_31043 do_setup_msi_irqs 2 31043 NULL
 +stride_pg_count_31053 stride_pg_count 0-3-2-1-4-5 31053 NULL
 +lbs_failcount_read_31063 lbs_failcount_read 3 31063 NULL
 +sctp_setsockopt_context_31091 sctp_setsockopt_context 3 31091 NULL
@@ -117740,10 +120027,10 @@ index 0000000..386792a
 +kimage_normal_alloc_31140 kimage_normal_alloc 3 31140 NULL
 +size_inside_page_31141 size_inside_page 0 31141 NULL
 +w9966_v4l_read_31148 w9966_v4l_read 3 31148 NULL
++nvme_set_features_31169 nvme_set_features 0 31169 NULL
 +ch_do_scsi_31171 ch_do_scsi 4 31171 NULL
 +r592_read_fifo_pio_31198 r592_read_fifo_pio 3 31198 NULL
 +mtdchar_readoob_31200 mtdchar_readoob 4 31200 NULL
-+__btrfs_free_reserved_extent_31207 __btrfs_free_reserved_extent 2 31207 NULL
 +cpumask_weight_31215 cpumask_weight 0 31215 NULL
 +__read_reg_31216 __read_reg 0 31216 NULL
 +atm_get_addr_31221 atm_get_addr 3 31221 NULL
@@ -117752,6 +120039,7 @@ index 0000000..386792a
 +_create_sg_bios_31244 _create_sg_bios 4 31244 NULL
 +ieee80211_if_read_last_beacon_31257 ieee80211_if_read_last_beacon 3 31257 NULL
 +hash_netportnet4_expire_31290 hash_netportnet4_expire 4 31290 NULL
++iwl_dbgfs_set_nic_temperature_read_31300 iwl_dbgfs_set_nic_temperature_read 3 31300 NULL
 +uvc_simplify_fraction_31303 uvc_simplify_fraction 3 31303 NULL
 +sisusbcon_scroll_31315 sisusbcon_scroll 5-2-3 31315 NULL
 +command_file_write_31318 command_file_write 3 31318 NULL
@@ -117764,6 +120052,7 @@ index 0000000..386792a
 +vb2_vmalloc_get_userptr_31374 vb2_vmalloc_get_userptr 3-2 31374 NULL
 +trace_parser_get_init_31379 trace_parser_get_init 2 31379 NULL
 +inb_31388 inb 0 31388 NULL
++mp_ioapic_pin_count_31393 mp_ioapic_pin_count 0 31393 NULL
 +key_ifindex_read_31411 key_ifindex_read 3 31411 NULL
 +_sp2d_max_pg_31422 _sp2d_max_pg 0 31422 NULL
 +TSS_checkhmac1_31429 TSS_checkhmac1 5 31429 NULL
@@ -117782,8 +120071,8 @@ index 0000000..386792a
 +osst_write_31581 osst_write 3 31581 NULL
 +snd_compr_get_avail_31584 snd_compr_get_avail 0 31584 NULL
 +iwl_dbgfs_ucode_tx_stats_read_31611 iwl_dbgfs_ucode_tx_stats_read 3 31611 NULL
-+arvo_sysfs_read_31617 arvo_sysfs_read 6 31617 NULL nohasharray
-+memblock_virt_alloc_nopanic_31617 memblock_virt_alloc_nopanic 1 31617 &arvo_sysfs_read_31617
++memblock_virt_alloc_nopanic_31617 memblock_virt_alloc_nopanic 1 31617 NULL nohasharray
++arvo_sysfs_read_31617 arvo_sysfs_read 6 31617 &memblock_virt_alloc_nopanic_31617
 +usnic_ib_dump_vf_31623 usnic_ib_dump_vf 3 31623 NULL
 +videobuf_read_one_31637 videobuf_read_one 3 31637 NULL
 +pod_alloc_sysex_buffer_31651 pod_alloc_sysex_buffer 3 31651 NULL
@@ -117801,8 +120090,8 @@ index 0000000..386792a
 +bcm_char_read_31750 bcm_char_read 3 31750 NULL
 +snd_seq_device_new_31753 snd_seq_device_new 4 31753 NULL
 +SyS_lsetxattr_31766 SyS_lsetxattr 4 31766 NULL
-+osync_buffers_list_31789 osync_buffers_list 0 31789 NULL
 +usblp_cache_device_id_string_31790 usblp_cache_device_id_string 0 31790 NULL
++get_count_order_31800 get_count_order 0 31800 NULL
 +ecryptfs_send_message_locked_31801 ecryptfs_send_message_locked 2 31801 NULL
 +isr_rx_procs_read_31804 isr_rx_procs_read 3 31804 NULL
 +data_write_31805 data_write 3 31805 NULL
@@ -117820,8 +120109,7 @@ index 0000000..386792a
 +kmem_alloc_31920 kmem_alloc 1 31920 NULL
 +era_status_31934 era_status 5 31934 NULL
 +SYSC_sethostname_31940 SYSC_sethostname 2 31940 NULL
-+read_mem_31942 read_mem 3 31942 NULL nohasharray
-+iov_iter_copy_from_user_31942 iov_iter_copy_from_user 4-0 31942 &read_mem_31942
++read_mem_31942 read_mem 3 31942 NULL
 +ext4_zero_range_31944 ext4_zero_range 3-2 31944 NULL
 +vb2_write_31948 vb2_write 3 31948 NULL
 +pvr2_ctrl_get_valname_31951 pvr2_ctrl_get_valname 4 31951 NULL
@@ -117834,17 +120122,20 @@ index 0000000..386792a
 +lustre_acl_xattr_merge2posix_31992 lustre_acl_xattr_merge2posix 2 31992 NULL
 +sysfs_create_file_31996 sysfs_create_file 0 31996 NULL
 +calc_hmac_32010 calc_hmac 3 32010 NULL
-+aead_len_32021 aead_len 0 32021 NULL nohasharray
-+aer_init_32021 aer_init 0 32021 &aead_len_32021
++aead_len_32021 aead_len 0 32021 NULL
++sci_dma_rx_push_32029 sci_dma_rx_push 2 32029 NULL
 +stk_read_32038 stk_read 3 32038 NULL
 +SYSC_llistxattr_32061 SYSC_llistxattr 3 32061 NULL
 +proc_scsi_devinfo_write_32064 proc_scsi_devinfo_write 3 32064 NULL
 +cow_file_range_inline_32091 cow_file_range_inline 3 32091 NULL
++kiblnd_alloc_pages_32092 kiblnd_alloc_pages 3 32092 NULL
 +bio_alloc_32095 bio_alloc 2 32095 NULL
 +ath6kl_fwlog_read_32101 ath6kl_fwlog_read 3 32101 NULL
++wil_read_file_recovery_32104 wil_read_file_recovery 3 32104 NULL
 +disk_status_32120 disk_status 4 32120 NULL
 +kobject_add_internal_32133 kobject_add_internal 0 32133 NULL
 +venus_link_32165 venus_link 5 32165 NULL
++ocfs2_direct_IO_32168 ocfs2_direct_IO 4 32168 NULL
 +do_writepages_32173 do_writepages 0 32173 NULL
 +del_ptr_32197 del_ptr 4 32197 NULL
 +wusb_ccm_mac_32199 wusb_ccm_mac 7 32199 NULL
@@ -117860,11 +120151,11 @@ index 0000000..386792a
 +t4_alloc_mem_32342 t4_alloc_mem 1 32342 NULL
 +dispatch_ioctl_32357 dispatch_ioctl 2 32357 NULL nohasharray
 +rx_streaming_always_write_32357 rx_streaming_always_write 3 32357 &dispatch_ioctl_32357
-+sel_read_initcon_32362 sel_read_initcon 3 32362 NULL
++sel_read_initcon_32362 sel_read_initcon 3 32362 NULL nohasharray
++ReadHDLCPCI_32362 ReadHDLCPCI 0 32362 &sel_read_initcon_32362
 +ll_setxattr_common_32398 ll_setxattr_common 4 32398 NULL
 +xfs_iext_add_indirect_multi_32400 xfs_iext_add_indirect_multi 3 32400 NULL
 +vmci_qp_alloc_32405 vmci_qp_alloc 5-3 32405 NULL
-+snd_pcm_sync_ptr_32461 snd_pcm_sync_ptr 0 32461 NULL
 +cache_status_32462 cache_status 5 32462 NULL
 +fill_readbuf_32464 fill_readbuf 3 32464 NULL
 +ide_driver_proc_write_32493 ide_driver_proc_write 3 32493 NULL
@@ -117882,9 +120173,9 @@ index 0000000..386792a
 +pipeline_tcp_tx_stat_fifo_int_read_32589 pipeline_tcp_tx_stat_fifo_int_read 3 32589 NULL
 +read_file_beacon_32595 read_file_beacon 3 32595 NULL
 +ieee80211_if_read_dropped_frames_congestion_32603 ieee80211_if_read_dropped_frames_congestion 3 32603 NULL
-+__pci_request_region_32618 __pci_request_region 0 32618 NULL
 +irda_recvmsg_dgram_32631 irda_recvmsg_dgram 4 32631 NULL
 +cfg80211_roamed_32632 cfg80211_roamed 5-7 32632 NULL
++xpcs_reg_value_read_32644 xpcs_reg_value_read 3 32644 NULL
 +kvmalloc_32646 kvmalloc 1 32646 NULL
 +ib_sg_dma_len_32649 ib_sg_dma_len 0 32649 NULL
 +generic_readlink_32654 generic_readlink 3 32654 NULL
@@ -117892,6 +120183,7 @@ index 0000000..386792a
 +compat_SyS_preadv_32679 compat_SyS_preadv 3 32679 NULL
 +jfs_readpages_32702 jfs_readpages 4 32702 NULL
 +rt2x00debug_read_queue_dump_32712 rt2x00debug_read_queue_dump 3 32712 NULL
++_xfs_buf_get_pages_32715 _xfs_buf_get_pages 2 32715 NULL
 +megasas_change_queue_depth_32747 megasas_change_queue_depth 2 32747 NULL
 +stats_read_ul_32751 stats_read_ul 3 32751 NULL
 +vmci_transport_dgram_dequeue_32775 vmci_transport_dgram_dequeue 4 32775 NULL
@@ -117899,18 +120191,19 @@ index 0000000..386792a
 +rproc_name_read_32805 rproc_name_read 3 32805 NULL
 +sta_tx_latency_stat_read_32862 sta_tx_latency_stat_read 3 32862 NULL
 +new_tape_buffer_32866 new_tape_buffer 2 32866 NULL
-+ath6kl_usb_submit_ctrl_in_32880 ath6kl_usb_submit_ctrl_in 6 32880 NULL nohasharray
-+cifs_writedata_alloc_32880 cifs_writedata_alloc 1 32880 &ath6kl_usb_submit_ctrl_in_32880
++cifs_writedata_alloc_32880 cifs_writedata_alloc 1 32880 NULL nohasharray
++ath6kl_usb_submit_ctrl_in_32880 ath6kl_usb_submit_ctrl_in 6 32880 &cifs_writedata_alloc_32880
 +vp702x_usb_inout_cmd_32884 vp702x_usb_inout_cmd 4-6 32884 NULL
++visorchannel_dump_section_32893 visorchannel_dump_section 4 32893 NULL
 +tipc_link_iovec_xmit_fast_32913 tipc_link_iovec_xmit_fast 3 32913 NULL nohasharray
 +il_dbgfs_tx_stats_read_32913 il_dbgfs_tx_stats_read 3 32913 &tipc_link_iovec_xmit_fast_32913
 +zlib_inflate_workspacesize_32927 zlib_inflate_workspacesize 0 32927 NULL
 +rmap_recycle_32938 rmap_recycle 3 32938 NULL
++ptlrpc_prep_bulk_imp_32997 ptlrpc_prep_bulk_imp 2 32997 NULL
 +compat_filldir_32999 compat_filldir 3 32999 NULL
 +SyS_syslog_33007 SyS_syslog 3 33007 NULL
 +br_multicast_set_hash_max_33012 br_multicast_set_hash_max 2 33012 NULL
 +write_file_bt_ant_diversity_33019 write_file_bt_ant_diversity 3 33019 NULL
-+snd_pcm_prepare_33036 snd_pcm_prepare 0 33036 NULL
 +mic_virtio_copy_to_user_33048 mic_virtio_copy_to_user 3 33048 NULL
 +SYSC_lgetxattr_33049 SYSC_lgetxattr 4 33049 NULL
 +pipeline_dec_packet_in_fifo_full_read_33052 pipeline_dec_packet_in_fifo_full_read 3 33052 NULL
@@ -117920,14 +120213,13 @@ index 0000000..386792a
 +sel_read_checkreqprot_33068 sel_read_checkreqprot 3 33068 NULL
 +alloc_tio_33077 alloc_tio 3 33077 NULL
 +acl_permission_check_33083 acl_permission_check 0 33083 NULL
++f2fs_llseek_33098 f2fs_llseek 2 33098 NULL
 +fb_sys_write_33130 fb_sys_write 3 33130 NULL
-+notify_change_33143 notify_change 0 33143 NULL
 +SyS_poll_33152 SyS_poll 2 33152 NULL
 +_pci_add_cap_save_buffer_33153 _pci_add_cap_save_buffer 4 33153 NULL
 +debug_debug6_read_33168 debug_debug6_read 3 33168 NULL
 +dataflash_read_fact_otp_33204 dataflash_read_fact_otp 3-2 33204 NULL
 +pp_read_33210 pp_read 3 33210 NULL
-+xfs_file_aio_write_33234 xfs_file_aio_write 4 33234 NULL
 +snd_pcm_plug_client_size_33267 snd_pcm_plug_client_size 0-2 33267 NULL
 +cachefiles_cook_key_33274 cachefiles_cook_key 2 33274 NULL
 +sync_pt_create_33282 sync_pt_create 2 33282 NULL
@@ -117938,12 +120230,11 @@ index 0000000..386792a
 +lov_stripesize_seq_write_33353 lov_stripesize_seq_write 3 33353 NULL
 +create_xattr_datum_33356 create_xattr_datum 5 33356 NULL nohasharray
 +irq_pkt_threshold_read_33356 irq_pkt_threshold_read 3 33356 &create_xattr_datum_33356
-+pvscsi_allocate_sg_33357 pvscsi_allocate_sg 0 33357 NULL
 +read_file_regidx_33370 read_file_regidx 3 33370 NULL
 +ieee80211_if_read_dropped_frames_no_route_33383 ieee80211_if_read_dropped_frames_no_route 3 33383 NULL
 +scsi_varlen_cdb_length_33385 scsi_varlen_cdb_length 0 33385 NULL
 +nvc0_ram_create__33391 nvc0_ram_create_ 5 33391 NULL
-+ocfs2_allocate_unwritten_extents_33394 ocfs2_allocate_unwritten_extents 2-3 33394 NULL
++ocfs2_allocate_unwritten_extents_33394 ocfs2_allocate_unwritten_extents 3-2 33394 NULL
 +cfs_trace_copyin_string_33396 cfs_trace_copyin_string 4 33396 NULL
 +snd_pcm_capture_ioctl1_33408 snd_pcm_capture_ioctl1 0 33408 NULL
 +hash_netiface6_expire_33421 hash_netiface6_expire 4 33421 NULL
@@ -117965,31 +120256,30 @@ index 0000000..386792a
 +scsi_execute_33596 scsi_execute 5 33596 NULL
 +comedi_buf_write_n_allocated_33604 comedi_buf_write_n_allocated 0 33604 NULL
 +xt_compat_target_offset_33608 xt_compat_target_offset 0 33608 NULL
-+usb_gstrings_attach_33615 usb_gstrings_attach 3 33615 NULL nohasharray
-+il_dbgfs_qos_read_33615 il_dbgfs_qos_read 3 33615 &usb_gstrings_attach_33615
++il_dbgfs_qos_read_33615 il_dbgfs_qos_read 3 33615 NULL nohasharray
++usb_gstrings_attach_33615 usb_gstrings_attach 3 33615 &il_dbgfs_qos_read_33615
 +stride_page_count_33641 stride_page_count 2 33641 NULL
 +irq_blk_threshold_read_33666 irq_blk_threshold_read 3 33666 NULL
 +inw_p_33668 inw_p 0 33668 NULL
 +arp_hdr_len_33671 arp_hdr_len 0 33671 NULL
 +i2c_hid_alloc_buffers_33673 i2c_hid_alloc_buffers 2 33673 NULL
-+submit_one_bio_33683 submit_one_bio 0 33683 NULL
 +nv50_disp_dmac_create__33696 nv50_disp_dmac_create_ 6 33696 NULL
 +netlink_sendmsg_33708 netlink_sendmsg 4 33708 NULL
 +tipc_link_stats_33716 tipc_link_stats 3 33716 NULL
 +pvr2_stream_buffer_count_33719 pvr2_stream_buffer_count 2 33719 NULL
 +write_file_spectral_count_33723 write_file_spectral_count 3 33723 NULL
 +read_file_node_recv_33729 read_file_node_recv 3 33729 NULL
-+rtw_cbuf_alloc23a_33740 rtw_cbuf_alloc23a 1 33740 NULL
++__mutex_lock_interruptible_slowpath_33735 __mutex_lock_interruptible_slowpath 0 33735 NULL
 +vifs_state_read_33762 vifs_state_read 3 33762 NULL
 +hashtab_create_33769 hashtab_create 3 33769 NULL
-+i8042_create_aux_port_33777 i8042_create_aux_port 0 33777 NULL
++__btrfs_free_reserved_extent_33782 __btrfs_free_reserved_extent 2 33782 NULL
 +if_sdio_read_rx_len_33800 if_sdio_read_rx_len 0 33800 NULL
 +filter_write_33819 filter_write 3 33819 NULL
 +sep_create_msgarea_context_33829 sep_create_msgarea_context 4 33829 NULL
 +scrub_setup_recheck_block_33831 scrub_setup_recheck_block 5-4 33831 NULL
 +ext4_journal_extend_33835 ext4_journal_extend 2 33835 NULL
-+snd_pcm_action_nonatomic_33844 snd_pcm_action_nonatomic 0 33844 NULL
 +oz_cdev_write_33852 oz_cdev_write 3 33852 NULL
++azx_get_pos_posbuf_33867 azx_get_pos_posbuf 0 33867 NULL
 +get_user_pages_33908 get_user_pages 0 33908 NULL
 +sg_nents_33909 sg_nents 0 33909 NULL
 +ath6kl_roam_mode_write_33912 ath6kl_roam_mode_write 3 33912 NULL
@@ -117997,12 +120287,13 @@ index 0000000..386792a
 +sel_read_avc_cache_threshold_33942 sel_read_avc_cache_threshold 3 33942 NULL
 +lpfc_idiag_ctlacc_read_33943 lpfc_idiag_ctlacc_read 3 33943 NULL
 +read_file_tgt_rx_stats_33944 read_file_tgt_rx_stats 3 33944 NULL
++rs_sta_dbgfs_drv_tx_stats_read_33946 rs_sta_dbgfs_drv_tx_stats_read 3 33946 NULL
 +__proc_dump_kernel_33954 __proc_dump_kernel 5 33954 NULL
-+btrfs_delalloc_reserve_metadata_33963 btrfs_delalloc_reserve_metadata 0 33963 NULL
 +vga_switcheroo_debugfs_write_33984 vga_switcheroo_debugfs_write 3 33984 NULL
 +lbs_lowrssi_write_34025 lbs_lowrssi_write 3 34025 NULL
 +ppp_write_34034 ppp_write 3 34034 NULL
 +tty_insert_flip_string_34042 tty_insert_flip_string 3-0 34042 NULL
++bm_page_io_async_34050 bm_page_io_async 2 34050 NULL
 +calc_linear_pos_34067 calc_linear_pos 0-4 34067 NULL
 +memcg_update_all_caches_34068 memcg_update_all_caches 1 34068 NULL
 +pipeline_pipeline_fifo_full_read_34095 pipeline_pipeline_fifo_full_read 3 34095 NULL
@@ -118013,27 +120304,30 @@ index 0000000..386792a
 +ixgbe_dbg_netdev_ops_write_34141 ixgbe_dbg_netdev_ops_write 3 34141 NULL
 +shmem_pread_fast_34147 shmem_pread_fast 3 34147 NULL
 +skb_to_sgvec_34171 skb_to_sgvec 0 34171 NULL
-+rsi_debug_zone_write_34206 rsi_debug_zone_write 3 34206 NULL
++rsi_debug_zone_write_34206 rsi_debug_zone_write 3 34206 NULL nohasharray
++rbd_osd_req_create_34206 rbd_osd_req_create 3 34206 &rsi_debug_zone_write_34206
 +ext4_da_write_begin_34215 ext4_da_write_begin 3-4 34215 NULL
 +bl_pipe_downcall_34264 bl_pipe_downcall 3 34264 NULL
 +device_private_init_34279 device_private_init 0 34279 NULL
++xgmac_reg_addr_write_34284 xgmac_reg_addr_write 3 34284 NULL
 +ext4_get_groups_count_34324 ext4_get_groups_count 0 34324 NULL
 +pcpu_need_to_extend_34326 pcpu_need_to_extend 0 34326 NULL nohasharray
 +iov_iter_single_seg_count_34326 iov_iter_single_seg_count 0 34326 &pcpu_need_to_extend_34326
++proc_thread_self_readlink_34357 proc_thread_self_readlink 3 34357 NULL
 +crypto_ablkcipher_ivsize_34363 crypto_ablkcipher_ivsize 0 34363 NULL nohasharray
 +sync_page_io_34363 sync_page_io 3 34363 &crypto_ablkcipher_ivsize_34363
 +rngapi_reset_34366 rngapi_reset 3 34366 NULL
-+_iwl_dbgfs_low_latency_write_34378 _iwl_dbgfs_low_latency_write 3 34378 NULL nohasharray
-+ea_read_34378 ea_read 0 34378 &_iwl_dbgfs_low_latency_write_34378
-+fuse_send_read_34379 fuse_send_read 4 34379 NULL
++ea_read_34378 ea_read 0 34378 NULL nohasharray
++_iwl_dbgfs_low_latency_write_34378 _iwl_dbgfs_low_latency_write 3 34378 &ea_read_34378
++fuse_send_read_34379 fuse_send_read 0-4 34379 NULL
 +av7110_vbi_write_34384 av7110_vbi_write 3 34384 NULL
 +usbvision_v4l2_read_34386 usbvision_v4l2_read 3 34386 NULL
 +read_rbu_image_type_34387 read_rbu_image_type 6 34387 NULL
-+iwl_calib_set_34400 iwl_calib_set 3 34400 NULL nohasharray
-+ivtv_read_pos_34400 ivtv_read_pos 3 34400 &iwl_calib_set_34400
++ivtv_read_pos_34400 ivtv_read_pos 3 34400 NULL nohasharray
++iwl_calib_set_34400 iwl_calib_set 3 34400 &ivtv_read_pos_34400
 +wd_exp_mode_write_34407 wd_exp_mode_write 3 34407 NULL
 +nl80211_send_disassoc_34424 nl80211_send_disassoc 4 34424 NULL
-+__extent_read_full_page_34437 __extent_read_full_page 0 34437 NULL
++security_socket_create_34439 security_socket_create 0 34439 NULL
 +usbtest_alloc_urb_34446 usbtest_alloc_urb 3-5 34446 NULL
 +mwifiex_regrdwr_read_34472 mwifiex_regrdwr_read 3 34472 NULL
 +skcipher_sndbuf_34476 skcipher_sndbuf 0 34476 NULL
@@ -118042,24 +120336,24 @@ index 0000000..386792a
 +SyS_pwritev_34494 SyS_pwritev 3 34494 NULL
 +qp_alloc_res_34496 qp_alloc_res 5 34496 NULL
 +lu_buf_check_and_alloc_34505 lu_buf_check_and_alloc 2 34505 NULL
-+tracing_stats_read_34537 tracing_stats_read 3 34537 NULL nohasharray
-+ext4_fallocate_34537 ext4_fallocate 4-3 34537 &tracing_stats_read_34537
++ext4_fallocate_34537 ext4_fallocate 4-3 34537 NULL nohasharray
++tracing_stats_read_34537 tracing_stats_read 3 34537 &ext4_fallocate_34537
 +hugetlbfs_read_actor_34547 hugetlbfs_read_actor 2-5-4-0 34547 NULL
 +dbBackSplit_34561 dbBackSplit 0 34561 NULL
-+alloc_ieee80211_rsl_34564 alloc_ieee80211_rsl 1 34564 NULL nohasharray
-+self_check_peb_ec_hdr_34564 self_check_peb_ec_hdr 0 34564 &alloc_ieee80211_rsl_34564
++alloc_ieee80211_rsl_34564 alloc_ieee80211_rsl 1 34564 NULL
++ext4_ind_direct_IO_34574 ext4_ind_direct_IO 4 34574 NULL
 +lov_stripecount_seq_write_34582 lov_stripecount_seq_write 3 34582 NULL
 +init_send_hfcd_34586 init_send_hfcd 1 34586 NULL
 +inet6_ifla6_size_34591 inet6_ifla6_size 0 34591 NULL
 +ceph_msgpool_init_34599 ceph_msgpool_init 4 34599 NULL nohasharray
 +cw1200_queue_init_34599 cw1200_queue_init 4 34599 &ceph_msgpool_init_34599
 +bio_integrity_bytes_34602 bio_integrity_bytes 2 34602 NULL
-+__jffs2_ref_totlen_34609 __jffs2_ref_totlen 0 34609 NULL nohasharray
-+mtd_write_34609 mtd_write 0 34609 &__jffs2_ref_totlen_34609
++__jffs2_ref_totlen_34609 __jffs2_ref_totlen 0 34609 NULL
 +__cfg80211_disconnected_34622 __cfg80211_disconnected 3 34622 NULL
 +cnic_alloc_dma_34641 cnic_alloc_dma 3 34641 NULL
 +kvm_set_spte_hva_34671 kvm_set_spte_hva 2 34671 NULL
 +sleep_auth_write_34676 sleep_auth_write 3 34676 NULL
++f2fs_direct_IO_34685 f2fs_direct_IO 4 34685 NULL
 +isr_fiqs_read_34687 isr_fiqs_read 3 34687 NULL
 +batadv_tvlv_realloc_packet_buff_34688 batadv_tvlv_realloc_packet_buff 3-4 34688 NULL
 +port_print_34704 port_print 3 34704 NULL
@@ -118070,6 +120364,7 @@ index 0000000..386792a
 +bootmode_store_34762 bootmode_store 4 34762 NULL
 +device_add_34766 device_add 0 34766 NULL
 +qib_cdev_init_34778 qib_cdev_init 1 34778 NULL
++ext3_direct_IO_34798 ext3_direct_IO 4 34798 NULL
 +SYSC_keyctl_34800 SYSC_keyctl 4 34800 NULL
 +can_nocow_extent_34801 can_nocow_extent 2 34801 NULL
 +drbd_get_max_capacity_34804 drbd_get_max_capacity 0 34804 NULL
@@ -118084,39 +120379,44 @@ index 0000000..386792a
 +msg_print_text_34889 msg_print_text 0 34889 NULL
 +ieee80211_if_write_34894 ieee80211_if_write 3 34894 NULL
 +si476x_radio_read_rsq_primary_blob_34916 si476x_radio_read_rsq_primary_blob 3 34916 NULL
-+__inode_permission_34925 __inode_permission 0 34925 NULL nohasharray
-+btrfs_super_chunk_root_34925 btrfs_super_chunk_root 0 34925 &__inode_permission_34925
-+ceph_aio_write_34930 ceph_aio_write 4 34930 NULL
++btrfs_super_chunk_root_34925 btrfs_super_chunk_root 0 34925 NULL nohasharray
++__inode_permission_34925 __inode_permission 0 34925 &btrfs_super_chunk_root_34925
 +sec_flags2str_34933 sec_flags2str 3 34933 NULL
 +snd_info_entry_read_34938 snd_info_entry_read 3 34938 NULL
++compat_SyS_kexec_load_34947 compat_SyS_kexec_load 2 34947 NULL
 +do_add_page_to_bio_34974 do_add_page_to_bio 2-10 34974 NULL
-+schedule_erase_34996 schedule_erase 0 34996 NULL
++sdebug_change_qdepth_34994 sdebug_change_qdepth 2 34994 NULL
 +rx_rx_hdr_overflow_read_35002 rx_rx_hdr_overflow_read 3 35002 NULL
 +l2cap_skbuff_fromiovec_35003 l2cap_skbuff_fromiovec 4-3 35003 NULL
-+rtw_cfg80211_rx_p2p_action_public_35010 rtw_cfg80211_rx_p2p_action_public 3 35010 NULL
 +sisusb_copy_memory_35016 sisusb_copy_memory 4 35016 NULL
 +coda_psdev_read_35029 coda_psdev_read 3 35029 NULL
++hwdep_read_locked_35037 hwdep_read_locked 3 35037 NULL
++proc_setgroups_write_35039 proc_setgroups_write 3 35039 NULL
 +pwr_connection_out_of_sync_read_35061 pwr_connection_out_of_sync_read 3 35061 NULL
 +__kfifo_uint_must_check_helper_35097 __kfifo_uint_must_check_helper 0-1 35097 NULL
 +capi_write_35104 capi_write 3 35104 NULL nohasharray
 +tx_tx_done_template_read_35104 tx_tx_done_template_read 3 35104 &capi_write_35104
 +ide_settings_proc_write_35110 ide_settings_proc_write 3 35110 NULL
++ceph_osdc_start_request_35122 ceph_osdc_start_request 0 35122 NULL
++addrs_per_inode_35151 addrs_per_inode 0 35151 NULL
 +message_stats_print_35158 message_stats_print 6 35158 NULL
 +iscsi_conn_setup_35159 iscsi_conn_setup 2 35159 NULL
 +ieee80211_if_read_bssid_35161 ieee80211_if_read_bssid 3 35161 NULL
 +compat_SyS_pselect6_35203 compat_SyS_pselect6 1 35203 NULL
 +unix_stream_recvmsg_35210 unix_stream_recvmsg 4 35210 NULL
-+security_key_getsecurity_35218 security_key_getsecurity 0 35218 NULL nohasharray
-+striped_read_35218 striped_read 0-2 35218 &security_key_getsecurity_35218
++striped_read_35218 striped_read 0-2 35218 NULL nohasharray
++security_key_getsecurity_35218 security_key_getsecurity 0 35218 &striped_read_35218
 +rx_rx_cmplt_task_read_35226 rx_rx_cmplt_task_read 3 35226 NULL
++kimage_file_prepare_segments_35232 kimage_file_prepare_segments 5 35232 NULL
 +set_fd_set_35249 set_fd_set 1 35249 NULL
 +ioapic_setup_resources_35255 ioapic_setup_resources 1 35255 NULL
 +dis_disc_write_35265 dis_disc_write 3 35265 NULL
 +dma_show_regs_35266 dma_show_regs 3 35266 NULL
 +irda_recvmsg_stream_35280 irda_recvmsg_stream 4 35280 NULL
 +i2o_block_end_request_35282 i2o_block_end_request 3 35282 NULL
-+isr_rx_rdys_read_35283 isr_rx_rdys_read 3 35283 NULL
-+__btrfs_buffered_write_35311 __btrfs_buffered_write 3-0 35311 NULL nohasharray
++isr_rx_rdys_read_35283 isr_rx_rdys_read 3 35283 NULL nohasharray
++nvkm_notify_init_35283 nvkm_notify_init 7 35283 &isr_rx_rdys_read_35283
++__btrfs_buffered_write_35311 __btrfs_buffered_write 3 35311 NULL nohasharray
 +brcmf_sdio_forensic_read_35311 brcmf_sdio_forensic_read 3 35311 &__btrfs_buffered_write_35311
 +tracing_read_pipe_35312 tracing_read_pipe 3 35312 NULL
 +sta_tx_latency_stat_write_35323 sta_tx_latency_stat_write 3 35323 NULL
@@ -118141,12 +120441,12 @@ index 0000000..386792a
 +ocfs2_write_zero_page_35539 ocfs2_write_zero_page 3 35539 NULL
 +ibnl_put_attr_35541 ibnl_put_attr 3 35541 NULL
 +ieee80211_if_write_smps_35550 ieee80211_if_write_smps 3 35550 NULL
++C_SYSC_kexec_load_35565 C_SYSC_kexec_load 2 35565 NULL
 +ext4_blocks_for_truncate_35579 ext4_blocks_for_truncate 0 35579 NULL
 +ext2_acl_from_disk_35580 ext2_acl_from_disk 2 35580 NULL
 +spk_msg_set_35586 spk_msg_set 3 35586 NULL
 +kernel_readv_35617 kernel_readv 3 35617 NULL
 +reiserfs_readpages_35629 reiserfs_readpages 4 35629 NULL
-+pci_request_regions_35635 pci_request_regions 0 35635 NULL
 +ptlrpcd_steal_rqset_35637 ptlrpcd_steal_rqset 0 35637 NULL
 +spi_register_board_info_35651 spi_register_board_info 2 35651 NULL
 +rdmaltWithLock_35669 rdmaltWithLock 0 35669 NULL
@@ -118155,11 +120455,11 @@ index 0000000..386792a
 +md_super_write_35703 md_super_write 4 35703 NULL
 +iwl_dbgfs_disable_ht40_read_35761 iwl_dbgfs_disable_ht40_read 3 35761 NULL
 +udf_alloc_i_data_35786 udf_alloc_i_data 2 35786 NULL
++alloc_netdev_mqs_35806 alloc_netdev_mqs 1 35806 NULL
 +pvr2_hdw_cpufw_get_35824 pvr2_hdw_cpufw_get 0-4-2 35824 NULL
 +tx_tx_cmplt_read_35854 tx_tx_cmplt_read 3 35854 NULL
 +vx_query_hbuffer_size_35859 vx_query_hbuffer_size 0 35859 NULL
 +mthca_buf_alloc_35861 mthca_buf_alloc 2 35861 NULL
-+fls64_35862 fls64 0 35862 NULL
 +kvm_dirty_bitmap_bytes_35886 kvm_dirty_bitmap_bytes 0 35886 NULL
 +ieee80211_if_fmt_dot11MeshRetryTimeout_35890 ieee80211_if_fmt_dot11MeshRetryTimeout 3 35890 NULL
 +uwb_rc_cmd_done_35892 uwb_rc_cmd_done 4 35892 NULL
@@ -118168,20 +120468,17 @@ index 0000000..386792a
 +sctp_tsnmap_mark_35929 sctp_tsnmap_mark 2 35929 NULL
 +rx_defrag_init_called_read_35935 rx_defrag_init_called_read 3 35935 NULL
 +put_cmsg_compat_35937 put_cmsg_compat 4 35937 NULL
-+ext_rts51x_sd_execute_write_data_35971 ext_rts51x_sd_execute_write_data 9 35971 NULL
 +generic_ocp_read_35974 generic_ocp_read 3 35974 NULL nohasharray
 +ceph_buffer_new_35974 ceph_buffer_new 1 35974 &generic_ocp_read_35974
 +acl_alloc_35979 acl_alloc 1 35979 NULL
 +device_add_class_symlinks_35985 device_add_class_symlinks 0 35985 NULL
-+kuc_alloc_35998 kuc_alloc 1 35998 NULL nohasharray
-+write_file_antenna_35998 write_file_antenna 3 35998 &kuc_alloc_35998
-+scsi_transfer_length_36011 scsi_transfer_length 0 36011 NULL
++write_file_antenna_35998 write_file_antenna 3 35998 NULL nohasharray
++kuc_alloc_35998 kuc_alloc 1 35998 &write_file_antenna_35998
++lov_mds_md_max_stripe_count_36008 lov_mds_md_max_stripe_count 0-1 36008 NULL
 +il3945_ucode_tx_stats_read_36016 il3945_ucode_tx_stats_read 3 36016 NULL
-+ubi_eba_write_leb_36029 ubi_eba_write_leb 0 36029 NULL
 +__videobuf_alloc_36031 __videobuf_alloc 1 36031 NULL
 +account_shadowed_36048 account_shadowed 2 36048 NULL
 +gpio_power_read_36059 gpio_power_read 3 36059 NULL
-+snd_pcm_playback_hw_avail_36061 snd_pcm_playback_hw_avail 0 36061 NULL
 +write_emulate_36065 write_emulate 2-4 36065 NULL
 +stack_max_size_write_36068 stack_max_size_write 3 36068 NULL
 +radeon_vm_num_pdes_36070 radeon_vm_num_pdes 0 36070 NULL
@@ -118200,20 +120497,18 @@ index 0000000..386792a
 +SYSC_sched_getaffinity_36208 SYSC_sched_getaffinity 2 36208 NULL
 +SYSC_process_vm_readv_36216 SYSC_process_vm_readv 3-5 36216 NULL
 +atomic_stats_read_36228 atomic_stats_read 3 36228 NULL
-+rtw_cfg80211_set_wpa_ie_36236 rtw_cfg80211_set_wpa_ie 3 36236 NULL
 +viafb_iga1_odev_proc_write_36241 viafb_iga1_odev_proc_write 3 36241 NULL
 +SYSC_getxattr_36242 SYSC_getxattr 4 36242 NULL
 +vmsplice_to_user_36245 vmsplice_to_user 3 36245 NULL nohasharray
 +rproc_recovery_read_36245 rproc_recovery_read 3 36245 &vmsplice_to_user_36245
-+cfs_hash_buckets_realloc_36276 cfs_hash_buckets_realloc 4 36276 NULL nohasharray
-+usb_buffer_alloc_36276 usb_buffer_alloc 2 36276 &cfs_hash_buckets_realloc_36276
++cfs_hash_buckets_realloc_36276 cfs_hash_buckets_realloc 4 36276 NULL
 +codec_reg_read_file_36280 codec_reg_read_file 3 36280 NULL
 +crypto_shash_digestsize_36284 crypto_shash_digestsize 0 36284 NULL
 +lpfc_debugfs_dif_err_read_36303 lpfc_debugfs_dif_err_read 3 36303 NULL
 +cfg80211_rx_mlme_mgmt_36306 cfg80211_rx_mlme_mgmt 3 36306 NULL
 +ad7879_spi_xfer_36311 ad7879_spi_xfer 3 36311 NULL
-+__compat_sys_pwritev64_36328 __compat_sys_pwritev64 3 36328 NULL nohasharray
-+fat_compat_ioctl_filldir_36328 fat_compat_ioctl_filldir 3 36328 &__compat_sys_pwritev64_36328
++fat_compat_ioctl_filldir_36328 fat_compat_ioctl_filldir 3 36328 NULL nohasharray
++__compat_sys_pwritev64_36328 __compat_sys_pwritev64 3 36328 &fat_compat_ioctl_filldir_36328
 +lc_create_36332 lc_create 4 36332 NULL
 +jbd2_journal_init_revoke_table_36336 jbd2_journal_init_revoke_table 1 36336 NULL
 +isku_sysfs_read_key_mask_36343 isku_sysfs_read_key_mask 6 36343 NULL
@@ -118224,13 +120519,16 @@ index 0000000..386792a
 +afs_alloc_flat_call_36399 afs_alloc_flat_call 2-3 36399 NULL
 +sierra_write_36402 sierra_write 4 36402 NULL
 +SyS_sethostname_36417 SyS_sethostname 2 36417 NULL
++soc_pcm_codec_params_fixup_36434 soc_pcm_codec_params_fixup 2 36434 NULL
++ReadW6692B_36445 ReadW6692B 0 36445 NULL
 +sctp_tsnmap_init_36446 sctp_tsnmap_init 2 36446 NULL
 +alloc_etherdev_mqs_36450 alloc_etherdev_mqs 1 36450 NULL
 +SyS_process_vm_writev_36476 SyS_process_vm_writev 3-5 36476 NULL
-+lock_and_cleanup_extent_if_need_36480 lock_and_cleanup_extent_if_need 0 36480 NULL
 +b43_nphy_load_samples_36481 b43_nphy_load_samples 3 36481 NULL
++ds1343_nvram_write_36489 ds1343_nvram_write 5-6 36489 NULL
 +tx_tx_checksum_result_read_36490 tx_tx_checksum_result_read 3 36490 NULL nohasharray
 +ip6_append_data_36490 ip6_append_data 4 36490 &tx_tx_checksum_result_read_36490
++cmd_loop_36491 cmd_loop 0 36491 NULL
 +__hwahc_op_set_ptk_36510 __hwahc_op_set_ptk 5 36510 NULL
 +mcam_v4l_read_36513 mcam_v4l_read 3 36513 NULL
 +_iwl_dbgfs_fw_nmi_write_36515 _iwl_dbgfs_fw_nmi_write 3 36515 NULL
@@ -118251,9 +120549,11 @@ index 0000000..386792a
 +iscsi_host_alloc_36671 iscsi_host_alloc 2 36671 NULL
 +xillybus_read_36678 xillybus_read 3 36678 NULL
 +gsmtty_write_36702 gsmtty_write 3 36702 NULL
++path_getxattr_36717 path_getxattr 4 36717 NULL
 +snd_rawmidi_kernel_read1_36740 snd_rawmidi_kernel_read1 4-0 36740 NULL
 +cxgbi_device_register_36746 cxgbi_device_register 1-2 36746 NULL
 +ps_poll_upsd_timeouts_read_36755 ps_poll_upsd_timeouts_read 3 36755 NULL
++ptp_filter_init_36780 ptp_filter_init 2 36780 NULL
 +i40e_init_lan_hmc_36796 i40e_init_lan_hmc 5-4-3-2 36796 NULL
 +proc_fault_inject_read_36802 proc_fault_inject_read 3 36802 NULL
 +hiddev_ioctl_36816 hiddev_ioctl 2 36816 NULL
@@ -118268,11 +120568,12 @@ index 0000000..386792a
 +__btrfs_map_block_36883 __btrfs_map_block 3 36883 NULL
 +ib_ucm_alloc_data_36885 ib_ucm_alloc_data 3 36885 NULL
 +selinux_inode_notifysecctx_36896 selinux_inode_notifysecctx 3 36896 NULL
-+OS_kmalloc_36909 OS_kmalloc 1 36909 NULL
 +il4965_rs_sta_dbgfs_scale_table_write_36979 il4965_rs_sta_dbgfs_scale_table_write 3 36979 NULL
 +drbd_new_dev_size_36998 drbd_new_dev_size 0-3 36998 NULL
 +auok190xfb_write_37001 auok190xfb_write 3 37001 NULL
 +setxattr_37006 setxattr 4 37006 NULL
++ec_i2c_xfer_37029 ec_i2c_xfer 3 37029 NULL
++ieee80211_chsw_switch_vifs_37030 ieee80211_chsw_switch_vifs 2 37030 NULL
 +command_file_read_37038 command_file_read 3 37038 NULL
 +figure_loop_size_37051 figure_loop_size 2-3 37051 NULL
 +qp_broker_create_37053 qp_broker_create 6-5 37053 NULL nohasharray
@@ -118282,25 +120583,22 @@ index 0000000..386792a
 +parse_command_37079 parse_command 2 37079 NULL
 +pipeline_cs_rx_packet_in_read_37089 pipeline_cs_rx_packet_in_read 3 37089 NULL
 +tun_get_user_37094 tun_get_user 5 37094 NULL
-+has_wrprotected_page_37123 has_wrprotected_page 2-3 37123 NULL
++has_wrprotected_page_37123 has_wrprotected_page 3-2 37123 NULL
 +snd_hda_get_conn_list_37132 snd_hda_get_conn_list 0 37132 NULL
 +mtt_free_res_37144 mtt_free_res 5 37144 NULL
 +msg_word_37164 msg_word 0 37164 NULL
-+f2fs_direct_IO_37167 f2fs_direct_IO 4 37167 NULL
 +vcc_recvmsg_37198 vcc_recvmsg 4 37198 NULL
 +forced_ps_write_37209 forced_ps_write 3 37209 NULL
-+crypto_shash_descsize_37212 crypto_shash_descsize 0 37212 NULL nohasharray
-+ext4_ind_direct_IO_37212 ext4_ind_direct_IO 4-0 37212 &crypto_shash_descsize_37212
++crypto_shash_descsize_37212 crypto_shash_descsize 0 37212 NULL
++bchannel_get_rxbuf_37213 bchannel_get_rxbuf 2-0 37213 NULL
 +regmap_access_read_file_37223 regmap_access_read_file 3 37223 NULL
 +__do_replace_37227 __do_replace 5 37227 NULL
 +iwl_dbgfs_d3_sram_read_37237 iwl_dbgfs_d3_sram_read 3 37237 NULL
-+rx_filter_dup_filter_read_37238 rx_filter_dup_filter_read 3 37238 NULL
-+prot_queue_del_37258 prot_queue_del 0 37258 NULL
++rx_filter_dup_filter_read_37238 rx_filter_dup_filter_read 3 37238 NULL nohasharray
++__btrfs_inc_extent_ref_37238 __btrfs_inc_extent_ref 7 37238 &rx_filter_dup_filter_read_37238
 +exofs_max_io_pages_37263 exofs_max_io_pages 0-2 37263 NULL
 +_iwl_dbgfs_fw_restart_write_37270 _iwl_dbgfs_fw_restart_write 3 37270 NULL
-+request_threaded_irq_37303 request_threaded_irq 0 37303 NULL
 +ieee80211_if_read_power_mode_37305 ieee80211_if_read_power_mode 3 37305 NULL
-+ext3_direct_IO_37308 ext3_direct_IO 4 37308 NULL
 +jffs2_write_dirent_37311 jffs2_write_dirent 5 37311 NULL
 +tipc_send_37315 tipc_send 3 37315 NULL
 +l2cap_create_connless_pdu_37327 l2cap_create_connless_pdu 3 37327 NULL nohasharray
@@ -118308,6 +120606,7 @@ index 0000000..386792a
 +scsi_mode_select_37330 scsi_mode_select 6 37330 NULL
 +rxrpc_server_sendmsg_37331 rxrpc_server_sendmsg 4 37331 NULL
 +security_inode_getsecurity_37354 security_inode_getsecurity 0 37354 NULL
++seek_firmware_37372 seek_firmware 2 37372 NULL
 +hci_sock_sendmsg_37420 hci_sock_sendmsg 4 37420 NULL
 +acpi_os_allocate_zeroed_37422 acpi_os_allocate_zeroed 1 37422 NULL
 +tty_insert_flip_string_fixed_flag_37428 tty_insert_flip_string_fixed_flag 4-0 37428 NULL
@@ -118325,19 +120624,18 @@ index 0000000..386792a
 +hdr_size_37536 hdr_size 0 37536 NULL
 +extent_map_end_37550 extent_map_end 0 37550 NULL
 +sep_create_dcb_dmatables_context_37551 sep_create_dcb_dmatables_context 6 37551 NULL
-+fat_cont_expand_37552 fat_cont_expand 0 37552 NULL
 +xhci_alloc_streams_37586 xhci_alloc_streams 5 37586 NULL
 +qla2x00_debounce_register_37597 qla2x00_debounce_register 0 37597 NULL
 +kvm_read_guest_page_mmu_37611 kvm_read_guest_page_mmu 6 37611 NULL
 +SYSC_mbind_37622 SYSC_mbind 5 37622 NULL
 +SyS_mbind_37638 SyS_mbind 5 37638 NULL
-+may_delete_37656 may_delete 0 37656 NULL
 +bio_copy_user_iov_37660 bio_copy_user_iov 4 37660 NULL
 +vmw_framebuffer_dmabuf_dirty_37661 vmw_framebuffer_dmabuf_dirty 6 37661 NULL nohasharray
 +rfcomm_sock_sendmsg_37661 rfcomm_sock_sendmsg 4 37661 &vmw_framebuffer_dmabuf_dirty_37661
 +SYSC_get_mempolicy_37664 SYSC_get_mempolicy 3 37664 NULL
 +__wa_seg_calculate_isoc_frame_count_37672 __wa_seg_calculate_isoc_frame_count 0 37672 NULL
 +ieee80211_if_read_rc_rateidx_mcs_mask_2ghz_37675 ieee80211_if_read_rc_rateidx_mcs_mask_2ghz 3 37675 NULL
++tracing_saved_cmdlines_size_write_37684 tracing_saved_cmdlines_size_write 3 37684 NULL
 +regmap_map_read_file_37685 regmap_map_read_file 3 37685 NULL
 +nametbl_header_37698 nametbl_header 2-0 37698 NULL
 +__le32_to_cpup_37702 __le32_to_cpup 0 37702 NULL
@@ -118348,12 +120646,13 @@ index 0000000..386792a
 +dccp_setsockopt_cscov_37766 dccp_setsockopt_cscov 2 37766 NULL
 +il4965_rs_sta_dbgfs_rate_scale_data_read_37792 il4965_rs_sta_dbgfs_rate_scale_data_read 3 37792 NULL
 +smk_read_logging_37804 smk_read_logging 3 37804 NULL
++nvkm_notify_init_37806 nvkm_notify_init 6 37806 NULL
 +ocrdma_alloc_frmr_page_list_37815 ocrdma_alloc_frmr_page_list 2 37815 NULL
 +rx_decrypt_key_not_found_read_37820 rx_decrypt_key_not_found_read 3 37820 NULL
 +android_get_p2p_addr_37832 android_get_p2p_addr 0 37832 NULL
 +o2hb_debug_read_37851 o2hb_debug_read 3 37851 NULL
 +xfs_dir2_block_to_sf_37868 xfs_dir2_block_to_sf 3 37868 NULL
-+set_registers_37883 set_registers 4 37883 NULL
++btrfs_leaf_data_37869 btrfs_leaf_data 0 37869 NULL
 +btrfs_stack_file_extent_disk_bytenr_37888 btrfs_stack_file_extent_disk_bytenr 0 37888 NULL
 +_rtw_malloc_37928 _rtw_malloc 1 37928 NULL nohasharray
 +pkt_alloc_packet_data_37928 pkt_alloc_packet_data 1 37928 &_rtw_malloc_37928
@@ -118366,13 +120665,14 @@ index 0000000..386792a
 +aggr_recv_addba_req_evt_38037 aggr_recv_addba_req_evt 4 38037 NULL
 +il_dbgfs_chain_noise_read_38044 il_dbgfs_chain_noise_read 3 38044 NULL nohasharray
 +klsi_105_prepare_write_buffer_38044 klsi_105_prepare_write_buffer 3 38044 &il_dbgfs_chain_noise_read_38044
++parser_init_guts_38046 parser_init_guts 2 38046 NULL
 +SyS_llistxattr_38048 SyS_llistxattr 3 38048 NULL
 +sysfs_do_create_link_38051 sysfs_do_create_link 0 38051 NULL
 +_xfs_buf_alloc_38058 _xfs_buf_alloc 3 38058 NULL
 +nsm_create_handle_38060 nsm_create_handle 4 38060 NULL
 +alloc_ltalkdev_38071 alloc_ltalkdev 1 38071 NULL
-+wcn36xx_smd_rsp_process_38081 wcn36xx_smd_rsp_process 3 38081 NULL nohasharray
-+xfs_buf_readahead_map_38081 xfs_buf_readahead_map 3 38081 &wcn36xx_smd_rsp_process_38081
++cifs_send_async_read_38077 cifs_send_async_read 2 38077 NULL
++xfs_buf_readahead_map_38081 xfs_buf_readahead_map 3 38081 NULL
 +uwb_mac_addr_print_38085 uwb_mac_addr_print 2 38085 NULL
 +request_key_auth_new_38092 request_key_auth_new 3 38092 NULL
 +proc_self_readlink_38094 proc_self_readlink 3 38094 NULL
@@ -118382,8 +120682,8 @@ index 0000000..386792a
 +o2hb_read_slots_38105 o2hb_read_slots 2 38105 NULL
 +snd_pcm_oss_write_38108 snd_pcm_oss_write 3 38108 NULL
 +vmw_kms_present_38130 vmw_kms_present 9 38130 NULL
-+__ntfs_copy_from_user_iovec_inatomic_38153 __ntfs_copy_from_user_iovec_inatomic 4-3-0 38153 NULL
-+btrfs_extent_same_38163 btrfs_extent_same 3-2 38163 NULL
++__ntfs_copy_from_user_iovec_inatomic_38153 __ntfs_copy_from_user_iovec_inatomic 3-4-0 38153 NULL
++btrfs_extent_same_38163 btrfs_extent_same 3-2-5 38163 NULL
 +kvm_clear_guest_38164 kvm_clear_guest 3-2 38164 NULL
 +cdev_add_38176 cdev_add 2-3 38176 NULL
 +rt2x00debug_write_rf_38195 rt2x00debug_write_rf 3 38195 NULL
@@ -118391,9 +120691,10 @@ index 0000000..386792a
 +osd_req_list_partition_collections_38223 osd_req_list_partition_collections 5 38223 NULL
 +ceph_decode_16_38239 ceph_decode_16 0 38239 NULL
 +_ipw_read_reg32_38245 _ipw_read_reg32 0 38245 NULL
-+snd_pcm_playback_rewind_38249 snd_pcm_playback_rewind 0-2 38249 NULL
++nvkm_dmaobj_create__38250 nvkm_dmaobj_create_ 6 38250 NULL
 +mthca_alloc_icm_table_38268 mthca_alloc_icm_table 4-3 38268 NULL nohasharray
-+ieee80211_if_read_auto_open_plinks_38268 ieee80211_if_read_auto_open_plinks 3 38268 &mthca_alloc_icm_table_38268
++ieee80211_if_read_auto_open_plinks_38268 ieee80211_if_read_auto_open_plinks 3 38268 &mthca_alloc_icm_table_38268 nohasharray
++SYSC_msgrcv_38268 SYSC_msgrcv 3 38268 &ieee80211_if_read_auto_open_plinks_38268
 +xfs_bmbt_to_bmdr_38275 xfs_bmbt_to_bmdr 3 38275 NULL nohasharray
 +xfs_bmdr_to_bmbt_38275 xfs_bmdr_to_bmbt 5 38275 &xfs_bmbt_to_bmdr_38275
 +ftdi_process_packet_38281 ftdi_process_packet 4 38281 NULL
@@ -118402,11 +120703,15 @@ index 0000000..386792a
 +isr_rx_headers_read_38325 isr_rx_headers_read 3 38325 NULL
 +ida_simple_get_38326 ida_simple_get 0 38326 NULL
 +__snd_gf1_look8_38333 __snd_gf1_look8 0 38333 NULL
++usb_ext_prop_put_name_38352 usb_ext_prop_put_name 0-3 38352 NULL
 +btrfs_file_extent_disk_num_bytes_38363 btrfs_file_extent_disk_num_bytes 0 38363 NULL
++xfs_free_file_space_38383 xfs_free_file_space 2-3 38383 NULL
 +dn_sendmsg_38390 dn_sendmsg 4 38390 NULL
 +ieee80211_if_read_dtim_count_38419 ieee80211_if_read_dtim_count 3 38419 NULL
 +pmcraid_copy_sglist_38431 pmcraid_copy_sglist 3 38431 NULL
++iov_iter_npages_iovec_38448 iov_iter_npages_iovec 0-2 38448 NULL
 +kvm_write_guest_38454 kvm_write_guest 4-2 38454 NULL
++videobuf_waiton_38459 videobuf_waiton 0 38459 NULL
 +_iwl_dbgfs_scan_ant_rxchain_write_38479 _iwl_dbgfs_scan_ant_rxchain_write 3 38479 NULL
 +blk_end_bidi_request_38482 blk_end_bidi_request 3-4 38482 NULL
 +dev_names_read_38509 dev_names_read 3 38509 NULL
@@ -118419,7 +120724,7 @@ index 0000000..386792a
 +irda_sendmsg_dgram_38563 irda_sendmsg_dgram 4 38563 NULL
 +il4965_rs_sta_dbgfs_scale_table_read_38564 il4965_rs_sta_dbgfs_scale_table_read 3 38564 NULL
 +_ipw_read32_38565 _ipw_read32 0 38565 NULL
-+snd_nm256_playback_copy_38567 snd_nm256_playback_copy 3-5 38567 NULL
++snd_nm256_playback_copy_38567 snd_nm256_playback_copy 5-3 38567 NULL
 +copy_ctl_value_to_user_38587 copy_ctl_value_to_user 4 38587 NULL
 +rd_allocate_sgl_table_38607 rd_allocate_sgl_table 3 38607 NULL
 +icn_writecmd_38629 icn_writecmd 2 38629 NULL
@@ -118429,10 +120734,11 @@ index 0000000..386792a
 +qp_broker_alloc_38646 qp_broker_alloc 6-5 38646 NULL
 +mmc_send_cxd_data_38655 mmc_send_cxd_data 5 38655 NULL
 +nouveau_instmem_create__38664 nouveau_instmem_create_ 4 38664 NULL
-+snd_es1371_wait_src_ready_38673 snd_es1371_wait_src_ready 0 38673 NULL
++ufshcd_read_sdev_qdepth_38676 ufshcd_read_sdev_qdepth 0 38676 NULL
 +iscsit_dump_data_payload_38683 iscsit_dump_data_payload 2 38683 NULL
-+validate_vid_hdr_38699 validate_vid_hdr 0 38699 NULL
++tracing_nsecs_read_38689 tracing_nsecs_read 3 38689 NULL
 +rbio_add_io_page_38700 rbio_add_io_page 6 38700 NULL
++w83977af_sir_interrupt_38738 w83977af_sir_interrupt 0 38738 NULL
 +udf_readpages_38761 udf_readpages 4 38761 NULL
 +iwl_dbgfs_thermal_throttling_read_38779 iwl_dbgfs_thermal_throttling_read 3 38779 NULL
 +bcache_device_init_38781 bcache_device_init 3 38781 NULL
@@ -118442,7 +120748,6 @@ index 0000000..386792a
 +ipv6_renew_option_38813 ipv6_renew_option 3 38813 NULL
 +direct_entry_38836 direct_entry 3 38836 NULL
 +compat_udp_setsockopt_38840 compat_udp_setsockopt 5 38840 NULL
-+read_nic_io_word_38853 read_nic_io_word 0 38853 NULL
 +interfaces_38859 interfaces 2 38859 NULL
 +dbgfs_state_38894 dbgfs_state 3 38894 NULL
 +il_dbgfs_sram_write_38942 il_dbgfs_sram_write 3 38942 NULL
@@ -118459,7 +120764,6 @@ index 0000000..386792a
 +_zd_iowrite32v_async_locked_39034 _zd_iowrite32v_async_locked 3 39034 NULL
 +do_write_kmem_39051 do_write_kmem 0-1-3 39051 NULL
 +tomoyo_truncate_39105 tomoyo_truncate 0 39105 NULL
-+leb_write_lock_39111 leb_write_lock 0 39111 NULL
 +__kfifo_to_user_r_39123 __kfifo_to_user_r 5-3 39123 NULL
 +ea_foreach_39133 ea_foreach 0 39133 NULL
 +generic_permission_39150 generic_permission 0 39150 NULL
@@ -118467,11 +120771,13 @@ index 0000000..386792a
 +ath9k_hw_ar9003_dump_eeprom_39156 ath9k_hw_ar9003_dump_eeprom 5-4 39156 NULL
 +echo_client_kbrw_39170 echo_client_kbrw 6 39170 NULL
 +ext3_xattr_check_names_39174 ext3_xattr_check_names 0 39174 NULL
++mlx4_en_create_tx_ring_39179 mlx4_en_create_tx_ring 4 39179 NULL
 +ubi_more_update_data_39189 ubi_more_update_data 4 39189 NULL
 +qcam_read_bytes_39205 qcam_read_bytes 0 39205 NULL
 +ivtv_v4l2_write_39226 ivtv_v4l2_write 3 39226 NULL
++SyS_getrandom_39235 SyS_getrandom 2 39235 NULL
 +posix_acl_to_xattr_39237 posix_acl_to_xattr 0 39237 NULL
-+snd_pcm_capture_forward_39248 snd_pcm_capture_forward 0-2 39248 NULL
++snd_pcm_capture_forward_39248 snd_pcm_capture_forward 2 39248 NULL
 +r128_compat_ioctl_39250 r128_compat_ioctl 2 39250 NULL nohasharray
 +pwr_cont_miss_bcns_spread_read_39250 pwr_cont_miss_bcns_spread_read 3 39250 &r128_compat_ioctl_39250
 +i915_error_state_read_39254 i915_error_state_read 3 39254 NULL
@@ -118492,10 +120798,10 @@ index 0000000..386792a
 +alloc_agpphysmem_i8xx_39427 alloc_agpphysmem_i8xx 1 39427 NULL
 +mic_desc_size_39464 mic_desc_size 0 39464 NULL
 +setkey_unaligned_39474 setkey_unaligned 3 39474 NULL
++usif_ioctl_39481 usif_ioctl 3 39481 NULL
 +ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries_39499 ieee80211_if_fmt_dot11MeshHWMPmaxPREQretries 3 39499 NULL
 +cl_req_alloc_39523 cl_req_alloc 4 39523 NULL
 +int_proc_write_39542 int_proc_write 3 39542 NULL
-+ext4_alloc_file_blocks_39551 ext4_alloc_file_blocks 3 39551 NULL
 +pp_write_39554 pp_write 3 39554 NULL
 +datablob_format_39571 datablob_format 2 39571 NULL nohasharray
 +ieee80211_if_read_fwded_mcast_39571 ieee80211_if_read_fwded_mcast 3 39571 &datablob_format_39571
@@ -118504,7 +120810,6 @@ index 0000000..386792a
 +batadv_tt_tvlv_generate_39615 batadv_tt_tvlv_generate 4 39615 NULL
 +nfs_idmap_get_key_39616 nfs_idmap_get_key 2 39616 NULL
 +sdio_readb_39618 sdio_readb 0 39618 NULL
-+prepare_uptodate_page_39622 prepare_uptodate_page 0 39622 NULL
 +set_dev_class_39645 set_dev_class 4 39645 NULL
 +snd_rme32_capture_copy_39653 snd_rme32_capture_copy 5 39653 NULL
 +tcp_try_rmem_schedule_39657 tcp_try_rmem_schedule 3 39657 NULL
@@ -118512,20 +120817,19 @@ index 0000000..386792a
 +v4l_stk_read_39672 v4l_stk_read 3 39672 NULL
 +hsc_msg_len_get_39673 hsc_msg_len_get 0 39673 NULL
 +do_surface_dirty_sou_39678 do_surface_dirty_sou 7 39678 NULL
-+sd_completed_bytes_39705 sd_completed_bytes 0 39705 NULL
 +ftrace_pid_write_39710 ftrace_pid_write 3 39710 NULL
 +adt7316_spi_multi_read_39765 adt7316_spi_multi_read 3 39765 NULL
 +security_inode_listsecurity_39812 security_inode_listsecurity 0 39812 NULL
 +snd_pcm_oss_writev3_39818 snd_pcm_oss_writev3 3 39818 NULL
 +get_priv_size_39828 get_priv_size 0-1 39828 NULL
++netlbl_catmap_walkrng_39885 netlbl_catmap_walkrng 0-2 39885 NULL
 +pkt_add_39897 pkt_add 3 39897 NULL
 +read_file_modal_eeprom_39909 read_file_modal_eeprom 3 39909 NULL
 +gen_pool_add_virt_39913 gen_pool_add_virt 4 39913 NULL
 +dw210x_op_rw_39915 dw210x_op_rw 6 39915 NULL
-+__mnt_want_write_file_39917 __mnt_want_write_file 0 39917 NULL
 +aes_encrypt_interrupt_read_39919 aes_encrypt_interrupt_read 3 39919 NULL
-+exofs_read_kern_39921 exofs_read_kern 6 39921 NULL nohasharray
-+oom_score_adj_read_39921 oom_score_adj_read 3 39921 &exofs_read_kern_39921
++oom_score_adj_read_39921 oom_score_adj_read 3 39921 NULL nohasharray
++exofs_read_kern_39921 exofs_read_kern 6 39921 &oom_score_adj_read_39921
 +__spi_async_39932 __spi_async 0 39932 NULL
 +__get_order_39935 __get_order 0 39935 NULL
 +error_error_frame_read_39947 error_error_frame_read 3 39947 NULL
@@ -118534,6 +120838,7 @@ index 0000000..386792a
 +bio_chain_clone_range_39967 bio_chain_clone_range 3 39967 NULL
 +dma_push_rx_39973 dma_push_rx 2 39973 NULL
 +broadsheetfb_write_39976 broadsheetfb_write 3 39976 NULL
++lustre_pack_reply_v2_39978 lustre_pack_reply_v2 2 39978 NULL
 +mthca_array_init_39987 mthca_array_init 2 39987 NULL
 +fw_device_op_read_39990 fw_device_op_read 3 39990 NULL
 +server_name2svname_39998 server_name2svname 4 39998 NULL
@@ -118545,11 +120850,11 @@ index 0000000..386792a
 +l2cap_create_iframe_pdu_40055 l2cap_create_iframe_pdu 3 40055 NULL nohasharray
 +add_tty_40055 add_tty 1 40055 &l2cap_create_iframe_pdu_40055
 +atomic_xchg_40070 atomic_xchg 0 40070 NULL
-+snd_pcm_sw_params_user_40095 snd_pcm_sw_params_user 0 40095 NULL
 +sctp_setsockopt_delayed_ack_40129 sctp_setsockopt_delayed_ack 3 40129 NULL
 +dwc2_max_desc_num_40132 dwc2_max_desc_num 0 40132 NULL
 +rx_rx_frame_checksum_read_40140 rx_rx_frame_checksum_read 3 40140 NULL
-+ath10k_write_simulate_fw_crash_40143 ath10k_write_simulate_fw_crash 3 40143 NULL
++ath10k_write_simulate_fw_crash_40143 ath10k_write_simulate_fw_crash 3 40143 NULL nohasharray
++kvm_mmu_notifier_clear_flush_young_40143 kvm_mmu_notifier_clear_flush_young 3-4 40143 &ath10k_write_simulate_fw_crash_40143
 +iwch_alloc_fastreg_pbl_40153 iwch_alloc_fastreg_pbl 2 40153 NULL
 +pt_write_40159 pt_write 3 40159 NULL
 +scsi_sg_count_40182 scsi_sg_count 0 40182 NULL
@@ -118560,20 +120865,23 @@ index 0000000..386792a
 +ocrdma_dbgfs_ops_read_40232 ocrdma_dbgfs_ops_read 3 40232 NULL
 +osst_read_40237 osst_read 3 40237 NULL
 +lpage_info_slot_40243 lpage_info_slot 1-3 40243 NULL
-+ocfs2_zero_extend_get_range_40248 ocfs2_zero_extend_get_range 4 40248 NULL
-+of_get_child_count_40254 of_get_child_count 0 40254 NULL
++ocfs2_zero_extend_get_range_40248 ocfs2_zero_extend_get_range 4-3 40248 NULL
++of_get_child_count_40254 of_get_child_count 0 40254 NULL nohasharray
++fsl_edma_prep_dma_cyclic_40254 fsl_edma_prep_dma_cyclic 3-4 40254 &of_get_child_count_40254
 +rs_sta_dbgfs_scale_table_read_40262 rs_sta_dbgfs_scale_table_read 3 40262 NULL
 +ext2_fiemap_40271 ext2_fiemap 4 40271 NULL
 +usbnet_read_cmd_40275 usbnet_read_cmd 7 40275 NULL
 +rx_xfr_hint_trig_read_40283 rx_xfr_hint_trig_read 3 40283 NULL
++tracing_thresh_read_40295 tracing_thresh_read 3 40295 NULL
 +SyS_bind_40303 SyS_bind 3 40303 NULL
-+ubi_io_write_data_40305 ubi_io_write_data 0 40305 NULL
 +ib_get_mad_data_offset_40336 ib_get_mad_data_offset 0 40336 NULL
 +mmio_read_40348 mmio_read 4 40348 NULL
 +event_rx_mem_empty_read_40363 event_rx_mem_empty_read 3 40363 NULL
-+ocfs2_check_range_for_refcount_40365 ocfs2_check_range_for_refcount 2-3 40365 NULL
++ocfs2_check_range_for_refcount_40365 ocfs2_check_range_for_refcount 3-2 40365 NULL
 +get_chars_40373 get_chars 3 40373 NULL
 +fb_prepare_extra_logos_40429 fb_prepare_extra_logos 0-2 40429 NULL
++proc_write_driver_40432 proc_write_driver 3 40432 NULL
++repair_io_failure_40452 repair_io_failure 4-3 40452 NULL
 +tomoyo_update_policy_40458 tomoyo_update_policy 2 40458 NULL
 +zd_usb_scnprint_id_40459 zd_usb_scnprint_id 0-3 40459 NULL
 +gp2ap020a00f_write_event_threshold_40461 gp2ap020a00f_write_event_threshold 2 40461 NULL
@@ -118587,8 +120895,8 @@ index 0000000..386792a
 +ixgbe_dbg_reg_ops_read_40540 ixgbe_dbg_reg_ops_read 3 40540 NULL
 +ima_write_policy_40548 ima_write_policy 3 40548 NULL
 +esp_alloc_tmp_40558 esp_alloc_tmp 3-2 40558 NULL
++bl_alloc_init_bio_40569 bl_alloc_init_bio 1 40569 NULL
 +get_priv_descr_and_size_40612 get_priv_descr_and_size 0 40612 NULL
-+i2c_register_adapter_40660 i2c_register_adapter 0 40660 NULL
 +twl4030_kpwrite_u8_40665 twl4030_kpwrite_u8 3 40665 NULL
 +__cfg80211_roamed_40668 __cfg80211_roamed 4-6 40668 NULL
 +pipeline_rx_complete_stat_fifo_int_read_40671 pipeline_rx_complete_stat_fifo_int_read 3 40671 NULL
@@ -118599,7 +120907,8 @@ index 0000000..386792a
 +pci_enable_resources_40680 pci_enable_resources 0 40680 NULL
 +nfc_hci_set_param_40697 nfc_hci_set_param 5 40697 NULL
 +__seq_open_private_40715 __seq_open_private 3 40715 NULL
-+set_extent_bit_40719 set_extent_bit 0 40719 NULL
++lnet_new_text_buf_40717 lnet_new_text_buf 1 40717 NULL
++ip_skb_dst_mtu_40718 ip_skb_dst_mtu 0 40718 NULL
 +of_pdt_build_one_prop_40735 of_pdt_build_one_prop 5 40735 NULL
 +fuse_readpages_40737 fuse_readpages 4 40737 NULL
 +xfs_iext_remove_direct_40744 xfs_iext_remove_direct 3 40744 NULL
@@ -118610,7 +120919,7 @@ index 0000000..386792a
 +kernfs_fop_read_40770 kernfs_fop_read 3 40770 NULL
 +show_list_40775 show_list 3-0 40775 NULL
 +kfifo_out_copy_r_40784 kfifo_out_copy_r 0-3 40784 NULL
-+bitmap_weight_40791 bitmap_weight 0 40791 NULL
++bitmap_weight_40791 bitmap_weight 0-2 40791 NULL
 +pyra_sysfs_read_40795 pyra_sysfs_read 6 40795 NULL
 +rtw_add_beacon_40801 rtw_add_beacon 3-5 40801 NULL
 +add_action_40811 add_action 4 40811 NULL
@@ -118623,12 +120932,13 @@ index 0000000..386792a
 +gfs2_ea_find_40913 gfs2_ea_find 0 40913 NULL
 +vol_cdev_write_40915 vol_cdev_write 3 40915 NULL
 +snd_vx_create_40948 snd_vx_create 4 40948 NULL
++path_listxattr_40949 path_listxattr 3 40949 NULL
 +rds_sendmsg_40976 rds_sendmsg 4 40976 NULL
-+insert_old_idx_40987 insert_old_idx 0 40987 NULL
++ima_appraise_measurement_40978 ima_appraise_measurement 6 40978 NULL
 +il_dbgfs_fh_reg_read_40993 il_dbgfs_fh_reg_read 3 40993 NULL
 +iwl_dbgfs_scan_ant_rxchain_read_40999 iwl_dbgfs_scan_ant_rxchain_read 3 40999 NULL
 +mac80211_format_buffer_41010 mac80211_format_buffer 2 41010 NULL
-+mtd_block_isbad_41015 mtd_block_isbad 0 41015 NULL
++get_pages_alloc_bvec_41012 get_pages_alloc_bvec 0-3 41012 NULL
 +__proc_dobitmasks_41029 __proc_dobitmasks 5 41029 NULL
 +_req_append_segment_41031 _req_append_segment 2 41031 NULL
 +mISDN_sock_sendmsg_41035 mISDN_sock_sendmsg 4 41035 NULL
@@ -118641,6 +120951,7 @@ index 0000000..386792a
 +nvme_map_user_pages_41093 nvme_map_user_pages 4-3 41093 NULL nohasharray
 +roccat_read_41093 roccat_read 3 41093 &nvme_map_user_pages_41093
 +dma_attach_41094 dma_attach 5-6 41094 NULL
++nl80211_send_mlme_event_41099 nl80211_send_mlme_event 4 41099 NULL
 +provide_user_output_41105 provide_user_output 3 41105 NULL
 +f_audio_buffer_alloc_41110 f_audio_buffer_alloc 1 41110 NULL
 +ath10k_read_wmi_services_41112 ath10k_read_wmi_services 3 41112 NULL
@@ -118648,7 +120959,6 @@ index 0000000..386792a
 +tx_frag_mpdu_alloc_failed_read_41167 tx_frag_mpdu_alloc_failed_read 3 41167 NULL
 +dvb_ca_write_41171 dvb_ca_write 3 41171 NULL
 +netif_get_num_default_rss_queues_41187 netif_get_num_default_rss_queues 0 41187 NULL
-+request_irq_41192 request_irq 0 41192 NULL
 +dfs_file_write_41196 dfs_file_write 3 41196 NULL
 +nfs_page_array_len_41219 nfs_page_array_len 0-2-1 41219 NULL
 +cfg80211_process_disassoc_41231 cfg80211_process_disassoc 3 41231 NULL
@@ -118656,6 +120966,7 @@ index 0000000..386792a
 +erst_read_41260 erst_read 0 41260 NULL
 +alloc_context_41283 alloc_context 1 41283 NULL
 +of_count_phandle_with_args_41291 of_count_phandle_with_args 0 41291 NULL
++virtscsi_change_queue_depth_41327 virtscsi_change_queue_depth 2 41327 NULL
 +o2hb_setup_one_bio_41341 o2hb_setup_one_bio 4 41341 NULL
 +twl_change_queue_depth_41342 twl_change_queue_depth 2 41342 NULL
 +rtw_android_set_block_41347 rtw_android_set_block 0 41347 NULL
@@ -118672,7 +120983,6 @@ index 0000000..386792a
 +pcpu_build_alloc_info_41443 pcpu_build_alloc_info 1-2-3 41443 NULL
 +se_io_cb_41461 se_io_cb 3 41461 NULL
 +layout_leb_in_gaps_41470 layout_leb_in_gaps 0 41470 NULL
-+snd_pcm_status_41472 snd_pcm_status 0 41472 NULL
 +rt2x00debug_write_rfcsr_41473 rt2x00debug_write_rfcsr 3 41473 NULL
 +bl_alloc_init_bio_41478 bl_alloc_init_bio 1 41478 NULL
 +kvm_unmap_hva_range_41484 kvm_unmap_hva_range 3-2 41484 NULL
@@ -118686,11 +120996,11 @@ index 0000000..386792a
 +nr_status_frames_41559 nr_status_frames 0-1 41559 NULL nohasharray
 +si476x_radio_fops_read_41559 si476x_radio_fops_read 3 41559 &nr_status_frames_41559
 +rng_dev_read_41581 rng_dev_read 3 41581 NULL
++nfsd_readv_41585 nfsd_readv 4 41585 NULL
 +batadv_tvlv_container_ogm_append_41588 batadv_tvlv_container_ogm_append 4 41588 NULL
-+vga_io_r_41609 vga_io_r 0 41609 NULL
 +tcp_hdrlen_41610 tcp_hdrlen 0 41610 NULL
-+usb_endpoint_maxp_41613 usb_endpoint_maxp 0 41613 NULL nohasharray
-+lbs_bcnmiss_write_41613 lbs_bcnmiss_write 3 41613 &usb_endpoint_maxp_41613
++lbs_bcnmiss_write_41613 lbs_bcnmiss_write 3 41613 NULL nohasharray
++usb_endpoint_maxp_41613 usb_endpoint_maxp 0 41613 &lbs_bcnmiss_write_41613
 +a2mp_send_41615 a2mp_send 4 41615 NULL
 +lstcon_batch_list_41627 lstcon_batch_list 2 41627 NULL
 +mempool_create_kmalloc_pool_41650 mempool_create_kmalloc_pool 1 41650 NULL
@@ -118699,26 +121009,29 @@ index 0000000..386792a
 +ieee80211_if_fmt_bssid_41677 ieee80211_if_fmt_bssid 3 41677 NULL
 +fill_pcm_stream_name_41685 fill_pcm_stream_name 2 41685 NULL
 +lov_unpackmd_41701 lov_unpackmd 4 41701 NULL
++connector_write_41709 connector_write 3 41709 NULL
 +fillonedir_41746 fillonedir 3 41746 NULL
 +iwl_dbgfs_bt_notif_read_41794 iwl_dbgfs_bt_notif_read 3 41794 NULL
 +hsi_alloc_controller_41802 hsi_alloc_controller 1 41802 NULL
++ptlrpc_new_bulk_41804 ptlrpc_new_bulk 1 41804 NULL
 +rtw_android_get_macaddr_41812 rtw_android_get_macaddr 0 41812 NULL
 +sco_send_frame_41815 sco_send_frame 3 41815 NULL
++kimage_file_alloc_init_41827 kimage_file_alloc_init 5 41827 NULL
++copy_page_to_iter_bvec_41830 copy_page_to_iter_bvec 0-3 41830 NULL
 +ixgbe_dbg_netdev_ops_read_41839 ixgbe_dbg_netdev_ops_read 3 41839 NULL
 +do_ip_setsockopt_41852 do_ip_setsockopt 5 41852 NULL
 +keyctl_instantiate_key_41855 keyctl_instantiate_key 3 41855 NULL
 +pci_map_single_41869 pci_map_single 0 41869 NULL
++usb_gadget_get_string_41871 usb_gadget_get_string 0 41871 NULL
 +v_APCI3120_InterruptDmaMoveBlock16bit_41914 v_APCI3120_InterruptDmaMoveBlock16bit 4 41914 NULL
 +get_fdb_entries_41916 get_fdb_entries 3 41916 NULL
-+ext4_da_write_inline_data_begin_41935 ext4_da_write_inline_data_begin 3-4 41935 NULL
++ext4_da_write_inline_data_begin_41935 ext4_da_write_inline_data_begin 4-3 41935 NULL
 +sci_rxfill_41945 sci_rxfill 0 41945 NULL
 +read_gssp_41947 read_gssp 3 41947 NULL
 +ocfs2_xattr_bucket_get_name_value_41949 ocfs2_xattr_bucket_get_name_value 0 41949 NULL
 +portnames_read_41958 portnames_read 3 41958 NULL
-+ubi_self_check_all_ff_41959 ubi_self_check_all_ff 0 41959 NULL
 +dst_mtu_41969 dst_mtu 0 41969 NULL
 +cx24116_writeregN_41975 cx24116_writeregN 4 41975 NULL
-+ubi_io_is_bad_41983 ubi_io_is_bad 0 41983 NULL
 +pool_allocate_42012 pool_allocate 3 42012 NULL
 +spidev_sync_read_42014 spidev_sync_read 0 42014 NULL
 +rs_sta_dbgfs_scale_table_write_42017 rs_sta_dbgfs_scale_table_write 3 42017 NULL
@@ -118729,6 +121042,7 @@ index 0000000..386792a
 +jffs2_do_link_42048 jffs2_do_link 6 42048 NULL
 +ps_poll_upsd_max_ap_turn_read_42050 ps_poll_upsd_max_ap_turn_read 3 42050 NULL
 +InterfaceTransmitPacket_42058 InterfaceTransmitPacket 3 42058 NULL
++ufshcd_dev_cmd_completion_42080 ufshcd_dev_cmd_completion 0 42080 NULL
 +scsi_execute_req_42088 scsi_execute_req 5 42088 NULL
 +sk_chk_filter_42095 sk_chk_filter 2 42095 NULL
 +submit_inquiry_42108 submit_inquiry 3 42108 NULL
@@ -118739,13 +121053,14 @@ index 0000000..386792a
 +oprofilefs_str_to_user_42182 oprofilefs_str_to_user 3 42182 NULL
 +write_file_beacon_42185 write_file_beacon 3 42185 NULL
 +get_znodes_to_commit_42201 get_znodes_to_commit 0 42201 NULL
-+pla_ocp_read_42235 pla_ocp_read 3 42235 NULL
++blockdev_direct_IO_42235 blockdev_direct_IO 5 42235 NULL nohasharray
++pla_ocp_read_42235 pla_ocp_read 3 42235 &blockdev_direct_IO_42235
 +rx_defrag_need_decrypt_read_42253 rx_defrag_need_decrypt_read 3 42253 NULL
 +find_last_bit_42260 find_last_bit 0 42260 NULL
 +__pcpu_size_to_slot_42271 __pcpu_size_to_slot 0 42271 NULL
 +__tty_buffer_request_room_42276 __tty_buffer_request_room 2-0 42276 NULL
 +snd_pcm_hw_param_value_max_42280 snd_pcm_hw_param_value_max 0 42280 NULL
-+__cpus_weight_42299 __cpus_weight 0 42299 NULL
++__cpus_weight_42299 __cpus_weight 2-0 42299 NULL
 +sel_read_perm_42302 sel_read_perm 3 42302 NULL
 +sctp_setsockopt_del_key_42304 sctp_setsockopt_del_key 3 42304 NULL nohasharray
 +ulong_read_file_42304 ulong_read_file 3 42304 &sctp_setsockopt_del_key_42304
@@ -118763,26 +121078,30 @@ index 0000000..386792a
 +snd_pcm_action_group_42452 snd_pcm_action_group 0 42452 NULL
 +tcm_loop_change_queue_depth_42454 tcm_loop_change_queue_depth 2 42454 NULL
 +kuc_free_42455 kuc_free 2 42455 NULL
++cp2112_gpio_get_42467 cp2112_gpio_get 2 42467 NULL
 +__simple_xattr_set_42474 __simple_xattr_set 4 42474 NULL
 +omfs_readpages_42490 omfs_readpages 4 42490 NULL
 +bypass_write_42498 bypass_write 3 42498 NULL
-+SyS_mincore_42511 SyS_mincore 2-1 42511 NULL
++SyS_mincore_42511 SyS_mincore 1-2 42511 NULL
 +kvm_write_wall_clock_42520 kvm_write_wall_clock 2 42520 NULL
 +dio_bio_complete_42524 dio_bio_complete 0 42524 NULL
 +smk_write_netlbladdr_42525 smk_write_netlbladdr 3 42525 NULL
-+self_check_ec_hdr_42528 self_check_ec_hdr 0 42528 NULL
 +dbAllocNear_42546 dbAllocNear 0 42546 NULL
 +ath6kl_wmi_proc_events_vif_42549 ath6kl_wmi_proc_events_vif 5 42549 NULL
 +udp_recvmsg_42558 udp_recvmsg 4 42558 NULL
-+iwl_print_event_log_42566 iwl_print_event_log 7-5-0 42566 NULL
++iwl_print_event_log_42566 iwl_print_event_log 0-7-5 42566 NULL
 +xfrm_new_hash_mask_42579 xfrm_new_hash_mask 0-1 42579 NULL
 +oom_score_adj_write_42594 oom_score_adj_write 3 42594 NULL
 +ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout_42635 ieee80211_if_fmt_dot11MeshHWMPactivePathTimeout 3 42635 NULL
 +scsi_activate_tcq_42640 scsi_activate_tcq 2 42640 NULL
 +br_mdb_rehash_42643 br_mdb_rehash 2 42643 NULL
++parport_pc_compat_write_block_pio_42644 parport_pc_compat_write_block_pio 3 42644 NULL nohasharray
++num_controllers_42644 num_controllers 0 42644 &parport_pc_compat_write_block_pio_42644
 +_regmap_raw_write_42652 _regmap_raw_write 4-2 42652 NULL
 +request_key_and_link_42693 request_key_and_link 4 42693 NULL
 +vb2_read_42703 vb2_read 3 42703 NULL
++read_status_42722 read_status 0 42722 NULL
++iwl_mvm_coex_dump_mbox_old_42727 iwl_mvm_coex_dump_mbox_old 4-3-0 42727 NULL
 +dvb_demux_ioctl_42733 dvb_demux_ioctl 2 42733 NULL
 +set_aoe_iflist_42737 set_aoe_iflist 2 42737 NULL
 +ax25_setsockopt_42740 ax25_setsockopt 5 42740 NULL
@@ -118806,20 +121125,19 @@ index 0000000..386792a
 +sta_last_rx_rate_read_42909 sta_last_rx_rate_read 3 42909 NULL
 +sctp_getsockopt_maxburst_42941 sctp_getsockopt_maxburst 2 42941 NULL
 +vx_reset_chk_42946 vx_reset_chk 0 42946 NULL
-+blkdev_direct_IO_42962 blkdev_direct_IO 4 42962 NULL
-+ntb_setup_snb_msix_42971 ntb_setup_snb_msix 2-0 42971 NULL
++ntb_setup_snb_msix_42971 ntb_setup_snb_msix 2 42971 NULL
 +compat_udpv6_setsockopt_42981 compat_udpv6_setsockopt 5 42981 NULL
 +nfs_idmap_get_desc_42990 nfs_idmap_get_desc 4-2 42990 NULL nohasharray
 +rtw_os_xmit_resource_alloc_42990 rtw_os_xmit_resource_alloc 3 42990 &nfs_idmap_get_desc_42990
 +isr_rx_mem_overflow_read_43025 isr_rx_mem_overflow_read 3 43025 NULL
 +wep_default_key_count_read_43035 wep_default_key_count_read 3 43035 NULL
++__bioset_create_43059 __bioset_create 1 43059 NULL
 +nouveau_gpuobj_create__43072 nouveau_gpuobj_create_ 9 43072 NULL
 +nfs_map_group_to_gid_43082 nfs_map_group_to_gid 3 43082 NULL
 +_xfer_secondary_pool_43089 _xfer_secondary_pool 2 43089 NULL
 +sysfs_create_file_ns_43103 sysfs_create_file_ns 0 43103 NULL
 +ieee80211_if_fmt_drop_unencrypted_43107 ieee80211_if_fmt_drop_unencrypted 3 43107 NULL
 +calculate_node_totalpages_43118 calculate_node_totalpages 2-3 43118 NULL
-+e1000_request_msix_43134 e1000_request_msix 0 43134 NULL
 +read_file_dfs_43145 read_file_dfs 3 43145 NULL
 +cfs_cpt_table_alloc_43159 cfs_cpt_table_alloc 1 43159 NULL
 +usb_string_sub_43164 usb_string_sub 0 43164 NULL
@@ -118830,32 +121148,35 @@ index 0000000..386792a
 +iso_callback_43208 iso_callback 3 43208 NULL
 +ath10k_p2p_calc_noa_ie_len_43209 ath10k_p2p_calc_noa_ie_len 0 43209 NULL
 +f2fs_acl_from_disk_43210 f2fs_acl_from_disk 2 43210 NULL
-+atomic_long_add_return_43217 atomic_long_add_return 1-0 43217 NULL
++atomic_long_add_return_43217 atomic_long_add_return 1 43217 NULL
++gfs2_direct_IO_43220 gfs2_direct_IO 4 43220 NULL
 +batadv_tt_tvlv_unicast_handler_v1_43239 batadv_tt_tvlv_unicast_handler_v1 5 43239 NULL
 +vmemmap_alloc_block_43245 vmemmap_alloc_block 1 43245 NULL
 +ide_end_rq_43269 ide_end_rq 4 43269 NULL
-+nilfs_direct_IO_43271 nilfs_direct_IO 4 43271 NULL
-+evtchn_write_43278 evtchn_write 3 43278 NULL
++evtchn_write_43278 evtchn_write 3 43278 NULL nohasharray
++parport_pc_ecp_write_block_pio_43278 parport_pc_ecp_write_block_pio 3 43278 &evtchn_write_43278
 +filemap_write_and_wait_range_43279 filemap_write_and_wait_range 0 43279 NULL
 +mpage_alloc_43299 mpage_alloc 3 43299 NULL
-+mmu_set_spte_43327 mmu_set_spte 6-7 43327 NULL
++mmu_set_spte_43327 mmu_set_spte 7-6 43327 NULL
 +__ext4_get_inode_loc_43332 __ext4_get_inode_loc 0 43332 NULL
 +xenfb_write_43412 xenfb_write 3 43412 NULL
-+__alloc_bootmem_low_43423 __alloc_bootmem_low 1 43423 NULL nohasharray
-+msi_capability_init_43423 msi_capability_init 0 43423 &__alloc_bootmem_low_43423
++ext4_xattr_check_names_43422 ext4_xattr_check_names 0 43422 NULL
++__alloc_bootmem_low_43423 __alloc_bootmem_low 1 43423 NULL
 +usb_alloc_urb_43436 usb_alloc_urb 1 43436 NULL
 +ath6kl_wmi_roam_tbl_event_rx_43440 ath6kl_wmi_roam_tbl_event_rx 3 43440 NULL
-+usb_string_43443 usb_string 0 43443 NULL nohasharray
-+usemap_size_43443 usemap_size 0-1-2 43443 &usb_string_43443
++usemap_size_43443 usemap_size 0-2-1 43443 NULL nohasharray
++usb_string_43443 usb_string 0 43443 &usemap_size_43443
 +get_vm_area_size_43444 get_vm_area_size 0 43444 NULL
 +fs_path_prepare_for_add_43453 fs_path_prepare_for_add 2 43453 NULL
 +nvme_trans_device_id_page_43466 nvme_trans_device_id_page 4 43466 NULL
 +tx_tx_data_prepared_read_43497 tx_tx_data_prepared_read 3 43497 NULL
 +ieee80211_if_fmt_dot11MeshHWMPnetDiameterTraversalTime_43505 ieee80211_if_fmt_dot11MeshHWMPnetDiameterTraversalTime 3 43505 NULL
++ll_direct_IO_26_43530 ll_direct_IO_26 4 43530 NULL
 +dvb_ca_en50221_io_write_43533 dvb_ca_en50221_io_write 3 43533 NULL
 +read_events_43534 read_events 3 43534 NULL
 +cachefiles_daemon_write_43535 cachefiles_daemon_write 3 43535 NULL
 +tx_frag_failed_read_43540 tx_frag_failed_read 3 43540 NULL
++request_resource_43548 request_resource 0 43548 NULL
 +rpc_malloc_43573 rpc_malloc 2 43573 NULL
 +handle_frequent_errors_43599 handle_frequent_errors 4 43599 NULL
 +lpfc_idiag_drbacc_read_reg_43606 lpfc_idiag_drbacc_read_reg 0-3 43606 NULL
@@ -118868,15 +121189,17 @@ index 0000000..386792a
 +write_file_tx99_power_43670 write_file_tx99_power 3 43670 NULL
 +dmam_declare_coherent_memory_43679 dmam_declare_coherent_memory 4 43679 NULL
 +max77693_bulk_write_43698 max77693_bulk_write 2-3 43698 NULL
++nvkm_connector_create__43711 nvkm_connector_create_ 6 43711 NULL
++fuse_send_read_43725 fuse_send_read 4-0 43725 NULL
 +drbd_md_first_sector_43729 drbd_md_first_sector 0 43729 NULL
 +snd_rme32_playback_copy_43732 snd_rme32_playback_copy 5 43732 NULL
++__alloc_alien_cache_43734 __alloc_alien_cache 2 43734 NULL
 +fuse_conn_congestion_threshold_write_43736 fuse_conn_congestion_threshold_write 3 43736 NULL
 +gigaset_initcs_43753 gigaset_initcs 2 43753 NULL
 +sctp_setsockopt_active_key_43755 sctp_setsockopt_active_key 3 43755 NULL
-+generic_file_direct_write_43770 generic_file_direct_write 0 43770 NULL
 +ocfs2_xattr_get_value_outside_43787 ocfs2_xattr_get_value_outside 0 43787 NULL nohasharray
 +byte_pos_43787 byte_pos 0 43787 &ocfs2_xattr_get_value_outside_43787
-+btrfs_copy_from_user_43806 btrfs_copy_from_user 3-1-0 43806 NULL
++btrfs_copy_from_user_43806 btrfs_copy_from_user 0-3-1 43806 NULL
 +ieee80211_if_fmt_element_ttl_43825 ieee80211_if_fmt_element_ttl 3 43825 NULL
 +ieee80211_alloc_hw_43829 ieee80211_alloc_hw 1 43829 NULL
 +read_flush_43851 read_flush 3 43851 NULL
@@ -118887,10 +121210,9 @@ index 0000000..386792a
 +__get_required_blob_size_43980 __get_required_blob_size 0-3-2 43980 NULL
 +nla_reserve_43984 nla_reserve 3 43984 NULL
 +__clkdev_alloc_43990 __clkdev_alloc 1 43990 NULL
-+scsi_command_size_43992 scsi_command_size 0 43992 NULL nohasharray
-+bcm_recvmsg_43992 bcm_recvmsg 4 43992 &scsi_command_size_43992 nohasharray
-+kvm_read_guest_virt_43992 kvm_read_guest_virt 4-2 43992 &bcm_recvmsg_43992
-+ulist_add_43994 ulist_add 0 43994 NULL
++kvm_read_guest_virt_43992 kvm_read_guest_virt 4-2 43992 NULL nohasharray
++scsi_command_size_43992 scsi_command_size 0 43992 &kvm_read_guest_virt_43992 nohasharray
++bcm_recvmsg_43992 bcm_recvmsg 4 43992 &scsi_command_size_43992
 +emit_flags_44006 emit_flags 4-3 44006 NULL
 +write_flush_procfs_44011 write_flush_procfs 3 44011 NULL
 +fru_strlen_44046 fru_strlen 0 44046 NULL
@@ -118899,15 +121221,17 @@ index 0000000..386792a
 +pci_msix_vec_count_44093 pci_msix_vec_count 0 44093 NULL
 +xlog_recover_add_to_cont_trans_44102 xlog_recover_add_to_cont_trans 4 44102 NULL
 +skb_frag_dma_map_44112 skb_frag_dma_map 0 44112 NULL
-+tracing_set_trace_read_44122 tracing_set_trace_read 3 44122 NULL nohasharray
-+file_remove_suid_44122 file_remove_suid 0 44122 &tracing_set_trace_read_44122
++nouveau_clock_create__44116 nouveau_clock_create_ 6 44116 NULL
++tracing_set_trace_read_44122 tracing_set_trace_read 3 44122 NULL
 +SyS_process_vm_writev_44129 SyS_process_vm_writev 3-5 44129 NULL
++tracing_resize_saved_cmdlines_44140 tracing_resize_saved_cmdlines 1 44140 NULL
 +ttm_get_pages_44142 ttm_get_pages 2 44142 NULL
 +scsi_get_resid_44147 scsi_get_resid 0 44147 NULL
-+ubifs_find_dirty_idx_leb_44169 ubifs_find_dirty_idx_leb 0 44169 NULL
 +ocfs2_xattr_bucket_find_44174 ocfs2_xattr_bucket_find 0 44174 NULL
 +SYSC_set_mempolicy_44176 SYSC_set_mempolicy 3 44176 NULL
++readreg_ipac_44186 readreg_ipac 0 44186 NULL
 +handle_eviocgbit_44193 handle_eviocgbit 3 44193 NULL
++btrfs_item_offset_nr_44220 btrfs_item_offset_nr 0 44220 NULL
 +srp_alloc_iu_44227 srp_alloc_iu 2 44227 NULL
 +scsi_track_queue_full_44239 scsi_track_queue_full 2 44239 NULL
 +sigma_action_write_regmap_44240 sigma_action_write_regmap 3 44240 NULL
@@ -118917,8 +121241,8 @@ index 0000000..386792a
 +dispatch_proc_write_44320 dispatch_proc_write 3 44320 NULL
 +ccp_init_data_44324 ccp_init_data 5 44324 NULL
 +rs_init_44327 rs_init 1 44327 NULL
-+blk_queue_init_tags_44355 blk_queue_init_tags 2 44355 NULL nohasharray
-+nfs_fscache_get_super_cookie_44355 nfs_fscache_get_super_cookie 3 44355 &blk_queue_init_tags_44355
++nfs_fscache_get_super_cookie_44355 nfs_fscache_get_super_cookie 3 44355 NULL nohasharray
++blk_queue_init_tags_44355 blk_queue_init_tags 2 44355 &nfs_fscache_get_super_cookie_44355
 +rts_threshold_read_44384 rts_threshold_read 3 44384 NULL
 +mtip_hw_read_flags_44396 mtip_hw_read_flags 3 44396 NULL
 +aoedev_flush_44398 aoedev_flush 2 44398 NULL
@@ -118926,6 +121250,7 @@ index 0000000..386792a
 +drm_buffer_alloc_44405 drm_buffer_alloc 2 44405 NULL
 +osst_do_scsi_44410 osst_do_scsi 4 44410 NULL
 +ieee80211_if_read_rc_rateidx_mcs_mask_5ghz_44423 ieee80211_if_read_rc_rateidx_mcs_mask_5ghz 3 44423 NULL
++mic_virtio_copy_to_user_44472 mic_virtio_copy_to_user 3-4 44472 NULL
 +write_file_debug_44476 write_file_debug 3 44476 NULL
 +btrfs_chunk_item_size_44478 btrfs_chunk_item_size 0-1 44478 NULL
 +sdio_align_size_44489 sdio_align_size 0-2 44489 NULL
@@ -118938,18 +121263,20 @@ index 0000000..386792a
 +SyS_io_getevents_44519 SyS_io_getevents 3 44519 NULL
 +ieee80211_rx_mgmt_assoc_resp_44525 ieee80211_rx_mgmt_assoc_resp 3 44525 NULL
 +comm_write_44537 comm_write 3 44537 NULL
-+snd_pcm_drop_44542 snd_pcm_drop 0 44542 NULL
 +dgrp_config_proc_write_44571 dgrp_config_proc_write 3 44571 NULL
-+btrfs_set_extent_delalloc_44587 btrfs_set_extent_delalloc 0 44587 NULL
++l2cap_sock_memcpy_fromiovec_cb_44573 l2cap_sock_memcpy_fromiovec_cb 4 44573 NULL
 +nouveau_perfmon_create__44602 nouveau_perfmon_create_ 4 44602 NULL
++xpcs_mmd_write_44633 xpcs_mmd_write 3 44633 NULL
 +alloc_ctrl_packet_44667 alloc_ctrl_packet 1 44667 NULL
 +mpi_resize_44674 mpi_resize 2 44674 NULL
 +sysfs_create_link_44685 sysfs_create_link 0 44685 NULL
 +ts_read_44687 ts_read 3 44687 NULL
++write_file_spectral_bins_44696 write_file_spectral_bins 3 44696 NULL
 +lov_emerg_alloc_44698 lov_emerg_alloc 1 44698 NULL
 +C_SYSC_select_44701 C_SYSC_select 1 44701 NULL
 +__generic_block_fiemap_44713 __generic_block_fiemap 4 44713 NULL nohasharray
 +xfer_to_user_44713 xfer_to_user 3 44713 &__generic_block_fiemap_44713
++nft_hash_tbl_size_44724 nft_hash_tbl_size 0 44724 NULL
 +_zd_iowrite32v_locked_44725 _zd_iowrite32v_locked 3 44725 NULL
 +clusterip_proc_write_44729 clusterip_proc_write 3 44729 NULL
 +fib_count_nexthops_44730 fib_count_nexthops 0 44730 NULL
@@ -118983,6 +121310,7 @@ index 0000000..386792a
 +sysfs_do_create_link_sd_45057 sysfs_do_create_link_sd 0 45057 NULL
 +sel_write_user_45060 sel_write_user 3 45060 NULL
 +snd_mixart_BA0_read_45069 snd_mixart_BA0_read 5 45069 NULL
++lnet_expand1tb_45102 lnet_expand1tb 6 45102 NULL
 +snd_card_new_45104 snd_card_new 5 45104 NULL
 +kvm_mmu_page_get_gfn_45110 kvm_mmu_page_get_gfn 0-2 45110 NULL
 +pwr_missing_bcns_cnt_read_45113 pwr_missing_bcns_cnt_read 3 45113 NULL
@@ -118991,11 +121319,11 @@ index 0000000..386792a
 +cfs_trace_daemon_command_usrstr_45147 cfs_trace_daemon_command_usrstr 2 45147 NULL
 +gen_bitmask_string_45149 gen_bitmask_string 6 45149 NULL
 +device_write_45156 device_write 3 45156 NULL nohasharray
-+ocfs2_remove_inode_range_45156 ocfs2_remove_inode_range 3 45156 &device_write_45156
++ocfs2_remove_inode_range_45156 ocfs2_remove_inode_range 3-4 45156 &device_write_45156
 +tomoyo_write_self_45161 tomoyo_write_self 3 45161 NULL
 +sta_agg_status_write_45164 sta_agg_status_write 3 45164 NULL
-+sctp_pack_cookie_45190 sctp_pack_cookie 6 45190 NULL nohasharray
-+snd_sb_csp_load_user_45190 snd_sb_csp_load_user 3 45190 &sctp_pack_cookie_45190
++snd_sb_csp_load_user_45190 snd_sb_csp_load_user 3 45190 NULL nohasharray
++sctp_pack_cookie_45190 sctp_pack_cookie 6 45190 &snd_sb_csp_load_user_45190
 +iso_alloc_urb_45206 iso_alloc_urb 4-5 45206 NULL
 +spi_alloc_master_45223 spi_alloc_master 2 45223 NULL
 +ieee80211_if_read_peer_45233 ieee80211_if_read_peer 3 45233 NULL
@@ -119013,9 +121341,11 @@ index 0000000..386792a
 +ieee80211_if_fmt_dot11MeshHWMProotInterval_45421 ieee80211_if_fmt_dot11MeshHWMProotInterval 3 45421 NULL
 +ll_iocontrol_register_45430 ll_iocontrol_register 2 45430 NULL
 +tty_buffer_alloc_45437 tty_buffer_alloc 2 45437 NULL
++blkdev_direct_IO_45440 blkdev_direct_IO 4 45440 NULL
++__node_remap_45458 __node_remap 4 45458 NULL
 +rds_ib_set_wr_signal_state_45463 rds_ib_set_wr_signal_state 0 45463 NULL
 +tracing_read_dyn_info_45468 tracing_read_dyn_info 3 45468 NULL
-+snd_pcm_hwsync_45479 snd_pcm_hwsync 0 45479 NULL
++__calc_request_pg_45470 __calc_request_pg 0 45470 NULL
 +rds_message_copy_from_user_45510 rds_message_copy_from_user 3 45510 NULL
 +copy_macs_45534 copy_macs 4 45534 NULL
 +nla_attr_size_45545 nla_attr_size 0-1 45545 NULL
@@ -119027,12 +121357,14 @@ index 0000000..386792a
 +venus_rmdir_45564 venus_rmdir 4 45564 NULL
 +ath6kl_keepalive_write_45600 ath6kl_keepalive_write 3 45600 NULL
 +hidraw_get_report_45609 hidraw_get_report 3 45609 NULL
++ip_dst_mtu_maybe_forward_45627 ip_dst_mtu_maybe_forward 0 45627 NULL
 +compat_mpctl_ioctl_45671 compat_mpctl_ioctl 2 45671 NULL
 +dgram_sendmsg_45679 dgram_sendmsg 4 45679 NULL
 +smk_write_ambient_45691 smk_write_ambient 3 45691 NULL
 +bscnl_emit_45699 bscnl_emit 2-5-0 45699 NULL nohasharray
 +unix_dgram_sendmsg_45699 unix_dgram_sendmsg 4 45699 &bscnl_emit_45699
 +sg_proc_write_adio_45704 sg_proc_write_adio 3 45704 NULL
++wlcore_smart_config_decode_event_45714 wlcore_smart_config_decode_event 2-4 45714 NULL
 +snd_cs46xx_io_read_45734 snd_cs46xx_io_read 5 45734 NULL
 +rw_copy_check_uvector_45748 rw_copy_check_uvector 3-0 45748 NULL nohasharray
 +v4l2_ctrl_new_std_45748 v4l2_ctrl_new_std 5 45748 &rw_copy_check_uvector_45748
@@ -119046,7 +121378,6 @@ index 0000000..386792a
 +ll_max_readahead_mb_seq_write_45815 ll_max_readahead_mb_seq_write 3 45815 NULL
 +memcg_update_cache_size_45828 memcg_update_cache_size 2 45828 NULL
 +ipv6_recv_rxpmtu_45830 ipv6_recv_rxpmtu 3 45830 NULL
-+insert_state_45848 insert_state 0 45848 NULL
 +x509_process_extension_45854 x509_process_extension 5 45854 NULL
 +efx_tx_queue_insert_45859 efx_tx_queue_insert 2 45859 NULL
 +isdn_write_45863 isdn_write 3 45863 NULL
@@ -119060,14 +121391,13 @@ index 0000000..386792a
 +copy_to_45969 copy_to 3 45969 NULL
 +rb_simple_read_45972 rb_simple_read 3 45972 NULL
 +ioat2_dca_count_dca_slots_45984 ioat2_dca_count_dca_slots 0 45984 NULL
-+kobject_init_and_add_46003 kobject_init_and_add 0 46003 NULL
 +sierra_setup_urb_46029 sierra_setup_urb 5 46029 NULL
-+get_free_entries_46030 get_free_entries 1 46030 NULL nohasharray
-+fnic_reset_stats_read_46030 fnic_reset_stats_read 3 46030 &get_free_entries_46030
++fnic_reset_stats_read_46030 fnic_reset_stats_read 3 46030 NULL nohasharray
++get_free_entries_46030 get_free_entries 1 46030 &fnic_reset_stats_read_46030
 +__access_remote_vm_46031 __access_remote_vm 0 46031 NULL
 +snd_emu10k1x_ptr_read_46049 snd_emu10k1x_ptr_read 0 46049 NULL
-+__ocfs2_move_extent_46060 __ocfs2_move_extent 3-4 46060 NULL nohasharray
-+dma_tx_errors_read_46060 dma_tx_errors_read 3 46060 &__ocfs2_move_extent_46060
++dma_tx_errors_read_46060 dma_tx_errors_read 3 46060 NULL nohasharray
++__ocfs2_move_extent_46060 __ocfs2_move_extent 3-4 46060 &dma_tx_errors_read_46060
 +sel_commit_bools_write_46077 sel_commit_bools_write 3 46077 NULL
 +memcg_update_array_size_46111 memcg_update_array_size 1 46111 NULL nohasharray
 +il3945_ucode_general_stats_read_46111 il3945_ucode_general_stats_read 3 46111 &memcg_update_array_size_46111
@@ -119088,23 +121418,26 @@ index 0000000..386792a
 +mpi_read_raw_data_46248 mpi_read_raw_data 2 46248 NULL
 +sg_proc_write_dressz_46316 sg_proc_write_dressz 3 46316 NULL
 +C_SYSC_ppoll_46319 C_SYSC_ppoll 2 46319 NULL
-+compat_SyS_readv_46328 compat_SyS_readv 3 46328 NULL nohasharray
-+__hwahc_dev_set_key_46328 __hwahc_dev_set_key 5 46328 &compat_SyS_readv_46328
++__hwahc_dev_set_key_46328 __hwahc_dev_set_key 5 46328 NULL nohasharray
++compat_SyS_readv_46328 compat_SyS_readv 3 46328 &__hwahc_dev_set_key_46328
 +iwl_dbgfs_chain_noise_read_46355 iwl_dbgfs_chain_noise_read 3 46355 NULL
 +smk_write_direct_46363 smk_write_direct 3 46363 NULL
-+fuse_file_aio_write_46399 fuse_file_aio_write 4 46399 NULL
 +crypto_ablkcipher_reqsize_46411 crypto_ablkcipher_reqsize 0 46411 NULL
 +ttm_page_pool_get_pages_46431 ttm_page_pool_get_pages 0-5 46431 NULL
 +cfs_power2_roundup_46433 cfs_power2_roundup 0-1 46433 NULL
++wdata_alloc_and_fillpages_46437 wdata_alloc_and_fillpages 1 46437 NULL
 +cp210x_set_config_46447 cp210x_set_config 4 46447 NULL
++parport_pc_fifo_write_block_46455 parport_pc_fifo_write_block 3 46455 NULL
 +il_dbgfs_clear_traffic_stats_write_46458 il_dbgfs_clear_traffic_stats_write 3 46458 NULL
 +filldir64_46469 filldir64 3 46469 NULL
 +fill_in_write_vector_46498 fill_in_write_vector 0 46498 NULL
 +pin_code_reply_46510 pin_code_reply 4 46510 NULL
 +mthca_alloc_cq_buf_46512 mthca_alloc_cq_buf 3 46512 NULL
-+nouveau_drm_ioctl_46514 nouveau_drm_ioctl 2 46514 NULL nohasharray
-+kmsg_read_46514 kmsg_read 3 46514 &nouveau_drm_ioctl_46514
++kmsg_read_46514 kmsg_read 3 46514 NULL nohasharray
++nouveau_drm_ioctl_46514 nouveau_drm_ioctl 2 46514 &kmsg_read_46514
++nlm_end_grace_write_46517 nlm_end_grace_write 3 46517 NULL
 +nl80211_send_rx_assoc_46538 nl80211_send_rx_assoc 4 46538 NULL
++__btrfs_free_extent_46573 __btrfs_free_extent 7 46573 NULL
 +dn_current_mss_46574 dn_current_mss 0 46574 NULL
 +serverworks_create_gatt_pages_46582 serverworks_create_gatt_pages 1 46582 NULL
 +snd_compr_write_data_46592 snd_compr_write_data 3 46592 NULL
@@ -119122,11 +121455,12 @@ index 0000000..386792a
 +wl1271_rx_filter_alloc_field_46721 wl1271_rx_filter_alloc_field 5 46721 NULL
 +irq_domain_add_simple_46734 irq_domain_add_simple 2 46734 NULL
 +read_file_tx99_46741 read_file_tx99 3 46741 NULL
++ext4_count_free_46754 ext4_count_free 2 46754 NULL
 +hest_ghes_dev_register_46766 hest_ghes_dev_register 1 46766 NULL
 +int_hw_irq_en_46776 int_hw_irq_en 3 46776 NULL
-+_xfs_buf_get_pages_46811 _xfs_buf_get_pages 2 46811 NULL
 +xfs_iroot_realloc_46826 xfs_iroot_realloc 2 46826 NULL
 +shmem_pwrite_fast_46842 shmem_pwrite_fast 3 46842 NULL
++readreg_46845 readreg 0 46845 NULL
 +spi_async_46857 spi_async 0 46857 NULL
 +vsnprintf_46863 vsnprintf 0 46863 NULL
 +nvme_alloc_queue_46865 nvme_alloc_queue 3 46865 NULL
@@ -119134,8 +121468,9 @@ index 0000000..386792a
 +lov_iocontrol_46876 lov_iocontrol 3 46876 NULL
 +ixgbe_dbg_reg_ops_write_46895 ixgbe_dbg_reg_ops_write 3 46895 NULL
 +sk_mem_pages_46896 sk_mem_pages 0-1 46896 NULL
++alloc_cmdid_46904 alloc_cmdid 0 46904 NULL
 +ieee80211_if_fmt_power_mode_46906 ieee80211_if_fmt_power_mode 3 46906 NULL
-+wlcore_alloc_hw_46917 wlcore_alloc_hw 3-1 46917 NULL
++wlcore_alloc_hw_46917 wlcore_alloc_hw 1-3 46917 NULL
 +fb_write_46924 fb_write 3 46924 NULL
 +__sctp_setsockopt_connectx_46949 __sctp_setsockopt_connectx 3 46949 NULL
 +qla4xxx_post_aen_work_46953 qla4xxx_post_aen_work 3 46953 NULL
@@ -119149,7 +121484,6 @@ index 0000000..386792a
 +cx231xx_init_bulk_47024 cx231xx_init_bulk 3-2-4 47024 NULL
 +fs_path_len_47060 fs_path_len 0 47060 NULL
 +event_trigger_regex_write_47067 event_trigger_regex_write 3 47067 NULL
-+ext4_xattr_list_entries_47070 ext4_xattr_list_entries 0 47070 NULL
 +pipeline_dec_packet_in_read_47076 pipeline_dec_packet_in_read 3 47076 NULL
 +scsi_deactivate_tcq_47086 scsi_deactivate_tcq 2 47086 NULL
 +iwl_dump_nic_event_log_47089 iwl_dump_nic_event_log 0 47089 NULL
@@ -119160,7 +121494,6 @@ index 0000000..386792a
 +ses_recv_diag_47143 ses_recv_diag 4 47143 &acpi_ut_initialize_buffer_47143
 +mxms_headerlen_47161 mxms_headerlen 0 47161 NULL
 +rs_sta_dbgfs_rate_scale_data_read_47165 rs_sta_dbgfs_rate_scale_data_read 3 47165 NULL
-+rts51x_ms_rw_47171 rts51x_ms_rw 3-4 47171 NULL
 +options_write_47243 options_write 3 47243 NULL
 +portcntrs_1_read_47253 portcntrs_1_read 3 47253 NULL
 +ablkcipher_next_slow_47274 ablkcipher_next_slow 4-3 47274 NULL
@@ -119168,8 +121501,10 @@ index 0000000..386792a
 +vsnprintf_47291 vsnprintf 0 47291 NULL
 +SYSC_semop_47292 SYSC_semop 3 47292 NULL
 +tx_internal_desc_overflow_read_47300 tx_internal_desc_overflow_read 3 47300 NULL
++virtqueue_add_47306 virtqueue_add 3 47306 NULL
 +nouveau_fb_create__47316 nouveau_fb_create_ 4 47316 NULL
 +ieee80211_if_read_dot11MeshHoldingTimeout_47356 ieee80211_if_read_dot11MeshHoldingTimeout 3 47356 NULL
++nvme_submit_admin_cmd_47357 nvme_submit_admin_cmd 0 47357 NULL
 +avc_get_hash_stats_47359 avc_get_hash_stats 0 47359 NULL
 +kvm_arch_create_memslot_47364 kvm_arch_create_memslot 3 47364 NULL nohasharray
 +__output_copy_user_47364 __output_copy_user 3 47364 &kvm_arch_create_memslot_47364
@@ -119184,6 +121519,7 @@ index 0000000..386792a
 +crypto_ablkcipher_alignmask_47410 crypto_ablkcipher_alignmask 0 47410 NULL
 +lbs_wrrf_write_47418 lbs_wrrf_write 3 47418 NULL
 +C_SYSC_set_mempolicy_47466 C_SYSC_set_mempolicy 3 47466 NULL
++lprocfs_fid_write_common_47471 lprocfs_fid_write_common 2 47471 NULL
 +nvme_trans_send_fw_cmd_47479 nvme_trans_send_fw_cmd 4 47479 NULL
 +newpart_47485 newpart 6-4 47485 NULL
 +mcp23s17_read_regs_47491 mcp23s17_read_regs 4 47491 NULL
@@ -119192,12 +121528,12 @@ index 0000000..386792a
 +alloc_arraycache_47505 alloc_arraycache 2 47505 NULL
 +unlink_simple_47506 unlink_simple 3 47506 NULL
 +pstore_decompress_47510 pstore_decompress 0 47510 NULL
++ec_i2c_count_response_47518 ec_i2c_count_response 0 47518 NULL
 +__proc_lnet_portal_rotor_47529 __proc_lnet_portal_rotor 5 47529 NULL
-+snd_pcm_resume_47530 snd_pcm_resume 0 47530 NULL
 +process_vm_rw_47533 process_vm_rw 3-5 47533 NULL nohasharray
 +vscnprintf_47533 vscnprintf 0-2 47533 &process_vm_rw_47533
 +ieee80211_if_fmt_min_discovery_timeout_47539 ieee80211_if_fmt_min_discovery_timeout 3 47539 NULL
-+rtw_cfg80211_set_assoc_resp_wpsp2pie_47558 rtw_cfg80211_set_assoc_resp_wpsp2pie 3 47558 NULL
++drbg_statelen_47551 drbg_statelen 0 47551 NULL
 +read_ldt_47570 read_ldt 2 47570 NULL
 +isku_sysfs_read_last_set_47572 isku_sysfs_read_last_set 6 47572 NULL
 +btrfs_stack_header_bytenr_47589 btrfs_stack_header_bytenr 0 47589 NULL
@@ -119207,7 +121543,7 @@ index 0000000..386792a
 +twl4030_clear_set_47624 twl4030_clear_set 4 47624 NULL
 +ccp_sha_setkey_47633 ccp_sha_setkey 3 47633 NULL
 +get_size_47644 get_size 1-2 47644 NULL
-+snd_pcm_info_47699 snd_pcm_info 0 47699 NULL
++osc_brw_prep_request_47680 osc_brw_prep_request 5 47680 NULL
 +packet_recvmsg_47700 packet_recvmsg 4 47700 NULL nohasharray
 +ipath_format_hwmsg_47700 ipath_format_hwmsg 2 47700 &packet_recvmsg_47700
 +save_microcode_47717 save_microcode 3 47717 NULL
@@ -119219,13 +121555,15 @@ index 0000000..386792a
 +uwb_ie_dump_hex_47774 uwb_ie_dump_hex 4 47774 NULL
 +SyS_setgroups16_47780 SyS_setgroups16 1 47780 NULL
 +error_error_numll_frame_cts_start_read_47781 error_error_numll_frame_cts_start_read 3 47781 NULL
++ptlrpc_prep_req_47792 ptlrpc_prep_req 4 47792 NULL
 +posix_acl_fix_xattr_from_user_47793 posix_acl_fix_xattr_from_user 2 47793 NULL
++W6692_empty_Bfifo_47804 W6692_empty_Bfifo 2 47804 NULL
 +lov_packmd_47810 lov_packmd 0 47810 NULL
 +tree_mod_log_insert_move_47823 tree_mod_log_insert_move 5 47823 NULL
++read_file_spectral_bins_47829 read_file_spectral_bins 3 47829 NULL
 +pinconf_dbg_config_write_47835 pinconf_dbg_config_write 3 47835 NULL
 +KEY_SIZE_47855 KEY_SIZE 0 47855 NULL
 +vhci_read_47878 vhci_read 3 47878 NULL
-+ubi_wl_put_peb_47886 ubi_wl_put_peb 0 47886 NULL
 +keyctl_instantiate_key_common_47889 keyctl_instantiate_key_common 4 47889 NULL
 +cfs_percpt_alloc_47918 cfs_percpt_alloc 2 47918 NULL
 +comedi_write_47926 comedi_write 3 47926 NULL
@@ -119236,7 +121574,7 @@ index 0000000..386792a
 +iwl_dbgfs_ucode_tracing_read_47983 iwl_dbgfs_ucode_tracing_read 3 47983 &mempool_resize_47983
 +dbg_port_buf_47990 dbg_port_buf 2 47990 NULL
 +ib_umad_write_47993 ib_umad_write 3 47993 NULL
-+lustre_cfg_len_48002 lustre_cfg_len 0 48002 NULL
++lustre_cfg_len_48002 lustre_cfg_len 0-1 48002 NULL
 +gdm_tty_recv_complete_48011 gdm_tty_recv_complete 2 48011 NULL
 +bio_integrity_set_tag_48035 bio_integrity_set_tag 3 48035 NULL
 +pppoe_sendmsg_48039 pppoe_sendmsg 4 48039 NULL
@@ -119248,6 +121586,7 @@ index 0000000..386792a
 +mmc_alloc_host_48097 mmc_alloc_host 1 48097 NULL
 +skb_copy_datagram_const_iovec_48102 skb_copy_datagram_const_iovec 4-2-5 48102 NULL
 +wm_latency_write_48125 wm_latency_write 3 48125 NULL
++load_firmware_48128 load_firmware 2 48128 NULL
 +vmw_framebuffer_surface_dirty_48132 vmw_framebuffer_surface_dirty 6 48132 NULL
 +set_discoverable_48141 set_discoverable 4 48141 NULL
 +dn_fib_count_nhs_48145 dn_fib_count_nhs 0 48145 NULL
@@ -119260,7 +121599,6 @@ index 0000000..386792a
 +cfg80211_process_deauth_48200 cfg80211_process_deauth 3 48200 NULL
 +ext4_index_trans_blocks_48205 ext4_index_trans_blocks 0-2 48205 NULL
 +snd_seq_dump_var_event_48209 snd_seq_dump_var_event 0 48209 NULL
-+ll_direct_IO_26_48216 ll_direct_IO_26 4 48216 NULL
 +uv_blade_nr_possible_cpus_48226 uv_blade_nr_possible_cpus 0 48226 NULL
 +nilfs_readpages_48229 nilfs_readpages 4 48229 NULL
 +read_file_recv_48232 read_file_recv 3 48232 NULL
@@ -119268,25 +121606,29 @@ index 0000000..386792a
 +nouveau_i2c_port_create__48240 nouveau_i2c_port_create_ 7 48240 NULL
 +nfsctl_transaction_read_48250 nfsctl_transaction_read 3 48250 NULL
 +batadv_socket_read_48257 batadv_socket_read 3 48257 NULL
++__videobuf_free_48260 __videobuf_free 0 48260 NULL
 +cache_write_pipefs_48270 cache_write_pipefs 3 48270 NULL
 +trace_options_write_48275 trace_options_write 3 48275 NULL
 +send_set_info_48288 send_set_info 7 48288 NULL
 +lpfc_idiag_extacc_read_48301 lpfc_idiag_extacc_read 3 48301 NULL
 +timblogiw_read_48305 timblogiw_read 3 48305 NULL
 +hash_setkey_48310 hash_setkey 3 48310 NULL
++kvm_mmu_pte_write_48340 kvm_mmu_pte_write 2 48340 NULL
 +skb_add_data_48363 skb_add_data 3 48363 NULL
 +tx_frag_init_called_read_48377 tx_frag_init_called_read 3 48377 NULL
++ath10k_read_htt_max_amsdu_ampdu_48401 ath10k_read_htt_max_amsdu_ampdu 3 48401 NULL
 +lbs_debugfs_write_48413 lbs_debugfs_write 3 48413 NULL
 +uhid_event_from_user_48417 uhid_event_from_user 2 48417 NULL
 +div64_u64_rem_48418 div64_u64_rem 0-1-2 48418 NULL
-+snd_power_wait_48422 snd_power_wait 0 48422 NULL
 +pwr_tx_without_ps_read_48423 pwr_tx_without_ps_read 3 48423 NULL
 +print_filtered_48442 print_filtered 2-0 48442 NULL
 +tun_recvmsg_48463 tun_recvmsg 4 48463 NULL
++copy_page_from_iter_iovec_48466 copy_page_from_iter_iovec 3-0 48466 NULL
 +compat_SyS_preadv64_48469 compat_SyS_preadv64 3 48469 NULL
 +_iwl_dbgfs_bt_tx_prio_write_48473 _iwl_dbgfs_bt_tx_prio_write 3 48473 NULL
 +ipath_format_hwerrors_48487 ipath_format_hwerrors 5 48487 NULL
 +r8712_usbctrl_vendorreq_48489 r8712_usbctrl_vendorreq 6 48489 NULL
++ocfs2_refcount_cow_48495 ocfs2_refcount_cow 3 48495 NULL
 +send_control_msg_48498 send_control_msg 6 48498 NULL
 +count_masked_bytes_48507 count_masked_bytes 0-1 48507 NULL
 +diva_os_copy_to_user_48508 diva_os_copy_to_user 4 48508 NULL
@@ -119294,14 +121636,14 @@ index 0000000..386792a
 +phantom_get_free_48514 phantom_get_free 0 48514 NULL
 +drbd_bm_capacity_48530 drbd_bm_capacity 0 48530 NULL
 +raid10_size_48571 raid10_size 0-2-3 48571 NULL
++nvif_notify_init_48578 nvif_notify_init 7 48578 NULL
 +llog_data_len_48607 llog_data_len 1 48607 NULL
 +do_ip_vs_set_ctl_48641 do_ip_vs_set_ctl 4 48641 NULL
++kernel_sock_ioctl_48644 kernel_sock_ioctl 0 48644 NULL
 +ll_rw_extents_stats_pp_seq_write_48651 ll_rw_extents_stats_pp_seq_write 3 48651 NULL
 +mtd_read_48655 mtd_read 0 48655 NULL
 +aes_encrypt_packets_read_48666 aes_encrypt_packets_read 3 48666 NULL
 +sm501_create_subdev_48668 sm501_create_subdev 3-4 48668 NULL
-+ubi_eba_unmap_leb_48671 ubi_eba_unmap_leb 0 48671 NULL
-+security_inode_setattr_48689 security_inode_setattr 0 48689 NULL
 +hysdn_log_write_48694 hysdn_log_write 3 48694 NULL
 +altera_drscan_48698 altera_drscan 2 48698 NULL
 +kvm_set_irq_routing_48704 kvm_set_irq_routing 3 48704 NULL
@@ -119310,7 +121652,6 @@ index 0000000..386792a
 +ath6kl_usb_bmi_read_48745 ath6kl_usb_bmi_read 3 48745 NULL
 +ath6kl_regwrite_read_48747 ath6kl_regwrite_read 3 48747 NULL
 +l2cap_segment_sdu_48772 l2cap_segment_sdu 4 48772 NULL
-+gfs2_direct_IO_48774 gfs2_direct_IO 4 48774 NULL
 +il3945_sta_dbgfs_stats_table_read_48802 il3945_sta_dbgfs_stats_table_read 3 48802 NULL
 +twa_change_queue_depth_48808 twa_change_queue_depth 2 48808 NULL
 +atomic_counters_read_48827 atomic_counters_read 3 48827 NULL
@@ -119318,19 +121659,19 @@ index 0000000..386792a
 +vc_do_resize_48842 vc_do_resize 3-4 48842 NULL
 +comedi_buf_write_alloc_48846 comedi_buf_write_alloc 0-2 48846 NULL
 +suspend_dtim_interval_write_48854 suspend_dtim_interval_write 3 48854 NULL
-+C_SYSC_pwritev64_48864 C_SYSC_pwritev64 3 48864 NULL nohasharray
-+viafb_dvp1_proc_write_48864 viafb_dvp1_proc_write 3 48864 &C_SYSC_pwritev64_48864
++viafb_dvp1_proc_write_48864 viafb_dvp1_proc_write 3 48864 NULL nohasharray
++C_SYSC_pwritev64_48864 C_SYSC_pwritev64 3 48864 &viafb_dvp1_proc_write_48864
 +__ffs_ep0_read_events_48868 __ffs_ep0_read_events 3 48868 NULL
 +crypto_cipher_ctxsize_48890 crypto_cipher_ctxsize 0 48890 NULL
 +joydev_handle_JSIOCSAXMAP_48898 joydev_handle_JSIOCSAXMAP 3 48898 NULL
 +xdi_copy_to_user_48900 xdi_copy_to_user 4 48900 NULL
 +msg_hdr_sz_48908 msg_hdr_sz 0 48908 NULL
-+snd_pcm_update_hw_ptr_48925 snd_pcm_update_hw_ptr 0 48925 NULL
 +sep_crypto_dma_48937 sep_crypto_dma 0 48937 NULL
 +si5351_write_parameters_48940 si5351_write_parameters 2 48940 NULL
 +event_heart_beat_read_48961 event_heart_beat_read 3 48961 NULL
 +nand_ecc_test_run_48966 nand_ecc_test_run 1 48966 NULL
 +vmci_handle_arr_create_48971 vmci_handle_arr_create 1 48971 NULL
++nilfs_direct_IO_48981 nilfs_direct_IO 4 48981 NULL
 +rds_rm_size_48996 rds_rm_size 0-2 48996 NULL
 +sel_write_enforce_48998 sel_write_enforce 3 48998 NULL
 +null_alloc_rs_49019 null_alloc_rs 2 49019 NULL
@@ -119375,6 +121716,7 @@ index 0000000..386792a
 +__hfsplus_getxattr_49460 __hfsplus_getxattr 0 49460 NULL
 +agp_3_5_isochronous_node_enable_49465 agp_3_5_isochronous_node_enable 3 49465 NULL
 +xfs_iformat_local_49472 xfs_iformat_local 4 49472 NULL
++tipc_bclink_get_mtu_49483 tipc_bclink_get_mtu 0 49483 NULL
 +isr_decrypt_done_read_49490 isr_decrypt_done_read 3 49490 NULL
 +iwl_dbgfs_disable_power_off_read_49517 iwl_dbgfs_disable_power_off_read 3 49517 NULL
 +SyS_listxattr_49519 SyS_listxattr 3 49519 NULL
@@ -119382,7 +121724,7 @@ index 0000000..386792a
 +smk_write_access_49561 smk_write_access 3 49561 NULL
 +alloc_chunk_49575 alloc_chunk 1 49575 NULL
 +sctp_setsockopt_default_send_param_49578 sctp_setsockopt_default_send_param 3 49578 NULL
-+evm_inode_setattr_49594 evm_inode_setattr 0 49594 NULL
++readfifo_49583 readfifo 1 49583 NULL
 +tap_write_49595 tap_write 3 49595 NULL
 +isr_wakeups_read_49607 isr_wakeups_read 3 49607 NULL
 +btrfs_mksubvol_49616 btrfs_mksubvol 3 49616 NULL
@@ -119392,28 +121734,31 @@ index 0000000..386792a
 +btrfsic_cmp_log_and_dev_bytenr_49628 btrfsic_cmp_log_and_dev_bytenr 2 49628 NULL
 +aa_simple_write_to_buffer_49683 aa_simple_write_to_buffer 3-4 49683 NULL
 +SyS_pwritev_49688 SyS_pwritev 3 49688 NULL
-+__setup_irq_49696 __setup_irq 0 49696 NULL
 +__copy_from_user_nocheck_49699 __copy_from_user_nocheck 0-3 49699 NULL
 +cx2341x_ctrl_new_menu_49700 cx2341x_ctrl_new_menu 3 49700 NULL
 +write_pool_49718 write_pool 3 49718 NULL
-+kvm_mmu_notifier_invalidate_page_49723 kvm_mmu_notifier_invalidate_page 3 49723 NULL
++kvm_mmu_notifier_invalidate_page_49723 kvm_mmu_notifier_invalidate_page 3 49723 NULL nohasharray
++sfw_create_test_rpc_49723 sfw_create_test_rpc 4 49723 &kvm_mmu_notifier_invalidate_page_49723
 +sep_create_dcb_dmatables_context_kernel_49728 sep_create_dcb_dmatables_context_kernel 6 49728 NULL
 +zd_usb_iowrite16v_49744 zd_usb_iowrite16v 3 49744 NULL
 +btrfs_chunk_num_stripes_49751 btrfs_chunk_num_stripes 0 49751 NULL
-+fuse_wr_pages_49753 fuse_wr_pages 0-2-1 49753 NULL
++fuse_wr_pages_49753 fuse_wr_pages 0-1-2 49753 NULL
 +key_conf_keylen_read_49758 key_conf_keylen_read 3 49758 NULL
 +fuse_conn_waiting_read_49762 fuse_conn_waiting_read 3 49762 NULL
++w83977af_fir_interrupt_49775 w83977af_fir_interrupt 0 49775 NULL
 +ceph_osdc_readpages_49789 ceph_osdc_readpages 0 49789 NULL
 +nfs4_acl_new_49806 nfs4_acl_new 1 49806 NULL
 +__of_parse_phandle_with_args_49807 __of_parse_phandle_with_args 0 49807 NULL
-+ntfs_copy_from_user_iovec_49829 ntfs_copy_from_user_iovec 6-3-0 49829 NULL
++ntfs_copy_from_user_iovec_49829 ntfs_copy_from_user_iovec 3-6-0 49829 NULL
 +add_uuid_49831 add_uuid 4 49831 NULL
++iraw_loop_49842 iraw_loop 0-1 49842 NULL
 +twl4030_write_49846 twl4030_write 2 49846 NULL
 +scsi_dispatch_cmd_entry_49848 scsi_dispatch_cmd_entry 3 49848 NULL
 +timeradd_entry_49850 timeradd_entry 3 49850 NULL
 +fiemap_count_to_size_49869 fiemap_count_to_size 0-1 49869 NULL
 +sctp_setsockopt_bindx_49870 sctp_setsockopt_bindx 3 49870 NULL
 +osc_brw_49896 osc_brw 4 49896 NULL
++fuse_send_write_49915 fuse_send_write 4-0 49915 NULL
 +ieee80211_if_fmt_dtim_count_49987 ieee80211_if_fmt_dtim_count 3 49987 NULL
 +drm_buffer_copy_from_user_49990 drm_buffer_copy_from_user 3 49990 NULL
 +l2cap_chan_send_49995 l2cap_chan_send 3 49995 NULL
@@ -119421,6 +121766,7 @@ index 0000000..386792a
 +security_context_to_sid_50019 security_context_to_sid 2 50019 NULL
 +isdn_read_50021 isdn_read 3 50021 NULL
 +mdc_rename_pack_50023 mdc_rename_pack 4-6 50023 NULL
++xlog_recovery_process_trans_50028 xlog_recovery_process_trans 4 50028 NULL
 +brcmf_debugfs_chipinfo_read_50033 brcmf_debugfs_chipinfo_read 3 50033 NULL
 +ioread8_50049 ioread8 0 50049 NULL
 +fuse_conn_max_background_write_50061 fuse_conn_max_background_write 3 50061 NULL
@@ -119432,7 +121778,6 @@ index 0000000..386792a
 +android_set_cntry_50100 android_set_cntry 0 50100 NULL
 +read_file_slot_50111 read_file_slot 3 50111 NULL
 +rx_streaming_interval_write_50120 rx_streaming_interval_write 3 50120 NULL
-+jfs_direct_IO_50125 jfs_direct_IO 4 50125 NULL
 +SYSC_preadv_50134 SYSC_preadv 3 50134 NULL
 +tx_frag_need_fragmentation_read_50153 tx_frag_need_fragmentation_read 3 50153 NULL
 +kmalloc_node_50163 kmalloc_node 1 50163 NULL
@@ -119473,8 +121818,8 @@ index 0000000..386792a
 +mei_io_cb_alloc_req_buf_50493 mei_io_cb_alloc_req_buf 2 50493 NULL
 +pwr_rcvd_awake_beacons_read_50505 pwr_rcvd_awake_beacons_read 3 50505 NULL
 +ath6kl_set_ap_probe_resp_ies_50539 ath6kl_set_ap_probe_resp_ies 3 50539 NULL
++trigger_request_store_50548 trigger_request_store 4 50548 NULL
 +usbat_flash_write_data_50553 usbat_flash_write_data 4 50553 NULL
-+self_check_peb_vid_hdr_50563 self_check_peb_vid_hdr 0 50563 NULL
 +fat_readpages_50582 fat_readpages 4 50582 NULL
 +iwl_dbgfs_missed_beacon_read_50584 iwl_dbgfs_missed_beacon_read 3 50584 NULL
 +xillybus_write_50605 xillybus_write 3 50605 NULL
@@ -119490,8 +121835,6 @@ index 0000000..386792a
 +__ext3_get_inode_loc_50744 __ext3_get_inode_loc 0 50744 NULL
 +ocfs2_xattr_block_get_50773 ocfs2_xattr_block_get 0 50773 NULL
 +tm6000_read_write_usb_50774 tm6000_read_write_usb 7 50774 NULL
-+bio_alloc_map_data_50782 bio_alloc_map_data 2 50782 NULL
-+ixgbe_acquire_msix_vectors_50789 ixgbe_acquire_msix_vectors 2 50789 NULL
 +tpm_write_50798 tpm_write 3 50798 NULL
 +tun_do_read_50800 tun_do_read 4 50800 NULL
 +write_flush_50803 write_flush 3 50803 NULL
@@ -119499,8 +121842,8 @@ index 0000000..386792a
 +btrfs_stack_file_extent_disk_num_bytes_50825 btrfs_stack_file_extent_disk_num_bytes 0 50825 NULL
 +dpcm_show_state_50827 dpcm_show_state 0 50827 NULL
 +SetArea_50835 SetArea 4 50835 NULL
++nft_trans_alloc_50836 nft_trans_alloc 3 50836 NULL
 +videobuf_dma_init_user_50839 videobuf_dma_init_user 4-3 50839 NULL
-+self_check_write_50856 self_check_write 0 50856 NULL
 +carl9170_debugfs_write_50857 carl9170_debugfs_write 3 50857 NULL
 +SyS_lgetxattr_50889 SyS_lgetxattr 4 50889 NULL
 +netlbl_secattr_catmap_walk_rng_50894 netlbl_secattr_catmap_walk_rng 0-2 50894 NULL
@@ -119527,13 +121870,15 @@ index 0000000..386792a
 +srpt_alloc_ioctx_51042 srpt_alloc_ioctx 2-3 51042 NULL
 +do_arpt_set_ctl_51053 do_arpt_set_ctl 4 51053 NULL
 +wusb_prf_64_51065 wusb_prf_64 7 51065 NULL
++rsc_mgr_init_51067 rsc_mgr_init 3 51067 NULL
 +jbd2_journal_init_revoke_51088 jbd2_journal_init_revoke 2 51088 NULL
++__ipv4_tun_to_nlattr_51095 __ipv4_tun_to_nlattr 4 51095 NULL
 +__ocfs2_find_path_51096 __ocfs2_find_path 0 51096 NULL
 +ti_recv_51110 ti_recv 3 51110 NULL
 +alloc_rtllib_51136 alloc_rtllib 1 51136 NULL
 +simple_xattr_set_51140 simple_xattr_set 4 51140 NULL
 +xfs_trans_get_efd_51148 xfs_trans_get_efd 3 51148 NULL
-+snd_pcm_unlink_51210 snd_pcm_unlink 0 51210 NULL
++i40evf_acquire_msix_vectors_51190 i40evf_acquire_msix_vectors 2 51190 NULL
 +iwl_dbgfs_bcast_filters_macs_read_51231 iwl_dbgfs_bcast_filters_macs_read 3 51231 NULL
 +nf_ct_ext_create_51232 nf_ct_ext_create 3 51232 NULL
 +snd_pcm_write_51235 snd_pcm_write 3 51235 NULL
@@ -119548,6 +121893,7 @@ index 0000000..386792a
 +init_map_ipmac_51317 init_map_ipmac 5 51317 NULL
 +alloc_hippi_dev_51320 alloc_hippi_dev 1 51320 NULL
 +ext2_xattr_get_51327 ext2_xattr_get 0 51327 NULL
++smk_write_ptrace_51333 smk_write_ptrace 3 51333 NULL
 +alloc_smp_req_51337 alloc_smp_req 1 51337 NULL
 +ipw_get_event_log_len_51341 ipw_get_event_log_len 0 51341 NULL
 +ieee80211_if_fmt_estab_plinks_51370 ieee80211_if_fmt_estab_plinks 3 51370 NULL
@@ -119560,6 +121906,7 @@ index 0000000..386792a
 +vmxnet3_acquire_msix_vectors_51462 vmxnet3_acquire_msix_vectors 2 51462 NULL
 +____alloc_ei_netdev_51475 ____alloc_ei_netdev 1 51475 NULL
 +xfs_buf_get_uncached_51477 xfs_buf_get_uncached 2 51477 NULL
++osc_brw_internal_51489 osc_brw_internal 5 51489 NULL
 +kvm_fetch_guest_virt_51493 kvm_fetch_guest_virt 4-2 51493 NULL
 +ieee80211_if_write_uapsd_queues_51526 ieee80211_if_write_uapsd_queues 3 51526 NULL
 +__alloc_eip_netdev_51549 __alloc_eip_netdev 1 51549 NULL
@@ -119579,6 +121926,7 @@ index 0000000..386792a
 +v9fs_alloc_rdir_buf_51716 v9fs_alloc_rdir_buf 2 51716 NULL
 +drm_compat_ioctl_51717 drm_compat_ioctl 2 51717 NULL
 +sg_read_oxfer_51724 sg_read_oxfer 3 51724 NULL
++str_read_51731 str_read 4 51731 NULL
 +cm4040_read_51732 cm4040_read 3 51732 NULL
 +get_user_pages_fast_51751 get_user_pages_fast 0 51751 NULL
 +ifx_spi_insert_flip_string_51752 ifx_spi_insert_flip_string 3 51752 NULL
@@ -119601,12 +121949,12 @@ index 0000000..386792a
 +__tcp_mtu_to_mss_51938 __tcp_mtu_to_mss 0-2 51938 NULL
 +xfrm_alg_len_51940 xfrm_alg_len 0 51940 NULL
 +scsi_get_vpd_page_51951 scsi_get_vpd_page 4 51951 NULL
++get_clock_info_51952 get_clock_info 4 51952 NULL
 +snd_mask_min_51969 snd_mask_min 0 51969 NULL
-+__blkdev_get_51972 __blkdev_get 0 51972 NULL
 +get_zone_51981 get_zone 0-1 51981 NULL
 +ath6kl_sdio_alloc_prep_scat_req_51986 ath6kl_sdio_alloc_prep_scat_req 2 51986 NULL
++_c4iw_write_mem_dma_51991 _c4iw_write_mem_dma 3 51991 NULL
 +dwc3_mode_write_51997 dwc3_mode_write 3 51997 NULL
-+scsi_sysfs_add_host_52010 scsi_sysfs_add_host 0 52010 NULL
 +skb_copy_datagram_from_iovec_52014 skb_copy_datagram_from_iovec 4-2-5 52014 NULL
 +rdmalt_52022 rdmalt 0 52022 NULL
 +override_release_52032 override_release 2 52032 NULL
@@ -119618,25 +121966,27 @@ index 0000000..386792a
 +isofs_readpages_52067 isofs_readpages 4 52067 NULL
 +mxuport_process_read_urb_data_52072 mxuport_process_read_urb_data 3 52072 NULL
 +nsm_get_handle_52089 nsm_get_handle 4 52089 NULL
-+ulist_add_merge_52096 ulist_add_merge 0 52096 NULL
 +o2net_debug_read_52105 o2net_debug_read 3 52105 NULL
++smsdvb_stats_read_52114 smsdvb_stats_read 3 52114 NULL
 +split_scan_timeout_write_52128 split_scan_timeout_write 3 52128 NULL
 +retry_count_read_52129 retry_count_read 3 52129 NULL
-+snd_pcm_channel_info_user_52135 snd_pcm_channel_info_user 0 52135 NULL
 +gdm_usb_hci_send_52138 gdm_usb_hci_send 3 52138 NULL
 +sub_alloc_52140 sub_alloc 0 52140 NULL
 +hysdn_conf_write_52145 hysdn_conf_write 3 52145 NULL
 +htable_size_52148 htable_size 0-1 52148 NULL
 +smk_write_load2_52155 smk_write_load2 3 52155 NULL
++tipc_node_get_mtu_52157 tipc_node_get_mtu 0 52157 NULL
 +ieee80211_if_read_dot11MeshRetryTimeout_52168 ieee80211_if_read_dot11MeshRetryTimeout 3 52168 NULL
 +mga_compat_ioctl_52170 mga_compat_ioctl 2 52170 NULL
 +print_prefix_52176 print_prefix 0 52176 NULL
 +proc_pid_readlink_52186 proc_pid_readlink 3 52186 NULL
 +reiserfs_posix_acl_from_disk_52191 reiserfs_posix_acl_from_disk 2 52191 NULL
++f2fs_seek_block_52194 f2fs_seek_block 2 52194 NULL
 +vmci_qp_broker_alloc_52216 vmci_qp_broker_alloc 6-5 52216 NULL
 +fuse_request_alloc_52243 fuse_request_alloc 1 52243 NULL
 +mdiobus_alloc_size_52259 mdiobus_alloc_size 1 52259 NULL
 +shrink_slab_52261 shrink_slab 2 52261 NULL
++ext2_direct_IO_52270 ext2_direct_IO 4 52270 NULL
 +sisusbcon_do_font_op_52271 sisusbcon_do_font_op 9 52271 NULL
 +handle_supp_msgs_52284 handle_supp_msgs 4 52284 NULL
 +kobject_set_name_vargs_52309 kobject_set_name_vargs 0 52309 NULL
@@ -119644,11 +121994,9 @@ index 0000000..386792a
 +ssd1307fb_write_52315 ssd1307fb_write 3 52315 NULL
 +request_asymmetric_key_52317 request_asymmetric_key 2-4 52317 NULL
 +hwflags_read_52318 hwflags_read 3 52318 NULL
-+snd_pcm_hw_free_52327 snd_pcm_hw_free 0 52327 NULL
 +test_unaligned_bulk_52333 test_unaligned_bulk 3 52333 NULL
 +hur_len_52339 hur_len 0 52339 NULL
-+bytes_to_frames_52362 bytes_to_frames 0-2 52362 NULL nohasharray
-+cap_inode_killpriv_52362 cap_inode_killpriv 0 52362 &bytes_to_frames_52362
++bytes_to_frames_52362 bytes_to_frames 0-2 52362 NULL
 +copy_entries_to_user_52367 copy_entries_to_user 1 52367 NULL
 +iwl_dump_fh_52371 iwl_dump_fh 0 52371 NULL
 +hfsplus_find_attr_52374 hfsplus_find_attr 0 52374 NULL
@@ -119662,6 +122010,7 @@ index 0000000..386792a
 +ath6kl_delete_qos_write_52435 ath6kl_delete_qos_write 3 52435 NULL
 +ieee80211_if_fmt_num_sta_ps_52438 ieee80211_if_fmt_num_sta_ps 3 52438 NULL
 +alauda_read_data_52452 alauda_read_data 3 52452 NULL
++bt_alloc_52457 bt_alloc 2 52457 NULL
 +ieee80211_alloc_txb_52477 ieee80211_alloc_txb 1 52477 NULL
 +usb_tranzport_write_52479 usb_tranzport_write 3 52479 NULL
 +ocfs2_extend_no_holes_52483 ocfs2_extend_no_holes 3-4 52483 NULL
@@ -119676,7 +122025,6 @@ index 0000000..386792a
 +dccpprobe_read_52549 dccpprobe_read 3 52549 NULL
 +debug_level_proc_write_52572 debug_level_proc_write 3 52572 NULL
 +isku_sysfs_read_macro_52587 isku_sysfs_read_macro 6 52587 NULL
-+snd_pcm_sw_params_52594 snd_pcm_sw_params 0 52594 NULL
 +SyS_setsockopt_52610 SyS_setsockopt 5 52610 NULL
 +ll_sa_entry_alloc_52611 ll_sa_entry_alloc 4 52611 NULL
 +tps80031_writes_52638 tps80031_writes 3-4 52638 NULL
@@ -119689,9 +122037,11 @@ index 0000000..386792a
 +cx25840_ir_rx_read_52724 cx25840_ir_rx_read 3 52724 NULL
 +blkcipher_next_slow_52733 blkcipher_next_slow 3-4 52733 NULL
 +relay_alloc_page_array_52735 relay_alloc_page_array 1 52735 NULL
++hfcsusb_rx_frame_52745 hfcsusb_rx_frame 3 52745 NULL
 +carl9170_debugfs_vif_dump_read_52755 carl9170_debugfs_vif_dump_read 3 52755 NULL
 +ieee80211_if_read_beacon_timeout_52756 ieee80211_if_read_beacon_timeout 3 52756 NULL
 +nvme_trans_ext_inq_page_52776 nvme_trans_ext_inq_page 3 52776 NULL
++xenvif_write_io_ring_52802 xenvif_write_io_ring 3 52802 NULL
 +pwr_rcvd_beacons_read_52836 pwr_rcvd_beacons_read 3 52836 NULL
 +lb_alloc_ep_req_52837 lb_alloc_ep_req 2 52837 NULL
 +mon_bin_get_event_52863 mon_bin_get_event 4-6 52863 NULL
@@ -119701,9 +122051,11 @@ index 0000000..386792a
 +pvr2_ctrl_value_to_sym_internal_52881 pvr2_ctrl_value_to_sym_internal 5 52881 NULL
 +cache_read_procfs_52882 cache_read_procfs 3 52882 NULL
 +kvm_kvzalloc_52894 kvm_kvzalloc 1 52894 NULL
++copy_from_iter_bvec_52912 copy_from_iter_bvec 0-2 52912 NULL
 +dio_bio_reap_52913 dio_bio_reap 0 52913 NULL
 +__kfifo_out_peek_r_52919 __kfifo_out_peek_r 3 52919 NULL
 +iblock_get_bio_52936 iblock_get_bio 3 52936 NULL
++__nodes_remap_52951 __nodes_remap 5 52951 NULL
 +ieee80211_if_fmt_fwded_mcast_52961 ieee80211_if_fmt_fwded_mcast 3 52961 NULL
 +tx_tx_exch_read_52986 tx_tx_exch_read 3 52986 NULL
 +num_node_state_52989 num_node_state 0 52989 NULL
@@ -119711,16 +122063,18 @@ index 0000000..386792a
 +btrfs_free_and_pin_reserved_extent_53016 btrfs_free_and_pin_reserved_extent 2 53016 NULL
 +tx_tx_exch_pending_read_53018 tx_tx_exch_pending_read 3 53018 NULL
 +bio_cur_bytes_53037 bio_cur_bytes 0 53037 NULL
++nv50_chan_create_53039 nv50_chan_create 5 53039 NULL
 +regcache_lzo_block_count_53056 regcache_lzo_block_count 0 53056 NULL
++fimc_get_alpha_mask_53057 fimc_get_alpha_mask 0 53057 NULL
 +cfi_read_query_53066 cfi_read_query 0 53066 NULL
 +iwl_dbgfs_interrupt_write_53069 iwl_dbgfs_interrupt_write 3 53069 NULL
 +mwifiex_debug_read_53074 mwifiex_debug_read 3 53074 NULL
-+vmci_check_host_caps_53087 vmci_check_host_caps 0 53087 NULL
 +mic_virtio_copy_from_user_53107 mic_virtio_copy_from_user 3 53107 NULL
++ath10k_mac_create_53118 ath10k_mac_create 1 53118 NULL
 +verity_status_53120 verity_status 5 53120 NULL
 +brcmf_usb_dl_cmd_53130 brcmf_usb_dl_cmd 4 53130 NULL
-+ps_poll_ps_poll_max_ap_turn_read_53140 ps_poll_ps_poll_max_ap_turn_read 3 53140 NULL nohasharray
-+inode_newsize_ok_53140 inode_newsize_ok 0 53140 &ps_poll_ps_poll_max_ap_turn_read_53140
++ps_poll_ps_poll_max_ap_turn_read_53140 ps_poll_ps_poll_max_ap_turn_read 3 53140 NULL
++copy_user_segment_list_53150 copy_user_segment_list 2 53150 NULL
 +ieee80211_bss_info_update_53170 ieee80211_bss_info_update 4 53170 NULL
 +btrfs_io_bio_alloc_53179 btrfs_io_bio_alloc 2 53179 NULL
 +clear_capture_buf_53192 clear_capture_buf 2 53192 NULL
@@ -119729,12 +122083,14 @@ index 0000000..386792a
 +xfs_trans_read_buf_map_53258 xfs_trans_read_buf_map 5 53258 NULL
 +wil_write_file_ssid_53266 wil_write_file_ssid 3 53266 NULL
 +btrfs_file_extent_num_bytes_53269 btrfs_file_extent_num_bytes 0 53269 NULL
++f2fs_fiemap_53310 f2fs_fiemap 4 53310 NULL
 +ftrace_profile_write_53327 ftrace_profile_write 3 53327 NULL
 +find_nr_power_limit_53330 find_nr_power_limit 0 53330 NULL
 +gsm_control_reply_53333 gsm_control_reply 4 53333 NULL
 +btree_keys_bytes_53348 btree_keys_bytes 0 53348 NULL
 +sock_setbindtodevice_53369 sock_setbindtodevice 3 53369 NULL
 +get_random_bytes_arch_53370 get_random_bytes_arch 2 53370 NULL
++test_fw_misc_read_53384 test_fw_misc_read 3 53384 NULL
 +isr_cmd_cmplt_read_53439 isr_cmd_cmplt_read 3 53439 NULL
 +mwifiex_info_read_53447 mwifiex_info_read 3 53447 NULL
 +apei_exec_run_optional_53452 apei_exec_run_optional 0 53452 NULL
@@ -119746,26 +122102,25 @@ index 0000000..386792a
 +do_verify_xattr_datum_53499 do_verify_xattr_datum 0 53499 NULL
 +snd_pcm_format_physical_width_53505 snd_pcm_format_physical_width 0 53505 NULL
 +dbAllocNext_53506 dbAllocNext 0 53506 NULL
-+force_sc_support_write_53512 force_sc_support_write 3 53512 NULL nohasharray
-+check_acl_53512 check_acl 0 53512 &force_sc_support_write_53512
++check_acl_53512 check_acl 0 53512 NULL nohasharray
++force_sc_support_write_53512 force_sc_support_write 3 53512 &check_acl_53512
 +nft_data_dump_53549 nft_data_dump 5 53549 NULL
 +SYSC_bind_53582 SYSC_bind 3 53582 NULL
 +cifs_utf16_bytes_53593 cifs_utf16_bytes 0 53593 NULL
 +proc_uid_map_write_53596 proc_uid_map_write 3 53596 NULL
 +pfkey_recvmsg_53604 pfkey_recvmsg 4 53604 NULL
-+___alloc_bootmem_nopanic_53626 ___alloc_bootmem_nopanic 1 53626 NULL
-+xd_write_multiple_pages_53633 xd_write_multiple_pages 6-5 53633 NULL
++___alloc_bootmem_nopanic_53626 ___alloc_bootmem_nopanic 1 53626 NULL nohasharray
++wil_write_file_txmgmt_53626 wil_write_file_txmgmt 3 53626 &___alloc_bootmem_nopanic_53626
 +ccid_getsockopt_builtin_ccids_53634 ccid_getsockopt_builtin_ccids 2 53634 NULL
 +nr_sendmsg_53656 nr_sendmsg 4 53656 NULL
-+fuse_fill_write_pages_53682 fuse_fill_write_pages 4-0 53682 NULL
++fuse_fill_write_pages_53682 fuse_fill_write_pages 0-4 53682 NULL
 +v4l2_event_subscribe_53687 v4l2_event_subscribe 3 53687 NULL
 +bdev_logical_block_size_53690 bdev_logical_block_size 0 53690 NULL nohasharray
 +igb_alloc_q_vector_53690 igb_alloc_q_vector 4-6 53690 &bdev_logical_block_size_53690
 +find_overflow_devnum_53711 find_overflow_devnum 0 53711 NULL
 +__proc_debug_mb_53732 __proc_debug_mb 5 53732 NULL
 +wdm_write_53735 wdm_write 3 53735 NULL
-+lpfc_idiag_queacc_read_qe_53755 lpfc_idiag_queacc_read_qe 0-2 53755 NULL nohasharray
-+amdtp_out_stream_get_max_payload_53755 amdtp_out_stream_get_max_payload 0 53755 &lpfc_idiag_queacc_read_qe_53755
++lpfc_idiag_queacc_read_qe_53755 lpfc_idiag_queacc_read_qe 0-2 53755 NULL
 +wa_populate_buf_in_urb_53758 wa_populate_buf_in_urb 3-4 53758 NULL
 +ext2_acl_count_53773 ext2_acl_count 0-1 53773 NULL
 +__kfifo_dma_in_prepare_r_53792 __kfifo_dma_in_prepare_r 4-5 53792 NULL
@@ -119774,7 +122129,8 @@ index 0000000..386792a
 +lpfc_idiag_ctlacc_read_reg_53809 lpfc_idiag_ctlacc_read_reg 0-3 53809 NULL
 +nls_nullsize_53815 nls_nullsize 0 53815 NULL
 +setup_data_read_53822 setup_data_read 3 53822 NULL
-+pms_read_53873 pms_read 3 53873 NULL
++btrfs_free_reserved_extent_53873 btrfs_free_reserved_extent 2 53873 NULL nohasharray
++pms_read_53873 pms_read 3 53873 &btrfs_free_reserved_extent_53873
 +ieee80211_if_fmt_dropped_frames_congestion_53883 ieee80211_if_fmt_dropped_frames_congestion 3 53883 NULL
 +SyS_setgroups_53900 SyS_setgroups 1 53900 NULL
 +batadv_tt_tvlv_ogm_handler_v1_53909 batadv_tt_tvlv_ogm_handler_v1 5 53909 NULL
@@ -119791,9 +122147,9 @@ index 0000000..386792a
 +pipeline_dec_packet_out_read_54052 pipeline_dec_packet_out_read 3 54052 NULL
 +nl80211_send_disconnected_54056 nl80211_send_disconnected 5 54056 NULL
 +rproc_state_read_54057 rproc_state_read 3 54057 NULL
-+_malloc_54077 _malloc 1 54077 NULL
-+lustre_posix_acl_xattr_filter_54103 lustre_posix_acl_xattr_filter 2 54103 NULL nohasharray
-+altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 &lustre_posix_acl_xattr_filter_54103
++bitmap_bitremap_54096 bitmap_bitremap 4 54096 NULL
++altera_set_ir_pre_54103 altera_set_ir_pre 2 54103 NULL nohasharray
++lustre_posix_acl_xattr_filter_54103 lustre_posix_acl_xattr_filter 2 54103 &altera_set_ir_pre_54103
 +__comedi_buf_write_alloc_54112 __comedi_buf_write_alloc 0-2 54112 NULL
 +strn_len_54122 strn_len 0 54122 NULL
 +isku_receive_54130 isku_receive 4 54130 NULL
@@ -119807,33 +122163,37 @@ index 0000000..386792a
 +pi_read_regr_54231 pi_read_regr 0 54231 NULL
 +mcp23s08_read_regs_54246 mcp23s08_read_regs 4 54246 NULL
 +reada_add_block_54247 reada_add_block 2 54247 NULL
++write_file_spec_scan_ctl_54248 write_file_spec_scan_ctl 3 54248 NULL
 +xfs_dir2_sf_addname_hard_54254 xfs_dir2_sf_addname_hard 3 54254 NULL
 +ceph_msgpool_get_54258 ceph_msgpool_get 2 54258 NULL
 +audio_write_54261 audio_write 4 54261 NULL nohasharray
 +wusb_prf_54261 wusb_prf 7 54261 &audio_write_54261
 +mwifiex_getlog_read_54269 mwifiex_getlog_read 3 54269 NULL
 +kstrtou16_from_user_54274 kstrtou16_from_user 2 54274 NULL
++sizeof_long_54276 sizeof_long 0 54276 NULL
 +altera_set_dr_post_54291 altera_set_dr_post 2 54291 NULL
 +dlm_alloc_pagevec_54296 dlm_alloc_pagevec 1 54296 NULL
 +reclaim_pages_54301 reclaim_pages 3 54301 NULL
 +sprintf_54306 sprintf 0 54306 NULL
++path_setxattr_54308 path_setxattr 4 54308 NULL
 +bio_add_pc_page_54319 bio_add_pc_page 4 54319 NULL
 +br_fdb_fillbuf_54339 br_fdb_fillbuf 0 54339 NULL
 +__alloc_dev_table_54343 __alloc_dev_table 2 54343 NULL
 +__get_free_pages_54352 __get_free_pages 0 54352 NULL
 +readlink_copy_54366 readlink_copy 2 54366 NULL
 +read_file_credit_dist_stats_54367 read_file_credit_dist_stats 3 54367 NULL
-+do_dccp_setsockopt_54377 do_dccp_setsockopt 5 54377 NULL nohasharray
-+intel_sdvo_write_cmd_54377 intel_sdvo_write_cmd 4 54377 &do_dccp_setsockopt_54377
++intel_sdvo_write_cmd_54377 intel_sdvo_write_cmd 4 54377 NULL nohasharray
++do_dccp_setsockopt_54377 do_dccp_setsockopt 5 54377 &intel_sdvo_write_cmd_54377
 +ah_alloc_tmp_54378 ah_alloc_tmp 3-2 54378 NULL
 +snd_pcm_oss_read2_54387 snd_pcm_oss_read2 0-3 54387 NULL
-+iwl_dbgfs_power_save_status_read_54392 iwl_dbgfs_power_save_status_read 3 54392 NULL
++iwl_dbgfs_power_save_status_read_54392 iwl_dbgfs_power_save_status_read 3 54392 NULL nohasharray
++hash_mac4_expire_54392 hash_mac4_expire 4 54392 &iwl_dbgfs_power_save_status_read_54392
 +ll_ra_count_get_54410 ll_ra_count_get 3 54410 NULL
 +copy_gadget_strings_54417 copy_gadget_strings 2-3 54417 NULL
 +sparse_early_mem_maps_alloc_node_54485 sparse_early_mem_maps_alloc_node 4 54485 NULL
 +simple_strtoull_54493 simple_strtoull 0 54493 NULL
++l2cap_create_basic_pdu_54508 l2cap_create_basic_pdu 3 54508 NULL
 +btrfs_ordered_sum_size_54509 btrfs_ordered_sum_size 0-2 54509 NULL
-+sst_byt_get_dsp_position_54513 sst_byt_get_dsp_position 0-3 54513 NULL
 +rfc4106_set_key_54519 rfc4106_set_key 3 54519 NULL
 +vmci_transport_dgram_enqueue_54525 vmci_transport_dgram_enqueue 4 54525 NULL
 +viacam_read_54526 viacam_read 3 54526 NULL
@@ -119850,12 +122210,13 @@ index 0000000..386792a
 +irq_timeout_read_54653 irq_timeout_read 3 54653 NULL
 +dns_resolver_read_54658 dns_resolver_read 3 54658 NULL
 +twl6030_interrupt_mask_54659 twl6030_interrupt_mask 2 54659 NULL
++simple_alloc_urb_54661 simple_alloc_urb 3 54661 NULL
 +tdp_page_fault_54663 tdp_page_fault 2 54663 NULL
 +bus_add_device_54665 bus_add_device 0 54665 NULL
 +cw1200_queue_stats_init_54670 cw1200_queue_stats_init 2 54670 NULL
 +bio_kmalloc_54672 bio_kmalloc 2 54672 NULL
 +evm_read_key_54674 evm_read_key 3 54674 NULL
-+__btrfs_inc_extent_ref_54706 __btrfs_inc_extent_ref 7 54706 NULL
++jfs_direct_IO_54687 jfs_direct_IO 4 54687 NULL
 +rfkill_fop_read_54711 rfkill_fop_read 3 54711 NULL
 +ocfs2_control_write_54737 ocfs2_control_write 3 54737 NULL
 +kzalloc_54740 kzalloc 1 54740 NULL
@@ -119868,16 +122229,15 @@ index 0000000..386792a
 +flexcop_device_kmalloc_54793 flexcop_device_kmalloc 1 54793 NULL
 +nfsd_write_54809 nfsd_write 6 54809 NULL
 +ar9287_dump_modal_eeprom_54814 ar9287_dump_modal_eeprom 3-2 54814 NULL
-+crypto_tfm_ctx_alignment_54815 crypto_tfm_ctx_alignment 0 54815 NULL nohasharray
-+kvzalloc_54815 kvzalloc 1 54815 &crypto_tfm_ctx_alignment_54815 nohasharray
-+aes_decrypt_fail_read_54815 aes_decrypt_fail_read 3 54815 &kvzalloc_54815
-+generic_perform_write_54832 generic_perform_write 3-0 54832 NULL
++kvzalloc_54815 kvzalloc 1 54815 NULL nohasharray
++crypto_tfm_ctx_alignment_54815 crypto_tfm_ctx_alignment 0 54815 &kvzalloc_54815 nohasharray
++aes_decrypt_fail_read_54815 aes_decrypt_fail_read 3 54815 &crypto_tfm_ctx_alignment_54815
++generic_perform_write_54832 generic_perform_write 3 54832 NULL
 +write_rio_54837 write_rio 3 54837 NULL
 +ext3_acl_from_disk_54839 ext3_acl_from_disk 2 54839 NULL nohasharray
 +nouveau_engctx_create__54839 nouveau_engctx_create_ 8 54839 &ext3_acl_from_disk_54839
 +ufx_ops_write_54848 ufx_ops_write 3 54848 NULL
 +printer_read_54851 printer_read 3 54851 NULL
-+assign_irq_vector_54852 assign_irq_vector 0 54852 NULL
 +broadsheet_spiflash_rewrite_sector_54864 broadsheet_spiflash_rewrite_sector 2 54864 NULL
 +prism_build_supp_rates_54865 prism_build_supp_rates 0 54865 NULL
 +iscsi_pool_init_54913 iscsi_pool_init 2-4 54913 NULL nohasharray
@@ -119893,9 +122253,10 @@ index 0000000..386792a
 +ext3_xattr_get_54989 ext3_xattr_get 0 54989 NULL
 +cx231xx_v4l2_read_55014 cx231xx_v4l2_read 3 55014 NULL
 +error_error_null_Frame_tx_start_read_55024 error_error_null_Frame_tx_start_read 3 55024 NULL
++efw_transaction_55052 efw_transaction 5-7 55052 NULL
 +apei_exec_run_55075 apei_exec_run 0 55075 NULL
 +bitmap_storage_alloc_55077 bitmap_storage_alloc 2 55077 NULL
-+snd_pcm_capture_hw_avail_55086 snd_pcm_capture_hw_avail 0 55086 NULL
++read_dma_55086 read_dma 3 55086 NULL
 +rxpipe_beacon_buffer_thres_host_int_trig_rx_data_read_55106 rxpipe_beacon_buffer_thres_host_int_trig_rx_data_read 3 55106 NULL
 +crypto_ahash_setkey_55134 crypto_ahash_setkey 3 55134 NULL
 +filldir_55137 filldir 3 55137 NULL
@@ -119907,6 +122268,7 @@ index 0000000..386792a
 +sched_feat_write_55202 sched_feat_write 3 55202 NULL
 +ht40allow_map_read_55209 ht40allow_map_read 3 55209 NULL
 +__kfifo_dma_out_prepare_r_55211 __kfifo_dma_out_prepare_r 4-5 55211 NULL
++mlx4_load_one_55213 mlx4_load_one 3 55213 NULL
 +do_raw_setsockopt_55215 do_raw_setsockopt 5 55215 NULL
 +qxl_alloc_client_monitors_config_55216 qxl_alloc_client_monitors_config 2 55216 NULL
 +nouveau_mc_create__55217 nouveau_mc_create_ 4 55217 NULL
@@ -119917,6 +122279,7 @@ index 0000000..386792a
 +rx_streaming_interval_read_55291 rx_streaming_interval_read 3 55291 NULL
 +lov_get_stripecnt_55297 lov_get_stripecnt 0-3 55297 NULL
 +gsm_control_modem_55303 gsm_control_modem 3 55303 NULL
++wimax_msg_len_55304 wimax_msg_len 0 55304 NULL
 +qp_alloc_guest_work_55305 qp_alloc_guest_work 5-3 55305 NULL nohasharray
 +compat_SyS_process_vm_readv_55305 compat_SyS_process_vm_readv 3-5 55305 &qp_alloc_guest_work_55305
 +compat_SyS_mbind_55329 compat_SyS_mbind 5 55329 NULL
@@ -119929,6 +122292,7 @@ index 0000000..386792a
 +si476x_radio_read_rds_blckcnt_blob_55427 si476x_radio_read_rds_blckcnt_blob 3 55427 NULL
 +__vxge_hw_channel_allocate_55462 __vxge_hw_channel_allocate 3 55462 NULL
 +cx23888_ir_rx_read_55473 cx23888_ir_rx_read 3 55473 NULL
++ufshcd_exec_dev_cmd_55479 ufshcd_exec_dev_cmd 0 55479 NULL
 +snd_pcm_lib_write_55483 snd_pcm_lib_write 0-3 55483 NULL
 +i2o_pool_alloc_55485 i2o_pool_alloc 4 55485 NULL
 +batadv_tt_entries_55487 batadv_tt_entries 0-1 55487 NULL
@@ -119955,16 +122319,17 @@ index 0000000..386792a
 +il_dbgfs_tx_queue_read_55668 il_dbgfs_tx_queue_read 3 55668 NULL
 +get_info_55681 get_info 3 55681 NULL
 +iwl_dbgfs_plcp_delta_write_55682 iwl_dbgfs_plcp_delta_write 3 55682 NULL
++ext4_alloc_file_blocks_55689 ext4_alloc_file_blocks 3 55689 NULL
 +genl_allocate_reserve_groups_55705 genl_allocate_reserve_groups 1 55705 NULL
 +pm8001_store_update_fw_55716 pm8001_store_update_fw 4 55716 NULL
 +tap_pwup_write_55723 tap_pwup_write 3 55723 NULL
 +__iio_allocate_kfifo_55738 __iio_allocate_kfifo 2 55738 NULL
 +set_local_name_55757 set_local_name 4 55757 NULL
-+strlen_55778 strlen 0 55778 NULL nohasharray
-+is_idx_node_in_tnc_55778 is_idx_node_in_tnc 0 55778 &strlen_55778
-+set_spte_55783 set_spte 5-4 55783 NULL
-+req_bio_endio_55786 req_bio_endio 3 55786 NULL nohasharray
-+conf_read_55786 conf_read 3 55786 &req_bio_endio_55786
++ethtool_copy_validate_indir_55769 ethtool_copy_validate_indir 4 55769 NULL
++strlen_55778 strlen 0 55778 NULL
++set_spte_55783 set_spte 4-5 55783 NULL
++conf_read_55786 conf_read 3 55786 NULL nohasharray
++req_bio_endio_55786 req_bio_endio 3 55786 &conf_read_55786
 +uwb_rc_neh_grok_event_55799 uwb_rc_neh_grok_event 3 55799 NULL
 +sb16_copy_from_user_55836 sb16_copy_from_user 10-6-7 55836 NULL
 +ip_hdrlen_55849 ip_hdrlen 0 55849 NULL
@@ -119975,26 +122340,25 @@ index 0000000..386792a
 +pm_qos_power_read_55891 pm_qos_power_read 3 55891 NULL
 +hash_ip4_expire_55911 hash_ip4_expire 4 55911 NULL
 +snd_pcm_hw_param_value_min_55917 snd_pcm_hw_param_value_min 0 55917 NULL
-+ext2_direct_IO_55932 ext2_direct_IO 4 55932 NULL
 +kvm_write_guest_virt_system_55944 kvm_write_guest_virt_system 4-2 55944 NULL
 +sel_read_policy_55947 sel_read_policy 3 55947 NULL
 +ceph_get_direct_page_vector_55956 ceph_get_direct_page_vector 2 55956 NULL
-+simple_read_from_buffer_55957 simple_read_from_buffer 2-5 55957 NULL
++simple_read_from_buffer_55957 simple_read_from_buffer 5-2-0 55957 NULL
 +tx_tx_imm_resp_read_55964 tx_tx_imm_resp_read 3 55964 NULL
-+btrfs_clone_55977 btrfs_clone 5-3 55977 NULL
++btrfs_clone_55977 btrfs_clone 5-3-6 55977 NULL
 +wa_xfer_create_subset_sg_55992 wa_xfer_create_subset_sg 3-2 55992 NULL
 +nvme_alloc_iod_56027 nvme_alloc_iod 1-2 56027 NULL
-+rtl8169_init_ring_56028 rtl8169_init_ring 0 56028 NULL
-+usb_ocp_write_56047 usb_ocp_write 4 56047 NULL
++iwl_trans_read_prph_56052 iwl_trans_read_prph 0 56052 NULL
 +dccp_sendmsg_56058 dccp_sendmsg 4 56058 NULL
 +pscsi_get_bio_56103 pscsi_get_bio 1 56103 NULL
 +usb_alloc_stream_buffers_56123 usb_alloc_stream_buffers 3 56123 NULL
 +sel_read_handle_status_56139 sel_read_handle_status 3 56139 NULL
 +write_file_frameerrors_56145 write_file_frameerrors 3 56145 NULL
 +rawv6_setsockopt_56165 rawv6_setsockopt 5 56165 NULL
-+ath9k_dump_legacy_btcoex_56194 ath9k_dump_legacy_btcoex 3-0 56194 NULL
++ath9k_dump_legacy_btcoex_56194 ath9k_dump_legacy_btcoex 0-3 56194 NULL
 +vring_add_indirect_56222 vring_add_indirect 4 56222 NULL
 +ocfs2_find_xe_in_bucket_56224 ocfs2_find_xe_in_bucket 0 56224 NULL
++ufshcd_query_descriptor_56236 ufshcd_query_descriptor 0 56236 NULL
 +do_ipt_set_ctl_56238 do_ipt_set_ctl 4 56238 NULL
 +fd_copyin_56247 fd_copyin 3 56247 NULL
 +sk_rmem_schedule_56255 sk_rmem_schedule 3 56255 NULL
@@ -120010,16 +122374,18 @@ index 0000000..386792a
 +snd_rawmidi_read_56337 snd_rawmidi_read 3 56337 NULL
 +vxge_os_dma_malloc_async_56348 vxge_os_dma_malloc_async 3 56348 NULL
 +mite_device_bytes_transferred_56355 mite_device_bytes_transferred 0 56355 NULL
-+iov_iter_copy_from_user_atomic_56368 iov_iter_copy_from_user_atomic 4-0 56368 NULL
++iov_iter_copy_from_user_atomic_56368 iov_iter_copy_from_user_atomic 0-4 56368 NULL
 +dev_read_56369 dev_read 3 56369 NULL
 +ath10k_read_simulate_fw_crash_56371 ath10k_read_simulate_fw_crash 3 56371 NULL
-+snd_pcm_common_ioctl1_56382 snd_pcm_common_ioctl1 0 56382 NULL
++lnet_ping_56378 lnet_ping 4 56378 NULL
 +write_gssp_56404 write_gssp 3 56404 NULL
 +ocfs2_control_read_56405 ocfs2_control_read 3 56405 NULL
 +store_msg_56417 store_msg 3 56417 NULL
 +pppol2tp_sendmsg_56420 pppol2tp_sendmsg 4 56420 NULL
-+l2cap_segment_le_sdu_56426 l2cap_segment_le_sdu 4 56426 NULL
-+ec_dbgfs_cmd_read_56431 ec_dbgfs_cmd_read 3 56431 NULL
++l2cap_segment_le_sdu_56426 l2cap_segment_le_sdu 4 56426 NULL nohasharray
++nvme_submit_cmd_56426 nvme_submit_cmd 0 56426 &l2cap_segment_le_sdu_56426
++lprocfs_fid_space_seq_write_56431 lprocfs_fid_space_seq_write 3 56431 NULL nohasharray
++ec_dbgfs_cmd_read_56431 ec_dbgfs_cmd_read 3 56431 &lprocfs_fid_space_seq_write_56431
 +fl_create_56435 fl_create 5 56435 NULL
 +gnttab_map_56439 gnttab_map 2 56439 NULL
 +cx231xx_init_isoc_56453 cx231xx_init_isoc 3-2-4 56453 NULL
@@ -120045,9 +122411,11 @@ index 0000000..386792a
 +gather_array_56641 gather_array 3 56641 NULL
 +lookup_extent_backref_56644 lookup_extent_backref 9 56644 NULL
 +uvc_debugfs_stats_read_56651 uvc_debugfs_stats_read 3 56651 NULL
++nv50_gpio_intr_mask_56665 nv50_gpio_intr_mask 4-3 56665 NULL
 +tg3_nvram_write_block_56666 tg3_nvram_write_block 3 56666 NULL
 +snd_gus_dram_read_56686 snd_gus_dram_read 4 56686 NULL
 +dvb_ringbuffer_read_user_56702 dvb_ringbuffer_read_user 3-0 56702 NULL
++sfw_alloc_pages_56709 sfw_alloc_pages 3 56709 NULL
 +sta_flags_read_56710 sta_flags_read 3 56710 NULL
 +ipv6_getsockopt_sticky_56711 ipv6_getsockopt_sticky 5 56711 NULL
 +__wa_xfer_setup_segs_56725 __wa_xfer_setup_segs 2 56725 NULL
@@ -120060,11 +122428,12 @@ index 0000000..386792a
 +mtdchar_write_56831 mtdchar_write 3 56831 NULL
 +snd_rawmidi_kernel_write1_56847 snd_rawmidi_kernel_write1 4-0 56847 NULL
 +si476x_radio_read_agc_blob_56849 si476x_radio_read_agc_blob 3 56849 NULL
++gk20a_ram_get_56863 gk20a_ram_get 2 56863 NULL
 +ext3_xattr_ibody_get_56880 ext3_xattr_ibody_get 0 56880 NULL
 +pvr2_debugifc_print_status_56890 pvr2_debugifc_print_status 3 56890 NULL
 +debug_debug3_read_56894 debug_debug3_read 3 56894 NULL
-+batadv_tt_update_changes_56895 batadv_tt_update_changes 3 56895 NULL nohasharray
-+le_auto_conn_write_56895 le_auto_conn_write 3 56895 &batadv_tt_update_changes_56895
++le_auto_conn_write_56895 le_auto_conn_write 3 56895 NULL nohasharray
++batadv_tt_update_changes_56895 batadv_tt_update_changes 3 56895 &le_auto_conn_write_56895
 +hfsplus_find_cat_56899 hfsplus_find_cat 0 56899 NULL
 +strcspn_56913 strcspn 0 56913 NULL
 +__kfifo_out_56927 __kfifo_out 0-3 56927 NULL
@@ -120085,7 +122454,6 @@ index 0000000..386792a
 +tracing_set_trace_write_57096 tracing_set_trace_write 3 57096 NULL
 +altera_get_note_57099 altera_get_note 6 57099 NULL
 +hpfs_readpages_57106 hpfs_readpages 4 57106 NULL
-+snd_pcm_hw_params_old_user_57108 snd_pcm_hw_params_old_user 0 57108 NULL
 +crypto_compress_ctxsize_57109 crypto_compress_ctxsize 0 57109 NULL
 +cipso_v4_gentag_loc_57119 cipso_v4_gentag_loc 0 57119 NULL
 +ima_show_htable_value_57136 ima_show_htable_value 2 57136 NULL nohasharray
@@ -120093,13 +122461,14 @@ index 0000000..386792a
 +nl80211_send_deauth_57136 nl80211_send_deauth 4 57136 &rds_ib_sub_signaled_57136
 +snd_sonicvibes_getdmac_57140 snd_sonicvibes_getdmac 0 57140 NULL
 +_iwl_dbgfs_bf_params_write_57141 _iwl_dbgfs_bf_params_write 3 57141 NULL
++acpi_gsb_i2c_read_bytes_57145 acpi_gsb_i2c_read_bytes 4 57145 NULL
 +udl_prime_create_57159 udl_prime_create 2 57159 NULL
 +stk_prepare_sio_buffers_57168 stk_prepare_sio_buffers 2 57168 NULL
 +rx_hw_stuck_read_57179 rx_hw_stuck_read 3 57179 NULL
 +hash_netnet6_expire_57191 hash_netnet6_expire 4 57191 NULL
 +tt3650_ci_msg_57219 tt3650_ci_msg 4 57219 NULL
 +dma_fifo_alloc_57236 dma_fifo_alloc 2-3-5 57236 NULL
-+flush_space_57241 flush_space 0 57241 NULL
++drbg_blocklen_57239 drbg_blocklen 0 57239 NULL
 +rsxx_cram_write_57244 rsxx_cram_write 3 57244 NULL
 +ieee80211_if_fmt_tsf_57249 ieee80211_if_fmt_tsf 3 57249 NULL
 +oprofilefs_ulong_from_user_57251 oprofilefs_ulong_from_user 3 57251 NULL
@@ -120107,6 +122476,7 @@ index 0000000..386792a
 +lbs_sleepparams_write_57283 lbs_sleepparams_write 3 57283 NULL
 +pstore_file_read_57288 pstore_file_read 3 57288 NULL
 +snd_pcm_read_57289 snd_pcm_read 3 57289 NULL
++string_length_no_trail_57290 string_length_no_trail 0-2 57290 NULL
 +ftdi_elan_write_57309 ftdi_elan_write 3 57309 NULL
 +write_file_regval_57313 write_file_regval 3 57313 NULL
 +__mxt_write_reg_57326 __mxt_write_reg 3 57326 NULL
@@ -120115,13 +122485,16 @@ index 0000000..386792a
 +dio_send_cur_page_57348 dio_send_cur_page 0 57348 NULL
 +tipc_bclink_stats_57372 tipc_bclink_stats 2 57372 NULL
 +tty_register_device_attr_57381 tty_register_device_attr 2 57381 NULL
++bzImage64_load_57388 bzImage64_load 7 57388 NULL
 +read_file_blob_57406 read_file_blob 3 57406 NULL
 +enclosure_register_57412 enclosure_register 3 57412 NULL
++read_file_eeprom_57428 read_file_eeprom 3 57428 NULL
 +compat_keyctl_instantiate_key_iov_57431 compat_keyctl_instantiate_key_iov 3 57431 NULL
 +copy_to_user_fromio_57432 copy_to_user_fromio 3 57432 NULL
 +__roundup_pow_of_two_57461 __roundup_pow_of_two 0 57461 NULL
 +sisusb_clear_vram_57466 sisusb_clear_vram 2-3 57466 NULL
 +ieee80211_if_read_flags_57470 ieee80211_if_read_flags 3 57470 NULL
++read_file_skb_rx_57490 read_file_skb_rx 3 57490 NULL
 +bnad_debugfs_write_regwr_57500 bnad_debugfs_write_regwr 3 57500 NULL
 +skb_headlen_57501 skb_headlen 0 57501 NULL
 +copy_in_user_57502 copy_in_user 3 57502 NULL
@@ -120134,33 +122507,30 @@ index 0000000..386792a
 +acpi_dev_get_resources_57534 acpi_dev_get_resources 0 57534 NULL
 +ptlrpc_lprocfs_hp_ratio_seq_write_57537 ptlrpc_lprocfs_hp_ratio_seq_write 3 57537 NULL
 +compat_SyS_process_vm_writev_57542 compat_SyS_process_vm_writev 3-5 57542 NULL
-+obd_unpackmd_57563 obd_unpackmd 0 57563 NULL
++ReadHDLCPnP_57559 ReadHDLCPnP 0 57559 NULL
 +snd_pcm_playback_ioctl1_57569 snd_pcm_playback_ioctl1 0 57569 NULL
 +get_bridge_ifindices_57579 get_bridge_ifindices 0 57579 NULL
 +ldlm_cli_enqueue_local_57582 ldlm_cli_enqueue_local 11 57582 NULL
 +il_dbgfs_interrupt_write_57591 il_dbgfs_interrupt_write 3 57591 NULL
 +read_file_spectral_fft_period_57593 read_file_spectral_fft_period 3 57593 NULL
++copy_to_iter_bvec_57604 copy_to_iter_bvec 0-2 57604 NULL
 +tx_tx_retry_template_read_57623 tx_tx_retry_template_read 3 57623 NULL
 +sisusbcon_putcs_57630 sisusbcon_putcs 3 57630 NULL
 +mem_read_57631 mem_read 3 57631 NULL
-+pci_enable_msi_block_57632 pci_enable_msi_block 0 57632 NULL
-+msi_compose_msg_57637 msi_compose_msg 0 57637 NULL
 +r3964_write_57662 r3964_write 4 57662 NULL
 +proc_ns_readlink_57664 proc_ns_readlink 3 57664 NULL
 +__lgwrite_57669 __lgwrite 4 57669 NULL
++f1x_match_to_this_node_57695 f1x_match_to_this_node 3 57695 NULL
 +i2400m_rx_stats_read_57706 i2400m_rx_stats_read 3 57706 NULL
 +ieee80211_if_read_dot11MeshHWMPconfirmationInterval_57722 ieee80211_if_read_dot11MeshHWMPconfirmationInterval 3 57722 NULL
-+vm_find_vqs_57729 vm_find_vqs 0 57729 NULL
-+nouveau_gpio_create__57735 nouveau_gpio_create_ 4-5 57735 NULL
 +pppol2tp_recvmsg_57742 pppol2tp_recvmsg 4 57742 NULL
 +ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval_57762 ieee80211_if_fmt_dot11MeshHWMPpreqMinInterval 3 57762 NULL
 +SYSC_process_vm_writev_57776 SYSC_process_vm_writev 3-5 57776 NULL
-+security_inode_unlink_57791 security_inode_unlink 0 57791 NULL
 +ld2_57794 ld2 0 57794 NULL
 +ivtv_read_57796 ivtv_read 3 57796 NULL
 +ion_test_ioctl_57799 ion_test_ioctl 2 57799 NULL
 +bfad_debugfs_read_regrd_57830 bfad_debugfs_read_regrd 3 57830 NULL
-+copy_to_user_57835 copy_to_user 0-3 57835 NULL
++copy_to_user_57835 copy_to_user 3-0 57835 NULL
 +flash_read_57843 flash_read 3 57843 NULL
 +kiblnd_create_tx_pool_57846 kiblnd_create_tx_pool 2 57846 NULL
 +radeon_ttm_gtt_read_57879 radeon_ttm_gtt_read 3 57879 NULL
@@ -120168,13 +122538,17 @@ index 0000000..386792a
 +iio_read_first_n_kfifo_57910 iio_read_first_n_kfifo 2 57910 NULL
 +ll_xattr_find_get_lock_57912 ll_xattr_find_get_lock 0 57912 NULL
 +memcg_caches_array_size_57918 memcg_caches_array_size 0-1 57918 NULL
++mwifiex_hscfg_read_57920 mwifiex_hscfg_read 3 57920 NULL
 +twl_i2c_write_57923 twl_i2c_write 3-4 57923 NULL
 +__snd_gf1_look16_57925 __snd_gf1_look16 0 57925 NULL
 +sel_read_handle_unknown_57933 sel_read_handle_unknown 3 57933 NULL
 +xfs_mru_cache_create_57943 xfs_mru_cache_create 3 57943 NULL
 +key_algorithm_read_57946 key_algorithm_read 3 57946 NULL
++arch_gnttab_init_57948 arch_gnttab_init 2-1 57948 NULL
 +ip_set_alloc_57953 ip_set_alloc 1 57953 NULL nohasharray
 +ioat3_dca_count_dca_slots_57953 ioat3_dca_count_dca_slots 0 57953 &ip_set_alloc_57953
++iov_iter_npages_57979 iov_iter_npages 0-2 57979 NULL
++do_rx_dma_57996 do_rx_dma 5 57996 NULL
 +rx_reset_counter_read_58001 rx_reset_counter_read 3 58001 NULL
 +iwl_dbgfs_ucode_rx_stats_read_58023 iwl_dbgfs_ucode_rx_stats_read 3 58023 NULL
 +io_playback_transfer_58030 io_playback_transfer 4 58030 NULL
@@ -120182,6 +122556,7 @@ index 0000000..386792a
 +ocfs2_find_leaf_58065 ocfs2_find_leaf 0 58065 NULL
 +dt3155_alloc_coherent_58073 dt3155_alloc_coherent 2 58073 NULL
 +cm4040_write_58079 cm4040_write 3 58079 NULL
++savemem_58129 savemem 3 58129 NULL
 +ipv6_flowlabel_opt_58135 ipv6_flowlabel_opt 3 58135 NULL nohasharray
 +slhc_init_58135 slhc_init 1-2 58135 &ipv6_flowlabel_opt_58135
 +garmin_write_bulk_58191 garmin_write_bulk 3 58191 NULL
@@ -120194,26 +122569,32 @@ index 0000000..386792a
 +profile_load_58267 profile_load 3 58267 NULL
 +kstrtos8_from_user_58268 kstrtos8_from_user 2 58268 NULL
 +acpi_ds_build_internal_package_obj_58271 acpi_ds_build_internal_package_obj 3 58271 NULL
++r100_mm_rreg_58276 r100_mm_rreg 0 58276 NULL
 +iscsi_decode_text_input_58292 iscsi_decode_text_input 4 58292 NULL
 +ieee80211_if_read_dot11MeshTTL_58307 ieee80211_if_read_dot11MeshTTL 3 58307 NULL
++mic_virtio_copy_from_user_58323 mic_virtio_copy_from_user 3 58323 NULL
 +tx_tx_start_int_templates_read_58324 tx_tx_start_int_templates_read 3 58324 NULL
++lstcon_rpc_prep_58325 lstcon_rpc_prep 4 58325 NULL
 +ext4_ext_truncate_extend_restart_58331 ext4_ext_truncate_extend_restart 3 58331 NULL
 +__copy_from_user_swizzled_58337 __copy_from_user_swizzled 2-4 58337 NULL
++ec_i2c_parse_response_58347 ec_i2c_parse_response 0 58347 NULL
 +brcmf_debugfs_sdio_counter_read_58369 brcmf_debugfs_sdio_counter_read 3 58369 NULL
 +il_dbgfs_status_read_58388 il_dbgfs_status_read 3 58388 NULL
 +_drbd_md_sync_page_io_58403 _drbd_md_sync_page_io 6 58403 NULL
-+idetape_pad_zeros_58406 idetape_pad_zeros 2 58406 NULL
++kvm_mmu_write_protect_pt_masked_58406 kvm_mmu_write_protect_pt_masked 3 58406 NULL nohasharray
++idetape_pad_zeros_58406 idetape_pad_zeros 2 58406 &kvm_mmu_write_protect_pt_masked_58406
 +i2400m_pld_size_58415 i2400m_pld_size 0 58415 NULL
 +capabilities_read_58457 capabilities_read 3 58457 NULL
 +usnic_vnic_get_resources_58462 usnic_vnic_get_resources 3 58462 NULL
 +compat_do_ipt_set_ctl_58466 compat_do_ipt_set_ctl 4 58466 NULL nohasharray
 +lpfc_idiag_baracc_read_58466 lpfc_idiag_baracc_read 3 58466 &compat_do_ipt_set_ctl_58466
 +nv_rd08_58472 nv_rd08 0 58472 NULL
-+acpi_tables_sysfs_init_58477 acpi_tables_sysfs_init 0 58477 NULL
 +snd_gf1_read_addr_58483 snd_gf1_read_addr 0 58483 NULL
 +snd_rme96_capture_copy_58484 snd_rme96_capture_copy 5 58484 NULL
-+btrfs_cont_expand_58498 btrfs_cont_expand 2-3-0 58498 NULL
++dw_spi_show_regs_58486 dw_spi_show_regs 3 58486 NULL
++btrfs_cont_expand_58498 btrfs_cont_expand 2-3 58498 NULL
 +tcf_hash_create_58507 tcf_hash_create 4 58507 NULL
++cifs_write_from_iter_58526 cifs_write_from_iter 2 58526 NULL
 +rndis_add_response_58544 rndis_add_response 2 58544 NULL
 +wep_decrypt_fail_read_58567 wep_decrypt_fail_read 3 58567 NULL
 +scnprint_mac_oui_58578 scnprint_mac_oui 3-0 58578 NULL
@@ -120224,14 +122605,14 @@ index 0000000..386792a
 +xip_file_read_58592 xip_file_read 3 58592 NULL
 +ecryptfs_write_end_58594 ecryptfs_write_end 5-3 58594 NULL
 +radeon_bo_size_58606 radeon_bo_size 0 58606 NULL
++btrfs_direct_IO_58608 btrfs_direct_IO 4 58608 NULL
 +skb_copy_to_page_nocache_58624 skb_copy_to_page_nocache 6 58624 NULL
-+filemap_fdatawrite_range_58630 filemap_fdatawrite_range 0 58630 NULL
 +tx_tx_start_fw_gen_read_58648 tx_tx_start_fw_gen_read 3 58648 NULL
 +iwl_dbgfs_rx_handlers_write_58655 iwl_dbgfs_rx_handlers_write 3 58655 NULL
 +find_zero_58685 find_zero 0-1 58685 NULL
 +uwb_bce_print_IEs_58686 uwb_bce_print_IEs 4 58686 NULL
 +tps6586x_writes_58689 tps6586x_writes 2-3 58689 NULL
-+scsi_setup_command_freelist_58703 scsi_setup_command_freelist 0 58703 NULL
++visor_charqueue_create_58703 visor_charqueue_create 1 58703 NULL
 +vx_send_msg_58711 vx_send_msg 0 58711 NULL
 +csum_exist_in_range_58730 csum_exist_in_range 2-3 58730 NULL
 +frames_to_bytes_58741 frames_to_bytes 0-2 58741 NULL
@@ -120258,8 +122639,7 @@ index 0000000..386792a
 +init_pci_cap_msi_perm_59033 init_pci_cap_msi_perm 2 59033 NULL
 +selinux_transaction_write_59038 selinux_transaction_write 3 59038 NULL
 +crypto_aead_reqsize_59039 crypto_aead_reqsize 0 59039 NULL
-+regmap_bulk_write_59049 regmap_bulk_write 2-4 59049 NULL nohasharray
-+i8042_enable_kbd_port_59049 i8042_enable_kbd_port 0 59049 &regmap_bulk_write_59049
++regmap_bulk_write_59049 regmap_bulk_write 2-4 59049 NULL
 +mmc_sd_num_wr_blocks_59112 mmc_sd_num_wr_blocks 0 59112 NULL
 +sta_tx_latency_stat_table_59122 sta_tx_latency_stat_table 0-4-5 59122 NULL nohasharray
 +scsi_io_completion_59122 scsi_io_completion 2 59122 &sta_tx_latency_stat_table_59122
@@ -120274,45 +122654,41 @@ index 0000000..386792a
 +xfs_iext_realloc_indirect_59211 xfs_iext_realloc_indirect 2 59211 NULL
 +check_mapped_selector_name_59216 check_mapped_selector_name 5 59216 NULL
 +dt3155_read_59226 dt3155_read 3 59226 NULL
-+paging64_gpte_to_gfn_lvl_59229 paging64_gpte_to_gfn_lvl 0-2-1 59229 NULL
++paging64_gpte_to_gfn_lvl_59229 paging64_gpte_to_gfn_lvl 0-1-2 59229 NULL
 +nla_len_59258 nla_len 0 59258 NULL
 +drbd_bm_write_page_59290 drbd_bm_write_page 2 59290 NULL
 +btrfs_insert_dir_item_59304 btrfs_insert_dir_item 4 59304 NULL
 +fd_copyout_59323 fd_copyout 3 59323 NULL
-+read_9287_modal_eeprom_59327 read_9287_modal_eeprom 3 59327 NULL
-+set_state_private_59336 set_state_private 0 59336 NULL
 +rx_defrag_in_process_called_read_59338 rx_defrag_in_process_called_read 3 59338 NULL
 +xfs_attrmulti_attr_set_59346 xfs_attrmulti_attr_set 4 59346 NULL
++__map_request_59350 __map_request 0 59350 NULL
++SyS_getrandom_59366 SyS_getrandom 2 59366 NULL
 +f2fs_fallocate_59377 f2fs_fallocate 4-3 59377 NULL
 +pvr2_debugifc_print_info_59380 pvr2_debugifc_print_info 3 59380 NULL
 +journal_init_dev_59384 journal_init_dev 5 59384 NULL
 +__net_get_random_once_59389 __net_get_random_once 2 59389 NULL
 +isku_sysfs_read_keys_function_59412 isku_sysfs_read_keys_function 6 59412 NULL
-+pci_ctrl_read_59424 pci_ctrl_read 0 59424 NULL
 +vxge_hw_ring_rxds_per_block_get_59425 vxge_hw_ring_rxds_per_block_get 0 59425 NULL
-+snd_pcm_tstamp_59431 snd_pcm_tstamp 0 59431 NULL
 +SyS_sched_setaffinity_59442 SyS_sched_setaffinity 2 59442 NULL
 +fs_path_ensure_buf_59445 fs_path_ensure_buf 2 59445 NULL
 +tipc_recv_stream_59456 tipc_recv_stream 4 59456 NULL
 +_iwl_dbgfs_bcast_filters_write_59491 _iwl_dbgfs_bcast_filters_write 3 59491 NULL
-+rtw_cfg80211_set_mgnt_wpsp2pie_59497 rtw_cfg80211_set_mgnt_wpsp2pie 3 59497 NULL
 +ib_copy_from_udata_59502 ib_copy_from_udata 3 59502 NULL
 +C_SYSC_get_mempolicy_59516 C_SYSC_get_mempolicy 3 59516 NULL
 +mic_vringh_copy_59523 mic_vringh_copy 4 59523 NULL
-+msix_setup_entries_59545 msix_setup_entries 0 59545 NULL nohasharray
-+idr_alloc_59545 idr_alloc 0 59545 &msix_setup_entries_59545
++msix_setup_entries_59545 msix_setup_entries 0 59545 NULL
 +mpi_get_nbits_59551 mpi_get_nbits 0 59551 NULL
 +tunables_write_59563 tunables_write 3 59563 NULL
 +bio_split_59564 bio_split 2 59564 NULL
 +__copy_from_user_ll_nozero_59571 __copy_from_user_ll_nozero 0-3 59571 NULL
++write_pbl_59583 write_pbl 4 59583 NULL
 +memdup_user_59590 memdup_user 2 59590 NULL
-+xrcdn_free_res_59616 xrcdn_free_res 5 59616 NULL nohasharray
-+mem_fwlog_free_mem_blks_read_59616 mem_fwlog_free_mem_blks_read 3 59616 &xrcdn_free_res_59616
++mem_fwlog_free_mem_blks_read_59616 mem_fwlog_free_mem_blks_read 3 59616 NULL nohasharray
++xrcdn_free_res_59616 xrcdn_free_res 5 59616 &mem_fwlog_free_mem_blks_read_59616
 +ath6kl_endpoint_stats_write_59621 ath6kl_endpoint_stats_write 3 59621 NULL
 +mtrr_write_59622 mtrr_write 3 59622 NULL
 +find_first_zero_bit_59636 find_first_zero_bit 0 59636 NULL
 +SyS_setdomainname_59646 SyS_setdomainname 2 59646 NULL
-+file_update_time_59647 file_update_time 0 59647 NULL
 +hidraw_read_59650 hidraw_read 3 59650 NULL
 +v9fs_xattr_set_acl_59651 v9fs_xattr_set_acl 4 59651 NULL
 +__devcgroup_check_permission_59665 __devcgroup_check_permission 0 59665 NULL
@@ -120320,15 +122696,13 @@ index 0000000..386792a
 +alloc_dca_provider_59670 alloc_dca_provider 2 59670 NULL
 +mic_calc_failure_read_59700 mic_calc_failure_read 3 59700 NULL
 +ioperm_get_59701 ioperm_get 4-3 59701 NULL
-+snd_pcm_info_user_59711 snd_pcm_info_user 0 59711 NULL
 +prism2_info_scanresults_59729 prism2_info_scanresults 3 59729 NULL
-+ieee80211_if_read_fwded_unicast_59740 ieee80211_if_read_fwded_unicast 3 59740 NULL
-+fat_direct_IO_59741 fat_direct_IO 4 59741 NULL
++ieee80211_if_read_fwded_unicast_59740 ieee80211_if_read_fwded_unicast 3 59740 NULL nohasharray
++nv94_aux_mask_59740 nv94_aux_mask 2 59740 &ieee80211_if_read_fwded_unicast_59740
 +qib_decode_7220_sdma_errs_59745 qib_decode_7220_sdma_errs 4 59745 NULL
 +strnlen_59746 strnlen 0 59746 NULL
 +ext3_acl_count_59754 ext3_acl_count 0-1 59754 NULL
-+long_retry_limit_read_59766 long_retry_limit_read 3 59766 NULL nohasharray
-+cap_inode_need_killpriv_59766 cap_inode_need_killpriv 0 59766 &long_retry_limit_read_59766
++long_retry_limit_read_59766 long_retry_limit_read 3 59766 NULL
 +venus_remove_59781 venus_remove 4 59781 NULL
 +mei_nfc_recv_59784 mei_nfc_recv 3 59784 NULL
 +C_SYSC_preadv_59801 C_SYSC_preadv 3 59801 NULL
@@ -120337,6 +122711,7 @@ index 0000000..386792a
 +ieee80211_if_read_dot11MeshHWMPmaxPREQretries_59829 ieee80211_if_read_dot11MeshHWMPmaxPREQretries 3 59829 NULL
 +gspca_dev_probe2_59833 gspca_dev_probe2 4 59833 NULL
 +regmap_raw_write_async_59849 regmap_raw_write_async 2-4 59849 NULL
++biovec_create_pool_59878 biovec_create_pool 1 59878 NULL
 +pvr2_ioread_set_sync_key_59882 pvr2_ioread_set_sync_key 3 59882 NULL
 +l2cap_sock_recvmsg_59886 l2cap_sock_recvmsg 4 59886 NULL
 +ffs_prepare_buffer_59892 ffs_prepare_buffer 2 59892 NULL
@@ -120361,10 +122736,12 @@ index 0000000..386792a
 +compat_writev_60063 compat_writev 3 60063 NULL
 +ath6kl_listen_int_write_60066 ath6kl_listen_int_write 3 60066 NULL
 +c4iw_num_stags_60073 c4iw_num_stags 0 60073 NULL
++usb_os_desc_prepare_interf_dir_60075 usb_os_desc_prepare_interf_dir 2 60075 NULL
 +rxrpc_kernel_send_data_60083 rxrpc_kernel_send_data 3 60083 NULL
 +ieee80211_if_fmt_fwded_frames_60103 ieee80211_if_fmt_fwded_frames 3 60103 NULL
 +SYSC_msgsnd_60113 SYSC_msgsnd 3 60113 NULL
 +nfs_idmap_request_key_60124 nfs_idmap_request_key 2 60124 NULL
++pcpu_need_to_extend_60133 pcpu_need_to_extend 0 60133 NULL
 +__mutex_lock_common_60134 __mutex_lock_common 0 60134 NULL
 +ld_usb_read_60156 ld_usb_read 3 60156 NULL
 +jmb38x_ms_count_slots_60164 jmb38x_ms_count_slots 0 60164 NULL
@@ -120372,8 +122749,8 @@ index 0000000..386792a
 +jffs2_alloc_full_dirent_60179 jffs2_alloc_full_dirent 1 60179 NULL nohasharray
 +sg_build_sgat_60179 sg_build_sgat 3 60179 &jffs2_alloc_full_dirent_60179
 +fuse_async_req_send_60183 fuse_async_req_send 0-3 60183 NULL
-+arch_setup_msi_irqs_60193 arch_setup_msi_irqs 0 60193 NULL nohasharray
-+rx_rx_tkip_replays_read_60193 rx_rx_tkip_replays_read 3 60193 &arch_setup_msi_irqs_60193
++rx_rx_tkip_replays_read_60193 rx_rx_tkip_replays_read 3 60193 NULL nohasharray
++arch_setup_msi_irqs_60193 arch_setup_msi_irqs 0 60193 &rx_rx_tkip_replays_read_60193
 +qib_reg_phys_mr_60202 qib_reg_phys_mr 3 60202 NULL
 +btrfs_get_token_16_60220 btrfs_get_token_16 0 60220 NULL
 +irq_alloc_domain_generic_chips_60264 irq_alloc_domain_generic_chips 2-3 60264 NULL
@@ -120384,8 +122761,8 @@ index 0000000..386792a
 +bch_subtract_dirty_60306 bch_subtract_dirty 3-4 60306 NULL
 +usb_alphatrack_write_60341 usb_alphatrack_write 3 60341 NULL
 +__kfifo_from_user_r_60345 __kfifo_from_user_r 5-3 60345 NULL
++max_unfragmented_pages_60362 max_unfragmented_pages 0 60362 NULL
 +dccp_setsockopt_60367 dccp_setsockopt 5 60367 NULL
-+ubi_eba_atomic_leb_change_60379 ubi_eba_atomic_leb_change 0 60379 NULL
 +mthca_alloc_resize_buf_60394 mthca_alloc_resize_buf 3 60394 NULL
 +ocfs2_zero_extend_60396 ocfs2_zero_extend 3 60396 NULL
 +driver_names_read_60399 driver_names_read 3 60399 NULL
@@ -120400,27 +122777,25 @@ index 0000000..386792a
 +v9fs_fid_readn_60544 v9fs_fid_readn 4 60544 NULL
 +nonpaging_map_60551 nonpaging_map 4 60551 NULL
 +osc_lockless_truncate_seq_write_60553 osc_lockless_truncate_seq_write 3 60553 NULL
++xfs_vm_direct_IO_60557 xfs_vm_direct_IO 4 60557 NULL
 +tracing_entries_write_60563 tracing_entries_write 3 60563 NULL
 +memblock_virt_alloc_try_nid_nopanic_60604 memblock_virt_alloc_try_nid_nopanic 1 60604 NULL
-+inode_change_ok_60614 inode_change_ok 0 60614 NULL
 +skb_transport_offset_60619 skb_transport_offset 0 60619 NULL
 +wl1273_fm_fops_write_60621 wl1273_fm_fops_write 3 60621 NULL
 +acl_alloc_stack_init_60630 acl_alloc_stack_init 1 60630 NULL
 +__proc_lnet_stats_60647 __proc_lnet_stats 5 60647 NULL
 +if_sdio_host_to_card_60666 if_sdio_host_to_card 4 60666 NULL
 +ieee80211_if_read_dot11MeshConfirmTimeout_60670 ieee80211_if_read_dot11MeshConfirmTimeout 3 60670 NULL
-+vga_rcrt_60731 vga_rcrt 0 60731 NULL
 +snd_ice1712_ds_read_60754 snd_ice1712_ds_read 0 60754 NULL
 +raid_status_60755 raid_status 5 60755 NULL
 +sel_write_checkreqprot_60774 sel_write_checkreqprot 3 60774 NULL
 +opticon_write_60775 opticon_write 4 60775 NULL
 +acl_alloc_num_60778 acl_alloc_num 1-2 60778 NULL
 +snd_pcm_oss_readv3_60792 snd_pcm_oss_readv3 3 60792 NULL
++nvif_object_init_60848 nvif_object_init 6 60848 NULL
 +pwr_tx_with_ps_read_60851 pwr_tx_with_ps_read 3 60851 NULL
-+__clone_and_map_data_bio_60861 __clone_and_map_data_bio 3-4 60861 NULL
 +alloc_buf_60864 alloc_buf 3-2 60864 NULL
 +generic_writepages_60871 generic_writepages 0 60871 NULL
-+ubifs_read_one_lp_60882 ubifs_read_one_lp 0 60882 NULL
 +ext4_update_inline_data_60888 ext4_update_inline_data 3 60888 NULL
 +iio_debugfs_read_reg_60908 iio_debugfs_read_reg 3 60908 NULL
 +libcfs_sock_ioctl_60915 libcfs_sock_ioctl 0 60915 NULL
@@ -120430,16 +122805,16 @@ index 0000000..386792a
 +mwifiex_alloc_sdio_mpa_buffers_60961 mwifiex_alloc_sdio_mpa_buffers 2-3 60961 NULL
 +__a2mp_build_60987 __a2mp_build 3 60987 NULL
 +hsc_msg_alloc_60990 hsc_msg_alloc 1 60990 NULL
++generic_file_direct_write_60995 generic_file_direct_write 0 60995 NULL
 +ath6kl_lrssi_roam_read_61022 ath6kl_lrssi_roam_read 3 61022 NULL
 +graph_depth_write_61024 graph_depth_write 3 61024 NULL
 +sdhci_pltfm_register_61031 sdhci_pltfm_register 3 61031 NULL
++read_file_ackto_61037 read_file_ackto 3 61037 NULL
 +lpfc_idiag_queacc_write_61043 lpfc_idiag_queacc_write 3 61043 NULL
 +symtab_init_61050 symtab_init 2 61050 NULL
 +fuse_send_write_61053 fuse_send_write 0-4 61053 NULL
-+snd_pcm_pause_61054 snd_pcm_pause 0 61054 NULL
-+bitmap_scnlistprintf_61062 bitmap_scnlistprintf 2-0 61062 NULL
++bitmap_scnlistprintf_61062 bitmap_scnlistprintf 0-2 61062 NULL
 +ahash_align_buffer_size_61070 ahash_align_buffer_size 0-1-2 61070 NULL
-+snd_pcm_update_hw_ptr0_61084 snd_pcm_update_hw_ptr0 0 61084 NULL
 +get_derived_key_61100 get_derived_key 4 61100 NULL
 +i40e_calculate_l2fpm_size_61104 i40e_calculate_l2fpm_size 0-4-3-2-1 61104 NULL
 +alloc_chrdev_region_61112 alloc_chrdev_region 0 61112 NULL
@@ -120450,14 +122825,16 @@ index 0000000..386792a
 +event_oom_late_read_61175 event_oom_late_read 3 61175 &pair_device_61175
 +dio_bio_add_page_61178 dio_bio_add_page 0 61178 NULL
 +SyS_prctl_61202 SyS_prctl 4 61202 NULL
++srp_create_fr_pool_61207 srp_create_fr_pool 3 61207 NULL
 +arch_hibernation_header_save_61212 arch_hibernation_header_save 0 61212 NULL
 +smk_read_ambient_61220 smk_read_ambient 3 61220 NULL
 +v9fs_mmap_file_read_61262 v9fs_mmap_file_read 3 61262 NULL
-+btrfs_bio_alloc_61270 btrfs_bio_alloc 3 61270 NULL nohasharray
-+find_get_pages_tag_61270 find_get_pages_tag 0 61270 &btrfs_bio_alloc_61270 nohasharray
-+ifalias_store_61270 ifalias_store 4 61270 &find_get_pages_tag_61270
-+vortex_adbdma_getlinearpos_61283 vortex_adbdma_getlinearpos 0 61283 NULL nohasharray
-+hfsplus_getxattr_finder_info_61283 hfsplus_getxattr_finder_info 0 61283 &vortex_adbdma_getlinearpos_61283
++kvm_age_hva_61267 kvm_age_hva 2-3 61267 NULL
++find_get_pages_tag_61270 find_get_pages_tag 0 61270 NULL nohasharray
++btrfs_bio_alloc_61270 btrfs_bio_alloc 3 61270 &find_get_pages_tag_61270 nohasharray
++ifalias_store_61270 ifalias_store 4 61270 &btrfs_bio_alloc_61270
++hfsplus_getxattr_finder_info_61283 hfsplus_getxattr_finder_info 0 61283 NULL nohasharray
++vortex_adbdma_getlinearpos_61283 vortex_adbdma_getlinearpos 0 61283 &hfsplus_getxattr_finder_info_61283
 +nvme_trans_copy_to_user_61288 nvme_trans_copy_to_user 3 61288 NULL
 +xfer_from_user_61307 xfer_from_user 3 61307 NULL
 +xfrm_user_sec_ctx_size_61320 xfrm_user_sec_ctx_size 0 61320 NULL
@@ -120466,20 +122843,25 @@ index 0000000..386792a
 +st5481_setup_isocpipes_61340 st5481_setup_isocpipes 6-4 61340 NULL
 +rx_rx_wa_ba_not_expected_read_61341 rx_rx_wa_ba_not_expected_read 3 61341 NULL
 +__dm_get_reserved_ios_61342 __dm_get_reserved_ios 0-3-2 61342 NULL
++f1x_map_sysaddr_to_csrow_61344 f1x_map_sysaddr_to_csrow 2 61344 NULL
++wil_write_file_recovery_61354 wil_write_file_recovery 3 61354 NULL
 +debug_debug4_read_61367 debug_debug4_read 3 61367 NULL
 +system_enable_write_61396 system_enable_write 3 61396 NULL
++xfs_zero_remaining_bytes_61423 xfs_zero_remaining_bytes 3 61423 NULL
 +unix_stream_sendmsg_61455 unix_stream_sendmsg 4 61455 NULL
 +snd_pcm_lib_writev_transfer_61483 snd_pcm_lib_writev_transfer 5-4-2 61483 NULL
 +btrfs_item_size_61485 btrfs_item_size 0 61485 NULL
 +erst_errno_61526 erst_errno 0 61526 NULL
++proc_write_device_61541 proc_write_device 3 61541 NULL
 +compat_SyS_select_61542 compat_SyS_select 1 61542 NULL
 +trace_options_core_write_61551 trace_options_core_write 3 61551 NULL
 +dvb_net_ioctl_61559 dvb_net_ioctl 2 61559 NULL
++parport_pc_fifo_write_block_dma_61568 parport_pc_fifo_write_block_dma 3 61568 NULL
 +fan_proc_write_61569 fan_proc_write 3 61569 NULL
 +ieee80211_if_read_rc_rateidx_mask_2ghz_61570 ieee80211_if_read_rc_rateidx_mask_2ghz 3 61570 NULL
 +ldlm_pool_rw_atomic_seq_write_61572 ldlm_pool_rw_atomic_seq_write 3 61572 NULL
 +seq_open_private_61589 seq_open_private 3 61589 NULL
-+ept_gpte_to_gfn_lvl_61591 ept_gpte_to_gfn_lvl 0-2-1 61591 NULL
++ept_gpte_to_gfn_lvl_61591 ept_gpte_to_gfn_lvl 0-1-2 61591 NULL
 +netlink_recvmsg_61600 netlink_recvmsg 4 61600 NULL
 +nfs4_init_uniform_client_string_61601 nfs4_init_uniform_client_string 3 61601 NULL
 +configfs_write_file_61621 configfs_write_file 3 61621 NULL
@@ -120490,11 +122872,11 @@ index 0000000..386792a
 +resize_stripes_61650 resize_stripes 2 61650 NULL
 +ttm_page_pool_free_61661 ttm_page_pool_free 2-0 61661 NULL
 +insert_one_name_61668 insert_one_name 7 61668 NULL
-+snd_pcm_playback_avail_61671 snd_pcm_playback_avail 0 61671 NULL
 +qib_format_hwmsg_61679 qib_format_hwmsg 2 61679 NULL
 +lock_loop_61681 lock_loop 1 61681 NULL
 +__do_tune_cpucache_61684 __do_tune_cpucache 2 61684 NULL
 +filter_read_61692 filter_read 3 61692 NULL
++SyS_kexec_file_load_61715 SyS_kexec_file_load 3 61715 NULL
 +iov_length_61716 iov_length 0 61716 NULL
 +fragmentation_threshold_read_61718 fragmentation_threshold_read 3 61718 NULL
 +null_alloc_reqbuf_61719 null_alloc_reqbuf 3 61719 NULL
@@ -120505,35 +122887,36 @@ index 0000000..386792a
 +bfad_debugfs_write_regwr_61841 bfad_debugfs_write_regwr 3 61841 NULL
 +regcache_sync_block_61846 regcache_sync_block 5-4 61846 NULL
 +ath9k_hw_def_dump_eeprom_61853 ath9k_hw_def_dump_eeprom 5-4 61853 NULL
++__skb_flow_dissect_61855 __skb_flow_dissect 5 61855 NULL
 +evdev_compute_buffer_size_61863 evdev_compute_buffer_size 0 61863 NULL
 +SYSC_lsetxattr_61869 SYSC_lsetxattr 4 61869 NULL
 +get_fw_name_61874 get_fw_name 3 61874 NULL
 +btrfs_ioctl_clone_61886 btrfs_ioctl_clone 3-4-5 61886 NULL
 +lprocfs_write_frac_u64_helper_61897 lprocfs_write_frac_u64_helper 2 61897 NULL
-+lov_mds_md_stripecnt_61899 lov_mds_md_stripecnt 0-1 61899 NULL
 +clear_refs_write_61904 clear_refs_write 3 61904 NULL
 +kernfs_name_61910 kernfs_name 3 61910 NULL
 +rx_filter_arp_filter_read_61914 rx_filter_arp_filter_read 3 61914 NULL
 +au0828_init_isoc_61917 au0828_init_isoc 3-2-4 61917 NULL
 +sctp_sendmsg_61919 sctp_sendmsg 4 61919 NULL
++efi_get_runtime_map_size_61927 efi_get_runtime_map_size 0 61927 NULL
 +SyS_kexec_load_61946 SyS_kexec_load 2 61946 NULL
 +il4965_ucode_rx_stats_read_61948 il4965_ucode_rx_stats_read 3 61948 NULL
 +squashfs_read_id_index_table_61961 squashfs_read_id_index_table 4 61961 NULL
 +fix_read_error_61965 fix_read_error 4 61965 NULL
++ocfs2_quota_write_61972 ocfs2_quota_write 4-5 61972 NULL
++fd_locked_ioctl_61978 fd_locked_ioctl 3 61978 NULL
 +cow_file_range_61979 cow_file_range 3 61979 NULL
-+set_extent_delalloc_61982 set_extent_delalloc 0 61982 NULL
 +dequeue_event_62000 dequeue_event 3 62000 NULL
 +xt_compat_match_offset_62011 xt_compat_match_offset 0 62011 NULL
 +SyS_setxattr_62019 SyS_setxattr 4 62019 NULL
 +jffs2_do_unlink_62020 jffs2_do_unlink 4 62020 NULL
 +SYSC_select_62024 SYSC_select 1 62024 NULL
++comedi_write_array_to_buffer_62032 comedi_write_array_to_buffer 3 62032 NULL
 +pmcraid_build_passthrough_ioadls_62034 pmcraid_build_passthrough_ioadls 2 62034 NULL
 +sctp_user_addto_chunk_62047 sctp_user_addto_chunk 2-3 62047 NULL
 +do_pselect_62061 do_pselect 1 62061 NULL
 +pcpu_alloc_bootmem_62074 pcpu_alloc_bootmem 2 62074 NULL
-+fat_setattr_62084 fat_setattr 0 62084 NULL
 +jffs2_security_setxattr_62107 jffs2_security_setxattr 4 62107 NULL
-+btrfs_direct_IO_62114 btrfs_direct_IO 4 62114 NULL
 +ip_recv_error_62117 ip_recv_error 3 62117 NULL
 +generic_block_fiemap_62122 generic_block_fiemap 4 62122 NULL
 +llc_ui_header_len_62131 llc_ui_header_len 0 62131 NULL
@@ -120546,11 +122929,12 @@ index 0000000..386792a
 +prism54_wpa_bss_ie_get_62173 prism54_wpa_bss_ie_get 0 62173 NULL
 +write_file_dfs_62180 write_file_dfs 3 62180 NULL
 +alloc_upcall_62186 alloc_upcall 2 62186 NULL
++rounded_hashtable_size_62198 rounded_hashtable_size 0 62198 NULL
 +sock_kmalloc_62205 sock_kmalloc 2 62205 NULL
 +smk_read_syslog_62227 smk_read_syslog 3 62227 NULL
 +SYSC_setgroups16_62232 SYSC_setgroups16 1 62232 NULL
-+nfsd_read_file_62241 nfsd_read_file 6 62241 NULL
 +ion_handle_test_dma_62262 ion_handle_test_dma 4-5 62262 NULL
++get_random_int_62279 get_random_int 0 62279 NULL
 +il_dbgfs_sram_read_62296 il_dbgfs_sram_read 3 62296 NULL
 +sparse_early_usemaps_alloc_pgdat_section_62304 sparse_early_usemaps_alloc_pgdat_section 2 62304 NULL
 +subsystem_filter_read_62310 subsystem_filter_read 3 62310 NULL
@@ -120562,20 +122946,21 @@ index 0000000..386792a
 +rx_rx_timeout_read_62389 rx_rx_timeout_read 3 62389 NULL
 +altera_irscan_62396 altera_irscan 2 62396 NULL
 +set_ssp_62411 set_ssp 4 62411 NULL
-+udf_expand_file_adinicb_62470 udf_expand_file_adinicb 0 62470 NULL
-+ext_rts51x_sd_execute_read_data_62501 ext_rts51x_sd_execute_read_data 9 62501 NULL
++tracing_saved_cmdlines_size_read_62491 tracing_saved_cmdlines_size_read 3 62491 NULL
++srpc_alloc_bulk_62522 srpc_alloc_bulk 2 62522 NULL
 +pep_sendmsg_62524 pep_sendmsg 4 62524 NULL
 +test_iso_queue_62534 test_iso_queue 5 62534 NULL
 +debugfs_read_62535 debugfs_read 3 62535 NULL
 +sco_sock_sendmsg_62542 sco_sock_sendmsg 4 62542 NULL
 +qib_refresh_qsfp_cache_62547 qib_refresh_qsfp_cache 0 62547 NULL
 +xfrm_user_policy_62573 xfrm_user_policy 4 62573 NULL
++compat_SyS_rt_sigpending_62580 compat_SyS_rt_sigpending 2 62580 NULL
 +get_subdir_62581 get_subdir 3 62581 NULL
-+nfsd_vfs_read_62605 nfsd_vfs_read 6 62605 NULL
 +dut_mode_write_62630 dut_mode_write 3 62630 NULL
 +vfs_fsync_range_62635 vfs_fsync_range 0 62635 NULL
 +lpfc_sli4_queue_alloc_62646 lpfc_sli4_queue_alloc 3 62646 NULL
 +printer_req_alloc_62687 printer_req_alloc 2 62687 NULL
++ieee80211_set_probe_resp_62700 ieee80211_set_probe_resp 3 62700 NULL
 +bioset_integrity_create_62708 bioset_integrity_create 2 62708 NULL
 +gfs2_log_write_62717 gfs2_log_write 3 62717 NULL
 +rdm_62719 rdm 0 62719 NULL
@@ -120583,16 +122968,19 @@ index 0000000..386792a
 +key_replays_read_62746 key_replays_read 3 62746 NULL
 +lov_verify_lmm_62747 lov_verify_lmm 2 62747 NULL
 +mwifiex_rdeeprom_write_62754 mwifiex_rdeeprom_write 3 62754 NULL
-+ax25_sendmsg_62770 ax25_sendmsg 4 62770 NULL
++mxt_obj_instances_62764 mxt_obj_instances 0 62764 NULL
++copy_page_to_iter_iovec_62770 copy_page_to_iter_iovec 0-3 62770 NULL nohasharray
++ax25_sendmsg_62770 ax25_sendmsg 4 62770 &copy_page_to_iter_iovec_62770
 +C_SYSC_ipc_62776 C_SYSC_ipc 3 62776 NULL
++ptlrpc_req_set_repsize_62784 ptlrpc_req_set_repsize 2 62784 NULL
 +SyS_sched_getaffinity_62786 SyS_sched_getaffinity 2 62786 NULL
 +dm_stats_account_io_62787 dm_stats_account_io 3 62787 NULL
++__add_action_62798 __add_action 4 62798 NULL
 +tracing_total_entries_read_62817 tracing_total_entries_read 3 62817 NULL
 +__rounddown_pow_of_two_62836 __rounddown_pow_of_two 0 62836 NULL
 +bio_get_nr_vecs_62838 bio_get_nr_vecs 0 62838 NULL
 +xlog_recover_add_to_trans_62839 xlog_recover_add_to_trans 4 62839 NULL
 +rx_fcs_err_read_62844 rx_fcs_err_read 3 62844 NULL
-+read_nic_io_dword_62859 read_nic_io_dword 0 62859 NULL
 +l2tp_ip6_recvmsg_62874 l2tp_ip6_recvmsg 4 62874 NULL
 +aoechr_write_62883 aoechr_write 3 62883 NULL
 +if_spi_host_to_card_62890 if_spi_host_to_card 4 62890 NULL
@@ -120600,6 +122988,8 @@ index 0000000..386792a
 +getdqbuf_62908 getdqbuf 1 62908 NULL
 +ll_statahead_agl_seq_write_62928 ll_statahead_agl_seq_write 3 62928 NULL
 +agp_create_user_memory_62955 agp_create_user_memory 1 62955 NULL
++nvif_object_mthd_62960 nvif_object_mthd 4 62960 NULL
++hwdep_read_62992 hwdep_read 3 62992 NULL
 +kstrtoull_from_user_63026 kstrtoull_from_user 2 63026 NULL
 +__vb2_perform_fileio_63033 __vb2_perform_fileio 3 63033 NULL
 +pipeline_defrag_to_csum_swi_read_63037 pipeline_defrag_to_csum_swi_read 3 63037 NULL
@@ -120610,8 +123000,7 @@ index 0000000..386792a
 +sep_prepare_input_output_dma_table_in_dcb_63087 sep_prepare_input_output_dma_table_in_dcb 4-5 63087 NULL
 +iwl_dbgfs_sensitivity_read_63116 iwl_dbgfs_sensitivity_read 3 63116 NULL
 +ext4_chunk_trans_blocks_63123 ext4_chunk_trans_blocks 0-2 63123 NULL
-+snd_pcm_status_user_63140 snd_pcm_status_user 0 63140 NULL
-+ubifs_change_one_lp_63157 ubifs_change_one_lp 0 63157 NULL
++iwl_mvm_coex_dump_mbox_63153 iwl_mvm_coex_dump_mbox 4-3-0 63153 NULL
 +smk_write_revoke_subj_63173 smk_write_revoke_subj 3 63173 NULL
 +SyS_syslog_63178 SyS_syslog 3 63178 NULL
 +vme_master_read_63221 vme_master_read 0 63221 NULL
@@ -120620,14 +123009,15 @@ index 0000000..386792a
 +xfs_dir2_leaf_getdents_63262 xfs_dir2_leaf_getdents 3 63262 NULL
 +iwl_dbgfs_fw_error_dump_read_63263 iwl_dbgfs_fw_error_dump_read 3 63263 NULL
 +raid5_resize_63306 raid5_resize 2 63306 NULL
++nfsd_vfs_read_63307 nfsd_vfs_read 5 63307 NULL
 +ath10k_read_fw_dbglog_63323 ath10k_read_fw_dbglog 3 63323 NULL
 +proc_info_read_63344 proc_info_read 3 63344 NULL
++nvif_device_new_63358 nvif_device_new 5 63358 NULL
 +ps_upsd_max_sptime_read_63362 ps_upsd_max_sptime_read 3 63362 NULL
 +idmouse_read_63374 idmouse_read 3 63374 NULL
-+usbnet_read_cmd_nopm_63388 usbnet_read_cmd_nopm 7 63388 NULL nohasharray
-+edac_pci_alloc_ctl_info_63388 edac_pci_alloc_ctl_info 1 63388 &usbnet_read_cmd_nopm_63388
++edac_pci_alloc_ctl_info_63388 edac_pci_alloc_ctl_info 1 63388 NULL nohasharray
++usbnet_read_cmd_nopm_63388 usbnet_read_cmd_nopm 7 63388 &edac_pci_alloc_ctl_info_63388
 +rxpipe_missed_beacon_host_int_trig_rx_data_read_63405 rxpipe_missed_beacon_host_int_trig_rx_data_read 3 63405 NULL
-+nouveau_event_create_63411 nouveau_event_create 1 63411 NULL
 +l2cap_sock_sendmsg_63427 l2cap_sock_sendmsg 4 63427 NULL
 +nfsd_symlink_63442 nfsd_symlink 6 63442 NULL
 +si5351_bulk_write_63468 si5351_bulk_write 2-3 63468 NULL
@@ -120637,8 +123027,7 @@ index 0000000..386792a
 +iwl_dbgfs_bcast_filters_read_63489 iwl_dbgfs_bcast_filters_read 3 63489 NULL
 +snd_pcm_plug_write_transfer_63503 snd_pcm_plug_write_transfer 0-3 63503 NULL
 +efx_mcdi_rpc_async_63529 efx_mcdi_rpc_async 4-5 63529 NULL
-+ubi_more_leb_change_data_63534 ubi_more_leb_change_data 4 63534 NULL nohasharray
-+generic_cont_expand_simple_63534 generic_cont_expand_simple 0 63534 &ubi_more_leb_change_data_63534
++ubi_more_leb_change_data_63534 ubi_more_leb_change_data 4 63534 NULL
 +write_file_spectral_period_63536 write_file_spectral_period 3 63536 NULL
 +if_sdio_read_scratch_63540 if_sdio_read_scratch 0 63540 NULL
 +append_to_buffer_63550 append_to_buffer 3 63550 NULL
@@ -120656,17 +123045,19 @@ index 0000000..386792a
 +write_file_spectral_fft_period_63696 write_file_spectral_fft_period 3 63696 NULL
 +nouveau_object_create__63715 nouveau_object_create_ 5 63715 NULL
 +btrfs_insert_delayed_dir_index_63720 btrfs_insert_delayed_dir_index 4 63720 NULL
++ntb_debugfs_read_63728 ntb_debugfs_read 3 63728 NULL
 +selinux_secctx_to_secid_63744 selinux_secctx_to_secid 2 63744 NULL
 +snd_pcm_oss_read1_63771 snd_pcm_oss_read1 3 63771 NULL
-+snd_pcm_link_63772 snd_pcm_link 0 63772 NULL
 +snd_opl4_mem_proc_read_63774 snd_opl4_mem_proc_read 5 63774 NULL
 +spidev_compat_ioctl_63778 spidev_compat_ioctl 2 63778 NULL
 +mwifiex_11n_create_rx_reorder_tbl_63806 mwifiex_11n_create_rx_reorder_tbl 4 63806 NULL
 +copy_nodes_to_user_63807 copy_nodes_to_user 2 63807 NULL
 +C_SYSC_process_vm_readv_63811 C_SYSC_process_vm_readv 3-5 63811 NULL
-+regmap_multi_reg_write_63826 regmap_multi_reg_write 3 63826 NULL
++regmap_multi_reg_write_63826 regmap_multi_reg_write 3 63826 NULL nohasharray
++prepare_copy_63826 prepare_copy 2 63826 &regmap_multi_reg_write_63826
 +sel_write_load_63830 sel_write_load 3 63830 NULL
 +proc_pid_attr_write_63845 proc_pid_attr_write 3 63845 NULL
++nv10_gpio_intr_mask_63862 nv10_gpio_intr_mask 4-3 63862 NULL
 +xhci_alloc_stream_info_63902 xhci_alloc_stream_info 3 63902 NULL
 +uvc_alloc_urb_buffers_63922 uvc_alloc_urb_buffers 0-2-3 63922 NULL
 +snd_compr_write_63923 snd_compr_write 3 63923 NULL
@@ -120680,6 +123071,8 @@ index 0000000..386792a
 +SyS_rt_sigpending_64018 SyS_rt_sigpending 2 64018 NULL
 +dbAllocDmapLev_64030 dbAllocDmapLev 0 64030 NULL
 +SyS_fsetxattr_64039 SyS_fsetxattr 4 64039 NULL
++nl80211_send_rx_assoc_64040 nl80211_send_rx_assoc 4 64040 NULL
++__sock_create_64069 __sock_create 0 64069 NULL
 +get_u8_64076 get_u8 0 64076 NULL
 +xilly_malloc_64077 xilly_malloc 2 64077 NULL
 +sl_realloc_bufs_64086 sl_realloc_bufs 2 64086 NULL
@@ -120695,17 +123088,19 @@ index 0000000..386792a
 +init_bch_64130 init_bch 1-2 64130 NULL
 +ablkcipher_copy_iv_64140 ablkcipher_copy_iv 3 64140 NULL
 +dlfb_ops_write_64150 dlfb_ops_write 3 64150 NULL
++number_of_tds_64156 number_of_tds 0 64156 NULL
 +bnx2x_vf_mcast_64166 bnx2x_vf_mcast 4 64166 NULL
 +cpumask_scnprintf_64170 cpumask_scnprintf 0-2 64170 NULL
 +kernfs_iop_setxattr_64220 kernfs_iop_setxattr 4 64220 NULL
-+xfs_vm_direct_IO_64223 xfs_vm_direct_IO 4 64223 NULL
 +read_pulse_64227 read_pulse 0-3 64227 NULL
 +ea_len_64229 ea_len 0 64229 NULL
 +io_capture_transfer_64276 io_capture_transfer 4 64276 NULL
-+btrfs_file_extent_offset_64278 btrfs_file_extent_offset 0 64278 NULL
++btrfs_file_extent_offset_64278 btrfs_file_extent_offset 0 64278 NULL nohasharray
++bpf_check_classic_64278 bpf_check_classic 2 64278 &btrfs_file_extent_offset_64278
 +sta_current_tx_rate_read_64286 sta_current_tx_rate_read 3 64286 NULL
 +xfs_dir_cilookup_result_64288 xfs_dir_cilookup_result 3 64288 NULL nohasharray
 +event_id_read_64288 event_id_read 3 64288 &xfs_dir_cilookup_result_64288
++info_debugfs_read_64291 info_debugfs_read 3 64291 NULL
 +ocfs2_block_check_validate_bhs_64302 ocfs2_block_check_validate_bhs 0 64302 NULL
 +snd_hda_get_sub_nodes_64304 snd_hda_get_sub_nodes 0 64304 NULL
 +error_error_bar_retry_read_64305 error_error_bar_retry_read 3 64305 NULL
@@ -120728,7 +123123,6 @@ index 0000000..386792a
 +oom_adj_write_64428 oom_adj_write 3 64428 NULL
 +read_file_spectral_short_repeat_64431 read_file_spectral_short_repeat 3 64431 NULL
 +ax25_recvmsg_64441 ax25_recvmsg 4 64441 NULL
-+__i2c_add_numbered_adapter_64445 __i2c_add_numbered_adapter 0 64445 NULL
 +single_open_size_64483 single_open_size 4 64483 NULL
 +p54_parse_rssical_64493 p54_parse_rssical 3 64493 NULL
 +msg_data_sz_64503 msg_data_sz 0 64503 NULL
@@ -120748,8 +123142,8 @@ index 0000000..386792a
 +fanotify_write_64623 fanotify_write 3 64623 NULL
 +_iwl_dbgfs_d0i3_refs_write_64642 _iwl_dbgfs_d0i3_refs_write 3 64642 NULL
 +regmap_read_debugfs_64658 regmap_read_debugfs 5 64658 NULL
-+tlbflush_read_file_64661 tlbflush_read_file 3 64661 NULL nohasharray
-+ocfs2_read_xattr_block_64661 ocfs2_read_xattr_block 0 64661 &tlbflush_read_file_64661
++ocfs2_read_xattr_block_64661 ocfs2_read_xattr_block 0 64661 NULL nohasharray
++tlbflush_read_file_64661 tlbflush_read_file 3 64661 &ocfs2_read_xattr_block_64661
 +efx_tsoh_get_buffer_64664 efx_tsoh_get_buffer 3 64664 NULL
 +rx_rx_out_of_mpdu_nodes_read_64668 rx_rx_out_of_mpdu_nodes_read 3 64668 NULL
 +nr_free_zone_pages_64680 nr_free_zone_pages 0 64680 NULL
@@ -120760,11 +123154,13 @@ index 0000000..386792a
 +squashfs_read_inode_lookup_table_64739 squashfs_read_inode_lookup_table 4 64739 NULL
 +bio_map_kern_64751 bio_map_kern 3 64751 NULL
 +rt2x00debug_write_csr_64753 rt2x00debug_write_csr 3 64753 NULL
++hwdep_write_64776 hwdep_write 3 64776 NULL
 +message_for_md_64777 message_for_md 5 64777 NULL
 +isr_low_rssi_read_64789 isr_low_rssi_read 3 64789 NULL
 +regmap_reg_ranges_read_file_64798 regmap_reg_ranges_read_file 3 64798 NULL
 +nfsctl_transaction_write_64800 nfsctl_transaction_write 3 64800 NULL
-+rfkill_fop_write_64808 rfkill_fop_write 3 64808 NULL
++rfkill_fop_write_64808 rfkill_fop_write 3 64808 NULL nohasharray
++nv_mask_64808 nv_mask 0 64808 &rfkill_fop_write_64808
 +proc_projid_map_write_64810 proc_projid_map_write 3 64810 NULL
 +megaraid_change_queue_depth_64815 megaraid_change_queue_depth 2 64815 NULL
 +ecryptfs_send_miscdev_64816 ecryptfs_send_miscdev 2 64816 NULL
@@ -120782,19 +123178,19 @@ index 0000000..386792a
 +snd_hda_get_pin_label_65035 snd_hda_get_pin_label 5 65035 NULL
 +ext4_ind_trans_blocks_65053 ext4_ind_trans_blocks 0-2 65053 NULL
 +pcibios_enable_device_65059 pcibios_enable_device 0 65059 NULL
-+make_idx_node_65068 make_idx_node 0 65068 NULL
 +__alloc_bootmem_node_high_65076 __alloc_bootmem_node_high 2 65076 NULL
 +batadv_socket_write_65083 batadv_socket_write 3 65083 NULL
 +ocfs2_truncate_cluster_pages_65086 ocfs2_truncate_cluster_pages 2 65086 NULL
-+ath9k_dump_mci_btcoex_65090 ath9k_dump_mci_btcoex 3-0 65090 NULL
-+scsi_add_host_with_dma_65093 scsi_add_host_with_dma 0 65093 NULL
-+generic_ocp_write_65107 generic_ocp_write 4 65107 NULL
++ath9k_dump_mci_btcoex_65090 ath9k_dump_mci_btcoex 0-3 65090 NULL
++usbtest_alloc_urb_65115 usbtest_alloc_urb 3-5 65115 NULL
 +rx_rx_done_read_65217 rx_rx_done_read 3 65217 NULL
-+print_endpoint_stat_65232 print_endpoint_stat 0-3-4 65232 NULL
++nouveau_event_create_65229 nouveau_event_create 2-1 65229 NULL
++print_endpoint_stat_65232 print_endpoint_stat 0-4-3 65232 NULL
 +whci_n_caps_65247 whci_n_caps 0 65247 NULL
 +kmalloc_parameter_65279 kmalloc_parameter 1 65279 NULL
 +compat_core_sys_select_65285 compat_core_sys_select 1 65285 NULL
 +mpi_set_buffer_65294 mpi_set_buffer 3 65294 NULL
++fat_direct_IO_65295 fat_direct_IO 4 65295 NULL
 +redirected_tty_write_65297 redirected_tty_write 3 65297 NULL
 +get_var_len_65304 get_var_len 0 65304 NULL
 +unpack_array_65318 unpack_array 0 65318 NULL
@@ -120916,7 +123312,7 @@ index 0000000..560cd7b
 +zpios_read_64734 zpios_read 3 64734 NULL
 diff --git a/tools/gcc/size_overflow_plugin/size_overflow_plugin.c b/tools/gcc/size_overflow_plugin/size_overflow_plugin.c
 new file mode 100644
-index 0000000..a15328d
+index 0000000..95f7abd
 --- /dev/null
 +++ b/tools/gcc/size_overflow_plugin/size_overflow_plugin.c
 @@ -0,0 +1,259 @@
@@ -120952,7 +123348,7 @@ index 0000000..a15328d
 +tree size_overflow_type_TI;
 +
 +static struct plugin_info size_overflow_plugin_info = {
-+      .version        = "20140713",
++      .version        = "20140725",
 +      .help           = "no-size-overflow\tturn off size overflow checking\n",
 +};
 +
@@ -121551,10 +123947,10 @@ index 0000000..0888f6c
 +
 diff --git a/tools/gcc/stackleak_plugin.c b/tools/gcc/stackleak_plugin.c
 new file mode 100644
-index 0000000..dd94983
+index 0000000..924652b
 --- /dev/null
 +++ b/tools/gcc/stackleak_plugin.c
-@@ -0,0 +1,376 @@
+@@ -0,0 +1,395 @@
 +/*
 + * Copyright 2011-2014 by the PaX Team <pageexec@freemail.hu>
 + * Licensed under the GPL v2
@@ -121586,7 +123982,7 @@ index 0000000..dd94983
 +static bool init_locals;
 +
 +static struct plugin_info stackleak_plugin_info = {
-+      .version        = "201402131920",
++      .version        = "201408011900",
 +      .help           = "track-lowest-sp=nn\ttrack sp in functions whose frame size is at least nn bytes\n"
 +//                      "initialize-locals\t\tforcibly initialize all stack frames\n"
 +};
@@ -121732,6 +124128,25 @@ index 0000000..dd94983
 +
 +static bool gate_stackleak_track_stack(void)
 +{
++      tree section;
++
++      if (ix86_cmodel != CM_KERNEL)
++              return false;
++
++      section = lookup_attribute("section", DECL_ATTRIBUTES(current_function_decl));
++      if (section && TREE_VALUE(section)) {
++              section = TREE_VALUE(TREE_VALUE(section));
++
++              if (!strncmp(TREE_STRING_POINTER(section), ".init.text", 10))
++                      return false;
++              if (!strncmp(TREE_STRING_POINTER(section), ".devinit.text", 13))
++                      return false;
++              if (!strncmp(TREE_STRING_POINTER(section), ".cpuinit.text", 13))
++                      return false;
++              if (!strncmp(TREE_STRING_POINTER(section), ".meminit.text", 13))
++                      return false;
++      }
++
 +      return track_frame_size >= 0;
 +}
 +
@@ -122212,10 +124627,10 @@ index 0000000..4ee2231
 +      return 0;
 +}
 diff --git a/tools/include/linux/compiler.h b/tools/include/linux/compiler.h
-index fbc6665..5e9ce79 100644
+index 88461f0..6fb70a0 100644
 --- a/tools/include/linux/compiler.h
 +++ b/tools/include/linux/compiler.h
-@@ -35,4 +35,12 @@
+@@ -35,6 +35,14 @@
  # define unlikely(x)          __builtin_expect(!!(x), 0)
  #endif
  
@@ -122227,12 +124642,14 @@ index fbc6665..5e9ce79 100644
 +# define __intentional_overflow(...)
 +#endif
 +
+ #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
  #endif /* _TOOLS_LINUX_COMPILER_H */
 diff --git a/tools/lib/api/Makefile b/tools/lib/api/Makefile
-index ce00f7e..0aca5e4 100644
+index 36c08b1..87c72d1 100644
 --- a/tools/lib/api/Makefile
 +++ b/tools/lib/api/Makefile
-@@ -16,7 +16,7 @@ LIB_OBJS += $(OUTPUT)fs/fs.o
+@@ -21,7 +21,7 @@ LIB_OBJS += $(OUTPUT)fd/array.o
  
  LIBFILE = libapikfs.a
  
@@ -122267,10 +124684,10 @@ index 0a578fe..b81f62d 100644
  })
  
 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index 56baae8..2c889c2 100644
+index 3cee7b1..29cb7d8 100644
 --- a/virt/kvm/kvm_main.c
 +++ b/virt/kvm/kvm_main.c
-@@ -76,12 +76,17 @@ LIST_HEAD(vm_list);
+@@ -78,12 +78,17 @@ LIST_HEAD(vm_list);
  
  static cpumask_var_t cpus_hardware_enabled;
  static int kvm_usage_count = 0;
@@ -122290,7 +124707,7 @@ index 56baae8..2c889c2 100644
  
  struct dentry *kvm_debugfs_dir;
  
-@@ -755,7 +760,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
+@@ -786,7 +791,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
        /* We can read the guest memory with __xxx_user() later on. */
        if ((mem->slot < KVM_USER_MEM_SLOTS) &&
            ((mem->userspace_addr & (PAGE_SIZE - 1)) ||
@@ -122299,7 +124716,7 @@ index 56baae8..2c889c2 100644
                        (void __user *)(unsigned long)mem->userspace_addr,
                        mem->memory_size)))
                goto out;
-@@ -1612,9 +1617,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached);
+@@ -1690,9 +1695,17 @@ EXPORT_SYMBOL_GPL(kvm_read_guest_cached);
  
  int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len)
  {
@@ -122319,7 +124736,7 @@ index 56baae8..2c889c2 100644
  }
  EXPORT_SYMBOL_GPL(kvm_clear_guest_page);
  
-@@ -1864,7 +1877,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp)
+@@ -1941,7 +1954,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp)
        return 0;
  }
  
@@ -122328,7 +124745,7 @@ index 56baae8..2c889c2 100644
        .release        = kvm_vcpu_release,
        .unlocked_ioctl = kvm_vcpu_ioctl,
  #ifdef CONFIG_COMPAT
-@@ -2534,7 +2547,7 @@ out:
+@@ -2650,7 +2663,7 @@ out:
  }
  #endif
  
@@ -122337,7 +124754,7 @@ index 56baae8..2c889c2 100644
        .release        = kvm_vm_release,
        .unlocked_ioctl = kvm_vm_ioctl,
  #ifdef CONFIG_COMPAT
-@@ -2634,7 +2647,7 @@ out:
+@@ -2721,7 +2734,7 @@ out:
        return r;
  }
  
@@ -122346,7 +124763,7 @@ index 56baae8..2c889c2 100644
        .unlocked_ioctl = kvm_dev_ioctl,
        .compat_ioctl   = kvm_dev_ioctl,
        .llseek         = noop_llseek,
-@@ -2660,7 +2673,7 @@ static void hardware_enable_nolock(void *junk)
+@@ -2747,7 +2760,7 @@ static void hardware_enable_nolock(void *junk)
  
        if (r) {
                cpumask_clear_cpu(cpu, cpus_hardware_enabled);
@@ -122355,7 +124772,7 @@ index 56baae8..2c889c2 100644
                printk(KERN_INFO "kvm: enabling virtualization on "
                                 "CPU%d failed\n", cpu);
        }
-@@ -2716,10 +2729,10 @@ static int hardware_enable_all(void)
+@@ -2803,10 +2816,10 @@ static int hardware_enable_all(void)
  
        kvm_usage_count++;
        if (kvm_usage_count == 1) {
@@ -122368,7 +124785,7 @@ index 56baae8..2c889c2 100644
                        hardware_disable_all_nolock();
                        r = -EBUSY;
                }
-@@ -3123,7 +3136,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
+@@ -3213,7 +3226,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
        kvm_arch_vcpu_put(vcpu);
  }
  
@@ -122377,7 +124794,7 @@ index 56baae8..2c889c2 100644
                  struct module *module)
  {
        int r;
-@@ -3170,7 +3183,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
+@@ -3260,7 +3273,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
        if (!vcpu_align)
                vcpu_align = __alignof__(struct kvm_vcpu);
        kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
@@ -122386,7 +124803,7 @@ index 56baae8..2c889c2 100644
        if (!kvm_vcpu_cache) {
                r = -ENOMEM;
                goto out_free_3;
-@@ -3180,9 +3193,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
+@@ -3270,9 +3283,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
        if (r)
                goto out_free;
  
@@ -122398,7 +124815,7 @@ index 56baae8..2c889c2 100644
  
        r = misc_register(&kvm_dev);
        if (r) {
-@@ -3192,9 +3207,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
+@@ -3282,9 +3297,6 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
  
        register_syscore_ops(&kvm_syscore_ops);
  
diff --git a/kernel/patches/grsecurity-3.15.4-arm-kvm_arch_init.patch b/kernel/patches/grsecurity-3.15.4-arm-kvm_arch_init.patch
deleted file mode 100644 (file)
index 378f782..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
-index 3c82b37..ee73109 100644
---- a/arch/arm/kvm/arm.c
-+++ b/arch/arm/kvm/arm.c
-@@ -1034,7 +1034,7 @@ static void check_kvm_target_cpu(void *ret)
- /**
-  * Initialize Hyp-mode and memory mappings on all CPUs.
-  */
--int kvm_arch_init(void *opaque)
-+int kvm_arch_init(const void *opaque)
- {
-       int err;
-       int ret, cpu;
diff --git a/kernel/patches/linux-3.14.25-rt5592_no_special_txop_init.patch b/kernel/patches/linux-3.14.25-rt5592_no_special_txop_init.patch
new file mode 100644 (file)
index 0000000..fe30c9e
--- /dev/null
@@ -0,0 +1,13 @@
+diff -Naur linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c
+--- linux-3.14.25.org/drivers/net/wireless/rt2x00/rt2800lib.c  2014-11-21 18:23:44.000000000 +0100
++++ linux-3.14.25/drivers/net/wireless/rt2x00/rt2800lib.c      2014-12-03 11:30:58.813355413 +0100
+@@ -4847,7 +4847,8 @@
+       rt2x00_set_field32(&reg, TXOP_CTRL_CFG_EXT_CWMIN, 0);
+       rt2800_register_write(rt2x00dev, TXOP_CTRL_CFG, reg);
+-      reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
++//    reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
++      reg = 0x00000002;
+       rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg);
+       rt2800_register_read(rt2x00dev, TX_RTS_CFG, &reg);
index db537d73c06431af350c009a9e7640419727fa02..c78575e728c4a8911765d033e9518e04f2b1d084 100644 (file)
@@ -4,12 +4,12 @@
 ###############################################################################
 
 name       = kmod
-version    = 18
+version    = 19
 release    = 1
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
 groups     = System/Kernel
-url        = http://modules.wiki.kernel.org/
+url        = http://git.kernel.org/cgit/utils/kernel/kmod/kmod.git
 license    = GPLv2+
 summary    = Linux kernel module management utilities.
 
index 147303ca8dffa5ff53cc33e38779e11ae56b7afe..c810e9096577754267873d49f6a016e1a37cfdcb 100644 (file)
@@ -4,10 +4,8 @@
 ###############################################################################
 
 name       = libnftnl
-version    = 1.0.0
-snapshot   = 20140412
-release    = 1.%{snapshot}
-thisapp    = %{name}-%{snapshot}
+version    = 1.0.3
+release    = 1
 
 groups     = Networking/Tools
 url        = http://netfilter.org/projects/libnftnl
@@ -19,20 +17,12 @@ description
        libmnl.
 end
 
-source_dl  = http://ftp.netfilter.org/pub/libnftnl/snapshot/
+source_dl  = http://ftp.netfilter.org/pub/libnftnl/
 sources    = %{thisapp}.tar.bz2
 
 build
        requires
-               autoconf
-               autogen
-               automake
                libmnl-devel
-               libtool
-       end
-
-       prepare_cmds
-               ./autogen.sh
        end
 end
 
index 706de2739df43459838855977735739edf2258a9..a57939eba15e94ab1f3cee58e407f23bce4ec639 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = libpipeline
-version    = 1.2.1
+version    = 1.4.0
 release    = 1
 
 groups     = Development/Libraries
diff --git a/libsodium/libsodium.nm b/libsodium/libsodium.nm
new file mode 100644 (file)
index 0000000..6dc1262
--- /dev/null
@@ -0,0 +1,41 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = libsodium
+version    = 1.0.1
+release    = 1
+
+groups     = System/Libraries
+url        = http://libsodium.org
+license    = ISC
+summary    = The Sodium crypto library
+
+description
+       Sodium is a new, easy-to-use software library for encryption, decryption, 
+       signatures, password hashing and more. It is a portable, cross-compilable, 
+       installable, packageable fork of NaCl, with a compatible API, and an extended 
+       API to improve usability even further. Its goal is to provide all of the core 
+       operations needed to build higher-level cryptographic tools. The design 
+       choices emphasize security, and "magic constants" have clear rationales.
+
+       The same cannot be said of NIST curves, where the specific origins of certain 
+       constants are not described by the standards. And despite the emphasis on 
+       higher security, primitives are faster across-the-board than most 
+       implementations of the NIST standards.
+end
+
+source_dl  = http://download.libsodium.org/libsodium/releases/
+
+packages
+       package %{name}
+
+       package %{name}-devel
+               template DEVEL
+       end
+
+       package %{name}-debuginfo
+               template DEBUGINFO
+       end
+end
index 1c8fdd21d5be073f9dc04207f723b7a10eeb4a58..722be3c99a56e02b0259a29fc2b5cfe61f14a2aa 100644 (file)
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = libtool
-version    = 2.4.2
-release    = 2
+version    = 2.4.4
+release    = 1
 
 groups     = System/Libraries
 url        = http://www.gnu.org/software/libtool/
similarity index 51%
rename from ez-ipupdate/ez-ipupdate.nm
rename to libuecc/libuecc.nm
index 4d92b792a352546b5d9d588bd182e7b2885581db..5e17024361fb66386e4bcbd617f1e94dc9a252df 100644 (file)
@@ -3,30 +3,38 @@
 # Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
 ###############################################################################
 
-name       = ez-ipupdate
-version    = 3.0.11b8
+name       = libuecc
+version    = 4
 release    = 1
 
-groups     = Networking/Tools
-url        = http://www.gusnet.cx/proj/ez-ipupdate/
-license    = GPLv2+
-summary    = Client for Dynamic DNS Services.
+groups     = Development/Tools
+url        = http://git.universe-factory.net/libuecc
+license    = BSD
+summary    = Very small Elliptic Curve Cryptography library
 
 description
-       ez-ipupdate is a small utility for updating your host name for a lot of
-       dynamic DNS service provider.
+       %{summary}.
 end
 
-source_dl  =
+source_dl  = http://git.universe-factory.net/libuecc/snapshot/
+sources    = %{thisapp}.tar.xz
 
 build
-       configure_cmds
-               chmod -v 755 missing
+       requires
+               cmake >= 2.8.4-3
+       end
+
+       build
+               %{cmake} .
+               make %{PARALLELISMFLAGS}
        end
 end
 
 packages
        package %{name}
+
+       package %{name}-devel
+               template DEVEL
        end
 
        package %{name}-debuginfo
index 8c9129d62d72940b6201bfa915be87f4d30ea05d..12ab65fc8721aba62aebc7976d07584153523ff7 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = libusb
-version    = 1.0.18
+version    = 1.0.19
 release    = 1
 
 groups     = System/Libraries
diff --git a/man-db/man-db.cron b/man-db/man-db.cron
deleted file mode 100644 (file)
index c7d21ad..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#! /bin/bash
-
-renice +19 -p $$ >/dev/null 2>&1
-ionice -c3 -p $$ >/dev/null 2>&1
-
-LOCKFILE=/var/lock/man-db.lock
-
-# The lockfile is not meant to be perfect, it's just in case the
-# two man-db cron scripts get run close to each other to keep
-# them from stepping on each other's toes.  The worst that will
-# happen is that they will temporarily corrupt the database.
-[ -f $LOCKFILE ] && exit 0
-
-trap "{ rm -f $LOCKFILE ; exit 0; }" EXIT
-touch $LOCKFILE
-
-# Create/update the mandb database.
-mandb -q
-
-exit 0
index f1dfba0fec32f1fc3f02f9ff96816d59f340ce07..a36ea9863e7ecd93ff981056a0055c886ae3d625 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = man-db
-version    = 2.6.3
+version    = 2.7.1
 release    = 1
 
 groups     = Documentation
@@ -28,7 +28,9 @@ build
                gdbm-devel
                groff
                less
-               libpipeline-devel
+               libpipeline-devel >= 1.4.0
+               systemd-devel
+               zlib-devel
        end
 
        configure_options += \
@@ -42,9 +44,8 @@ build
                mv -v %{BUILDROOT}%{libdir}/man-db/libman{,db}-%{version}.so %{BUILDROOT}%{libdir}
                rm -rf %{BUILDROOT}%{libdir}/man-db/
 
-               # Create cron job to regularly update the man page database.
-               mkdir -pv %{BUILDROOT}%{sysconfdir}/cron.daily
-               install -v -m 755 %{DIR_SOURCE}/man-db.cron %{BUILDROOT}%{sysconfdir}/cron.daily
+               # Remove zsoelim man page which is not part of groff
+               rm -vf %{BUILDROOT}%{datadir}/man/man*/zsoelim.*
 
                # Create cache directory.
                mkdir -pv %{BUILDROOT}/var/cache/man
@@ -68,12 +69,23 @@ packages
 
                script posttransin
                        # Update the database right now.
-                       %{sysconfdir}/cron.daily/man-db.cron
+                       rm -rf /var/cache/man/*
+
+                       systemctl -q enable man-db.timer
+                       systemctl start man-db.timer
                end
 
                script posttransup
                        # Update the database right now.
-                       %{sysconfdir}/cron.daily/man-db.cron
+                       rm -rf /var/cache/man/*
+
+                       systemctl -q enable man-db.timer
+                       systemctl start man-db.timer
+               end
+
+               script preun
+                       systemctl stop man-db.timer
+                       systemctl -q disable man-db.timer
                end
        end
 
diff --git a/man-db/patches/1151558-switch-man-and-root-in-init-systemd-man-db.conf.patch b/man-db/patches/1151558-switch-man-and-root-in-init-systemd-man-db.conf.patch
new file mode 100644 (file)
index 0000000..b91e6d0
--- /dev/null
@@ -0,0 +1,19 @@
+From 1d523a44a5ad360c83bff362a625cc68cbe7f296 Mon Sep 17 00:00:00 2001
+From: Jan Chaloupka <jchaloup@redhat.com>
+Date: Wed, 15 Oct 2014 09:46:56 +0200
+Subject: [PATCH] switch man and root in init/systemd/man-db.conf
+
+---
+ init/systemd/man-db.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/init/systemd/man-db.conf b/init/systemd/man-db.conf
+index 10b27b4..43dd2ad 100644
+--- a/init/systemd/man-db.conf
++++ b/init/systemd/man-db.conf
+@@ -1 +1 @@
+-d /var/cache/man 2755 man root 1w
++d /var/cache/man 2755 root man 1w
+-- 
+1.9.3
+
diff --git a/man-db/systemd/man-db.service b/man-db/systemd/man-db.service
new file mode 100644 (file)
index 0000000..4adc297
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=Update man-db cache
+RequiresMountsFor=/var/cache/man
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/mandb --quiet
+Nice=19
+IOSchedulingClass=best-effort
+IOSchedulingPriority=7
diff --git a/man-db/systemd/man-db.timer b/man-db/systemd/man-db.timer
new file mode 100644 (file)
index 0000000..ce43df1
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=Daily man-db cache update
+
+[Timer]
+OnCalendar=daily
+AccuracySec=12h
+Persistent=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/miredo/client-hook b/miredo/client-hook
deleted file mode 100644 (file)
index 4ae8b0c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2012  IPFire Network Development 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 <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-# This is a proxy script which is started instead of the real helper.
-# However, the only thing this script does it to call the actual helper script.
-
-script="/usr/lib/network/helpers/miredo-helper"
-
-if [ -x "${script}" ]; then
-       exec ${script}
-fi
-
-echo "${script} could not be found." >&2
-exit 1
diff --git a/miredo/miredo.nm b/miredo/miredo.nm
deleted file mode 100644 (file)
index 3499993..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-###############################################################################
-# IPFire.org    - An Open Source Firewall Solution                            #
-# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
-###############################################################################
-
-name       = miredo
-version    = 1.2.5
-release    = 2
-
-groups     = Network/VPN
-url        = http://www.remlab.net/miredo/
-license    = GPLv2+
-summary    = Tunneling of IPv6 over UDP through NATs.
-
-description
-       Miredo is an implementation of the "Teredo: Tunneling IPv6 over UDP
-       through NATs" proposed Internet standard (RFC4380). It can serve
-       either as a Teredo client, a stand-alone Teredo relay, or a Teredo
-       server, please install the miredo-server or miredo-client aproprietly.
-       It is meant to provide IPv6 connectivity to hosts behind NAT
-       devices, most of which do not support IPv6, and not even
-       IPv6-over-IPv4 (including 6to4).
-end
-
-source_dl  = http://www.remlab.net/files/miredo/
-sources    = %{thisapp}.tar.xz
-
-build
-       requires
-               libcap-devel
-               shadow-utils
-               systemd-units
-       end
-
-       configure_options += \
-               --disable-static \
-               --disable-rpath \
-               --enable-miredo-user
-
-       install_cmds
-               install -v -m 755 %{DIR_SOURCE}/client-hook \
-                       %{BUILDROOT}%{sysconfdir}/miredo/client-hook
-
-               touch %{BUILDROOT}%{sysconfdir}/miredo/miredo-server.conf
-       end
-end
-
-packages
-       package %{name}-client
-               summary = This is the client part of miredo.
-
-               # There is not "miredo" package, so the -client
-               # package has an alias for it.
-               provides = miredo = %{thisver}
-
-               requires
-                       %{name}-libs = %{thisver}
-                       network
-               end
-
-               script postin
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script postup
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script postun
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               configfiles
-                       %{sysconfdir}/miredo/miredo.conf
-               end
-
-               files
-                       %{sysconfdir}/miredo/client-hook
-                       %{sysconfdir}/miredo/miredo.conf
-                       %{sbindir}/miredo
-                       %{unitdir}/miredo-client@.service
-                       %{mandir}/man?/miredo.*
-               end
-       end
-
-       package %{name}-server
-               summary = This is the server part of miredo.
-
-               requires = %{name}-libs = %{thisver}
-
-               script postin
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script postup
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-                       systemctl try-restart miredo-server.service >/dev/null 2>&1 || :
-               end
-
-               script preun
-                       systemctl --no-reload disable miredo-server.service >/dev/null 2>&1 || :
-                       systemctl stop miredo-server.service >/dev/null 2>&1 || :
-               end
-
-               script postun
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               configfiles
-                       %{sysconfdir}/miredo/miredo-server.conf
-               end
-
-               files
-                       %{bindir}/teredo-mire
-                       %{sbindir}/miredo-server
-                       %{sbindir}/miredo-checkconf
-                       %{unitdir}/miredo-server.service
-                       %{mandir}/man?/teredo-mire*
-                       %{mandir}/man?/miredo-server*
-                       %{mandir}/man?/miredo-checkconf*
-               end
-       end
-
-       package %{name}-libs
-               template LIBS
-
-               files += %{prefix}/lib/miredo
-
-               script prein
-                       getent group miredo >/dev/null || groupadd -r miredo
-                       getent passwd miredo >/dev/null || useradd -r -g miredo \
-                               -d %{sysconfdir}/miredo -s /sbin/nologin -c "Miredo Daemon" miredo
-               end
-       end
-
-       package %{name}-devel
-               template DEVEL
-
-               requires = %{name}-libs = %{thisver}
-       end
-
-       package %{name}-debuginfo
-               template DEBUGINFO
-       end
-end
diff --git a/miredo/patches/miredo-1.2.5-libteredo-header.patch b/miredo/patches/miredo-1.2.5-libteredo-header.patch
deleted file mode 100644 (file)
index 6d7dc38..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- miredo-1.2.5/libteredo/tunnel.h.orig       2012-05-30 14:59:00.742600216 +0000
-+++ miredo-1.2.5/libteredo/tunnel.h    2012-05-30 14:59:05.760760580 +0000
-@@ -32,6 +32,7 @@
- # define LIBTEREDO_TUNNEL_H
- # include <stdbool.h>
-+# include <stddef.h>
- # ifdef __cplusplus
- extern "C" {
diff --git a/miredo/patches/miredo-config-not-exec.patch b/miredo/patches/miredo-config-not-exec.patch
deleted file mode 100644 (file)
index c4c5a31..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -ru miredo-1.1.6/misc/client-hook.iproute miredo-1.1.6-new/misc/client-hook.iproute
---- miredo-1.1.6/misc/client-hook.iproute      2008-12-17 16:14:23.000000000 +0100
-+++ miredo-1.1.6-new/misc/client-hook.iproute  2009-06-28 01:24:22.000000000 +0200
-@@ -1,4 +1,4 @@
--#! /bin/sh
-+#!/bin/sh
- #
- # Miredo client hook script for Linux/iproute2
- # Copyright © 2007 Rémi Denis-Courmont.
-diff -ru miredo-1.1.6/misc/miredo.conf-in miredo-1.1.6-new/misc/miredo.conf-in
---- miredo-1.1.6/misc/miredo.conf-in   2009-04-09 18:31:30.000000000 +0200
-+++ miredo-1.1.6-new/misc/miredo.conf-in       2009-06-28 01:24:29.000000000 +0200
-@@ -1,4 +1,3 @@
--#! @sbindir@/miredo -f -c
- #
- # Sample configuration file for Miredo
diff --git a/miredo/patches/reread-resolv-before-resolv-ipv4.patch b/miredo/patches/reread-resolv-before-resolv-ipv4.patch
deleted file mode 100644 (file)
index 4d7d9e1..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-@@ -, +, @@ 
- libteredo/maintain.c |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
---- a/libteredo/maintain.c     
-+++ a/libteredo/maintain.c     
-@@ -262,6 +262,9 @@ void maintenance_thread (teredo_maintenance *m)
-               /* Resolve server IPv4 addresses */
-               while (server_ip == 0)
-               {
-+                      /* Reread resolv.conf, it could have changed */
-+                      res_init();
-+
-                       /* FIXME: mutex kept while resolving - very bad */
-                       int val = getipv4byname (m->server, &server_ip);
-                       gettime (&deadline);
-
diff --git a/miredo/systemd/miredo-client@.service b/miredo/systemd/miredo-client@.service
deleted file mode 100644 (file)
index b55e214..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Miredo - Teredo IPv6 Tunneling Client For Unix on %I
-BindTo=dev-%I.device
-After=dev-%I.device
-
-[Service]
-ExecStartPre=/usr/lib/network/helpers/miredo-config-helper create %I
-ExecStart=/usr/sbin/miredo -f -c /run/network/miredo/%I/client.conf -p /run/network/miredo/%I/client.pid
-ExecStopPost=/usr/lib/network/helpers/miredo-config-helper remove %I
-Restart=always
-UtmpIdentifier=%I
-KillMode=process
diff --git a/miredo/systemd/miredo-server.service b/miredo/systemd/miredo-server.service
deleted file mode 100644 (file)
index e6d4d44..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Miredo - Teredo IPv6 tunneling Server For Unix
-After=network.target
-
-[Service]
-Type=forking
-PIDFile=/run/miredo-server.pid
-ExecStart=/usr/sbin/miredo-server
-
-[Install]
-WantedBy=multi-user.target
index 148cfa40c427ec61531cb5c01a2558bcab875bf1..17e7c04ec9808e5dc4cca6c2889aaa3d86bb466a 100644 (file)
@@ -6,7 +6,7 @@
 name       = network
 epoch      = 1
 version    = 006
-release    = 1
+release    = 2
 arch       = noarch
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
@@ -52,7 +52,6 @@ packages
                        iproute2
                        iw
                        man
-                       miredo-client
                        ppp >= 2.4.5-4
                        radvd
                        rp-pppoe
index 03030952fe63984c1463939ea8abfd0eb1582897..2f1098d0f5fe0bbdf47a0190354c526f3fab397d 100644 (file)
@@ -5,8 +5,8 @@
 
 name       = nftables
 version    = 0.100
-snapshot   = 20140412
-release    = 2.%{snapshot}
+snapshot   = 20141226
+release    = 3.%{snapshot}
 thisapp    = %{name}-%{snapshot}
 
 groups     = Networking/Tools
@@ -33,7 +33,7 @@ build
                gmp-devel
                libtool
                libmnl-devel
-               libnftnl-devel
+               libnftnl-devel >= 1.0.3
                readline-devel
        end
 
diff --git a/nftables/patches/nftables-20140118-db2x_docbook2man.patch b/nftables/patches/nftables-20140118-db2x_docbook2man.patch
deleted file mode 100644 (file)
index efec20d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-diff -Nur nftables-20140118.orig/configure nftables-20140118/configure
---- nftables-20140118.orig/configure   2014-01-17 22:28:04.000000000 -0700
-+++ nftables-20140118/configure        2014-01-18 15:42:10.427000000 -0700
-@@ -3310,8 +3310,8 @@
-   rm -f conftest.sed
--# Extract the first word of "docbook2x-man", so it can be a program name with args.
--set dummy docbook2x-man; ac_word=$2
-+# Extract the first word of "db2x_docbook2man", so it can be a program name with args.
-+set dummy db2x_docbook2man; ac_word=$2
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
- $as_echo_n "checking for $ac_word... " >&6; }
- if test "${ac_cv_prog_CONFIG_MAN+set}" = set; then :
-@@ -3350,8 +3350,8 @@
- if test "$CONFIG_MAN" != "y"
- then
--      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: docbookx2-man not found, no manpages will be built" >&5
--$as_echo "$as_me: WARNING: docbookx2-man not found, no manpages will be built" >&2;}
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: db2x_docbook2man not found, no manpages will be built" >&5
-+$as_echo "$as_me: WARNING: db2x_docbook2man not found, no manpages will be built" >&2;}
- fi
- # Extract the first word of "db2pdf", so it can be a program name with args.
-diff -Nur nftables-20140118.orig/configure.ac nftables-20140118/configure.ac
---- nftables-20140118.orig/configure.ac        2014-01-17 22:28:00.000000000 -0700
-+++ nftables-20140118/configure.ac     2014-01-18 15:42:24.483000000 -0700
-@@ -25,10 +25,10 @@
- AC_PROG_INSTALL
- AC_PROG_SED
--AC_CHECK_PROG(CONFIG_MAN, docbook2x-man, y, n)
-+AC_CHECK_PROG(CONFIG_MAN, db2x_docbook2man, y, n)
- if test "$CONFIG_MAN" != "y"
- then
--      AC_MSG_WARN([docbookx2-man not found, no manpages will be built])
-+      AC_MSG_WARN([db2x_docbook2man not found, no manpages will be built])
- fi
- AC_CHECK_PROG(CONFIG_PDF, db2pdf, y, n)
-diff -Nur nftables-20140118.orig/Makefile.rules.in nftables-20140118/Makefile.rules.in
---- nftables-20140118.orig/Makefile.rules.in   2014-01-17 22:28:00.000000000 -0700
-+++ nftables-20140118/Makefile.rules.in        2014-01-18 15:27:45.759000000 -0700
-@@ -37,7 +37,7 @@
- %.8:                  %.xml   $(makedeps)
-                       @echo -e "  MAN\t\t$@"
--                      (cd $(SUBDIR); docbook2x-man ../$<)
-+                      (cd $(SUBDIR); db2x_docbook2man ../$<)
- %.pdf:                        %.xml   $(makedeps)
-                       @echo -e "  PDF\t\t$@"
diff --git a/noip/noip.nm b/noip/noip.nm
deleted file mode 100644 (file)
index ff23279..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-###############################################################################
-# IPFire.org    - An Open Source Firewall Solution                            #
-# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
-###############################################################################
-
-name       = noip
-version    = 2.1.7
-release    = 1
-
-groups     = System/Daemons
-url        = http://www.no-ip.com
-license    = GPLv2+
-summary    = A dynamic DNS update client.
-
-description
-       Keep your current IP address in sync with your No-IP host or domain
-       with this Dynamic Update Client (DUC). The client continually checks
-       for IP address changes in the background and automatically updates
-       the DNS at No-IP whenever it changes.
-end
-
-source_dl  =
-
-build
-       make_build_targets +=\
-               PREFIX=/usr \
-               CONFDIR=/etc
-
-       install
-               mkdir -pv %{BUILDROOT}/usr/bin
-               cp noip2 %{BUILDROOT}/usr/bin/noip2
-       end
-end
-
-packages
-       package %{name}
-
-       package %{name}-debuginfo
-               template DEBUGINFO
-       end
-end
index 9c8bb566698de4e88b2f04e072e094fb86e71be9..ba72e629398e6ea846dc1eb838af757baff19646 100644 (file)
@@ -4,9 +4,9 @@
 ###############################################################################
 
 name       = ntp
-version    = %{ver_major}.6p5
+version    = %{ver_major}.8
 ver_major  = 4.2
-release    = 2
+release    = 1
 
 groups     = System/Daemons
 url        = http://www.ntp.org/
@@ -61,9 +61,6 @@ build
 
                make ${PARALLELISMFLAGS}
 
-               sed -i 's|$ntpq = "ntpq"|$ntpq = "%{sbindir}/ntpq"|' scripts/ntptrace
-               sed -i 's|ntpq -c |%{sbindir}/ntpq -c |' scripts/ntp-wait
-
                # Build ntpstat.
                make -C ntpstat-0.2
        end
@@ -191,39 +188,6 @@ packages
                end
        end
 
-       package %{name}-perl
-               summary = NTP utilities written in Perl.
-               description
-                       This package contains Perl scripts ntp-wait and ntptrace.
-               end
-               groups = Applications/System
-
-               requires
-                       %{name} = %{thisver}
-               end
-
-               files
-                       %{sbindir}/ntp-wait
-                       %{sbindir}/ntptrace
-                       %{mandir}/man8/ntp-wait.8*
-                       %{mandir}/man8/ntptrace.8*
-                       %{unitdir}/ntp-wait.service
-               end
-
-               script preun
-                       systemctl --no-reload disable ntp-wait.service >/dev/null 2>&1 || :
-                       systemctl stop ntp-wait.service >/dev/null 2>&1 || :
-               end
-
-               script postun
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script postup
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-       end
-
        package %{name}-devel
                template DEVEL
        end
diff --git a/ntp/patches/ntp-4.2.4p7-getprecision.patch b/ntp/patches/ntp-4.2.4p7-getprecision.patch
deleted file mode 100644 (file)
index ecf6def..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ntp-4.2.4p7/ntpd/ntp_proto.c.getprecision ntp-4.2.4p7/ntpd/ntp_proto.c
---- ntp-4.2.4p7/ntpd/ntp_proto.c.getprecision  2009-09-29 14:16:22.000000000 +0200
-+++ ntp-4.2.4p7/ntpd/ntp_proto.c       2009-09-29 14:18:13.000000000 +0200
-@@ -3099,7 +3099,7 @@ peer_unfit(
- /*
-  * Find the precision of this particular machine
-  */
--#define MINSTEP 100e-9                /* minimum clock increment (s) */
-+#define MINSTEP 10e-9         /* minimum clock increment (s) */
- #define MAXSTEP 20e-3         /* maximum clock increment (s) */
- #define MINLOOPS 5            /* minimum number of step samples */
diff --git a/ntp/patches/ntp-4.2.6p1-cmsgalign.patch b/ntp/patches/ntp-4.2.6p1-cmsgalign.patch
deleted file mode 100644 (file)
index 0e4b8cc..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up ntp-4.2.6p1/ntpd/ntp_io.c.cmsgalign ntp-4.2.6p1/ntpd/ntp_io.c
---- ntp-4.2.6p1/ntpd/ntp_io.c.cmsgalign        2010-03-04 18:28:53.000000000 +0100
-+++ ntp-4.2.6p1/ntpd/ntp_io.c  2010-03-04 18:30:34.000000000 +0100
-@@ -3194,8 +3194,8 @@ read_network_packet(
-       msghdr.msg_namelen    = fromlen;
-       msghdr.msg_iov        = &iovec;
-       msghdr.msg_iovlen     = 1;
--      msghdr.msg_control    = (void *)&control;
--      msghdr.msg_controllen = sizeof(control);
-+      msghdr.msg_control    = (void *)((long)(control + 7) & -8); /* align to 8 bytes */
-+      msghdr.msg_controllen = sizeof(control) - 8;
-       msghdr.msg_flags      = 0;
-       rb->recv_length       = recvmsg(fd, &msghdr, 0);
- #endif
diff --git a/ntp/patches/ntp-4.2.6p1-linkfastmath.patch b/ntp/patches/ntp-4.2.6p1-linkfastmath.patch
deleted file mode 100644 (file)
index 5a859d3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ntp-4.2.6p1/ntpd/Makefile.in.linkfastmath ntp-4.2.6p1/ntpd/Makefile.in
---- ntp-4.2.6p1/ntpd/Makefile.in.linkfastmath  2010-02-09 11:19:25.000000000 +0100
-+++ ntp-4.2.6p1/ntpd/Makefile.in       2010-03-03 16:57:40.000000000 +0100
-@@ -365,7 +365,7 @@ man_MANS = $(srcdir)/ntpd.1
- # sqrt                                ntp_control.o
- # floor                               refclock_wwv.o
- # which are (usually) provided by -lm.
--ntpd_LDADD = $(LDADD) $(LIBOPTS_LDADD) ../libntp/libntp.a -lm @LCRYPTO@ @LSCF@
-+ntpd_LDADD = $(LDADD) $(LIBOPTS_LDADD) ../libntp/libntp.a -lm -ffast-math @LCRYPTO@ @LSCF@
- ntpdsim_LDADD = $(LDADD) $(LIBOPTS_LDADD) ../libntp/libntpsim.a -lm @LCRYPTO@ @LSCF@
- ntpdsim_CFLAGS = $(CFLAGS) -DSIM
- check_y2k_LDADD = $(LDADD) ../libntp/libntp.a
diff --git a/ntp/patches/ntp-4.2.6p1-logdefault.patch b/ntp/patches/ntp-4.2.6p1-logdefault.patch
deleted file mode 100644 (file)
index ae816b7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ntp-4.2.6p1/ntpd/ntp_config.c.logdefault ntp-4.2.6p1/ntpd/ntp_config.c
---- ntp-4.2.6p1/ntpd/ntp_config.c.logdefault   2010-01-24 11:01:45.000000000 +0100
-+++ ntp-4.2.6p1/ntpd/ntp_config.c      2010-03-09 17:44:09.000000000 +0100
-@@ -3794,7 +3794,7 @@ getconfig(
- #endif /* SYS_WINNT */
-       res_fp = NULL;
--      ntp_syslogmask = NLOG_SYNCMASK; /* set more via logconfig */
-+      ntp_syslogmask = NLOG_SYNCMASK | NLOG_EVENT | NLOG_STATUS; /* set more via logconfig */
-       /*
-        * install a non default variable with this daemon version
diff --git a/ntp/patches/ntp-4.2.6p1-retcode.patch b/ntp/patches/ntp-4.2.6p1-retcode.patch
deleted file mode 100644 (file)
index 6d676d2..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ntp-4.2.6p1/ntpd/ntp_proto.c.retcode ntp-4.2.6p1/ntpd/ntp_proto.c
---- ntp-4.2.6p1/ntpd/ntp_proto.c.retcode       2009-12-09 08:36:36.000000000 +0100
-+++ ntp-4.2.6p1/ntpd/ntp_proto.c       2010-03-03 16:06:00.000000000 +0100
-@@ -269,7 +269,7 @@ transmit(
-                                           "ntpd: no servers found");
-                                       printf(
-                                           "ntpd: no servers found\n");
--                                      exit (0);
-+                                      exit (1);
-                               }
-                       }
-               }
diff --git a/ntp/patches/ntp-4.2.6p1-sleep.patch b/ntp/patches/ntp-4.2.6p1-sleep.patch
deleted file mode 100644 (file)
index 577ef26..0000000
+++ /dev/null
@@ -1,495 +0,0 @@
-diff -up ntp-4.2.6p1/include/ntp_refclock.h.sleep ntp-4.2.6p1/include/ntp_refclock.h
---- ntp-4.2.6p1/include/ntp_refclock.h.sleep   2009-12-09 08:36:35.000000000 +0100
-+++ ntp-4.2.6p1/include/ntp_refclock.h 2010-03-10 19:27:46.000000000 +0100
-@@ -260,6 +260,7 @@ extern     void    refclock_control (sockaddr_u
-                                   struct refclockstat *);
- extern        int     refclock_open   (char *, u_int, u_int);
- extern        int     refclock_setup  (int, u_int, u_int);
-+extern        int     refclock_timer_needed   (struct peer *);
- extern        void    refclock_timer  (struct peer *);
- extern        void    refclock_transmit (struct peer *);
- extern        int     refclock_ioctl  (int, u_int);
-diff -up ntp-4.2.6p1/include/ntp_stdlib.h.sleep ntp-4.2.6p1/include/ntp_stdlib.h
---- ntp-4.2.6p1/include/ntp_stdlib.h.sleep     2009-12-09 08:36:35.000000000 +0100
-+++ ntp-4.2.6p1/include/ntp_stdlib.h   2010-03-10 19:27:46.000000000 +0100
-@@ -116,6 +116,7 @@ extern     const char * FindConfig (const ch
- extern        void    signal_no_reset (int, RETSIGTYPE (*func)(int));
- extern        void    getauthkeys     (const char *);
-+extern        int     auth_agekeys_needed (void);
- extern        void    auth_agekeys    (void);
- extern        void    rereadkeys      (void);
-diff -up ntp-4.2.6p1/include/ntpd.h.sleep ntp-4.2.6p1/include/ntpd.h
---- ntp-4.2.6p1/include/ntpd.h.sleep   2009-12-09 08:36:35.000000000 +0100
-+++ ntp-4.2.6p1/include/ntpd.h 2010-03-10 19:27:46.000000000 +0100
-@@ -112,8 +112,10 @@ extern    void    block_io_and_alarm      (void);
- /* ntp_loopfilter.c */
- extern        void    init_loopfilter(void);
- extern        int     local_clock(struct peer *, double);
--extern        void    adj_host_clock(void);
-+extern        int     adj_host_clock_needed(void);
-+extern        void    adj_host_clock(int);
- extern        void    loop_config(int, double);
-+extern        int     huffpuff_enabled(void);
- extern        void    huffpuff(void);
- extern        u_long  sys_clocktime;
- extern        u_int   sys_tai;
-@@ -219,6 +221,8 @@ extern     void    hack_restrict   (int, sockaddr
- /* ntp_timer.c */
- extern        void    init_timer      (void);
- extern        void    reinit_timer    (void);
-+extern        double  get_timeout     (l_fp *);
-+extern        int     timer_elapsed   (l_fp, int);
- extern        void    timer           (void);
- extern        void    timer_clr_stats (void);
- extern  void    timer_interfacetimeout (u_long);
-diff -up ntp-4.2.6p1/libntp/authkeys.c.sleep ntp-4.2.6p1/libntp/authkeys.c
---- ntp-4.2.6p1/libntp/authkeys.c.sleep        2009-12-09 08:36:35.000000000 +0100
-+++ ntp-4.2.6p1/libntp/authkeys.c      2010-03-10 19:27:46.000000000 +0100
-@@ -445,6 +445,25 @@ auth_delkeys(void)
-       }
- }
-+int
-+auth_agekeys_needed(void) {
-+      struct savekey *sk;
-+      int i;
-+
-+      if (authnumkeys > 20)
-+              return 1;
-+
-+      for (i = 0; i < HASHSIZE; i++) {
-+              sk = key_hash[i];
-+              while (sk != 0) {
-+                      if (sk->lifetime > 0)
-+                              return 1;
-+                      sk = sk->next;
-+              }
-+      }
-+      return 0;
-+}
-+
- /*
-  * auth_agekeys - delete keys whose lifetimes have expired
-  */
-diff -up ntp-4.2.6p1/ntpd/ntp_loopfilter.c.sleep ntp-4.2.6p1/ntpd/ntp_loopfilter.c
---- ntp-4.2.6p1/ntpd/ntp_loopfilter.c.sleep    2009-12-09 08:36:36.000000000 +0100
-+++ ntp-4.2.6p1/ntpd/ntp_loopfilter.c  2010-03-10 19:27:46.000000000 +0100
-@@ -677,6 +677,13 @@ local_clock(
- #endif /* LOCKCLOCK */
- }
-+int
-+adj_host_clock_needed(void)
-+{
-+      return !(!ntp_enable || mode_ntpdate || (pll_control &&
-+          kern_enable));
-+}
-+ 
- /*
-  * adj_host_clock - Called once every second to update the local clock.
-@@ -686,7 +693,7 @@ local_clock(
-  */
- void
- adj_host_clock(
--      void
-+      int time_elapsed
-       )
- {
-       double  adjustment;
-@@ -698,7 +705,7 @@ adj_host_clock(
-        * since the poll interval can exceed one day, the old test
-        * would be counterproductive.
-        */
--      sys_rootdisp += clock_phi;
-+      sys_rootdisp += clock_phi * time_elapsed;
- #ifndef LOCKCLOCK
-       /*
-@@ -819,6 +826,12 @@ set_freq(
- #endif /* KERNEL_PLL */
- }
-+int
-+huffpuff_enabled(void)
-+{
-+      return sys_huffpuff != NULL;
-+}
-+
- /*
-  * huff-n'-puff filter
-  */
-diff -up ntp-4.2.6p1/ntpd/ntp_refclock.c.sleep ntp-4.2.6p1/ntpd/ntp_refclock.c
---- ntp-4.2.6p1/ntpd/ntp_refclock.c.sleep      2009-12-09 08:36:36.000000000 +0100
-+++ ntp-4.2.6p1/ntpd/ntp_refclock.c    2010-03-10 19:27:46.000000000 +0100
-@@ -268,6 +268,21 @@ refclock_unpeer(
- }
-+int
-+refclock_timer_needed(
-+      struct peer *peer       /* peer structure pointer */
-+      )
-+{
-+      u_char clktype;
-+      int unit;
-+
-+      clktype = peer->refclktype;
-+      unit = peer->refclkunit;
-+      if (refclock_conf[clktype]->clock_timer != noentry)
-+              return 1;
-+      return 0;
-+}
-+
- /*
-  * refclock_timer - called once per second for housekeeping.
-  */
-diff -up ntp-4.2.6p1/ntpd/ntp_timer.c.sleep ntp-4.2.6p1/ntpd/ntp_timer.c
---- ntp-4.2.6p1/ntpd/ntp_timer.c.sleep 2009-12-09 08:36:35.000000000 +0100
-+++ ntp-4.2.6p1/ntpd/ntp_timer.c       2010-03-11 15:23:59.000000000 +0100
-@@ -56,7 +56,6 @@ static       u_long adjust_timer;    /* second ti
- static        u_long stats_timer;     /* stats timer */
- static        u_long huffpuff_timer;  /* huff-n'-puff timer */
- u_long        leapsec;                /* leapseconds countdown */
--l_fp  sys_time;               /* current system time */
- #ifdef OPENSSL
- static        u_long revoke_timer;    /* keys revoke timer */
- static        u_long keys_timer;      /* session key timer */
-@@ -74,6 +73,12 @@ volatile u_long alarm_overflow;
- #define       DAY     (24 * HOUR)
- u_long current_time;          /* seconds since startup */
-+l_fp timer_base;
-+int time_elapsed;
-+
-+#define TIMEOUT_TS_SIZE 2
-+l_fp timeout_ts[TIMEOUT_TS_SIZE];
-+unsigned int timeout_ts_index;
- /*
-  * Stats.  Number of overflows and number of calls to transmit().
-@@ -110,6 +115,8 @@ static     RETSIGTYPE alarming (int);
- void 
- reinit_timer(void)
- {
-+      get_systime(&timer_base);
-+#if 0
- #if !defined(SYS_WINNT) && !defined(VMS)
- #  if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME)
-       timer_gettime(ntpd_timerid, &itimer);
-@@ -143,6 +150,7 @@ reinit_timer(void)
-       setitimer(ITIMER_REAL, &itimer, (struct itimerval *)0);
- #  endif
- # endif /* VMS */
-+#endif
- }
- /*
-@@ -165,6 +173,12 @@ init_timer(void)
-       timer_xmtcalls = 0;
-       timer_timereset = 0;
-+      get_systime(&timer_base);
-+
-+      for (timeout_ts_index = 0; timeout_ts_index < TIMEOUT_TS_SIZE; timeout_ts_index++)
-+              L_CLR(&timeout_ts[timeout_ts_index]);
-+      timeout_ts_index = 0;
-+#if 0
- #if !defined(SYS_WINNT)
-       /*
-        * Set up the alarm interrupt.  The first comes 2**EVENT_TIMEOUT
-@@ -226,6 +240,7 @@ init_timer(void)
-       }
- #endif /* SYS_WINNT */
-+#endif
- }
- #if defined(SYS_WINNT)
-@@ -236,6 +251,104 @@ get_timer_handle(void)
- }
- #endif
-+double
-+get_timeout(l_fp *now)
-+{
-+      register struct peer *peer, *next_peer;
-+      u_int   n;
-+      double r;
-+      int next;
-+      l_fp ts;
-+
-+      ts = *now;
-+      L_SUB(&ts, &timeout_ts[timeout_ts_index]);
-+      timeout_ts[timeout_ts_index] = *now;
-+      timeout_ts_index = (timeout_ts_index + 1) % TIMEOUT_TS_SIZE;
-+
-+      /* don't waste CPU time if called too frequently */
-+      if (ts.l_ui == 0) {
-+              next = 1;
-+              goto finish;
-+      }
-+
-+      next = current_time + HOUR;
-+
-+      if (adj_host_clock_needed()) {
-+              next = 1;
-+              goto finish;
-+      }
-+      for (n = 0; n < NTP_HASH_SIZE; n++) {
-+              for (peer = peer_hash[n]; peer != 0; peer = next_peer) {
-+                      next_peer = peer->next;
-+#ifdef REFCLOCK
-+                      if (peer->flags & FLAG_REFCLOCK && refclock_timer_needed(peer)) {
-+                              next = 1;
-+                              goto finish;
-+                      }
-+#endif /* REFCLOCK */
-+                      if (peer->action)
-+                             next = min(next, peer->nextaction);
-+                      next = min(next, peer->nextdate);
-+              }
-+      }
-+
-+      if (leapsec > 0)
-+              next = min(next, leapsec);
-+
-+      if (huffpuff_enabled())
-+              next = min(next, huffpuff_timer);
-+
-+#ifdef OPENSSL
-+      if (auth_agekeys_needed())
-+              next = min(next, keys_timer);
-+      if (sys_leap != LEAP_NOTINSYNC)
-+              next = min(next, revoke_timer);
-+#endif /* OPENSSL */
-+
-+      if (interface_interval)
-+              next = min(next, interface_timer);
-+
-+      next = min(next, stats_timer);
-+
-+      next -= current_time;
-+      if (next <= 0)
-+              next = 1;
-+finish:
-+      ts = timer_base;
-+      ts.l_ui += next;
-+      L_SUB(&ts, now);
-+      LFPTOD(&ts, r);
-+#ifdef DEBUG 
-+      DPRINTF(2, ("timer: timeout %f\n", r));
-+#endif
-+
-+      return r;
-+}
-+
-+int
-+timer_elapsed(l_fp now, int timeout)
-+{
-+      int elapsed;
-+
-+      L_SUB(&now, &timer_base);
-+      elapsed = now.l_i;
-+      if (elapsed < 0 || elapsed > timeout + 10) {
-+#ifdef DEBUG 
-+              DPRINTF(2, ("timer: unexpected time jump\n"));
-+#endif
-+              elapsed = 0;
-+              reinit_timer();
-+
-+      }
-+      timer_base.l_ui += elapsed;
-+      time_elapsed += elapsed;
-+      current_time += elapsed;
-+#ifdef DEBUG 
-+      DPRINTF(2, ("timer: time elapsed %d\n", time_elapsed));
-+#endif
-+      return time_elapsed;
-+}
-+
- /*
-  * timer - event timer
-  */
-@@ -251,11 +364,9 @@ timer(void)
-        * kiss-o'-deatch function and implement the association
-        * polling function..
-        */
--      current_time++;
--      get_systime(&sys_time);
-       if (adjust_timer <= current_time) {
--              adjust_timer += 1;
--              adj_host_clock();
-+              adjust_timer += time_elapsed;
-+              adj_host_clock(time_elapsed);
- #ifdef REFCLOCK
-               for (n = 0; n < NTP_HASH_SIZE; n++) {
-                       for (peer = peer_hash[n]; peer != 0; peer = next_peer) {
-@@ -286,7 +397,7 @@ timer(void)
-                        * 128 s or less.
-                        */
-                       if (peer->throttle > 0)
--                              peer->throttle--;
-+                              peer->throttle -= min(peer->throttle, time_elapsed);
-                       if (peer->nextdate <= current_time) {
- #ifdef REFCLOCK
-                               if (peer->flags & FLAG_REFCLOCK)
-@@ -333,7 +444,7 @@ timer(void)
-        * set.
-        */
-       if (leapsec > 0) {
--              leapsec--;
-+              leapsec -= min(leapsec, time_elapsed);
-               if (leapsec == 0) {
-                       sys_leap = LEAP_NOWARNING;
-                       sys_tai = leap_tai;
-@@ -398,11 +509,15 @@ timer(void)
-        * Finally, write hourly stats.
-        */
-       if (stats_timer <= current_time) {
-+              l_fp sys_time;
-+              get_systime(&sys_time);
-               stats_timer += HOUR;
-               write_stats();
-               if (sys_tai != 0 && sys_time.l_ui > leap_expire)
-                       report_event(EVNT_LEAPVAL, NULL, NULL);
-       }
-+
-+      time_elapsed = 0;
- }
-diff -up ntp-4.2.6p1/ntpd/ntpd.c.sleep ntp-4.2.6p1/ntpd/ntpd.c
---- ntp-4.2.6p1/ntpd/ntpd.c.sleep      2010-03-10 19:27:46.000000000 +0100
-+++ ntp-4.2.6p1/ntpd/ntpd.c    2010-03-10 19:27:46.000000000 +0100
-@@ -195,8 +195,6 @@ extern const char *Version;
- char const *progname;
--int was_alarmed;
--
- #ifdef DECL_SYSCALL
- /*
-  * We put this here, since the argument profile is syscall-specific
-@@ -1033,7 +1031,7 @@ getgroup:
- #else /* normal I/O */
-       BLOCK_IO_AND_ALARM();
--      was_alarmed = 0;
-+
-       for (;;)
-       {
- # if !defined(HAVE_SIGNALED_IO)
-@@ -1041,42 +1039,39 @@ getgroup:
-               extern int maxactivefd;
-               fd_set rdfdes;
--              int nfound;
--# endif
-+              int nfound, time_elapsed;
--              if (alarm_flag)         /* alarmed? */
--              {
--                      was_alarmed = 1;
--                      alarm_flag = 0;
--              }
-+              time_elapsed = 0;
-+# endif
--              if (!was_alarmed && has_full_recv_buffer() == ISC_FALSE)
-+              if (has_full_recv_buffer() == ISC_FALSE)
-               {
-                       /*
-                        * Nothing to do.  Wait for something.
-                        */
- # ifndef HAVE_SIGNALED_IO
-+                      double timeout;
-+
-                       rdfdes = activefds;
--#  if defined(VMS) || defined(SYS_VXWORKS)
--                      /* make select() wake up after one second */
--                      {
--                              struct timeval t1;
-+                      get_systime(&now);
-+                      timeout = get_timeout(&now);
--                              t1.tv_sec = 1; t1.tv_usec = 0;
-+                      if (timeout > 0.0) {
-+                              struct timeval t1;
-+
-+                              t1.tv_sec = timeout;
-+                              t1.tv_usec = (timeout - t1.tv_sec) * 1000000;
-                               nfound = select(maxactivefd+1, &rdfdes, (fd_set *)0,
-                                               (fd_set *)0, &t1);
--                      }
--#  else
--                      nfound = select(maxactivefd+1, &rdfdes, (fd_set *)0,
--                                      (fd_set *)0, (struct timeval *)0);
--#  endif /* VMS */
--                      if (nfound > 0)
--                      {
--                              l_fp ts;
-+                              get_systime(&now);
-+                      } else
-+                              nfound = 0;
--                              get_systime(&ts);
-+                      time_elapsed = timer_elapsed(now, timeout);
--                              (void)input_handler(&ts);
-+                      if (nfound > 0)
-+                      {
-+                              (void)input_handler(&now);
-                       }
-                       else if (nfound == -1 && errno != EINTR)
-                               msyslog(LOG_ERR, "select() error: %m");
-@@ -1085,17 +1080,13 @@ getgroup:
-                               msyslog(LOG_DEBUG, "select(): nfound=%d, error: %m", nfound);
- #  endif /* DEBUG */
- # else /* HAVE_SIGNALED_IO */
-+#  error not supported by sleep patch
-                       wait_for_signal();
- # endif /* HAVE_SIGNALED_IO */
--                      if (alarm_flag)         /* alarmed? */
--                      {
--                              was_alarmed = 1;
--                              alarm_flag = 0;
--                      }
-               }
--              if (was_alarmed)
-+              if (time_elapsed > 0)
-               {
-                       UNBLOCK_IO_AND_ALARM();
-                       /*
-@@ -1103,7 +1094,6 @@ getgroup:
-                        * to process expiry.
-                        */
-                       timer();
--                      was_alarmed = 0;
-                       BLOCK_IO_AND_ALARM();
-               }
-@@ -1121,19 +1111,8 @@ getgroup:
-                       rbuf = get_full_recv_buffer();
-                       while (rbuf != NULL)
-                       {
--                              if (alarm_flag)
--                              {
--                                      was_alarmed = 1;
--                                      alarm_flag = 0;
--                              }
-                               UNBLOCK_IO_AND_ALARM();
--                              if (was_alarmed)
--                              {       /* avoid timer starvation during lengthy I/O handling */
--                                      timer();
--                                      was_alarmed = 0;
--                              }
--
-                               /*
-                                * Call the data procedure to handle each received
-                                * packet.
diff --git a/ntp/patches/ntp-4.2.6p2-multiopts.patch b/ntp/patches/ntp-4.2.6p2-multiopts.patch
deleted file mode 100644 (file)
index c4ea459..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up ntp-4.2.6p2/ntpd/ntpd-opts.c.multiopts ntp-4.2.6p2/ntpd/ntpd-opts.c
---- ntp-4.2.6p2/ntpd/ntpd-opts.c.multiopts     2010-09-15 17:37:10.000000000 +0200
-+++ ntp-4.2.6p2/ntpd/ntpd-opts.c       2010-10-01 13:28:49.000000000 +0200
-@@ -755,7 +755,7 @@ static tOptDesc optDesc[ OPTION_CT ] = {
-   {  /* entry idx, value */ 18, VALUE_OPT_PIDFILE,
-      /* equiv idx, value */ 18, VALUE_OPT_PIDFILE,
-      /* equivalenced to  */ NO_EQUIVALENT,
--     /* min, max, act ct */ 0, 1, 0,
-+     /* min, max, act ct */ 0, 2, 0,
-      /* opt state flags  */ PIDFILE_FLAGS, 0,
-      /* last opt argumnt */ { NULL },
-      /* arg list/cookie  */ NULL,
-@@ -839,7 +839,7 @@ static tOptDesc optDesc[ OPTION_CT ] = {
-   {  /* entry idx, value */ 25, VALUE_OPT_USER,
-      /* equiv idx, value */ 25, VALUE_OPT_USER,
-      /* equivalenced to  */ NO_EQUIVALENT,
--     /* min, max, act ct */ 0, 1, 0,
-+     /* min, max, act ct */ 0, 2, 0,
-      /* opt state flags  */ USER_FLAGS, 0,
-      /* last opt argumnt */ { NULL },
-      /* arg list/cookie  */ NULL,
diff --git a/ntp/patches/ntp-4.2.6p3-bcast.patch b/ntp/patches/ntp-4.2.6p3-bcast.patch
deleted file mode 100644 (file)
index 57581f3..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-diff -up ntp-4.2.6p3/ntpd/ntp_io.c.bcast ntp-4.2.6p3/ntpd/ntp_io.c
---- ntp-4.2.6p3/ntpd/ntp_io.c.bcast    2010-12-25 10:40:36.000000000 +0100
-+++ ntp-4.2.6p3/ntpd/ntp_io.c  2011-01-05 17:46:13.820049150 +0100
-@@ -151,6 +151,8 @@ int ninterfaces;                   /* Total number of in
- int disable_dynamic_updates;          /* scan interfaces once only */
-+static int pktinfo_status = 0;                /* is IP_PKTINFO on wildipv4 iface enabled? */
-+
- #ifdef REFCLOCK
- /*
-  * Refclock stuff.    We keep a chain of structures with data concerning
-@@ -2254,6 +2256,17 @@ set_reuseaddr(
- #endif /* ! SO_EXCLUSIVEADDRUSE */
- }
-+static void
-+set_pktinfo(int flag)
-+{
-+      if (wildipv4 == NULL)
-+              return;
-+      if (setsockopt(wildipv4->fd, SOL_IP, IP_PKTINFO, &flag, sizeof (flag))) {
-+              msyslog(LOG_ERR, "set_pktinfo: setsockopt(IP_PKTINFO, %s) failed: %m", flag ? "on" : "off");
-+      } else
-+              pktinfo_status = flag;
-+}
-+
- /*
-  * This is just a wrapper around an internal function so we can
-  * make other changes as necessary later on
-@@ -2659,6 +2672,7 @@ io_setbclient(void)
-               }
-       }
-       set_reuseaddr(0);
-+      set_pktinfo(1);
-       if (nif > 0)
-               DPRINTF(1, ("io_setbclient: Opened broadcast clients\n"));
-       else if (!nif)
-@@ -2685,6 +2699,7 @@ io_unsetbclient(void)
-                       continue;
-               socket_broadcast_disable(ep, &ep->sin);
-       }
-+      set_pktinfo(0);
- }
- /*
-@@ -3392,7 +3407,8 @@ read_network_packet(
- #ifdef HAVE_TIMESTAMP
-       struct msghdr msghdr;
-       struct iovec iovec;
--      char control[TIMESTAMP_CTLMSGBUF_SIZE];
-+      char control[sizeof (struct cmsghdr) * 2 + sizeof (struct timeval) +
-+              sizeof (struct in_pktinfo) + 32];
- #endif
-       /*
-@@ -3403,7 +3419,7 @@ read_network_packet(
-        */
-       rb = get_free_recv_buffer();
--      if (NULL == rb || itf->ignore_packets) {
-+      if (NULL == rb || (itf->ignore_packets && !(pktinfo_status && itf == wildipv4))) {
-               char buf[RX_BUFF_SIZE];
-               sockaddr_u from;
-@@ -3463,6 +3479,27 @@ read_network_packet(
-               return (buflen);
-       }
-+      if (pktinfo_status && itf->ignore_packets && itf == wildipv4) {
-+              /* check for broadcast on 255.255.255.255, exception allowed on wildipv4 */
-+              struct cmsghdr *cmsg;
-+              struct in_pktinfo *pktinfo = NULL;
-+
-+              if ((cmsg = CMSG_FIRSTHDR(&msghdr)))
-+                      do {
-+                              if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_PKTINFO)
-+                                      pktinfo = (struct in_pktinfo *) CMSG_DATA(cmsg);
-+                      } while ((cmsg = CMSG_NXTHDR(&msghdr, cmsg)));
-+              if (pktinfo && pktinfo->ipi_addr.s_addr == INADDR_BROADCAST) {
-+                      DPRINTF(4, ("INADDR_BROADCAST\n"));
-+              } else {
-+                      DPRINTF(4, ("%s on (%lu) fd=%d from %s\n", "ignore",
-+                              free_recvbuffs(), fd, stoa(&rb->recv_srcadr)));
-+                      packets_ignored++;
-+                      freerecvbuf(rb);
-+                      return (buflen);
-+              }
-+      }
-+
-       DPRINTF(3, ("read_network_packet: fd=%d length %d from %s\n",
-                   fd, buflen, stoa(&rb->recv_srcadr)));
diff --git a/ntp/patches/ntp-4.2.6p3-broadcastdelay.patch b/ntp/patches/ntp-4.2.6p3-broadcastdelay.patch
deleted file mode 100644 (file)
index f9c1929..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-==== ntpd/ntp_proto.c ====
-2010-10-22 01:55:45-04:00, stenn@deacon.udel.edu +2 -5
-  [Bug 1670] Fix peer->bias and broadcastdelay
-
---- 1.307/ntpd/ntp_proto.c     2010-10-11 21:06:05 -07:00
-+++ 1.308/ntpd/ntp_proto.c     2010-10-21 22:55:45 -07:00
-@@ -929,7 +929,6 @@ receive(
-                       } else {
-                               peer->delay = sys_bdelay;
--                              peer->bias = -sys_bdelay / 2.;
-                       }
-                       break;
-               }
-@@ -1570,7 +1569,6 @@ process_packet(
-               p_del = fabs(t21 - t34);
-               p_offset = (t21 + t34) / 2.;
-       }
--      p_offset += peer->bias;
-       p_disp = LOGTOD(sys_precision) + LOGTOD(peer->precision) +
-           clock_phi * p_del;
-@@ -1647,7 +1645,7 @@ process_packet(
-       /*
-        * That was awesome. Now hand off to the clock filter.
-        */
--      clock_filter(peer, p_offset, p_del, p_disp);
-+      clock_filter(peer, p_offset + peer->bias, p_del, p_disp);
-       /*
-        * If we are in broadcast calibrate mode, return to broadcast
diff --git a/ntp/patches/ntp-4.2.6p4-droproot.patch b/ntp/patches/ntp-4.2.6p4-droproot.patch
deleted file mode 100644 (file)
index 1d953d1..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-diff -up ntp-4.2.6p4/html/ntpdate.html.droproot ntp-4.2.6p4/html/ntpdate.html
---- ntp-4.2.6p4/html/ntpdate.html.droproot     2011-07-11 04:18:25.000000000 +0200
-+++ ntp-4.2.6p4/html/ntpdate.html      2011-10-05 15:47:29.643634928 +0200
-@@ -18,7 +18,7 @@
-               <hr>
-               <p>Disclaimer: The functionality of this program is now available in the <tt>ntpd</tt> program. See the <tt>-q</tt> command line option in the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page. After a suitable period of mourning, the <tt>ntpdate</tt> program is to be retired from this distribution</p>
-               <h4>Synopsis</h4>
--              <tt>ntpdate [ -46bBdqsuv ] [ -a <i>key</i> ] [ -e <i>authdelay</i> ] [ -k <i>keyfile</i> ] [ -o <i>version</i> ] [ -p <i>samples</i> ] [ -t <i>timeout</i> ] <i>server</i> [ ... ]</tt>
-+              <tt>ntpdate [ -46bBdqsuv ] [ -a <i>key</i> ] [ -e <i>authdelay</i> ] [ -k <i>keyfile</i> ] [ -o <i>version</i> ] [ -p <i>samples</i> ] [ -t <i>timeout</i> ] [ -U <i>user_name</i> ] <i>server</i> [ ... ]</tt>
-               <h4>Description</h4>
-               <p><tt>ntpdate</tt> sets the local date and time by polling the Network Time Protocol (NTP) server(s) given as the <i>server</i> arguments to determine the correct time. It must be run as root on the local host. A number of samples are obtained from each of the servers specified and a subset of the NTP clock filter and selection algorithms are applied to select the best of these. Note that the accuracy and reliability of <tt>ntpdate</tt> depends on the number of servers, the number of polls each time it is run and the interval between runs.</p>
-               <p><tt>ntpdate</tt> can be run manually as necessary to set the host clock, or it can be run from the host startup script to set the clock at boot time. This is useful in some cases to set the clock initially before starting the NTP daemon <tt>ntpd</tt>. It is also possible to run <tt>ntpdate</tt> from a <tt>cron</tt> script. However, it is important to note that <tt>ntpdate</tt> with contrived <tt>cron</tt> scripts is no substitute for the NTP daemon, which uses sophisticated algorithms to maximize accuracy and reliability while minimizing resource use. Finally, since <tt>ntpdate</tt> does not discipline the host clock frequency as does <tt>ntpd</tt>, the accuracy using <tt>ntpdate</tt> is limited.</p>
-@@ -58,6 +58,10 @@
-                       <dd>Direct <tt>ntpdate</tt> to use an unprivileged port for outgoing packets. This is most useful when behind a firewall that blocks incoming traffic to privileged ports, and you want to synchronize with hosts beyond the firewall. Note that the <tt>-d</tt> option always uses unprivileged ports.
-                       <dt><tt>-<i>v</i></tt>
-                       <dd>Be verbose. This option will cause <tt>ntpdate</tt>'s version identification string to be logged.
-+                      <dt><tt>-U <i>user_name</i></tt></dt>
-+                      <dd>ntpdate process drops root privileges and changes user ID to
-+                      <i>user_name</i> and group ID to the primary group of 
-+                      <i>server_user</i>.
-               </dl>
-               <h4>Diagnostics</h4>
-               <tt>ntpdate</tt>'s exit status is zero if it finds a server and updates the clock, and nonzero otherwise.
-diff -up ntp-4.2.6p4/ntpdate/ntpdate.c.droproot ntp-4.2.6p4/ntpdate/ntpdate.c
---- ntp-4.2.6p4/ntpdate/ntpdate.c.droproot     2011-05-25 07:06:09.000000000 +0200
-+++ ntp-4.2.6p4/ntpdate/ntpdate.c      2011-10-05 15:45:39.570555972 +0200
-@@ -49,6 +49,12 @@
- #include <arpa/inet.h>
-+/* Linux capabilities */
-+#include <sys/capability.h>
-+#include <sys/prctl.h>
-+#include <pwd.h>
-+#include <grp.h>
-+
- #ifdef SYS_VXWORKS
- # include "ioLib.h"
- # include "sockLib.h"
-@@ -153,6 +159,11 @@ int simple_query = 0;
- int unpriv_port = 0;
- /*
-+ * Use capabilities to drop privileges and switch uids
-+ */
-+char *server_user;
-+
-+/*
-  * Program name.
-  */
- char *progname;
-@@ -294,6 +305,88 @@ void clear_globals()
- static ni_namelist *getnetinfoservers (void);
- #endif
-+/* This patch is adapted (copied) from Chris Wings drop root patch
-+ * for xntpd.
-+ */
-+void drop_root(uid_t server_uid, gid_t server_gid)
-+{
-+  cap_t caps;
-+
-+  if (prctl(PR_SET_KEEPCAPS, 1)) {
-+              if (syslogit) {
-+                      msyslog(LOG_ERR, "prctl(PR_SET_KEEPCAPS, 1) failed");
-+              }
-+              else {
-+                      fprintf(stderr, "prctl(PR_SET_KEEPCAPS, 1) failed.\n");
-+              }
-+    exit(1);
-+  }
-+
-+  if ( setgroups(0, NULL) == -1 ) {
-+              if (syslogit) {
-+                      msyslog(LOG_ERR, "setgroups failed.");
-+              }
-+              else {
-+                      fprintf(stderr, "setgroups failed.\n");
-+              }
-+    exit(1);
-+  }
-+
-+  if ( setegid(server_gid) == -1 || seteuid(server_uid) == -1 ) {
-+              if (syslogit) {
-+                      msyslog(LOG_ERR, "setegid/seteuid to uid=%d/gid=%d failed.", server_uid,
-+                                                      server_gid);
-+              }
-+              else {
-+                      fprintf(stderr, "setegid/seteuid to uid=%d/gid=%d failed.\n", server_uid,
-+                                                      server_gid);
-+              }
-+    exit(1);
-+  }
-+
-+  caps = cap_from_text("cap_sys_time=epi");
-+  if (caps == NULL) {
-+              if (syslogit) {
-+                      msyslog(LOG_ERR, "cap_from_text failed.");
-+              }
-+              else {
-+                      fprintf(stderr, "cap_from_text failed.\n");
-+              }
-+    exit(1);
-+  }
-+
-+  if (cap_set_proc(caps) == -1) {
-+              if (syslogit) {
-+                      msyslog(LOG_ERR, "cap_set_proc failed.");
-+              }
-+              else {
-+                      fprintf(stderr, "cap_set_proc failed.\n");
-+              }
-+    exit(1);
-+  }
-+  
-+  /* Try to free the memory from cap_from_text */
-+  cap_free( caps );
-+
-+  if ( setregid(server_gid, server_gid) == -1 ||
-+       setreuid(server_uid, server_uid) == -1 ) {
-+              if (syslogit) {
-+                      msyslog(LOG_ERR, "setregid/setreuid to uid=%d/gid=%d failed.",
-+                                                      server_uid, server_gid);
-+              }
-+              else {
-+                      fprintf(stderr, "setregid/setreuid to uid=%d/gid=%d failed.\n",
-+                                                      server_uid, server_gid);
-+              }
-+    exit(1);
-+  }
-+
-+      if (syslogit) {
-+              msyslog(LOG_DEBUG, "running as uid(%d)/gid(%d) euid(%d)/egid(%d).",
-+                                              getuid(), getgid(), geteuid(), getegid());
-+      }
-+}
-+
- /*
-  * Main program.  Initialize us and loop waiting for I/O and/or
-  * timer expiries.
-@@ -341,6 +434,8 @@ ntpdatemain (
-       init_lib();     /* sets up ipv4_works, ipv6_works */
-+      server_user = NULL;
-+
-       /* Check to see if we have IPv6. Otherwise default to IPv4 */
-       if (!ipv6_works)
-               ai_fam_templ = AF_INET;
-@@ -352,7 +447,7 @@ ntpdatemain (
-       /*
-        * Decode argument list
-        */
--      while ((c = ntp_getopt(argc, argv, "46a:bBde:k:o:p:qst:uv")) != EOF)
-+      while ((c = ntp_getopt(argc, argv, "46a:bBde:k:o:p:qst:uvU:")) != EOF)
-               switch (c)
-               {
-               case '4':
-@@ -429,6 +524,14 @@ ntpdatemain (
-               case 'u':
-                       unpriv_port = 1;
-                       break;
-+              case 'U':
-+                      if (ntp_optarg) {
-+                              server_user = strdup(ntp_optarg);
-+                      }
-+                      else {
-+                              ++errflg;
-+                      }
-+                      break;
-               case '?':
-                       ++errflg;
-                       break;
-@@ -438,7 +541,7 @@ ntpdatemain (
-       
-       if (errflg) {
-               (void) fprintf(stderr,
--                  "usage: %s [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-t timeo] server ...\n",
-+                  "usage: %s [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-t timeo] [-U username] server ...\n",
-                   progname);
-               exit(2);
-       }
-@@ -544,6 +647,24 @@ ntpdatemain (
-       initializing = 0;
-       was_alarmed = 0;
-+      if (server_user) {
-+              struct passwd *pwd = NULL;
-+
-+              /* Lookup server_user uid/gid before chroot/chdir */
-+              pwd = getpwnam( server_user );
-+              if ( pwd == NULL ) {
-+                      if (syslogit) {
-+                              msyslog(LOG_ERR, "Failed to lookup user '%s'.", server_user);
-+                      }
-+                      else {
-+                              fprintf(stderr, "Failed to lookup user '%s'.\n", server_user);
-+                      }
-+                      exit(1);
-+              }
-+              drop_root(pwd->pw_uid, pwd->pw_gid);
-+      }
-+
-+
-       while (complete_servers < sys_numservers) {
- #ifdef HAVE_POLL_H
-               struct pollfd* rdfdes;
diff --git a/ntp/patches/ntp-4.2.6p4-htmldoc.patch b/ntp/patches/ntp-4.2.6p4-htmldoc.patch
deleted file mode 100644 (file)
index 2b2dab7..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-diff -up ntp-4.2.6p4/html/authopt.html.htmldoc ntp-4.2.6p4/html/authopt.html
---- ntp-4.2.6p4/html/authopt.html.htmldoc      2011-07-11 04:18:25.000000000 +0200
-+++ ntp-4.2.6p4/html/authopt.html      2011-10-05 17:30:09.463244610 +0200
-@@ -364,7 +364,7 @@ UTC</p>
-       are left unspecified, the default names are used as described below. Unless
-       the complete path and name of the file are specified, the location of a file
-       is relative to the keys directory specified in the <tt>keysdir</tt> configuration
--      command or default <tt>/usr/local/etc</tt>. Following are the options.</dd>
-+      command or default <tt>/etc/ntp/crypto</tt>. Following are the options.</dd>
- <dd><dl>
-@@ -396,7 +396,7 @@ UTC</p>
- <dd>Specifies the complete path to the MD5 key file containing the keys and key IDs used by <tt>ntpd</tt>, <tt>ntpq</tt> and <tt>ntpdc</tt> when operating with symmetric key cryptography. This is the same operation as the <tt>-k </tt>command line option. Note that the directory path for Autokey media is specified by the <tt>keysdir</tt> command.</dd>
- <dt id="keysdir"><tt>keysdir <i>path</i></tt>K</dt>
--<dd>This command specifies the default directory path for Autokey cryptographic keys, parameters and certificates. The default is <tt>/usr/local/etc/</tt>. Note that the path for the symmetric keys file is specified by the <tt>keys</tt> command.</dd>
-+<dd>This command specifies the default directory path for Autokey cryptographic keys, parameters and certificates. The default is <tt>/etc/ntp/crypto</tt>. Note that the path for the symmetric keys file is specified by the <tt>keys</tt> command.</dd>
- <dt id="requestkey"><tt>requestkey <i>keyid</i></tt></dt>
- <dd>Specifies the key ID to use with the
-diff -up ntp-4.2.6p4/html/keygen.html.htmldoc ntp-4.2.6p4/html/keygen.html
---- ntp-4.2.6p4/html/keygen.html.htmldoc       2011-07-11 04:18:26.000000000 +0200
-+++ ntp-4.2.6p4/html/keygen.html       2011-10-05 17:30:09.463244610 +0200
-@@ -206,7 +206,6 @@
- <p>All cryptographically sound key generation schemes must have means to randomize the entropy seed used to initialize the internal pseudo-random number generator used by the OpenSSL library routines. If a site supports <tt>ssh</tt>, it is very likely that means to do this are already available. The entropy seed used by the OpenSSL library is contained in a file, usually called <tt>.rnd</tt>, which must be available when starting the <tt>ntp-keygen</tt> program or <tt>ntpd</tt> daemon.</p>
- <p>The OpenSSL library looks for the file using the path specified by the <tt>RANDFILE</tt> environment variable in the user home directory, whether root or some other user. If the <tt>RANDFILE</tt> environment variable is not present, the library looks for the <tt>.rnd</tt> file in the user home directory. Since both the <tt>ntp-keygen</tt> program and <tt>ntpd</tt> daemon must run as root, the logical place to put this file is in <tt>/.rnd</tt> or <tt>/root/.rnd</tt>. If the file is not available or cannot be written, the program exits with a message to the system log.</p>
--<p>On systems that provide /dev/urandom, the randomness device is used instead and the file specified by the <tt>randfile</tt> subcommand or the <tt>RANDFILE</tt> environment variable is ignored.</p>
- <h4 id="priv">Cryptographic Data Files</h4>
-diff -up ntp-4.2.6p4/html/ntpd.html.htmldoc ntp-4.2.6p4/html/ntpd.html
---- ntp-4.2.6p4/html/ntpd.html.htmldoc 2011-07-11 04:18:26.000000000 +0200
-+++ ntp-4.2.6p4/html/ntpd.html 2011-10-05 17:34:07.545384008 +0200
-@@ -214,14 +214,14 @@
-                       </tr>
-                       <tr>
-                               <td width="30%">statistics path</td>
--                              <td width="30%"><tt>/var/NTP</tt></td>
-+                              <td width="30%"><tt>/var/log/ntpstats/</tt></td>
-                               <td width="20%"><tt>-s</tt></td>
-                               <td width="20%"><tt>statsdir</tt></td>
-                       </tr>
-                       <tr>
-                               <td width="30%">keys path</td>
--                              <td width="30%"><tt>/usr/local/etc</tt></td>
--                              <td width="20%"><tt>-k</tt></td>
-+                              <td width="30%"><tt>/etc/ntp/crypto</tt></td>
-+                              <td width="20%"><tt>none</tt></td>
-                               <td width="20%"><tt>keysdir</tt></td>
-                       </tr>
-               </table>
-diff -up ntp-4.2.6p4/html/ntpdate.html.htmldoc ntp-4.2.6p4/html/ntpdate.html
---- ntp-4.2.6p4/html/ntpdate.html.htmldoc      2011-10-05 17:30:09.438244595 +0200
-+++ ntp-4.2.6p4/html/ntpdate.html      2011-10-05 17:36:24.195463971 +0200
-@@ -43,7 +43,7 @@
-                       <dt><tt>-e <i>authdelay</i></tt>
-                       <dd>Specify the processing delay to perform an authentication function as the value <i>authdelay</i>, in seconds and fraction (see <tt>ntpd</tt> for details). This number is usually small enough to be negligible for most purposes, though specifying a value may improve timekeeping on very slow CPU's.
-                       <dt><tt>-k <i>keyfile</i></tt>
--                      <dd>Specify the path for the authentication key file as the string <i>keyfile</i>. The default is <tt>/etc/ntp.keys</tt>. This file should be in the format described in <tt>ntpd</tt>.
-+                      <dd>Specify the path for the authentication key file as the string <i>keyfile</i>. The default is <tt>/etc/ntp/keys</tt>. This file should be in the format described in <tt>ntpd</tt>.
-                       <dt><tt>-o <i>version</i></tt>
-                       <dd>Specify the NTP version for outgoing packets as the integer <i>version</i>, which can be 1 or 2. The default is 4. This allows <tt>ntpdate</tt> to be used with older NTP versions.
-                       <dt><tt>-p <i>samples</i></tt>
-@@ -66,7 +66,7 @@
-               <h4>Diagnostics</h4>
-               <tt>ntpdate</tt>'s exit status is zero if it finds a server and updates the clock, and nonzero otherwise.
-               <h4>Files</h4>
--              <tt>/etc/ntp.keys</tt> - encryption keys used by <tt>ntpdate</tt>.
-+              <tt>/etc/ntp/keys</tt> - encryption keys used by <tt>ntpdate</tt>.
-               <h4>Bugs</h4>
-               The slew adjustment is actually 50% larger than the measured offset, since this (it is argued) will tend to keep a badly drifting clock more accurate. This is probably not a good idea and may cause a troubling hunt for some values of the kernel variables <tt>tick</tt> and <tt>tickadj</tt>.&nbsp;
-               <hr>
-diff -up ntp-4.2.6p4/html/ntpdc.html.htmldoc ntp-4.2.6p4/html/ntpdc.html
-diff -up ntp-4.2.6p4/html/ntpq.html.htmldoc ntp-4.2.6p4/html/ntpq.html
diff --git a/ntp/patches/ntp-4.2.6p4-mlock.patch b/ntp/patches/ntp-4.2.6p4-mlock.patch
deleted file mode 100644 (file)
index 354f7d5..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-diff -up ntp-4.2.6p4/html/ntpd.html.mlock ntp-4.2.6p4/html/ntpd.html
---- ntp-4.2.6p4/html/ntpd.html.mlock   2011-10-06 13:08:50.897274352 +0200
-+++ ntp-4.2.6p4/html/ntpd.html 2011-10-06 13:08:50.909274362 +0200
-@@ -32,7 +32,7 @@
-               </ul>
-               <hr>
-               <h4 id="synop">Synopsis</h4>
--              <tt>ntpd [ -46aAbdDgLnNqx ] [ -c <i>conffile</i> ] [ -f <i>driftfile</i> ] [ -i <i>jaildir</i> ] [ -I <i>iface</i> ] [ -k <i>keyfile</i> ] [ -l <i>logfile</i> ] [ -p <i>pidfile</i> ] [ -P <i>priority</i> ] [ -r <i>broadcastdelay</i> ] [ -s <i>statsdir</i> ] [ -t <i>key</i> ] [ -u <i>user</i>[:<i>group</i>] ] [ -U <i>interface_update_interval</i> ] [ -v <i>variable</i> ] [ -V <i>variable</i> ]</tt>
-+              <tt>ntpd [ -46aAbdDgLmnNqx ] [ -c <i>conffile</i> ] [ -f <i>driftfile</i> ] [ -i <i>jaildir</i> ] [ -I <i>iface</i> ] [ -k <i>keyfile</i> ] [ -l <i>logfile</i> ] [ -p <i>pidfile</i> ] [ -P <i>priority</i> ] [ -r <i>broadcastdelay</i> ] [ -s <i>statsdir</i> ] [ -t <i>key</i> ] [ -u <i>user</i>[:<i>group</i>] ] [ -U <i>interface_update_interval</i> ] [ -v <i>variable</i> ] [ -V <i>variable</i> ]</tt>
-               <h4 id="descr">Description</h4>
-               <p>The <tt>ntpd</tt> program is an operating system daemon that synchronises the system clock with remote NTP&nbsp;time servers or local reference clocks. It is a complete implementation of the Network Time Protocol (NTP) version 4, but also retains compatibility with version 3, as defined by RFC-1305, and version 1 and 2, as defined by RFC-1059 and RFC-1119, respectively. The program can operate in any of several modes, as described on the <a href="assoc.html">Association Management</a> page, and with both symmetric key and public key cryptography, as described on the <a href="manyopt.html">Authentication Options</a> page.</p>
-               <p>The <tt>ntpd</tt> program ordinarily requires a configuration file as desccribe on the Configuration Commands and Options collection above. However a client can discover remote servers and configure them automatically. This makes it possible to deploy a fleet of workstations without specifying configuration details specific to the local environment. Further details are on the <a href="manyopt.html">Automatic Server Discovery</a> page.</p>
-@@ -123,6 +123,8 @@
-                       <dd>Do not listen to virtual interfaces, defined as those with names containing a colon. This option is deprecated. Please consider using the configuration file <a href="miscopt.html#interface">interface</a> command, which is more versatile.</dd>
-                       <dt><tt>-M</tt></dt>
-                       <dd>Raise scheduler precision to its maximum (1 msec) using timeBeginPeriod. (Windows only)</dd>
-+                      <dt><tt>-m</tt>
-+                      <dd>Lock memory.
-                       <dt><tt>-n</tt></dt>
-                       <dd>Don't fork.</dd>
-                       <dt><tt>-N</tt></dt>
-diff -up ntp-4.2.6p4/ntpd/ntpd-opts.c.mlock ntp-4.2.6p4/ntpd/ntpd-opts.c
---- ntp-4.2.6p4/ntpd/ntpd-opts.c.mlock 2011-09-23 05:36:04.000000000 +0200
-+++ ntp-4.2.6p4/ntpd/ntpd-opts.c       2011-10-06 13:10:54.082360146 +0200
-@@ -276,6 +276,15 @@ static char const zNice_Name[]          
- #define NICE_FLAGS       (OPTST_DISABLED)
- /*
-+ *  Mlock option description:
-+ */
-+static char const zMlockText[] =
-+        "Lock memory";
-+static char const zMlock_NAME[]              = "MLOCK";
-+static char const zMlock_Name[]              = "mlock";
-+#define MLOCK_FLAGS       (OPTST_DISABLED)
-+
-+/*
-  *  Pidfile option description:
-  */
- static char const zPidfileText[] =
-@@ -903,6 +912,18 @@ static tOptDesc optDesc[OPTION_CT] = {
-      /* desc, NAME, name */ zPccfreqText, zPccfreq_NAME, zPccfreq_Name,
-      /* disablement strs */ NULL, NULL },
-+  {  /* entry idx, value */ 32, VALUE_OPT_MLOCK,
-+     /* equiv idx, value */ 32, VALUE_OPT_MLOCK,
-+     /* equivalenced to  */ NO_EQUIVALENT,
-+     /* min, max, act ct */ 0, 1, 0,
-+     /* opt state flags  */ MLOCK_FLAGS, 0,
-+     /* last opt argumnt */ { NULL },
-+     /* arg list/cookie  */ NULL,
-+     /* must/cannot opts */ NULL, NULL,
-+     /* option proc      */ NULL,
-+     /* desc, NAME, name */ zMlockText, zMlock_NAME, zMlock_Name,
-+     /* disablement strs */ NULL, NULL },
-+
-   {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
-      /* equiv idx value  */ NO_EQUIVALENT, 0,
-      /* equivalenced to  */ NO_EQUIVALENT,
-@@ -1018,7 +1039,7 @@ tOptions ntpdOptions = {
-       NO_EQUIVALENT, /* '-#' option index */
-       NO_EQUIVALENT /* index of default opt */
-     },
--    35 /* full option count */, 32 /* user option count */,
-+    36 /* full option count */, 33 /* user option count */,
-     ntpd_full_usage, ntpd_short_usage,
-     NULL, NULL,
-     PKGDATADIR, ntpd_packager_info
-diff -up ntp-4.2.6p4/ntpd/ntpd-opts.h.mlock ntp-4.2.6p4/ntpd/ntpd-opts.h
---- ntp-4.2.6p4/ntpd/ntpd-opts.h.mlock 2011-09-23 05:36:04.000000000 +0200
-+++ ntp-4.2.6p4/ntpd/ntpd-opts.h       2011-10-06 13:08:50.910274363 +0200
-@@ -81,6 +81,7 @@ typedef enum {
--    INDEX_OPT_VERSION           = 32,
--    INDEX_OPT_HELP              = 33,
--    INDEX_OPT_MORE_HELP         = 34
-+    INDEX_OPT_MLOCK             = 32,
-+    INDEX_OPT_VERSION           = 33,
-+    INDEX_OPT_HELP              = 34,
-+    INDEX_OPT_MORE_HELP         = 35
- } teOptIndex;
--#define OPTION_CT    35
-+#define OPTION_CT    36
-@@ -187,6 +188,10 @@ typedef enum {
- #  warning undefining MODIFYMMTIMER due to option name conflict
- #  undef   MODIFYMMTIMER
- # endif
-+# ifdef    MLOCK
-+#  warning undefining MLOCK due to option name conflict
-+#  undef   MLOCK
-+# endif
- # ifdef    NOFORK
- #  warning undefining NOFORK due to option name conflict
- #  undef   NOFORK
-@@ -268,6 +273,7 @@ typedef enum {
- # undef LOGFILE
- # undef NOVIRTUALIPS
- # undef MODIFYMMTIMER
-+# undef MLOCK
- # undef NOFORK
- # undef NICE
- # undef PIDFILE
-@@ -306,6 +312,7 @@ typedef enum {
- #define VALUE_OPT_LOGFILE        'l'
- #define VALUE_OPT_NOVIRTUALIPS   'L'
- #define VALUE_OPT_MODIFYMMTIMER  'M'
-+#define VALUE_OPT_MLOCK          'm'
- #define VALUE_OPT_NOFORK         'n'
- #define VALUE_OPT_NICE           'N'
- #define VALUE_OPT_PIDFILE        'p'
-diff -up ntp-4.2.6p4/ntpd/ntpd.c.mlock ntp-4.2.6p4/ntpd/ntpd.c
---- ntp-4.2.6p4/ntpd/ntpd.c.mlock      2011-10-06 13:08:50.869274334 +0200
-+++ ntp-4.2.6p4/ntpd/ntpd.c    2011-10-06 13:08:50.911274363 +0200
-@@ -723,7 +723,8 @@ ntpdmain(
-       }
- #endif
--#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT) && defined(MCL_FUTURE)
-+#if defined(MCL_CURRENT) && defined(MCL_FUTURE)
-+    if (HAVE_OPT( MLOCK )) {
- # ifdef HAVE_SETRLIMIT
-       /*
-        * Set the stack limit to something smaller, so that we don't lock a lot
-@@ -749,7 +750,7 @@ ntpdmain(
-            * fail if we drop root privlege.  To be useful the value
-            * has to be larger than the largest ntpd resident set size.
-            */
--          rl.rlim_cur = rl.rlim_max = 32*1024*1024;
-+          rl.rlim_cur = rl.rlim_max = 64*1024*1024;
-           if (setrlimit(RLIMIT_MEMLOCK, &rl) == -1) {
-               msyslog(LOG_ERR, "Cannot set RLIMIT_MEMLOCK: %m");
-           }
-@@ -761,6 +762,7 @@ ntpdmain(
-        */
-       if (mlockall(MCL_CURRENT|MCL_FUTURE) < 0)
-               msyslog(LOG_ERR, "mlockall(): %m");
-+    }
- #else /* not (HAVE_MLOCKALL && MCL_CURRENT && MCL_FUTURE) */
- # ifdef HAVE_PLOCK
- #  ifdef PROCLOCK
diff --git a/ntp/patches/ntp-4.2.6p4-rtnetlink.patch b/ntp/patches/ntp-4.2.6p4-rtnetlink.patch
deleted file mode 100644 (file)
index 06d2e87..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up ntp-4.2.6p4/ntpd/ntp_io.c.rtnetlink ntp-4.2.6p4/ntpd/ntp_io.c
---- ntp-4.2.6p4/ntpd/ntp_io.c.rtnetlink        2011-10-05 15:49:17.061711033 +0200
-+++ ntp-4.2.6p4/ntpd/ntp_io.c  2011-10-05 15:49:17.074711042 +0200
-@@ -4549,10 +4549,7 @@ init_async_notifications()
- #ifdef HAVE_RTNETLINK
-       memset(&sa, 0, sizeof(sa));
-       sa.nl_family = PF_NETLINK;
--      sa.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR
--                     | RTMGRP_IPV6_IFADDR | RTMGRP_IPV4_ROUTE
--                     | RTMGRP_IPV4_MROUTE | RTMGRP_IPV6_ROUTE
--                     | RTMGRP_IPV6_MROUTE;
-+      sa.nl_groups = RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR;
-       if (bind(fd, (struct sockaddr *)&sa, sizeof(sa)) < 0) {
-               msyslog(LOG_ERR,
-                       "bind failed on routing socket (%m) - using polled interface update");
diff --git a/ntp/patches/ntp-4.2.6p5-delaycalib.patch b/ntp/patches/ntp-4.2.6p5-delaycalib.patch
deleted file mode 100644 (file)
index 7e9a310..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ntp-4.2.6p5/ntpd/ntp_proto.c.delaycalib ntp-4.2.6p5/ntpd/ntp_proto.c
---- ntp-4.2.6p5/ntpd/ntp_proto.c.delaycalib    2012-02-28 15:57:57.000000000 +0100
-+++ ntp-4.2.6p5/ntpd/ntp_proto.c       2012-02-28 16:01:30.080135978 +0100
-@@ -1514,7 +1514,7 @@ process_packet(
-                */
-               if (FLAG_BC_VOL & peer->flags) {
-                       peer->flags &= ~FLAG_BC_VOL;
--                      peer->delay = (peer->offset - p_offset) * 2;
-+                      peer->delay = fabs(peer->offset - p_offset) * 2;
-               }
-               p_del = peer->delay;
-               p_offset += p_del / 2;
diff --git a/ntp/patches/ntp-4.2.6p5-fipsmd5.patch b/ntp/patches/ntp-4.2.6p5-fipsmd5.patch
deleted file mode 100644 (file)
index b6d8889..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -up ntp-4.2.6p5/libntp/a_md5encrypt.c.fipsmd5 ntp-4.2.6p5/libntp/a_md5encrypt.c
---- ntp-4.2.6p5/libntp/a_md5encrypt.c.fipsmd5  2011-12-01 03:55:17.000000000 +0100
-+++ ntp-4.2.6p5/libntp/a_md5encrypt.c  2012-10-24 16:24:04.972358878 +0200
-@@ -38,7 +38,11 @@ MD5authencrypt(
-        * was creaded.
-        */
-       INIT_SSL();
--      EVP_DigestInit(&ctx, EVP_get_digestbynid(type));
-+      if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) {
-+              msyslog(LOG_ERR,
-+                  "MAC encrypt: digest init failed");
-+              return (0);
-+      }
-       EVP_DigestUpdate(&ctx, key, (u_int)cache_keylen);
-       EVP_DigestUpdate(&ctx, (u_char *)pkt, (u_int)length);
-       EVP_DigestFinal(&ctx, digest, &len);
-@@ -71,7 +75,11 @@ MD5authdecrypt(
-        * was created.
-        */
-       INIT_SSL();
--      EVP_DigestInit(&ctx, EVP_get_digestbynid(type));
-+      if (!EVP_DigestInit(&ctx, EVP_get_digestbynid(type))) {
-+              msyslog(LOG_ERR,
-+                  "MAC decrypt: digest init failed");
-+              return (0);
-+      }
-       EVP_DigestUpdate(&ctx, key, (u_int)cache_keylen);
-       EVP_DigestUpdate(&ctx, (u_char *)pkt, (u_int)length);
-       EVP_DigestFinal(&ctx, digest, &len);
-@@ -101,7 +109,16 @@ addr2refid(sockaddr_u *addr)
-               return (NSRCADR(addr));
-       INIT_SSL();
--      EVP_DigestInit(&ctx, EVP_get_digestbynid(NID_md5));
-+      EVP_MD_CTX_init(&ctx);
-+#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW
-+      /* MD5 is not used as a crypto hash here. */
-+      EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
-+#endif
-+      if (!EVP_DigestInit_ex(&ctx, EVP_md5(), NULL)) {
-+              msyslog(LOG_ERR,
-+                  "MD5 init failed");
-+              exit(1);
-+      }
-       EVP_DigestUpdate(&ctx, (u_char *)PSOCK_ADDR6(addr),
-           sizeof(struct in6_addr));
-       EVP_DigestFinal(&ctx, digest, &len);
index 3aefd05688a31df586ea5280a7dc0c21ed86bbae..7ddb8e1359d51cce4c2fcfce1eb065f3ab6454e2 100644 (file)
@@ -5,7 +5,7 @@
 
 name       = openssl
 version    = 1.0.1h
-release    = 1
+release    = 2
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
 groups     = System/Libraries
@@ -79,7 +79,7 @@ build
                        no-idea \
                        no-mdc2 \
                        no-rc5 \
-                       no-ec no-ec2m no-ecdh no-ecdsa \
+                       no-ec2m \
                        no-srp \
                        -DSSL_FORBID_ENULL \
                         %{ssl_arch}
diff --git a/openvswitch/openvswitch.logrotate b/openvswitch/openvswitch.logrotate
deleted file mode 100644 (file)
index 1a08fa9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2009, 2010, 2011 Nicira Networks, Inc.
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.  This file is offered as-is,
-# without warranty of any kind.
-
-/var/log/openvswitch/*.log {
-       sharedscripts
-       missingok
-       postrotate
-       # Tell Open vSwitch daemons to reopen their log files
-       if [ -e /var/run/openvswitch/ovs-vswitchd.pid ]; then
-           /usr/bin/ovs-appctl -t ovs-vswitchd vlog/reopen
-       fi
-       if [ -e /var/run/openvswitch/ovsdb-server.pid ]; then
-           /usr/bin/ovs-appctl -t ovsdb-server vlog/reopen
-       fi
-       endscript
-}
diff --git a/openvswitch/openvswitch.nm b/openvswitch/openvswitch.nm
deleted file mode 100644 (file)
index 7b0a0e4..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-###############################################################################
-# IPFire.org    - An Open Source Firewall Solution                            #
-# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
-###############################################################################
-
-name       = openvswitch
-version    = 1.9.0
-release    = 1
-
-groups     = Networking/Tools
-url        = http://openvswitch.org/
-license    = ASL 2.0 and LGPLv2+ and SISSL
-summary    = Open vSwitch daemon/database/utilities.
-
-description
-       Open vSwitch provides standard network bridging functions and
-       support for the OpenFlow protocol for remote per-flow control
-       of traffic.
-end
-
-source_dl  = http://openvswitch.org/releases/
-
-build
-       requires
-               groff
-               openssl-devel
-               systemd-units
-       end
-
-       configure_options += \
-               --enable-ssl \
-               --with-pkidir=%{sharedstatedir}/openvswitch/pki \
-               OVSKMOD=openvswitch
-
-       install_cmds
-               # Install logrotate file.
-               mkdir -pv %{BUILDROOT}%{sysconfdir}/logrotate.d
-               install -m 644 %{DIR_SOURCE}/openvswitch.logrotate \
-                       %{BUILDROOT}%{sysconfdir}/logrotate.d/openvswitch
-
-               mkdir -pv %{BUILDROOT}%{sharedstatedir}/openvswitch
-       
-               # Remove stuff we don't want to support.
-               rm -vf \
-                       %{BUILDROOT}%{bindir}/ovs-controller \
-                       %{BUILDROOT}%{sbindir}/ovs-{vlan-bug-workaround,brcompatd} \
-                       %{BUILDROOT}%{mandir}/man8/ovs-{controller,vlan-bug-workaround,brcompatd}.8
-       end
-end
-
-packages
-       package %{name}
-               script postin
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-               end
-
-               script postup
-                       systemctl daemon-reload >/dev/null 2>&1 || :
-                       systemctl try-restart openvswitch.service >/dev/null 2>&1 || :
-               end
-
-               script postun
-                       systemctl --no-reload disable openvswitch.service >/dev/null 2>&1 || :
-                       systemctl stop openvswitch.service >/dev/null 2>&1 || :
-               end
-
-               configfiles
-                       %{sysconfdir}/logrotate.d/openvswitch
-               end
-       end
-
-       package %{name}-test
-               summary = Open vSwitch testing utilities.
-               license = ASL 2.0
-               description
-                       Utilities that are useful to diagnose performance and connectivity
-                       issues in Open vSwitch setup.
-               end
-               arch = noarch
-
-               files
-                       %{bindir}/ovs-test
-                       %{bindir}/ovs-vlan-test
-                       %{mandir}/man8/ovs-test.8*
-                       %{mandir}/man8/ovs-vlan-test.8*
-               end
-       end
-
-       package %{name}-debuginfo
-               template DEBUGINFO
-       end
-end
diff --git a/openvswitch/systemd/openvswitch.service b/openvswitch/systemd/openvswitch.service
deleted file mode 100644 (file)
index fc7517d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=Open vSwitch
-After=syslog.target
-
-[Service]
-Type=oneshot
-ExecStart=/usr/share/openvswitch/scripts/ovs-ctl --system-id=random start --delete-bridges
-ExecStop=/usr/share/openvswitch/scripts/ovs-ctl stop
-RemainAfterExit=yes
-
-[Install]
-WantedBy=multi-user.target
-
index 3fb99bfa535621dcab78c9f1a5bef0dbbbe2687b..45a1c2505bcede23c58449412a475c23204638ea 100644 (file)
@@ -5,7 +5,7 @@
 
 name       = pakfire
 version    = 0.9.26
-release    = 2
+release    = 3
 
 maintainer = Michael Tremer <michael.tremer@ipfire.org>
 groups     = System/Packaging
@@ -104,6 +104,9 @@ packages
                        systemd-devel < 38
                end
 
+               # Requires GCC 4.9 or later for -fstack-protector-strong
+               conflicts += gcc < 4.9
+
                configfiles
                        %{sysconfdir}/pakfire/builder.conf
                        %{sysconfdir}/pakfire/distros
diff --git a/pakfire/patches/0001-CFLAGS-Enable-more-hardening.patch b/pakfire/patches/0001-CFLAGS-Enable-more-hardening.patch
new file mode 100644 (file)
index 0000000..bab8cb5
--- /dev/null
@@ -0,0 +1,26 @@
+commit 664591620ddc73ac6838c6ed152c2b3c4233d609
+Author: Michael Tremer <michael.tremer@ipfire.org>
+Date:   Tue Sep 16 15:49:25 2014 +0200
+
+    CFLAGS: Enable more hardening
+    
+    -fstack-protector-strong is available since GCC 4.9
+    
+    -D_FORTIFY_SOURCE=2 is automatically enabled in IPFire since
+    GCC 4.9 and when optimization is enabled (e.g. -O2).
+
+diff --git a/macros/cflags.macro b/macros/cflags.macro
+index a2c583c..52a069a 100644
+--- a/macros/cflags.macro
++++ b/macros/cflags.macro
+@@ -1,7 +1,8 @@
+ # Export CFLAGS + CXXFLAGS
+-GLOBAL_CFLAGS   = -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fPIC
+-GLOBAL_CFLAGS  += -fstack-protector-all --param=ssp-buffer-size=4
++GLOBAL_CFLAGS   = -O2 -g -pipe -Wall -Werror=format-security
++GLOBAL_CFLAGS  += -fexceptions -fPIC -fstack-protector-strong --param=ssp-buffer-size=4
++GLOBAL_CFLAGS  += -grecord-gcc-switches
+ CFLAGS_i686     = -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables
+ CFLAGS_x86_64   = -m64 -mtune=generic
diff --git a/perl-File-HomeDir/perl-File-HomeDir.nm b/perl-File-HomeDir/perl-File-HomeDir.nm
new file mode 100644 (file)
index 0000000..9045a38
--- /dev/null
@@ -0,0 +1,63 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = perl-File-HomeDir
+version    = 1.00
+release    = 1
+arch       = noarch
+thisapp    = File-HomeDir-%{version}
+
+groups     = Development/Libraries
+url        = http://search.cpan.org/dist/File-HomeDir/
+license    = GPL+
+summary    = Find your home and other directories on any platform
+
+description
+       File::HomeDir is a module for locating the directories that are "owned"
+       by a user (typically your user) and to solve the various issues that
+       arise trying to find them consistently across a wide variety of
+       platforms.
+end
+
+source_dl  = http://www.cpan.org/authors/id/A/AD/ADAMK/
+
+build
+       requires
+               perl
+               perl(Config)
+               perl(Cwd) >= 3.12
+               perl(ExtUtils::MakeMaker) >= 6.42
+               perl(ExtUtils::MM_Unix)
+               perl(File::Path) >= 2.01
+               perl(File::Spec) >= 3.12
+               perl(strict)
+               perl(vars)
+       end
+
+       build
+               perl Makefile.PL INSTALLDIRS=vendor
+               make %{PARALLELISMFLAGS}
+       end
+
+       make_install_targets = pure_install
+end
+
+packages
+       package %{name}
+               filter_requires
+                       Cwd
+                       File::Path
+                       File::Spec
+                       File::Temp
+                       File::Which
+                       Mac::perl
+                       Win32
+               end
+
+               requires
+                       perl
+               end
+       end
+end
similarity index 52%
rename from plymouth/patches/plymouth-0.8.0-everything-is-better-in-red.patch
rename to plymouth/patches/plymouth-0.9.0-everything-is-better-in-red.patch
index 7dba9f79f681792395e50556f12c1e12aa6d1797..f2981cae2d6cc4eca66572112349f085ec35d5bc 100644 (file)
@@ -1,15 +1,15 @@
-diff -up plymouth-0.8.0/src/plugins/splash/text/plugin.c.red plymouth-0.8.0/src/plugins/splash/text/plugin.c
---- plymouth-0.8.0/src/plugins/splash/text/plugin.c.red        2009-11-19 14:40:24.000000000 -0500
-+++ plymouth-0.8.0/src/plugins/splash/text/plugin.c    2009-11-19 14:41:40.000000000 -0500
-@@ -184,10 +184,10 @@ view_start_animation (view_t *view)
+diff -Nur plymouth-0.9.0_orig/src/plugins/splash/text/plugin.c plymouth-0.9.0/src/plugins/splash/text/plugin.c
+--- plymouth-0.9.0_orig/src/plugins/splash/text/plugin.c       2014-04-21 17:18:19.000000000 +0200
++++ plymouth-0.9.0/src/plugins/splash/text/plugin.c    2014-12-07 14:57:09.344789424 +0100
+@@ -177,10 +177,10 @@
                                      0xffffff);
    ply_terminal_set_color_hex_value (terminal,
                                      PLY_TERMINAL_COLOR_BLUE,
--                                    0x0073B3);
+-                                    0x3465a4);
 +                                    0xCC0A00);
    ply_terminal_set_color_hex_value (terminal,
                                      PLY_TERMINAL_COLOR_BROWN,
--                                    0x00457E);
+-                                    0x979a9b);
 +                                    0x880400);
  
    ply_text_display_set_background_color (view->display,
diff --git a/plymouth/plymouth-update-initrd b/plymouth/plymouth-update-initrd
deleted file mode 100644 (file)
index c07b561..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-/sbin/new-kernel-pkg --package kernel --mkinitrd --dracut --depmod --install $(uname -r)
index cbecf07f8a0c960436d0a8a5771a8eecda225953..257aef63fad0067bbb9f0f3a1dc762555b2550f1 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = plymouth
-version    = 0.8.8
+version    = 0.9.0
 release    = 1
 
 groups     = System/Base
@@ -27,23 +27,14 @@ build
                autoconf
                automake
                cairo-devel
+               docbook-xsl
                glib2-devel
                pkgconfig(libdrm)
-               pkgconfig(libdrm_radeon)
-               pkgconfig(libdrm_nouveau)
                libpng-devel
+               libudev-devel
                pango-devel
        end
 
-       enable_libdrm_intel = 0
-
-       if "%{DISTRO_PLATFORM}" == "x86"
-               enable_libdrm_intel = 1
-               requires += pkgconfig(libdrm_intel)
-       end
-
-       CFLAGS += -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-
        configure_options += \
                --libexecdir=/usr/lib \
                --disable-libkms \
@@ -60,10 +51,6 @@ build
                --without-rhgb-compat-link \
                --without-log-viewer
 
-       if "%{enable_libdrm_intel}" == "0"
-               configure_options += --disable-libdrm_intel
-       end
-
        prepare_cmds
                autoreconf -vfi
        end
@@ -80,10 +67,10 @@ build
                cp -vf %{DIR_SOURCE}/boot-duration \
                        %{BUILDROOT}%{localstatedir}/lib/plymouth
 
-               # Override plymouth-update-initrd to work dracut or mkinitrd
-               cp -vf %{DIR_SOURCE}/plymouth-update-initrd \
-                       %{BUILDROOT}/usr/lib/plymouth/plymouth-update-initrd
-               chmod 755 %{BUILDROOT}/usr/lib/plymouth/plymouth-update-initrd
+               # The "glow" theme isn't quite ready for primetime, so drop it.
+               rm -rvf %{BUILDROOT}%{datadir}/plymouth/themes/glow
+               rm -rvf %{BUILDROOT}%{datadir}/plymouth/glow/
+               rm -rvf %{BUILDROOT}%{libdir}/plymouth/glow.so
        end
 end
 
@@ -277,7 +264,7 @@ packages
                end
 
                script postun
-                       if [ "$(%{sbindir}/plymouth-set-default-theme)" = %{theme_name}" ]; then
+                       if [ "$(%{sbindir}/plymouth-set-default-theme)" = "%{theme_name}" ]; then
                                %{sbindir}/plymouth-set-default-theme --reset
                                /usr/lib/plymouth/plymouth-generate-initrd
                        fi
index e95dfb1e4e86d449854fe9411154d9ad5dc6a7d9..d78c6fe118e4c0765d57cdd5a70b056c3fe718e2 100644 (file)
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = polarssl
-version    = 1.2.5
-release    = 2
+version    = 1.3.9
+release    = 1
 
 groups     = System/Libraries
 url        = http://polarssl.org/
@@ -25,56 +25,25 @@ source_dl  = http://polarssl.org/code/releases/
 
 build
        requires
-               perl
-       end
-
-       if "%{DISTRO_ARCH}" == "armv7hl"
-               prepare_cmds
-                       sed -e "s/define POLARSSL_HAVE_ASM/undef POLARSSL_HAVE_ASM/" \
-                               -i include/polarssl/config.h
-               end
+               cmake
        end
 
        build
-               # Compile library
-               make SHARED=1 -C library %{PARALLELISMFLAGS}
-               ln -svf libpolarssl.so library/libpolarssl.so.0
+               %{cmake} \
+                       -D CMAKE_BUILD_TYPE:String="Release" \
+                       -D USE_SHARED_POLARSSL_LIBRARY:BOOL=1 \
+                       .
 
-               # Compile programs
-               make -C programs %{PARALLELISMFLAGS}
+               make %{PARALLELISMFLAGS}
        end
 
        test
-               pushd programs
-               make test/selftest
-               LD_LIBRARY_PATH="../library" ./test/selftest
-               popd
-
-               # Don't run the regular test suite because it cannot
-               # be built on ARM.
-               #LD_LIBRARY_PATH="../library" make check
+               LD_LIBRARY_PATH=$(pwd)/library ctest --output-on-failure -V
        end
 
-       install
-               # Install headers
-               mkdir -pv %{BUILDROOT}%{includedir}/polarssl
-               install -v -m 644 include/polarssl/*.h \
-                       %{BUILDROOT}%{includedir}/polarssl
-
-               # Install library
-               mkdir -pv %{BUILDROOT}%{libdir}
-               install -v -m 755 library/libpolarssl.so \
-                       %{BUILDROOT}%{libdir}/libpolarssl.so.0
-               ln -svf libpolarssl.so.0 %{BUILDROOT}%{libdir}/libpolarssl.so
-
-               # Install programs
-               mkdir -pv %{BUILDROOT}%{bindir}
-               for p in programs/*/*; do
-                       if [ -x "${p}" -a ! -d "${p}" ]; then
-                               f="polarssl_$(basename ${p})"
-                               install -m 755 ${p} %{BUILDROOT}%{bindir}/${f} || exit 1
-                       fi
-               done
+       install_cmds
+               mkdir -pv %{BUILDROOT}%{libexecdir}
+               mv -v %{BUILDROOT}%{bindir} %{BUILDROOT}%{libexecdir}/%{name}
        end
 end
 
@@ -86,7 +55,7 @@ packages
                description = %{summary}
 
                files
-                       %{bindir}
+                       %{libexecdir}/%{name}
                end
        end
 
index 8be222fa10f81ac3c483d750ab06fb8d137f42a5..3dab3af7bfc98e1af11ec7a83f223e4881435e44 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = powertop
-version    = 2.0
+version    = 2.6.1
 release    = 1
 
 groups     = Applications/System
@@ -20,8 +20,7 @@ description
        enabled these settings.
 end
 
-source_dl  = https://01.org/powertop/sites/default/files/downloads/
-sources    = %{thisapp}.tar.bz2
+source_dl  = https://01.org/sites/default/files/downloads/powertop/
 
 build
        requires
diff --git a/ppp/patches/ppp-2.4.2-ifname.patch b/ppp/patches/ppp-2.4.2-ifname.patch
new file mode 100644 (file)
index 0000000..50b96c9
--- /dev/null
@@ -0,0 +1,126 @@
+--- ./pppd/main.c.orig 2004-07-19 12:35:22.000000000 +0000
++++ ./pppd/main.c      2004-07-19 14:34:38.542120946 +0000
+@@ -98,7 +98,7 @@
+ static const char rcsid[] = RCSID;
+ /* interface vars */
+-char ifname[32];              /* Interface name */
++char ifname[MAXIFNAMELEN];    /* Interface name */
+ int ifunit;                   /* Interface unit number */
+ struct channel *the_channel;
+@@ -261,13 +261,6 @@
+     NULL
+ };
+-/*
+- * If PPP_DRV_NAME is not defined, use the default "ppp" as the device name.
+- */
+-#if !defined(PPP_DRV_NAME)
+-#define PPP_DRV_NAME  "ppp"
+-#endif /* !defined(PPP_DRV_NAME) */
+-
+ int
+ main(argc, argv)
+     int argc;
+@@ -777,8 +770,11 @@
+ set_ifunit(iskey)
+     int iskey;
+ {
+-    info("Using interface %s%d", PPP_DRV_NAME, ifunit);
++    if (req_ifname[0] != '\0')
++      slprintf(ifname, sizeof(ifname), req_ifname);
++    else
+     slprintf(ifname, sizeof(ifname), "%s%d", PPP_DRV_NAME, ifunit);
++    info("Using interface %s", ifname);
+     script_setenv("IFNAME", ifname, iskey);
+     if (iskey) {
+       create_pidfile(getpid());       /* write pid to file */
+--- ./pppd/options.c.orig      2004-07-19 12:59:21.000000000 +0000
++++ ./pppd/options.c   2004-07-19 14:35:04.253865964 +0000
+@@ -102,6 +102,7 @@
+ bool  tune_kernel;            /* may alter kernel settings */
+ int   connect_delay = 1000;   /* wait this many ms after connect script */
+ int   req_unit = -1;          /* requested interface unit */
++char  req_ifname[MAXIFNAMELEN];       /* requested interface name */
+ bool  multilink = 0;          /* Enable multilink operation */
+ char  *bundle_name = NULL;    /* bundle name for multilink */
+ bool  dump_options;           /* print out option values */
+@@ -259,6 +260,10 @@
+       "PPP interface unit number to use if possible",
+       OPT_PRIO | OPT_LLIMIT, 0, 0 },
++    { "ifname", o_string, req_ifname,
++      "Set PPP interface name",
++      OPT_PRIO | OPT_PRIV | OPT_STATIC, NULL, MAXIFNAMELEN },
++
+     { "dump", o_bool, &dump_options,
+       "Print out option values after parsing all options", 1 },
+     { "dryrun", o_bool, &dryrun,
+--- ./pppd/pppd.8.orig 2004-07-19 14:39:06.639320497 +0000
++++ ./pppd/pppd.8      2004-07-19 15:00:37.339448432 +0000
+@@ -1020,7 +1020,12 @@
+ .TP
+ .B unit \fInum
+ Sets the ppp unit number (for a ppp0 or ppp1 etc interface name) for outbound
+-connections.
++connections.  If the unit is already in use a dynamically allocated will be
++used.
++.TP
++.B ifname \fIstring
++Set the ppp interface name for outbound connections.  A failure to set the
++name will terminate the pppd.
+ .TP
+ .B updetach
+ With this option, pppd will detach from its controlling terminal once
+--- ./pppd/pppd.h.orig 2004-07-19 12:59:16.000000000 +0000
++++ ./pppd/pppd.h      2004-07-19 15:02:08.792752747 +0000
+@@ -80,6 +80,16 @@
+ #define MAXARGS               1       /* max # args to a command */
+ #define MAXNAMELEN    256     /* max length of hostname or name for auth */
+ #define MAXSECRETLEN  256     /* max length of password or secret */
++#define MAXIFNAMELEN  32      /* max length of interface name; or use IFNAMSIZ, can we
++                                 always include net/if.h? */
++
++/*
++ * If PPP_DRV_NAME is not defined, use the default "ppp" as the device name.
++ * Where should PPP_DRV_NAME come from? Do we include it here?
++ */
++#if !defined(PPP_DRV_NAME)
++#define PPP_DRV_NAME  "ppp"
++#endif /* !defined(PPP_DRV_NAME) */
+ /*
+  * Option descriptor structure.
+@@ -304,6 +314,7 @@
+ extern int    connect_delay;  /* Time to delay after connect script */
+ extern int    max_data_rate;  /* max bytes/sec through charshunt */
+ extern int    req_unit;       /* interface unit number to use */
++extern char   req_ifname[MAXIFNAMELEN];       /* interface name to use */
+ extern bool   multilink;      /* enable multilink operation */
+ extern bool   noendpoint;     /* don't send or accept endpt. discrim. */
+ extern char   *bundle_name;   /* bundle name for multilink */
+--- ./pppd/sys-linux.c.orig    2004-07-19 12:33:29.000000000 +0000
++++ ./pppd/sys-linux.c 2004-07-19 14:37:36.463754450 +0000
+@@ -649,6 +649,21 @@
+       }
+       if (x < 0)
+               error("Couldn't create new ppp unit: %m");
++
++      if (x == 0 && req_ifname[0] != '\0') {
++              struct ifreq ifr;
++              char t[MAXIFNAMELEN];
++              memset(&ifr, 0, sizeof(struct ifreq));
++              slprintf(t, sizeof(t), "%s%d", PPP_DRV_NAME, ifunit);
++              strncpy(ifr.ifr_name, t, IF_NAMESIZE);
++              strncpy(ifr.ifr_newname, req_ifname, IF_NAMESIZE);
++              x = ioctl(sock_fd, SIOCSIFNAME, &ifr);
++              if (x < 0)
++                  error("Couldn't rename interface %s to %s: %m", t, req_ifname);
++              else
++                  info("Renamed interface %s to %s", t, req_ifname);
++      }
++
+       return x;
+ }
index ea6f9c1acb62133ad888fd79bedf0ea35d270ccb..e12c68a9ec66227bc1970860eba243bb3b3240a6 100644 (file)
@@ -5,7 +5,7 @@
 
 name       = ppp
 version    = 2.4.6
-release    = 1
+release    = 2
 
 groups     = System/Daemons
 url        = http://ppp.samba.org/
index a758b5cdeb48c87a8db97a79c679b632fb939ea4..434fb68cf6fa1445da5c4a02474100a29bdd755b 100644 (file)
@@ -3,8 +3,8 @@
 # Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
 ###############################################################################
 
-tzdata_version = 2013b
-tzcode_version = 2013b
+tzdata_version = 2014j
+tzcode_version = 2014j
 
 name       = tzdata
 version    = %{tzdata_version}
@@ -33,15 +33,40 @@ build
        DIR_APP = %{DIR_SRC}/tzdata%{tzdata_version}
 
        prepare
-               mkdir tzdata%{tzdata_version}
-               %{MACRO_EXTRACT} %{DIR_DL}/tzcode%{tzcode_version}.tar.gz -C tzdata%{tzdata_version}
-               %{MACRO_EXTRACT} %{DIR_DL}/tzdata%{tzdata_version}.tar.gz -C tzdata%{tzdata_version}
+               mkdir -pv %{DIR_APP}
+               %{MACRO_EXTRACT} %{DIR_DL}/tzcode%{tzcode_version}.tar.gz -C %{DIR_APP}
+               %{MACRO_EXTRACT} %{DIR_DL}/tzdata%{tzdata_version}.tar.gz -C %{DIR_APP}
        end
+
+       files = \
+               africa \
+               antarctica \
+               asia \
+               australasia \
+               europe \
+               northamerica \
+               southamerica \
+               pacificnew \
+               etcetera \
+               backward
+
+       build
+               mkdir -pv zoneinfo/{,posix,right}
+
+               zic -y ./yearistype -d zoneinfo \
+                       -L /dev/null -p GMT %{files}
+               zic -y ./yearistype -d zoneinfo/posix \
+                       -L /dev/null %{files}
+               zic -y ./yearistype -d zoneinfo/right \
+                       -L leapseconds %{files}
+       end
+
        install
-               make TOPDIR=%{BUILDROOT}/usr ETCDIR=/tmp LIBDIR=/tmp MANDIR=/tmp \
-                       TZDIR=%{BUILDROOT}/usr/share/zoneinfo install
-               mv %{BUILDROOT}/usr/share/zoneinfo-posix/ %{BUILDROOT}/usr/share/posix
-               mv %{BUILDROOT}/usr/share/zoneinfo-leaps/ %{BUILDROOT}/usr/share/right
+               mkdir -pv %{BUILDROOT}%{datadir}/zoneinfo
+               cp -prd zoneinfo %{BUILDROOT}%{datadir}/zoneinfo
+
+               install -p -m 644 zone.tab iso3166.tab \
+                       %{BUILDROOT}%{datadir}/zoneinfo
                rm -f %{BUILDROOT}/usr/share/zoneinfo/localtime
        end
 end
diff --git a/util-linux/pam.d/runuser b/util-linux/pam.d/runuser
new file mode 100644 (file)
index 0000000..37f0e84
--- /dev/null
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth           sufficient      pam_rootok.so
+session                optional        pam_keyinit.so revoke
+session                required        pam_limits.so
+session                required        pam_unix.so
diff --git a/util-linux/pam.d/runuser-l b/util-linux/pam.d/runuser-l
new file mode 100644 (file)
index 0000000..7a9a48c
--- /dev/null
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth           include         runuser
+session                optional        pam_keyinit.so force revoke
+-session       optional        pam_systemd.so
+session                include         runuser
index 60a54fcf03edd72db34c9362fe40b09a7c4c0fee..a8f3629a508d7dfdcb58429147619c50e64fa067 100644 (file)
@@ -4,14 +4,14 @@
 ###############################################################################
 
 name       = util-linux
-major_ver  = 2.22
-minor_ver  = 1
+major_ver  = 2.25
+minor_ver  = 2
 version    = %{major_ver}.%{minor_ver}
 release    = 1
 
 maintainer = Stefan Schantl <stefan.schantl@ipfire.org>
 groups     = System/Base
-url        = http://kernel.org/~kzak/util-linux/
+url        = https://github.com/karelzak/util-linux
 license    = GPLv2 and GPLv2+ and BSD with advertising and Public Domain
 summary    = A collection of basic system utilities.
 
@@ -27,14 +27,18 @@ source_dl  = ftp://ftp.kernel.org/pub/linux/utils/util-linux/v%{major_ver}/
 build
        requires
                audit-devel
+               automake >= 1.13
                coreutils >= 8.19
                gettext
                libcap-devel
+               libcap-ng-devel
                libselinux-devel
                libsepol-devel
+               libudev-devel
                ncurses-devel
                pam-devel
-               libudev-devel
+               python3-devel
+               systemd-devel >= 215
                zlib-devel
        end
 
@@ -50,14 +54,16 @@ build
                --enable-kill \
                --enable-partx \
                --enable-write \
+               --enable-runuser \
                --enable-su \
-               --enable-socket-activation \
-               --enable-libmount-mount \
+               --with-systemd \
                --with-selinux \
                --with-audit \
                --with-udev \
                --disable-makeinstall-chown \
-               --disable-static
+               --disable-static \
+               --disable-rpath \
+               --with-python=3
 
        prepare_cmds
                sed -e 's@etc/adjtime@var/lib/hwclock/adjtime@g' \
@@ -124,6 +130,7 @@ packages
                        /sbin/findfs
                        /sbin/fsck
                        /sbin/nologin
+                       /sbin/runuser
                end
 
                obsoletes
@@ -133,6 +140,7 @@ packages
 
                conflicts
                        filesystem < 002
+                       bash-completion <= 2.1-2
                        coreutils < 8.19
                        setup < 3.0-2
                        util-linux-ng
@@ -242,6 +250,31 @@ packages
                end
        end
 
+       # Package information for libsmartcols.
+       package libsmartcols
+               summary = Formatting library for ls-like programs.
+               description
+                       This is a library for ls-like terminal
+                       programs, part of util-linux.
+               end
+
+               files
+                       %{libdir}/libsmartcols.*
+               end
+       end
+
+       # Package information for libsmartcols-devel.
+       package libsmartcols-devel
+               summary = Development library and header of libsmartcols.
+               description = %{summary}
+
+               files
+                       %{includedir}/libsmartcols/*
+                       %{libdir}/libsmartcols.so
+                       %{libdir}/pkgconfig/smartcols.pc
+               end
+       end
+
        package uuidd
                summary = Helper daemon to guarantee uniqueness of time-based UUIDs.
                description
@@ -262,6 +295,10 @@ packages
 
                prerequires += shadow-utils
 
+               requires
+                       systemd-libs >= 215
+               end
+
                script prein
                        getent group uuidd >/dev/null || groupadd -r uuidd
                        getent passwd uuidd >/dev/null || \
@@ -288,6 +325,10 @@ packages
                        systemctl try-restart uuidd.service >/dev/null 2>&1 || :
                end
        end
+
+       package python3-libmount
+               template PYTHON3
+       end
        
        package %{name}-debuginfo
                template DEBUGINFO
index 7803a2cb984af6756691d6297613dbd547263d29..dfdf4cd2e9f96380aefc18cf477bb093a8afbed5 100644 (file)
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = wget
-version    = 1.12
+version    = 1.16
 release    = 1
 
 groups     = Applications/Internet
@@ -20,24 +20,30 @@ description
        support, etc.
 end
 
-PKG_BUILD_DEPS+= libidn-devel openssl-devel
-
 source_dl  = http://ftp.gnu.org/gnu/wget/
-sources    = %{thisapp}.tar.lzma
+sources    = %{thisapp}.tar.xz
 
 build
        requires
                libidn-devel
+               libuuid-devel
                openssl-devel
        end
 
-       configure_options+= \
-               --sysconfdir=/etc
+       export CPPFLAGS = %(pkg-config --cflags openssl)
+       export LDFLAGS = %(pkg-config --libs openssl)
+
+       configure_options += \
+               --with-ssl=openssl \
+               --enable-largefile \
+               --enable-opie \
+               --enable-digest \
+               --enable-ntlm \
+               --enable-ipv6
 end
 
 packages
        package %{name}
-       end
 
        package %{name}-debuginfo
                template DEBUGINFO
index 800b87a08730fcd6a0d94e6de915cf1d496b6fe9..8c6046d4ca4f7e89681300577bc22cb7d46a3ab6 100644 (file)
--- a/xz/xz.nm
+++ b/xz/xz.nm
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = xz
-version    = 5.0.4
+version    = 5.0.6
 release    = 1
 
 compat_version = 4.999.9beta